(Plain make) build system fixes for AIX
authorMartin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Sun, 17 Sep 2017 23:29:21 +0000 (01:29 +0200)
committerGitHub <noreply@github.com>
Sun, 17 Sep 2017 23:29:21 +0000 (01:29 +0200)
- retry fortran compiler test with aix-specific option if generic -m32/-m64 fails
- pass any custom ARFLAGS to lapack
- no addition of -m32/-m64 to the CFLAGS and FFLAGS on AIX

Makefile
Makefile.system
f_check
make.inc

index c3181e2..a625732 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -28,9 +28,6 @@ SUBDIRS_ALL = $(SUBDIRS) test ctest utest exports benchmark ../laswp ../bench
 .PHONY : all libs netlib $(RELA) test ctest shared install
 .NOTPARALLEL : all libs $(RELA) prof lapack-test install blas-test
 
-# source: https://stackoverflow.com/questions/52674/simplest-way-to-reverse-the-order-of-strings-in-a-make-variable/14260762#14260762
-reverse = $(if $(wordlist 2,2,$(1)),$(call reverse,$(wordlist 2,$(words $(1)),$(1))) $(firstword $(1)),$(1))
-
 all :: libs netlib $(RELA) tests shared
        @echo
        @echo " OpenBLAS build complete. ($(LIB_COMPONENTS))"
@@ -84,8 +81,8 @@ ifeq ($(OSNAME), Darwin)
        @echo "install_name_tool -id /new/absolute/path/to/$(LIBDYNNAME) $(LIBDYNNAME)"
 endif
        @echo
-       @echo "To install the library, you can run"
-       @echo "  make $(call reverse,$(MAKEFLAGS)) PREFIX=/path/to/your/installation install"
+       @echo "To install the library, you can run \"make PREFIX=/path/to/your/installation install\"."
+       @echo
 
 shared :
 ifndef NO_SHARED
@@ -245,7 +242,7 @@ ifndef NOFORTRAN
        -@echo "CC          = $(CC)" >> $(NETLIB_LAPACK_DIR)/make.inc
        -@echo "override CFLAGS      = $(LAPACK_CFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
        -@echo "ARCH        = $(AR)" >> $(NETLIB_LAPACK_DIR)/make.inc
-       -@echo "ARCHFLAGS   = -ru" >> $(NETLIB_LAPACK_DIR)/make.inc
+       -@echo "ARCHFLAGS   = $(ARFLAGS) -ru" >> $(NETLIB_LAPACK_DIR)/make.inc
        -@echo "RANLIB      = $(RANLIB)" >> $(NETLIB_LAPACK_DIR)/make.inc
        -@echo "LAPACKLIB   = ../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
        -@echo "TMGLIB      = ../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
index 102a727..1db3064 100644 (file)
@@ -242,6 +242,10 @@ EXTRALIB   += -lm
 NO_EXPRECISION = 1
 endif
 
+ifeq ($(OSNAME), Android)
+EXTRALIB       += -lm
+endif
+
 ifeq ($(OSNAME), AIX)
 EXTRALIB       += -lm
 endif
@@ -571,12 +575,14 @@ endif
 endif
 
 ifndef BINARY_DEFINED
+ifneq ($(OSNAME), AIX)
 ifdef BINARY64
 CCOMMON_OPT += -m64
 else
 CCOMMON_OPT += -m32
 endif
 endif
+endif
 
 endif
 
@@ -621,6 +627,7 @@ ifeq ($(F_COMPILER), G77)
 CCOMMON_OPT += -DF_INTERFACE_G77
 FCOMMON_OPT += -Wall
 ifndef NO_BINARY_MODE
+ifneq ($(OSNAME), AIX)
 ifdef BINARY64
 FCOMMON_OPT += -m64
 else
@@ -628,10 +635,12 @@ FCOMMON_OPT += -m32
 endif
 endif
 endif
+endif
 
 ifeq ($(F_COMPILER), G95)
 CCOMMON_OPT += -DF_INTERFACE_G95
 FCOMMON_OPT += -Wall
+ifneq ($(OSNAME), AIX)
 ifndef NO_BINARY_MODE
 ifdef BINARY64
 FCOMMON_OPT += -m64
@@ -640,6 +649,7 @@ FCOMMON_OPT += -m32
 endif
 endif
 endif
+endif
 
 ifeq ($(F_COMPILER), GFORTRAN)
 CCOMMON_OPT += -DF_INTERFACE_GFORT
@@ -660,16 +670,20 @@ FCOMMON_OPT += -mabi=32
 endif
 else
 ifdef BINARY64
+ifneq ($(OSNAME), AIX)
 FCOMMON_OPT += -m64
+endif
 ifdef INTERFACE64
 ifneq ($(INTERFACE64), 0)
 FCOMMON_OPT +=  -fdefault-integer-8
 endif
 endif
 else
+ifneq ($(OSNAME), AIX)
 FCOMMON_OPT += -m32
 endif
 endif
+endif
 ifeq ($(USE_OPENMP), 1)
 FCOMMON_OPT += -fopenmp
 endif
diff --git a/f_check b/f_check
index b3e0311..941a9a5 100644 (file)
--- a/f_check
+++ b/f_check
@@ -71,7 +71,7 @@ if ($compiler eq "") {
 
        if ($data =~ /GNU/) {
 
-           $data =~ /(\d)\.(\d).(.)/;
+           $data =~ /(\d)\.(\d).(\d)/;
            $major = $1;
            $minor = $2;
 
@@ -233,6 +233,10 @@ if (!$?) {
        if ($?) {
            $link = `$compiler $openmp -q32 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
        }
+        # for AIX
+       if ($?) {
+           $link = `$compiler $openmp -maix32 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
+       }
        #For gfortran MIPS
        if ($?) {
     $mips_data = `$compiler_bin -E -dM - < /dev/null`;
@@ -250,6 +254,10 @@ if (!$?) {
        if ($?) {
            $link = `$compiler $openmp -q64 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
        }
+        # for AIX
+       if ($?) {
+           $link = `$compiler $openmp -maix64 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
+       }
        #For gfortran MIPS
        if ($?) {
            $link = `$compiler $openmp -mabi=64 -v ftest2.f 2>&1 && rm -f a.out a.exe`;
index 1fc95b0..b6ed098 100644 (file)
--- a/make.inc
+++ b/make.inc
@@ -1,6 +1,6 @@
 SHELL = /bin/sh
 PLAT = _LINUX
 DRVOPTS  = $(NOOPT)
-ARCHFLAGS= -ru
+#ARCHFLAGS= $(ARFLAGS) -ru
 #RANLIB   = ranlib