From 4d3829fa52240c2b7e48770ab19584db33ba7863 Mon Sep 17 00:00:00 2001 From: Thomas De Schampheleire Date: Fri, 5 Mar 2021 11:17:59 +0100 Subject: [PATCH] Makefile: fix support for passing FFLAGS on the make command line When openblas is built while passing FFLAGS on the make command line, the compilation of lapack objects will not contain the flags specified in Makefile but _only_ those passed in FFLAGS. This can lead to build failure, e.g. because -fPIC is not passed to the compilation of most lapack objects, but is given to the link command: .../buildroot/output/host/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -O2 -DMAX_STACK_ALLOC=2048 -Wall -m64 -DF_INTERFACE_GFORT -fPIC -DNO_WARMUP -DMAX_CPU_NUMBER=4 -DMAX_PARALLEL_NUMBER=1 -DVERSION=\"0.3.9\" -DASMNAME= -DASMFNAME=_ -DNAME=_ -DCNAME= -DCHAR_NAME=\"_\" -DCHAR_CNAME=\"\" -DNO_AFFINITY -I.. -shared -o ../libopenblas_nehalem-r0.3.9.so \ -Wl,--whole-archive ../libopenblas_nehalem-r0.3.9.a -Wl,--no-whole-archive \ -Wl,-soname,libopenblas.so.0 -lm -lgfortran -lm -lgfortran .../buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-musl/9.3.0/../../../../x86_64-buildroot-linux-musl/bin/ld: ../libopenblas_nehalem-r0.3.9.a(sbdsvdx.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC In the initial support for this principle, added in commit d0e731e8b825e7a554f245aa8f1118dcec9e2728, the flags specified in the makefile were appended to the flags specified on the command-line. Fix this situation by using 'override' for 'FFLAGS' in lapack-netlib/make.inc. The flags passed on the command-line are already part of the LAPACK_FFLAGS variable, so no '+=' is needed here. Signed-off-by: Thomas De Schampheleire --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index fc5fe3f5..8ae1ff47 100644 --- a/Makefile +++ b/Makefile @@ -248,7 +248,7 @@ prof_lapack : lapack_prebuild lapack_prebuild : ifeq ($(NOFORTRAN), $(filter 0,$(NOFORTRAN))) -@echo "FC = $(FC)" > $(NETLIB_LAPACK_DIR)/make.inc - -@echo "FFLAGS = $(LAPACK_FFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc + -@echo "override FFLAGS = $(LAPACK_FFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc -@echo "POPTS = $(LAPACK_FPFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc -@echo "FFLAGS_NOOPT = -O0 $(LAPACK_NOOPT)" >> $(NETLIB_LAPACK_DIR)/make.inc -@echo "PNOOPT = $(LAPACK_FPFLAGS) -O0" >> $(NETLIB_LAPACK_DIR)/make.inc -- 2.26.2