Merge pull request #1629 from martin-frbg/issue1628

Make gfortran link libomp for clang in the tests; avoid two typical gotchas with NOFORTRAN
This commit is contained in:
Martin Kroeker 2018-06-20 16:41:13 +02:00 committed by GitHub
commit ef6f0b645e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 10 deletions

View File

@ -21,6 +21,17 @@ ifeq ($(BUILD_RELAPACK), 1)
RELA = re_lapack RELA = re_lapack
endif endif
ifeq ($(NO_FORTRAN), 1)
define NOFORTRAN
1
endef
define NO_LAPACK
1
endef
export NOFORTRAN
export NO_LAPACK
endif
LAPACK_NOOPT := $(filter-out -O0 -O1 -O2 -O3 -Ofast,$(LAPACK_FFLAGS)) LAPACK_NOOPT := $(filter-out -O0 -O1 -O2 -O3 -Ofast,$(LAPACK_FFLAGS))
SUBDIRS_ALL = $(SUBDIRS) test ctest utest exports benchmark ../laswp ../bench SUBDIRS_ALL = $(SUBDIRS) test ctest utest exports benchmark ../laswp ../bench
@ -47,7 +58,7 @@ endif
endif endif
@echo " C compiler ... $(C_COMPILER) (command line : $(CC))" @echo " C compiler ... $(C_COMPILER) (command line : $(CC))"
ifndef NOFORTRAN ifneq ($(NOFORTRAN), $(filter-out $(NOFORTRAN), 1 2))
@echo " Fortran compiler ... $(F_COMPILER) (command line : $(FC))" @echo " Fortran compiler ... $(F_COMPILER) (command line : $(FC))"
endif endif
ifneq ($(OSNAME), AIX) ifneq ($(OSNAME), AIX)
@ -108,7 +119,7 @@ endif
endif endif
tests : tests :
ifndef NOFORTRAN ifneq ($(NOFORTRAN), $(filter-out $(NOFORTRAN), 1 2))
touch $(LIBNAME) touch $(LIBNAME)
ifndef NO_FBLAS ifndef NO_FBLAS
$(MAKE) -C test all $(MAKE) -C test all
@ -210,7 +221,7 @@ netlib :
else else
netlib : lapack_prebuild netlib : lapack_prebuild
ifndef NOFORTRAN ifneq ($(NOFORTRAN), $(filter-out $(NOFORTRAN), 1 2))
@$(MAKE) -C $(NETLIB_LAPACK_DIR) lapacklib @$(MAKE) -C $(NETLIB_LAPACK_DIR) lapacklib
@$(MAKE) -C $(NETLIB_LAPACK_DIR) tmglib @$(MAKE) -C $(NETLIB_LAPACK_DIR) tmglib
endif endif
@ -231,7 +242,10 @@ prof_lapack : lapack_prebuild
@$(MAKE) -C $(NETLIB_LAPACK_DIR) lapack_prof @$(MAKE) -C $(NETLIB_LAPACK_DIR) lapack_prof
lapack_prebuild : lapack_prebuild :
ifndef NOFORTRAN $(info filter value of NOFORTRAN is:)
$(info x$(filter-out $(NOFORTRAN), 1 2)x)
ifneq ($(NOFORTRAN), $(filter-out $(NOFORTRAN), 1 2))
-@echo "FORTRAN = $(FC)" > $(NETLIB_LAPACK_DIR)/make.inc -@echo "FORTRAN = $(FC)" > $(NETLIB_LAPACK_DIR)/make.inc
-@echo "OPTS = $(LAPACK_FFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc -@echo "OPTS = $(LAPACK_FFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
-@echo "POPTS = $(LAPACK_FPFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc -@echo "POPTS = $(LAPACK_FPFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
@ -274,21 +288,21 @@ endif
endif endif
large.tgz : large.tgz :
ifndef NOFORTRAN ifneq ($(NOFORTRAN), $(filter $(NOFORTRAN), 1 2))
if [ ! -a $< ]; then if [ ! -a $< ]; then
-wget http://www.netlib.org/lapack/timing/large.tgz; -wget http://www.netlib.org/lapack/timing/large.tgz;
fi fi
endif endif
timing.tgz : timing.tgz :
ifndef NOFORTRAN ifneq ($(NOFORTRAN), $(filter $(NOFORTRAN), 1 2))
if [ ! -a $< ]; then if [ ! -a $< ]; then
-wget http://www.netlib.org/lapack/timing/timing.tgz; -wget http://www.netlib.org/lapack/timing/timing.tgz;
fi fi
endif endif
lapack-timing : large.tgz timing.tgz lapack-timing : large.tgz timing.tgz
ifndef NOFORTRAN ifneq ($(NOFORTRAN), $(filter $(NOFORTRAN), 1 2))
(cd $(NETLIB_LAPACK_DIR); $(TAR) zxf ../timing.tgz TIMING) (cd $(NETLIB_LAPACK_DIR); $(TAR) zxf ../timing.tgz TIMING)
(cd $(NETLIB_LAPACK_DIR)/TIMING; $(TAR) zxf ../../large.tgz ) (cd $(NETLIB_LAPACK_DIR)/TIMING; $(TAR) zxf ../../large.tgz )
$(MAKE) -C $(NETLIB_LAPACK_DIR)/TIMING $(MAKE) -C $(NETLIB_LAPACK_DIR)/TIMING

View File

@ -102,7 +102,13 @@ clean ::
rm -f x* rm -f x*
FLDFLAGS = $(FFLAGS:-fPIC=) $(LDFLAGS) FLDFLAGS = $(FFLAGS:-fPIC=) $(LDFLAGS)
CEXTRALIB = ifeq ($(USE_OPENMP), 1)
ifeq ($(F_COMPILER), GFORTRAN)
ifeq ($(C_COMPILER), CLANG)
CEXTRALIB = -lomp
endif
endif
endif
# Single real # Single real
xscblat1: $(stestl1o) c_sblat1.o $(TOPDIR)/$(LIBNAME) xscblat1: $(stestl1o) c_sblat1.o $(TOPDIR)/$(LIBNAME)

View File

@ -122,8 +122,13 @@ endif
FLDFLAGS = $(FFLAGS:-fPIC=) $(LDFLAGS) FLDFLAGS = $(FFLAGS:-fPIC=) $(LDFLAGS)
CEXTRALIB = ifeq ($(USE_OPENMP), 1)
ifeq ($(F_COMPILER), GFORTRAN)
ifeq ($(C_COMPILER), CLANG)
CEXTRALIB = -lomp
endif
endif
endif
sblat1 : sblat1.$(SUFFIX) ../$(LIBNAME) sblat1 : sblat1.$(SUFFIX) ../$(LIBNAME)
$(FC) $(FLDFLAGS) -o sblat1 sblat1.$(SUFFIX) ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB) $(FC) $(FLDFLAGS) -o sblat1 sblat1.$(SUFFIX) ../$(LIBNAME) $(EXTRALIB) $(CEXTRALIB)