1# -*- mode: makefile-gmake -*- 2 3OS := $(shell uname) 4 5FC = gfortran 6FFLAGS += -O3 7 8USEGCC = 1 9USECLANG = 0 10 11ifeq ($(OS), Darwin) 12USEGCC = 0 13USECLANG = 1 14endif 15 16AR = ar 17 18ifeq ($(USECLANG),1) 19USEGCC = 0 20CC = clang 21CFLAGS_add += -fno-builtin 22endif 23 24ifeq ($(USEGCC),1) 25CC = gcc 26CFLAGS_add += -fno-gnu89-inline 27endif 28 29ARCH := $(shell $(CC) -dumpmachine | sed "s/\([^-]*\).*$$/\1/") 30ifeq ($(ARCH),mingw32) 31$(error "the mingw32 compiler you are using fails the openblas testsuite. please see the Julia README.windows.md document for a replacement") 32endif 33 34CFLAGS_add += -std=c99 -Wall -O3 -I$(OPENLIBM_HOME) -I$(OPENLIBM_HOME)/include -I$(OPENLIBM_HOME)/ld80 -I$(OPENLIBM_HOME)/$(ARCH) -I$(OPENLIBM_HOME)/src -DASSEMBLER -D__BSD_VISIBLE -Wno-implicit-function-declaration 35 36default: all 37 38%.c.o: %.c 39 $(CC) $(CPPFLAGS) $(CFLAGS_add) $(CFLAGS) -c $< -o $@ 40 41%.f.o: %.f 42 $(FC) $(FFLAGS) -c $< -o $@ 43 44%.S.o: %.S 45 $(CC) $(SFLAGS) $(filter -m% -B% -I% -D%,$(CFLAGS_add)) -c $< -o $@ 46 47clean: 48 rm -fr *.o *.c.o *.S.o *~ test-double test-float test-double-system test-float-system *.dSYM 49 50# OS-specific stuff 51ifeq ($(ARCH),i386) 52override ARCH := i387 53endif 54ifeq ($(ARCH),i486) 55override ARCH := i387 56endif 57ifeq ($(ARCH),i686) 58override ARCH := i387 59endif 60 61ifeq ($(ARCH),x86_64) 62override ARCH := amd64 63endif 64 65ifneq (,$(findstring MINGW,$(OS))) 66override OS=WINNT 67endif 68#keep these if statements these separate 69ifeq ($(OS), WINNT) 70CFLAGS_add+=-nodefaultlibs 71FFLAGS+=-nodefaultlibs 72endif 73 74ifeq ($(OS), Linux) 75SHLIB_EXT = so 76CFLAGS_add+=-fPIC 77FFLAGS+=-fPIC 78endif 79 80ifeq ($(OS), FreeBSD) 81SHLIB_EXT = so 82CFLAGS_add+=-fPIC 83FFLAGS+=-fPIC 84endif 85 86ifeq ($(OS), Darwin) 87SHLIB_EXT = dylib 88CFLAGS_add+=-fPIC 89FFLAGS+=-fPIC 90endif 91 92ifeq ($(OS), WINNT) 93SHLIB_EXT = dll 94endif 95