From 89c62639f226d9900e96395ae6557be11964f0ac Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Tue, 10 Sep 2013 23:22:37 -0400 Subject: [PATCH] WINDOWS: move dll files to bin, where they belong --- .gitignore | 1 + Make.inc | 12 ++- Makefile | 16 ++- contrib/windows/prepare-julia-env.bat | 2 +- deps/Makefile | 141 +++++++++++++------------- 5 files changed, 92 insertions(+), 80 deletions(-) diff --git a/.gitignore b/.gitignore index e6820207032e1..3d171ffd6fe59 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ /julia /usr /Make.user +/julia-* *.exe *.dll diff --git a/Make.inc b/Make.inc index d5ed04ab47540..6eb2ee8b8e9b9 100644 --- a/Make.inc +++ b/Make.inc @@ -50,7 +50,9 @@ override OPENBLAS_DYNAMIC_ARCH = 1 override CROSS_COMPILE=$(XC_HOST)- ifneq (,$(findstring mingw,$(XC_HOST))) override OS := WINNT -export WINE_PATH := $(shell winepath -w $(BUILD)/bin);$(shell winepath -w $(BUILD)/lib/julia);$(shell winepath -w $(BUILD)/lib) +JL_PRIVATE_LIBDIR = bin +JL_LIBDIR = bin +export WINE_PATH := $(shell winepath -w $(BUILD)/bin);$(shell winepath -w $(BUILD)/$(JL_LIBDIR));$(shell winepath -w $(BUILD)/$(JL_PRIVATE_LIBDIR)) export WINE_PATH := $(WINE_PATH);$(shell $(CROSS_COMPILE)gcc -print-search-dirs | grep programs | sed "s/^programs: =//" | xargs -d":" winepath -w | tr '\n' ';') export WINE_PATH := $(WINE_PATH);$(shell $(CROSS_COMPILE)gcc -print-search-dirs | grep libraries | sed "s/^libraries: =//" | xargs -d":" winepath -w | tr '\n' ';') export WINE_PATH := $(WINE_PATH);C:\MinGW\\bin;C:\MinGW\msys\1.0\bin;$(shell winepath -w $(BUILD)/Git/bin) @@ -81,7 +83,7 @@ endif ifeq ($(OS), WINNT) fPIC = ifeq ($(BUILD_OS), WINNT) -PATH := ${PATH}:${BUILD}/lib:${BUILD}/lib/julia:/c/Program Files/7-zip +PATH := ${PATH}:${BUILD}/${JL_LIBDIR}:${BUILD}/${JL_PRIVATE_LIBDIR}:/c/Program Files/7-zip endif EXE = .exe else @@ -253,14 +255,14 @@ ifeq ($(USE_SYSTEM_BLAS), 1) ifeq ($(OS), Darwin) USE_BLAS64 = 0 USE_SYSTEM_LAPACK = 0 -LIBBLAS = -L$(BUILD)/lib -lgfortblas +LIBBLAS = -L$(BUILD)/$(JL_LIBDIR) -lgfortblas LIBBLASNAME = libgfortblas else LIBBLAS ?= -lblas LIBBLASNAME ?= libblas endif else -LIBBLAS = -L$(BUILD)/lib -lopenblas +LIBBLAS = -L$(BUILD)/$(JL_LIBDIR) -lopenblas LIBBLASNAME = libopenblas endif @@ -274,7 +276,7 @@ ifeq ($(USE_SYSTEM_LAPACK), 1) LIBLAPACK = -llapack LIBLAPACKNAME = liblapack else -LIBLAPACK = -L$(BUILD)/lib -llapack $(LIBBLAS) +LIBLAPACK = -L$(BUILD)/$(JL_LIBDIR) -llapack $(LIBBLAS) LIBLAPACKNAME = liblapack endif endif diff --git a/Makefile b/Makefile index 88c0120cc4092..6e1f60b7ee3db 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,19 @@ VERSDIR = v`cut -d. -f1-2 < VERSION` all: default default: release -DIRS = $(BUILD)/bin $(BUILD)/lib $(BUILD)/$(JL_PRIVATE_LIBDIR) $(BUILD)/share/julia $(BUILD)/share/julia/man/man1 +DIRS = $(BUILD)/bin $(BUILD)/lib $(BUILD)/share/julia $(BUILD)/share/julia/man/man1 +ifneq ($(JL_LIBDIR),bin) +ifneq ($(JL_LIBDIR),lib) +DIRS += $(BUILD)/$(JL_LIBDIR) +endif +endif +ifneq ($(JL_PRIVATE_LIBDIR),bin) +ifneq ($(JL_PRIVATE_LIBDIR),lib) +ifneq ($(JL_PRIVATE_LIBDIR),$(JL_LIBDIR)) +DIRS += $(BUILD)/$(JL_PRIVATE_LIBDIR) +endif +endif +endif $(foreach dir,$(DIRS),$(eval $(call dir_target,$(dir)))) $(foreach link,base test doc examples,$(eval $(call symlink_target,$(link),$(BUILD)/share/julia))) @@ -93,7 +105,7 @@ endif cp -a $(BUILD)/$(JL_LIBDIR)/lib$${suffix}*.$(SHLIB_EXT)* $(PREFIX)/$(JL_PRIVATE_LIBDIR) ; \ done -for suffix in $(JL_PRIVATE_LIBS) ; do \ - cp -a $(BUILD)/lib/lib$${suffix}*.$(SHLIB_EXT)* $(PREFIX)/$(JL_PRIVATE_LIBDIR) ; \ + cp -a $(BUILD)/$(JL_LIBDIR)/lib$${suffix}*.$(SHLIB_EXT)* $(PREFIX)/$(JL_PRIVATE_LIBDIR) ; \ done ifeq ($(USE_SYSTEM_LIBUV),0) cp -a $(BUILD)/lib/libuv.a $(PREFIX)/$(JL_PRIVATE_LIBDIR) diff --git a/contrib/windows/prepare-julia-env.bat b/contrib/windows/prepare-julia-env.bat index 5e41640cbbaf4..7ad5baa7e71f6 100644 --- a/contrib/windows/prepare-julia-env.bat +++ b/contrib/windows/prepare-julia-env.bat @@ -11,7 +11,7 @@ set PATH=%~dp0bin;%~dp0usr\bin;%~dp0..\usr\bin;%~dp0..\..\usr\bin;%SYS_PATH% set JULIA_EXE=julia-readline.exe for %%A in (%JULIA_EXE%) do set JULIA_HOME=%%~dp$PATH:A set JULIA=%JULIA_HOME%%JULIA_EXE% -set PATH=%JULIA_HOME%;%JULIA_HOME%..\lib\julia;%JULIA_HOME%..\lib;.;%SYS_PATH%;%~dp0\Git\bin;C:\MinGW\msys\1.0\bin;C:\MinGW\bin;C:\Program Files\Git\bin;C:\Program Files (x86)\Git\bin;C:\Python27;C:\Python26;C:\Python25 +set PATH=%JULIA_HOME%;.;%SYS_PATH%;%~dp0\Git\bin;C:\MinGW\msys\1.0\bin;C:\MinGW\bin;C:\Program Files\Git\bin;C:\Program Files (x86)\Git\bin;C:\Python27;C:\Python26;C:\Python25 set HOME=%APPDATA%\julia set JL_PRIVATE_LIBDIR=lib\julia set JULIA_EDITOR=start diff --git a/deps/Makefile b/deps/Makefile index 7928054aedebe..9d3138800bd08 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -94,7 +94,7 @@ endif ifeq ($(USE_SYSTEM_MPFR), 0) STAGE2_DEPS += mpfr ifeq ($(USE_SYSTEM_GMP), 0) -MPFR_OPTS = --with-gmp=$(abspath $(BUILD)) +MPFR_OPTS = --with-gmp-include=$(abspath $(BUILD)/include) --with-gmp-lib=$(abspath $(BUILD)/$(JL_LIBDIR)) endif endif ifeq ($(BUILD_OS),WINNT) @@ -125,7 +125,6 @@ endif ifeq ($(OS), WINNT) LIBTOOL_CCLD = CCLD="$(CC) -no-undefined -avoid-version" -AUTOTOOLS_PATH_CORRECT = mv $(BUILD)/bin/$(@F) $(BUILD)/lib/$(@F) endif ## Common build target prefixes @@ -350,7 +349,7 @@ $(READLINE_OBJ_TARGET): $(READLINE_OBJ_SOURCE) readline-$(READLINE_VER)/checked $(MAKE) -C readline-$(READLINE_VER) $(READLINE_CFLAGS) install touch -c $@ else -READLINE_OBJ_TARGET = $(BUILD)/lib/libreadline.$(SHLIB_EXT) +READLINE_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libreadline.$(SHLIB_EXT) ifneq ($(OS),Darwin) READLINE_OBJ_SOURCE = readline-$(READLINE_VER)/shlib/libreadline.$(SHLIB_EXT).$(READLINE_VER) else @@ -375,12 +374,13 @@ readline-$(READLINE_VER)/configure: readline-$(READLINE_VER).tar.gz touch -c $@ $(READLINE_OBJ_TARGET): $(READLINE_OBJ_SOURCE) readline-$(READLINE_VER)/checked $(MAKE) -C readline-$(READLINE_VER) install - chmod +w $(BUILD)/lib/libreadline.* $(BUILD)/lib/libhistory.* + chmod +w $(BUILD)/lib/libreadline.* $(BUILD)/lib/libhistory.* \ + $(BUILD)/$(JL_LIBDIR)/libreadline.* $(BUILD)/$(JL_LIBDIR)/libhistory.* ifeq ($(OS), Darwin) - $(INSTALL_NAME_CMD)libreadline.$(SHLIB_EXT) $(BUILD)/lib/libreadline.$(SHLIB_EXT) - $(INSTALL_NAME_CMD)libhistory.dylib $(BUILD)/lib/libhistory.dylib + $(INSTALL_NAME_CMD)libreadline.$(SHLIB_EXT) $(BUILD)/$(JL_LIBDIR)/libreadline.$(SHLIB_EXT) + $(INSTALL_NAME_CMD)libhistory.dylib $(BUILD)/$(JL_LIBDIR)/libhistory.dylib else ifeq ($(OS), Linux) - for filename in $(BUILD)/lib/libhistory.so* $(BUILD)/lib/libreadline.so* ; do \ + for filename in $(BUILD)/$(JL_LIBDIR)/libhistory.so* $(BUILD)/$(JL_LIBDIR)/libreadline.so* ; do \ $(PATCHELF) --set-rpath '$$ORIGIN' $$filename ;\ done endif @@ -445,7 +445,7 @@ endif echo 1 > $@ $(UV_OBJ_TARGET): $(UV_SRC_TARGET) $(MAKE) -C libuv install - $(INSTALL_NAME_CMD)libuv.dylib $(BUILD)/lib/libuv.dylib + $(INSTALL_NAME_CMD)libuv.dylib $(BUILD)/$(JL_LIBDIR)/libuv.dylib clean-uv: -$(MAKE) -C libuv clean @@ -463,7 +463,7 @@ install-uv: $(UV_OBJ_TARGET) ## PCRE ## PCRE_SRC_TARGET = pcre-$(PCRE_VER)/.libs/libpcre.$(SHLIB_EXT) -PCRE_OBJ_TARGET = $(BUILD)/lib/libpcre.$(SHLIB_EXT) +PCRE_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libpcre.$(SHLIB_EXT) pcre-$(PCRE_VER).tar.bz2: $(JLDOWNLOAD) ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/$@ @@ -485,10 +485,6 @@ endif $(PCRE_OBJ_TARGET): $(PCRE_SRC_TARGET) pcre-$(PCRE_VER)/checked $(MAKE) -C pcre-$(PCRE_VER) $(LIBTOOL_CCLD) install $(INSTALL_NAME_CMD)libpcre.dylib $@ -ifeq ($(OS),WINNT) - -rm $(BUILD)/lib/libpcre.dll - mv $(BUILD)/bin/libpcre.dll $(BUILD)/lib/libpcre.dll -endif touch -c $@ clean-pcre: @@ -507,7 +503,7 @@ install-pcre: $(PCRE_OBJ_TARGET) ## Grisu floating-point printing library ## GRISU_OPTS = $(CXXFLAGS) -O3 -fvisibility=hidden $(fPIC) -GRISU_OBJ_TARGET = $(BUILD)/lib/libgrisu.$(SHLIB_EXT) +GRISU_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libgrisu.$(SHLIB_EXT) double-conversion-$(GRISU_VER).tar.gz: $(JLDOWNLOAD) $@ http://double-conversion.googlecode.com/files/$@ @@ -547,16 +543,16 @@ get-double-conversion: double-conversion-$(GRISU_VER).tar.gz configure-double-conversion: get-double-conversion compile-double-conversion: double-conversion-$(GRISU_VER)/src/libgrisu.$(SHLIB_EXT) check-double-conversion: compile-double-conversion -install-double-conversion: $(BUILD)/lib/libgrisu.$(SHLIB_EXT) +install-double-conversion: $(BUILD)/$(JL_LIBDIR)/libgrisu.$(SHLIB_EXT) ## openlibm && openlibm-extras ## OPENLIBM_FLAGS = ARCH="$(ARCH)" CC="$(CC)" FC="$(FC)" AR="$(AR)" OS="$(OS)" USECLANG=$(USECLANG) USEGCC=$(USEGCC) -OPENLIBM_OBJ_TARGET = $(BUILD)/lib/libopenlibm.$(SHLIB_EXT) +OPENLIBM_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libopenlibm.$(SHLIB_EXT) OPENLIBM_OBJ_SOURCE = openlibm/libopenlibm.$(SHLIB_EXT) -OPENLIBMEXT_OBJ_TARGET = $(BUILD)/lib/libopenlibm-extras.$(SHLIB_EXT) +OPENLIBMEXT_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libopenlibm-extras.$(SHLIB_EXT) OPENLIBMEXT_OBJ_SOURCE = openlibm/libopenlibm-extras.$(SHLIB_EXT) openlibm/Makefile openlibm/Makefile.extras: @@ -607,7 +603,7 @@ install-openlibm-extras: $(OPENLIBMEXT_OBJ_TARGET) ## LIBRANDOM ## -LIBRANDOM_OBJ_TARGET = $(BUILD)/lib/librandom.$(SHLIB_EXT) +LIBRANDOM_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/librandom.$(SHLIB_EXT) LIBRANDOM_OBJ_SOURCE = random/librandom.$(SHLIB_EXT) LIBRANDOM_CFLAGS = $(CFLAGS) -O3 -finline-functions -fomit-frame-pointer -DNDEBUG -fno-strict-aliasing \ @@ -647,7 +643,7 @@ install-random: $(LIBRANDOM_OBJ_TARGET) ## Rmath ## -RMATH_OBJ_TARGET = $(BUILD)/lib/libRmath.$(SHLIB_EXT) +RMATH_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libRmath.$(SHLIB_EXT) RMATH_OBJ_SOURCE = Rmath/src/libRmath.$(SHLIB_EXT) RMATH_FLAGS += CC="$(CC)" USECLANG=$(USECLANG) USEGCC=$(USEGCC) \ @@ -685,7 +681,7 @@ install-Rmath: $(RMATH_OBJ_TARGET) # LAPACK is built into OpenBLAS by default OPENBLAS_OBJ_SOURCE = openblas-$(OPENBLAS_VER)/libopenblas.$(SHLIB_EXT) -OPENBLAS_OBJ_TARGET = $(BUILD)/lib/libopenblas.$(SHLIB_EXT) +OPENBLAS_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libopenblas.$(SHLIB_EXT) OPENBLAS_BUILD_OPTS = CC="$(CC)" FC="$(FC)" RANLIB="$(RANLIB)" FFLAGS="$(FFLAGS) $(JFFLAGS)" TARGET=$(OPENBLAS_TARGET_ARCH) @@ -770,11 +766,11 @@ $(OPENBLAS_OBJ_SOURCE): openblas-$(OPENBLAS_VER)/config.status $(MAKE) -C openblas-$(OPENBLAS_VER) $(OPENBLAS_BUILD_OPTS) || (echo "*** Clean the OpenBLAS build with 'make -C deps clean-openblas'. Rebuild with 'make OPENBLAS_USE_THREAD=0 if OpenBLAS had trouble linking libpthread.so, and with 'make OPENBLAS_TARGET_ARCH=NEHALEM' if there were errors building SandyBridge support. Both these options can also be used simultaneously. ***" && false) touch -c $@ $(OPENBLAS_OBJ_TARGET): $(OPENBLAS_OBJ_SOURCE) | $(BUILD)/lib - cp -f openblas-$(OPENBLAS_VER)/libopenblas.$(SHLIB_EXT) $(BUILD)/lib + cp -f openblas-$(OPENBLAS_VER)/libopenblas.$(SHLIB_EXT) $(BUILD)/$(JL_LIBDIR) ifeq ($(OS), Linux) - ln -sf $(BUILD)/lib/libopenblas.$(SHLIB_EXT) $(BUILD)/lib/libopenblas.$(SHLIB_EXT).0 + ln -sf $(BUILD)/$(JL_LIBDIR)/libopenblas.$(SHLIB_EXT) $(BUILD)/$(JL_LIBDIR)/libopenblas.$(SHLIB_EXT).0 endif - $(INSTALL_NAME_CMD)libopenblas.$(SHLIB_EXT) $(BUILD)/lib/libopenblas.$(SHLIB_EXT) + $(INSTALL_NAME_CMD)libopenblas.$(SHLIB_EXT) $(BUILD)/$(JL_LIBDIR)/libopenblas.$(SHLIB_EXT) clean-openblas: -$(MAKE) -C openblas-$(OPENBLAS_VER) clean @@ -795,7 +791,7 @@ install-openblas: $(OPENBLAS_OBJ_TARGET) # configure script will search for the best match # (gcc 4.7, gcc, clang,ICC/microsoft/others) ATLAS_OBJ_SOURCE = atlas/build/lib/libsatlas.$(SHLIB_EXT) -ATLAS_OBJ_TARGET = $(BUILD)/lib/libsatlas.$(SHLIB_EXT) +ATLAS_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libsatlas.$(SHLIB_EXT) ATLAS_FLAGS = --shared --prefix=$(BUILD) --cc=gcc -t 0 \ --with-netlib-lapack-tarfile=$(JULIAHOME)/deps/lapack-$(LAPACK_VER).tgz ifeq ($(OS), WINNT) @@ -864,7 +860,7 @@ endif libgfortblas.dylib: gfortblas.c gfortblas.alias $(CC) -Wall -O3 $(CPPFLAGS) $(CFLAGS) $(fPIC) -shared $< -o $@ -pipe \ -Wl,-reexport_framework,vecLib -Wl,-alias_list,gfortblas.alias -$(BUILD)/lib/libgfortblas.dylib: libgfortblas.dylib +$(BUILD)/$(JL_LIBDIR)/libgfortblas.dylib: libgfortblas.dylib cp -f $< $@ $(INSTALL_NAME_CMD)libgfortblas.dylib $@ endif @@ -872,7 +868,7 @@ endif ## LAPACK ## ifeq ($(USE_SYSTEM_LAPACK), 0) -LAPACK_OBJ_TARGET = $(BUILD)/lib/liblapack.$(SHLIB_EXT) +LAPACK_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/liblapack.$(SHLIB_EXT) LAPACK_OBJ_SOURCE = lapack-$(LAPACK_VER)/liblapack.$(SHLIB_EXT) else LAPACK_OBJ_TARGET = @@ -893,7 +889,7 @@ lapack-$(LAPACK_VER)/Makefile: lapack-$(LAPACK_VER).tgz ifeq ($(USE_SYSTEM_BLAS), 0) lapack-$(LAPACK_VER)/liblapack.a: | $(OPENBLAS_OBJ_TARGET) else ifeq ($(OS),Darwin) -lapack-$(LAPACK_VER)/liblapack.a: | $(BUILD)/lib/libgfortblas.dylib +lapack-$(LAPACK_VER)/liblapack.a: | $(BUILD)/$(JL_LIBDIR)/libgfortblas.dylib endif lapack-$(LAPACK_VER)/liblapack.a: lapack-$(LAPACK_VER)/Makefile cd lapack-$(LAPACK_VER) && \ @@ -936,7 +932,7 @@ ARPACK_OBJ_SOURCE = arpack-ng-$(ARPACK_VER)/.libs/libarpack-2.$(SHLIB_EXT) else ARPACK_OBJ_SOURCE = arpack-ng-$(ARPACK_VER)/.libs/libarpack.$(SHLIB_EXT) endif -ARPACK_OBJ_TARGET = $(BUILD)/lib/libarpack.$(SHLIB_EXT) +ARPACK_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libarpack.$(SHLIB_EXT) ARPACK_MFLAGS = F77="$(FC)" MPIF77="$(FC)" ARPACK_OPTS = $(FFLAGS) $(JFFLAGS) @@ -981,9 +977,9 @@ $(ARPACK_OBJ_TARGET): $(ARPACK_OBJ_SOURCE) arpack-ng-$(ARPACK_VER)/checked | $(B ifeq ($(OS), WINNT) mv $(BUILD)/bin/libarpack-2.dll $@ endif - $(INSTALL_NAME_CMD)libarpack.$(SHLIB_EXT) $(BUILD)/lib/libarpack.$(SHLIB_EXT) + $(INSTALL_NAME_CMD)libarpack.$(SHLIB_EXT) $(BUILD)/$(JL_LIBDIR)/libarpack.$(SHLIB_EXT) ifeq ($(OS), Linux) - for filename in $(BUILD)/lib/libarpack.so* ; do \ + for filename in $(BUILD)/$(JL_LIBDIR)/libarpack.so* ; do \ [ -L $$filename ] || $(PATCHELF) --set-rpath '$$ORIGIN' $$filename ;\ done endif @@ -1010,8 +1006,8 @@ else FFTW_SINGLE_SRC_TARGET = fftw-$(FFTW_VER)-single/.libs/libfftw3f.$(SHLIB_EXT) FFTW_DOUBLE_SRC_TARGET = fftw-$(FFTW_VER)-double/.libs/libfftw3.$(SHLIB_EXT) endif -FFTW_SINGLE_OBJ_TARGET = $(BUILD)/lib/libfftw3f.$(SHLIB_EXT) -FFTW_DOUBLE_OBJ_TARGET = $(BUILD)/lib/libfftw3.$(SHLIB_EXT) +FFTW_SINGLE_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libfftw3f.$(SHLIB_EXT) +FFTW_DOUBLE_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libfftw3.$(SHLIB_EXT) FFTW_CONFIG = --enable-shared --disable-fortran --disable-mpi --enable-fma --enable-threads ifneq ($(ARCH), ppc64) @@ -1052,14 +1048,13 @@ $(FFTW_SINGLE_OBJ_TARGET): $(FFTW_SINGLE_SRC_TARGET) fftw-$(FFTW_VER)-single/che $(MAKE) -C fftw-$(FFTW_VER)-single install touch -c $@ ifeq ($(OS), Darwin) - $(INSTALL_NAME_CMD)libfftw3f.dylib $(BUILD)/lib/libfftw3f.dylib - $(INSTALL_NAME_CMD)libfftw3f_threads.$(SHLIB_EXT) $(BUILD)/lib/libfftw3f_threads.$(SHLIB_EXT) - $(INSTALL_NAME_CHANGE_CMD) $(BUILD)/lib/libfftw3f.3.dylib $(INSTALL_NAME_ID_DIR)libfftw3f.dylib $(BUILD)/lib/libfftw3f_threads.dylib -else ifeq ($(OS),WINNT) - -rm $(BUILD)/lib/libfftw3f.dll - mv $(BUILD)/bin/libfftw3f-3.dll $(BUILD)/lib/libfftw3f.dll + $(INSTALL_NAME_CMD)libfftw3f.dylib $(BUILD)/$(JL_LIBDIR)/libfftw3f.dylib + $(INSTALL_NAME_CMD)libfftw3f_threads.$(SHLIB_EXT) $(BUILD)/$(JL_LIBDIR)/libfftw3f_threads.$(SHLIB_EXT) + $(INSTALL_NAME_CHANGE_CMD) $(BUILD)/$(JL_LIBDIR)/libfftw3f.3.dylib $(INSTALL_NAME_ID_DIR)libfftw3f.dylib $(BUILD)/$(JL_LIBDIR)/libfftw3f_threads.dylib +else ifeq ($(OS), WINNT) + mv -f $(BUILD)/$(JL_LIBDIR)/libfftw3-3.dll $@ else ifeq ($(OS), Linux) - for filename in $(BUILD)/lib/libfftw3f_threads.so* ; do \ + for filename in $(BUILD)/$(JL_LIBDIR)/libfftw3f_threads.so* ; do \ [ -L $$filename ] || $(PATCHELF) --set-rpath '$$ORIGIN' $$filename ;\ done endif @@ -1090,14 +1085,13 @@ endif $(FFTW_DOUBLE_OBJ_TARGET): $(FFTW_DOUBLE_SRC_TARGET) fftw-$(FFTW_VER)-double/checked $(MAKE) -C fftw-$(FFTW_VER)-double install ifeq ($(OS), Darwin) - $(INSTALL_NAME_CMD)libfftw3.$(SHLIB_EXT) $(BUILD)/lib/libfftw3.$(SHLIB_EXT) - $(INSTALL_NAME_CMD)libfftw3_threads.$(SHLIB_EXT) $(BUILD)/lib/libfftw3_threads.$(SHLIB_EXT) - $(INSTALL_NAME_CHANGE_CMD) $(BUILD)/lib/libfftw3.3.dylib $(INSTALL_NAME_ID_DIR)libfftw3.dylib $(BUILD)/lib/libfftw3_threads.dylib -else ifeq ($(OS),WINNT) - -rm $(BUILD)/lib/libfftw3.dll - mv $(BUILD)/bin/libfftw3-3.dll $(BUILD)/lib/libfftw3.dll + $(INSTALL_NAME_CMD)libfftw3.$(SHLIB_EXT) $(BUILD)/$(JL_LIBDIR)/libfftw3.$(SHLIB_EXT) + $(INSTALL_NAME_CMD)libfftw3_threads.$(SHLIB_EXT) $(BUILD)/$(JL_LIBDIR)/libfftw3_threads.$(SHLIB_EXT) + $(INSTALL_NAME_CHANGE_CMD) $(BUILD)/$(JL_LIBDIR)/libfftw3.3.dylib $(INSTALL_NAME_ID_DIR)libfftw3.dylib $(BUILD)/$(JL_LIBDIR)/libfftw3_threads.dylib +else ifeq ($(OS), WINNT) + mv -f $(BUILD)/$(JL_LIBDIR)/libfftw3f-3.dll $@ else ifeq ($(OS), Linux) - for filename in $(BUILD)/lib/libfftw3_threads.so* ; do \ + for filename in $(BUILD)/$(JL_LIBDIR)/libfftw3_threads.so* ; do \ [ -L $$filename ] || $(PATCHELF) --set-rpath '$$ORIGIN' $$filename ;\ done endif @@ -1135,7 +1129,7 @@ install-fftw-double: $(FFTW_DOUBLE_OBJ_TARGET) ## SUITESPARSE ## SUITESPARSE_OBJ_SOURCE = SuiteSparse-$(SUITESPARSE_VER)/UMFPACK/Lib/libumfpack.a -SUITESPARSE_OBJ_TARGET = $(BUILD)/lib/libspqr.$(SHLIB_EXT) +SUITESPARSE_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libspqr.$(SHLIB_EXT) ifeq ($(USE_BLAS64), 1) UMFPACK_CONFIG = -DLONGBLAS='long long' @@ -1184,20 +1178,20 @@ $(SUITESPARSE_OBJ_TARGET): $(SUITESPARSE_OBJ_SOURCE) cd SuiteSparse-$(SUITESPARSE_VER)/lib && \ rm -f *.a && \ cp -f `find .. -name libamd.a -o -name libcolamd.a -o -name libcamd.a -o -name libccolamd.a -o -name libcholmod.a -o -name libumfpack.a -o -name libsuitesparseconfig.a -o -name libspqr.a 2>/dev/null` . && \ - $(CC) -shared $(WHOLE_ARCHIVE) libamd.a $(NO_WHOLE_ARCHIVE) -o $(BUILD)/lib/libamd.$(SHLIB_EXT) && \ - $(INSTALL_NAME_CMD)libamd.$(SHLIB_EXT) $(BUILD)/lib/libamd.$(SHLIB_EXT) && \ - $(CC) -shared $(WHOLE_ARCHIVE) libcolamd.a $(NO_WHOLE_ARCHIVE) -o $(BUILD)/lib/libcolamd.$(SHLIB_EXT) && \ - $(INSTALL_NAME_CMD)libcolamd.$(SHLIB_EXT) $(BUILD)/lib/libcolamd.$(SHLIB_EXT) && \ - $(CC) -shared $(WHOLE_ARCHIVE) libcamd.a $(NO_WHOLE_ARCHIVE) -o $(BUILD)/lib/libcamd.$(SHLIB_EXT) && \ - $(INSTALL_NAME_CMD)libcamd.$(SHLIB_EXT) $(BUILD)/lib/libcamd.$(SHLIB_EXT) && \ - $(CC) -shared $(WHOLE_ARCHIVE) libccolamd.a $(NO_WHOLE_ARCHIVE) -o $(BUILD)/lib/libccolamd.$(SHLIB_EXT) && \ - $(INSTALL_NAME_CMD)libccolamd.$(SHLIB_EXT) $(BUILD)/lib/libccolamd.$(SHLIB_EXT) && \ - $(CXX) -shared $(WHOLE_ARCHIVE) libsuitesparseconfig.a libcholmod.a $(NO_WHOLE_ARCHIVE) -o $(BUILD)/lib/libcholmod.$(SHLIB_EXT) -L$(BUILD)/lib -lcolamd -lamd -lcamd -lccolamd $(LIBBLAS) $(RPATH_ORIGIN) && \ - $(INSTALL_NAME_CMD)libcholmod.$(SHLIB_EXT) $(BUILD)/lib/libcholmod.$(SHLIB_EXT) && \ - $(CXX) -shared $(WHOLE_ARCHIVE) libsuitesparseconfig.a libumfpack.a $(NO_WHOLE_ARCHIVE) -o $(BUILD)/lib/libumfpack.$(SHLIB_EXT) -L$(BUILD)/lib -lcholmod -lcolamd -lamd $(LIBBLAS) $(RPATH_ORIGIN) && \ - $(INSTALL_NAME_CMD)libumfpack.$(SHLIB_EXT) $(BUILD)/lib/libumfpack.$(SHLIB_EXT) && \ - $(CXX) -shared $(WHOLE_ARCHIVE) libsuitesparseconfig.a libspqr.a $(NO_WHOLE_ARCHIVE) -o $(BUILD)/lib/libspqr.$(SHLIB_EXT) -L$(BUILD)/lib -lcholmod -lcolamd -lamd $(LIBLAPACK) $(RPATH_ORIGIN) && \ - $(INSTALL_NAME_CMD)libspqr.$(SHLIB_EXT) $(BUILD)/lib/libspqr.$(SHLIB_EXT) + $(CC) -shared $(WHOLE_ARCHIVE) libamd.a $(NO_WHOLE_ARCHIVE) -o $(BUILD)/$(JL_LIBDIR)/libamd.$(SHLIB_EXT) && \ + $(INSTALL_NAME_CMD)libamd.$(SHLIB_EXT) $(BUILD)/$(JL_LIBDIR)/libamd.$(SHLIB_EXT) && \ + $(CC) -shared $(WHOLE_ARCHIVE) libcolamd.a $(NO_WHOLE_ARCHIVE) -o $(BUILD)/$(JL_LIBDIR)/libcolamd.$(SHLIB_EXT) && \ + $(INSTALL_NAME_CMD)libcolamd.$(SHLIB_EXT) $(BUILD)/$(JL_LIBDIR)/libcolamd.$(SHLIB_EXT) && \ + $(CC) -shared $(WHOLE_ARCHIVE) libcamd.a $(NO_WHOLE_ARCHIVE) -o $(BUILD)/$(JL_LIBDIR)/libcamd.$(SHLIB_EXT) && \ + $(INSTALL_NAME_CMD)libcamd.$(SHLIB_EXT) $(BUILD)/$(JL_LIBDIR)/libcamd.$(SHLIB_EXT) && \ + $(CC) -shared $(WHOLE_ARCHIVE) libccolamd.a $(NO_WHOLE_ARCHIVE) -o $(BUILD)/$(JL_LIBDIR)/libccolamd.$(SHLIB_EXT) && \ + $(INSTALL_NAME_CMD)libccolamd.$(SHLIB_EXT) $(BUILD)/$(JL_LIBDIR)/libccolamd.$(SHLIB_EXT) && \ + $(CXX) -shared $(WHOLE_ARCHIVE) libsuitesparseconfig.a libcholmod.a $(NO_WHOLE_ARCHIVE) -o $(BUILD)/$(JL_LIBDIR)/libcholmod.$(SHLIB_EXT) -L$(BUILD)/$(JL_LIBDIR) -lcolamd -lamd -lcamd -lccolamd $(LIBBLAS) $(RPATH_ORIGIN) && \ + $(INSTALL_NAME_CMD)libcholmod.$(SHLIB_EXT) $(BUILD)/$(JL_LIBDIR)/libcholmod.$(SHLIB_EXT) && \ + $(CXX) -shared $(WHOLE_ARCHIVE) libsuitesparseconfig.a libumfpack.a $(NO_WHOLE_ARCHIVE) -o $(BUILD)/$(JL_LIBDIR)/libumfpack.$(SHLIB_EXT) -L$(BUILD)/$(JL_LIBDIR) -lcholmod -lcolamd -lamd $(LIBBLAS) $(RPATH_ORIGIN) && \ + $(INSTALL_NAME_CMD)libumfpack.$(SHLIB_EXT) $(BUILD)/$(JL_LIBDIR)/libumfpack.$(SHLIB_EXT) && \ + $(CXX) -shared $(WHOLE_ARCHIVE) libsuitesparseconfig.a libspqr.a $(NO_WHOLE_ARCHIVE) -o $(BUILD)/$(JL_LIBDIR)/libspqr.$(SHLIB_EXT) -L$(BUILD)/$(JL_LIBDIR) -lcholmod -lcolamd -lamd $(LIBLAPACK) $(RPATH_ORIGIN) && \ + $(INSTALL_NAME_CMD)libspqr.$(SHLIB_EXT) $(BUILD)/$(JL_LIBDIR)/libspqr.$(SHLIB_EXT) clean-suitesparse: -$(MAKE) -C SuiteSparse-$(SUITESPARSE_VER) clean @@ -1218,24 +1212,24 @@ SUITESPARSE_INC = -I /usr/include/suitesparse SUITESPARSE_LIB = -lumfpack -lcholmod -lamd -lcamd -lcolamd -lspqr else SUITESPARSE_INC = -I SuiteSparse-$(SUITESPARSE_VER)/CHOLMOD/Include -I SuiteSparse-$(SUITESPARSE_VER)/SuiteSparse_config -I SuiteSparse-$(SUITESPARSE_VER)/SPQR/Include -SUITESPARSE_LIB = -L$(BUILD)/lib -lcholmod -lumfpack -lspqr $(RPATH_ORIGIN) -$(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT): $(SUITESPARSE_OBJ_TARGET) +SUITESPARSE_LIB = -L$(BUILD)/$(JL_LIBDIR) -lcholmod -lumfpack -lspqr $(RPATH_ORIGIN) +$(BUILD)/$(JL_LIBDIR)/libsuitesparse_wrapper.$(SHLIB_EXT): $(SUITESPARSE_OBJ_TARGET) endif -$(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT): SuiteSparse_wrapper.c - $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -O2 -shared $(fPIC) $(SUITESPARSE_INC) SuiteSparse_wrapper.c -o $(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT) $(SUITESPARSE_LIB) +$(BUILD)/$(JL_LIBDIR)/libsuitesparse_wrapper.$(SHLIB_EXT): SuiteSparse_wrapper.c + $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -O2 -shared $(fPIC) $(SUITESPARSE_INC) $< -o $@ $(SUITESPARSE_LIB) $(INSTALL_NAME_CMD)libsuitesparse_wrapper.$(SHLIB_EXT) $@ touch -c $@ clean-suitesparse-wrapper: - -rm -f $(SUITESPARSE_OBJ_TARGET) $(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT) + -rm -f $(SUITESPARSE_OBJ_TARGET) $(BUILD)/$(JL_LIBDIR)/libsuitesparse_wrapper.$(SHLIB_EXT) distclean-suitesparse-wrapper: clean-suitesparse-wrapper get-suitesparse-wrapper: configure-suitesparse-wrapper: compile-suitesparse-wrapper: check-suitesparse-wrapper: -install-suitesparse-wrapper: $(BUILD)/lib/libsuitesparse_wrapper.$(SHLIB_EXT) +install-suitesparse-wrapper: $(BUILD)/$(JL_LIBDIR)/libsuitesparse_wrapper.$(SHLIB_EXT) ## UNWIND ## @@ -1285,7 +1279,7 @@ install-unwind: $(LIBUNWIND_TARGET_OBJ) OSXUNWIND_FLAGS = ARCH="$(ARCH)" CC="$(CC)" FC="$(FC)" AR="$(AR)" OS="$(OS)" USECLANG=$(USECLANG) USEGCC=$(USEGCC) CFLAGS="-ggdb3 -O0" CXXFLAGS="-ggdb3 -O0" SFLAGS="-ggdb3" -OSXUNWIND_OBJ_TARGET = $(BUILD)/lib/libosxunwind.$(SHLIB_EXT) +OSXUNWIND_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libosxunwind.$(SHLIB_EXT) OSXUNWIND_OBJ_SOURCE = libosxunwind-$(OSXUNWIND_VER)/libosxunwind.$(SHLIB_EXT) libosxunwind-$(OSXUNWIND_VER).tar.gz: @@ -1318,7 +1312,7 @@ install-osxunwind: $(OSXUNWIND_OBJ_TARGET) ## GMP ## GMP_SRC_TARGET = gmp-$(GMP_VER)/.libs/libgmp.$(SHLIB_EXT) -GMP_OBJ_TARGET = $(BUILD)/lib/libgmp.$(SHLIB_EXT) +GMP_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libgmp.$(SHLIB_EXT) gmp-$(GMP_VER).tar.bz2: $(JLDOWNLOAD) $@ ftp://ftp.gmplib.org/pub/gmp-$(GMP_VER)/$@ @@ -1338,6 +1332,10 @@ endif echo 1 > $@ $(GMP_OBJ_TARGET): $(GMP_SRC_TARGET) gmp-$(GMP_VER)/checked $(MAKE) -C gmp-$(GMP_VER) $(LIBTOOL_CCLD) install +ifeq ($(OS),WINNT) + mv -f $(BUILD)/lib/libgmp.lib $(BUILD)/$(JL_LIBDIR)/libgmp.lib + mv -f $(BUILD)/lib/libgmp.dll $@ +endif $(INSTALL_NAME_CMD)libgmp.dylib $@ touch -c $@ @@ -1360,7 +1358,7 @@ endif ## MPFR ## MPFR_SRC_TARGET = mpfr-$(MPFR_VER)/src/.libs/libmpfr.$(SHLIB_EXT) -MPFR_OBJ_TARGET = $(BUILD)/lib/libmpfr.$(SHLIB_EXT) +MPFR_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libmpfr.$(SHLIB_EXT) ifeq ($(OS),Darwin) MPFR_CHECK_MFLAGS = LDFLAGS="-Wl,-rpath,'$(BUILD)/$(JL_LIBDIR)'" endif @@ -1384,7 +1382,6 @@ endif $(MPFR_OBJ_TARGET): $(MPFR_SRC_TARGET) mpfr-$(MPFR_VER)/checked $(MAKE) -C mpfr-$(MPFR_VER) $(LIBTOOL_CCLD) install $(INSTALL_NAME_CMD)libmpfr.dylib $@ - $(AUTOTOOLS_PATH_CORRECT) touch -c $@ clean-mpfr: @@ -1406,7 +1403,7 @@ ZLIB_SRC_TARGET = zlib-$(ZLIB_VER)/zlib1.$(SHLIB_EXT) else ZLIB_SRC_TARGET = zlib-$(ZLIB_VER)/libz.$(SHLIB_EXT) endif -ZLIB_OBJ_TARGET = $(BUILD)/lib/libz.$(SHLIB_EXT) +ZLIB_OBJ_TARGET = $(BUILD)/$(JL_LIBDIR)/libz.$(SHLIB_EXT) ZLIB_CONFIGFLAGS = CFLAGS="-O3 $(CFLAGS) -D_FILE_OFFSET_BITS=64" ifneq ($(OS),$(BUILD_OS)) ZLIB_CONFIGFLAGS += CHOST=$(XC_HOST)