@@ -38,7 +38,9 @@ CC = gcc
3838CFLAGS_add += -fno -gnu89 -inline
3939endif
4040
41- ARCH := $(shell $(CC ) -dumpmachine | sed "s/\([^-]*\).*$$/\1/" )
41+ ARCH ?= $(shell $(CC ) -dumpmachine | sed "s/\([^-]*\).*$$/\1/" )
42+ ARCH_ORIGIN := $(origin ARCH )
43+
4244ifeq ($(ARCH ), mingw32 )
4345$(error "the mingw32 compiler you are using fails the openblas testsuite. please see the Julia README.windows.md document for a replacement" )
4446endif
@@ -48,12 +50,16 @@ CFLAGS_add += -std=c99 -Wall -O3 -I$(OPENLIBM_HOME) -I$(OPENLIBM_HOME)/include -
4850default : all
4951
5052%. c . o : %. c
51- $(CC ) $(CPPFLAGS ) $(CFLAGS_add ) $(CFLAGS ) -c $< -o $@
53+ $(CC ) $(CPPFLAGS ) $(CFLAGS ) $(CFLAGS_add ) -c $< -o $@
5254
5355%. S . o : %. S
54- $(CC ) $(SFLAGS ) $(filter -m % -B % -I % -D %, $(CFLAGS_add )) -c $< -o $@
56+ $(CC ) $(SFLAGS ) $(SFLAGS_add ) $( filter -m % -B % -I % -D %, $(CFLAGS_add )) -c $< -o $@
5557
5658# OS-specific stuff
59+ REAL_ARCH := $(ARCH )
60+ ifeq ($(findstring arm , $(ARCH )), arm )
61+ override ARCH := arm
62+ endif
5763ifeq ($(ARCH ), i386 )
5864override ARCH := i387
5965endif
@@ -102,3 +108,34 @@ SHLIB_EXT = dylib
102108SONAME_FLAG = -install_name
103109CFLAGS_add += -fPIC
104110endif
111+
112+ # The target specific FLAGS_add
113+ ifeq ($(ARCH_ORIGIN ), file )
114+ CFLAGS_add_TARGET_ $(ARCH ) :=
115+ SFLAGS_add_TARGET_ $(ARCH ) :=
116+ LDFLAGS_add_TARGET_ $(ARCH ) :=
117+ else
118+ ifeq ($(ARCH ), i387 )
119+ CFLAGS_add_TARGET_ $(ARCH ) := -m32 -march = $(REAL_ARCH )
120+ SFLAGS_add_TARGET_ $(ARCH ) := -m32 -march = $(REAL_ARCH )
121+ LDFLAGS_add_TARGET_ $(ARCH ) := -m32 -march = $(REAL_ARCH )
122+ endif
123+ CFLAGS_add_TARGET_x86_64 := -m64
124+ SFLAGS_add_TARGET_x86_64 := -m64
125+ LDFLAGS_add_TARGET_x86_64 := -m64
126+ # Arm
127+ ifeq ($(ARCH ), arm )
128+ ifneq ($(REAL_ARCH ), arm )
129+ CFLAGS_add_TARGET_ $(ARCH ) := -march = $(REAL_ARCH )
130+ SFLAGS_add_TARGET_ $(ARCH ) := -march = $(REAL_ARCH )
131+ LDFLAGS_add_TARGET_ $(ARCH ) := -march = $(REAL_ARCH )
132+ else
133+ $(error No known generic arm cflags . Please specify arch type )
134+ endif
135+ endif
136+ endif
137+
138+ # Actually finish setting the FLAGS_add
139+ CFLAGS_add += $(CFLAGS_add_TARGET_ $(ARCH ))
140+ LDFLAGS_add += $(LDFLAGS_add_TARGET_ $(ARCH ))
141+ SFLAGS_add += $(SFLAGS_add_TARGET_ $(ARCH ))
0 commit comments