@@ -19,7 +19,7 @@ CONFIGURE_COMMON += F77="$(FC)" CC="$(CC)" CXX="$(CXX)"
19
19
MAKE_COMMON = DESTDIR="" prefix=$(build_prefix ) bindir=$(build_bindir ) libdir=$(build_libdir ) libexecdir=$(build_libexecdir ) datarootdir=$(build_datarootdir ) includedir=$(build_includedir ) sysconfdir=$(build_sysconfdir )
20
20
21
21
# autoconf configure-driven scripts: llvm pcre arpack fftw unwind gmp mpfr patchelf uv
22
- # custom Makefile rules: openlibm Rmath double-conversion dsfmt suitesparse-wrapper suitesparse lapack openblas utf8proc
22
+ # custom Makefile rules: openlibm Rmath double-conversion dsfmt suitesparse-wrapper suitesparse lapack openblas utf8proc objconv
23
23
24
24
# prevent installing libs into usr/lib64 on opensuse
25
25
unexport CONFIG_SITE
77
77
78
78
ifeq ($(USE_SYSTEM_BLAS ) , 0)
79
79
STAGE1_DEPS += openblas
80
+ ifeq ($(USE_BLAS64 ) , 1)
81
+ ifeq ($(OS ) , Darwin)
82
+ STAGE1_DEPS += objconv
83
+ endif
84
+ endif
80
85
endif
81
86
82
87
ifeq ($(USE_SYSTEM_FFTW ) , 0)
@@ -144,7 +149,7 @@ install: $(addprefix install-, $(DEP_LIBS))
144
149
cleanall : $(addprefix clean-, $(DEP_LIBS ) )
145
150
distcleanall : $(addprefix distclean-, $(DEP_LIBS ) )
146
151
rm -rf $(build_prefix )
147
- getall : get-llvm get-uv get-pcre get-double-conversion get-openlibm get-openspecfun get-dsfmt get-Rmath get-openblas get-lapack get-fftw get-suitesparse get-arpack get-unwind get-osxunwind get-gmp get-mpfr get-zlib get-patchelf get-utf8proc
152
+ getall : get-llvm get-uv get-pcre get-double-conversion get-openlibm get-openspecfun get-dsfmt get-Rmath get-openblas get-lapack get-fftw get-suitesparse get-arpack get-unwind get-osxunwind get-gmp get-mpfr get-zlib get-patchelf get-utf8proc get-objconv
148
153
149
154
# # PATHS ##
150
155
# sort is used to remove potential duplicates
@@ -750,6 +755,34 @@ check-Rmath: compile-Rmath
750
755
install-Rmath : $(RMATH_OBJ_TARGET )
751
756
752
757
758
+ # # objconv ##
759
+
760
+ OBJCONV_SOURCE = objconv/objconv
761
+ OBJCONV_TARGET = $(build_bindir ) /objconv
762
+
763
+ objconv.zip :
764
+ $(JLDOWNLOAD ) $@ http://www.agner.org/optimize/objconv.zip
765
+ objconv/config.status : objconv.zip
766
+ unzip -d objconv $<
767
+ cd objconv && unzip source.zip
768
+ echo 1 > $@
769
+ $(OBJCONV_SOURCE ) : objconv/config.status
770
+ cd objconv && $(CXX ) -o objconv -O2 * .cpp
771
+ $(OBJCONV_TARGET ) : $(OBJCONV_SOURCE ) | $(build_bindir )
772
+ cp -f $< $@
773
+
774
+ clean-objconv :
775
+ -rm -f $(OBJCONV_TARGET )
776
+ distclean-objconv :
777
+ -rm -rf objconv.zip objconv
778
+
779
+ get-objconv : objconv.zip
780
+ configure-objconv : objconv/config.status
781
+ compile-objconv : $(OBJCONV_SOURCE )
782
+ check-objconv : compile-objconv
783
+ install-objconv : $(OBJCONV_TARGET )
784
+
785
+
753
786
# # OpenBLAS ##
754
787
# LAPACK is built into OpenBLAS by default
755
788
@@ -791,7 +824,11 @@ endif
791
824
792
825
# 64-bit BLAS interface
793
826
ifeq ($(USE_BLAS64 ) , 1)
794
- OPENBLAS_BUILD_OPTS += INTERFACE64=1
827
+ OPENBLAS_BUILD_OPTS += INTERFACE64=1 SYMBOLSUFFIX="64_"
828
+ ifeq ($(OS ) , Darwin)
829
+ OPENBLAS_BUILD_OPTS += OBJCONV=$(JULIAHOME ) /deps/objconv/objconv
830
+ $(OPENBLAS_OBJ_SOURCE ) : $(OBJCONV_SOURCE )
831
+ endif
795
832
endif
796
833
797
834
# Decide whether to build for 32-bit or 64-bit arch
@@ -827,6 +864,7 @@ endif
827
864
mkdir -p openblas-$(OPENBLAS_VER) && \
828
865
$(TAR) -C openblas-$(OPENBLAS_VER) --strip-components 1 -xf $<
829
866
perl -i -ple 's/^\s*(EXTRALIB\s*\+=\s*-lSystemStubs)\s*$$/# $$1/g' openblas-$(OPENBLAS_VER)/Makefile.system
867
+ cd openblas-$(OPENBLAS_VER) && patch -p1 < ../openblas-symbol-rename.patch
830
868
echo 1 > $@
831
869
$(OPENBLAS_OBJ_SOURCE ) : openblas-$(OPENBLAS_VER ) /config.status
832
870
$(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)
@@ -989,12 +1027,28 @@ install-lapack: $(LAPACK_OBJ_TARGET)
989
1027
990
1028
# # ARPACK ##
991
1029
ARPACK_FFLAGS = $(GFORTBLAS_FFLAGS )
1030
+ ARPACK_CFLAGS =
992
1031
993
1032
ifeq ($(USE_BLAS64 ) , 1)
994
1033
ifeq ($(USEIFC ) ,1)
995
1034
ARPACK_FFLAGS += -i8
996
1035
else
997
1036
ARPACK_FFLAGS += -fdefault-integer-8
1037
+ ifeq ($(USE_SYSTEM_BLAS ) , 0)
1038
+ ifneq ($(USE_INTEL_MKL ) , 1)
1039
+ ARPACK_FFLAGS += -cpp -ffixed-line-length-none
1040
+ ARPACK_OPENBLASFCNS1 = axpy copy gemv geqr2 lacpy lahqr lanhs larnv lartg lascl laset scal trevc trmm trsen
1041
+ ARPACK_OPENBLASFCNS2 = dot ger labad laev2 lamch lanst lanv2 lapy2 larf larfg lasr nrm2 orm2r rot steqr swap
1042
+ ARPACK_OPENBLASFCNS3 = dotc geru unm2r
1043
+ ARPACK_OPENBLASFCNS4 = COPY LABAD LAMCH LANHS LANV2 LARFG ROT
1044
+ ARPACK_FFLAGS += $(foreach fcn, $(ARPACK_OPENBLASFCNS1 ) $(ARPACK_OPENBLASFCNS2 ) , -Ds$(fcn ) =s$(fcn ) _64 -Dd$(fcn ) =d$(fcn ) _64)
1045
+ ARPACK_FFLAGS += $(foreach fcn, $(ARPACK_OPENBLASFCNS1 ) $(ARPACK_OPENBLASFCNS3 ) , -Dc$(fcn ) =c$(fcn ) _64 -Dz$(fcn ) =z$(fcn ) _64)
1046
+ ARPACK_FFLAGS += $(foreach fcn, $(ARPACK_OPENBLASFCNS4 ) , -DS$(fcn ) =S$(fcn ) _64 -DD$(fcn ) =D$(fcn ) _64)
1047
+ ARPACK_FFLAGS += -Dscnrm2=scnrm2_64 -Ddznrm2=dznrm2_64 -Dcsscal=csscal_64 -Dzdscal=zdscal_64
1048
+ # CFLAGS are for the configure checks
1049
+ ARPACK_CFLAGS += -Dsgemm_=sgemm_64_ -Dcheev_=cheev_64_
1050
+ endif
1051
+ endif
998
1052
endif
999
1053
endif
1000
1054
@@ -1007,7 +1061,7 @@ ARPACK_OBJ_TARGET = $(build_shlibdir)/libarpack.$(SHLIB_EXT)
1007
1061
1008
1062
ARPACK_MFLAGS = F77="$(FC ) " MPIF77="$(FC ) "
1009
1063
ARPACK_FFLAGS += $(FFLAGS ) $(JFFLAGS )
1010
- ARPACK_FLAGS = --with-blas="$(LIBBLAS ) " --with-lapack="$(LIBLAPACK ) " --disable-mpi --enable-shared FFLAGS="$(ARPACK_FFLAGS ) "
1064
+ ARPACK_FLAGS = --with-blas="$(LIBBLAS ) " --with-lapack="$(LIBLAPACK ) " --disable-mpi --enable-shared FFLAGS="$(ARPACK_FFLAGS ) " CFLAGS=" $( ARPACK_CFLAGS ) "
1011
1065
ifneq ($(OS ) ,WINNT)
1012
1066
ARPACK_FLAGS += LDFLAGS="$(LDFLAGS ) -Wl,-rpath,'$(build_libdir ) '"
1013
1067
endif
@@ -1249,8 +1303,16 @@ SUITESPARSE_OBJ_SOURCE = SuiteSparse-$(SUITESPARSE_VER)/UMFPACK/Lib/libumfpack.a
1249
1303
SUITESPARSE_OBJ_TARGET = $(build_shlibdir ) /libspqr.$(SHLIB_EXT )
1250
1304
1251
1305
ifeq ($(USE_BLAS64 ) , 1)
1252
- UMFPACK_CONFIG = -DLONGBLAS='long long'
1253
- CHOLMOD_CONFIG = -DLONGBLAS='long long'
1306
+ UMFPACK_CONFIG = -DLONGBLAS='long long'
1307
+ CHOLMOD_CONFIG = -DLONGBLAS='long long'
1308
+ SPQR_CONFIG = -DLONGBLAS='long long'
1309
+ ifeq ($(USE_SYSTEM_BLAS ) , 0)
1310
+ ifneq ($(USE_INTEL_MKL ) , 1)
1311
+ UMFPACK_CONFIG += -DSUN64
1312
+ CHOLMOD_CONFIG += -DSUN64
1313
+ SPQR_CONFIG += -DSUN64
1314
+ endif
1315
+ endif
1254
1316
endif
1255
1317
1256
1318
SUITE_SPARSE_LIB = -lm
@@ -1264,7 +1326,7 @@ SUITE_SPARSE_LIB += -Wl,-rpath,'$(build_libdir)'
1264
1326
endif
1265
1327
SUITESPARSE_MFLAGS = CC="$(CC ) " CXX="$(CXX ) " F77="$(FC ) " AR="$(AR ) " RANLIB="$(RANLIB ) " BLAS="$(LIBBLAS ) " LAPACK="$(LIBLAPACK ) " \
1266
1328
INSTALL_LIB="$(build_libdir ) " INSTALL_INCLUDE="$(build_includedir ) " LIB="$(SUITE_SPARSE_LIB ) " \
1267
- UMFPACK_CONFIG="$(UMFPACK_CONFIG ) " CHOLMOD_CONFIG="$(CHOLMOD_CONFIG ) "
1329
+ UMFPACK_CONFIG="$(UMFPACK_CONFIG ) " CHOLMOD_CONFIG="$(CHOLMOD_CONFIG ) " SPQR_CONFIG=" $( SPQR_CONFIG ) "
1268
1330
1269
1331
SuiteSparse-$(SUITESPARSE_VER ) .tar.gz :
1270
1332
$(JLDOWNLOAD ) $@ http://faculty.cse.tamu.edu/davis/SuiteSparse/$@
0 commit comments