1e8bf3685SViral B. Shah# -*- mode: makefile-gmake -*- 2e8bf3685SViral B. Shah 3bcefcc3dSJameson NashOS := $(shell uname) 41f77ae02SMilan Bouchet-Valat# Do not forget to bump SOMINOR when changing VERSION, 5c41813f6SMilan Bouchet-Valat# and SOMAJOR when breaking ABI in a backward-incompatible way 6763da446SViral B. ShahVERSION = 0.5-dev 7763da446SViral B. ShahSOMAJOR = 2 8168467f0SViral B. ShahSOMINOR = 1 971d942f7SViral B. ShahDESTDIR = 10bb40f6c7SMilan Bouchet-Valatprefix = /usr/local 11716317b7STony Kelmanbindir = $(prefix)/bin 12bb40f6c7SMilan Bouchet-Valatlibdir = $(prefix)/lib 13b4625783SMilan Bouchet-Valatincludedir = $(prefix)/include 1456811b08SViral B. Shah 1537559aa1SIblis Linifeq ($(OS), FreeBSD) 1637559aa1SIblis Lin pkgconfigdir = $(prefix)/libdata/pkgconfig 1737559aa1SIblis Linelse 1837559aa1SIblis Lin pkgconfigdir = $(libdir)/pkgconfig 1937559aa1SIblis Linendif 2037559aa1SIblis Lin 2156811b08SViral B. ShahUSEGCC = 1 2256811b08SViral B. ShahUSECLANG = 0 2356811b08SViral B. Shah 2429af332fSViral B. Shahifeq ($(OS), Darwin) 2529af332fSViral B. ShahUSEGCC = 0 2629af332fSViral B. ShahUSECLANG = 1 2729af332fSViral B. Shahendif 2829af332fSViral B. Shah 2934d44ffaSEd Schoutenifeq ($(OS), FreeBSD) 3034d44ffaSEd SchoutenUSEGCC = 0 3134d44ffaSEd SchoutenUSECLANG = 1 3234d44ffaSEd Schoutenendif 3334d44ffaSEd Schouten 3429af332fSViral B. ShahAR = ar 3575ba4267SMike Nolta 3656811b08SViral B. Shahifeq ($(USECLANG),1) 3756811b08SViral B. ShahUSEGCC = 0 3856811b08SViral B. ShahCC = clang 393fda504fSJameson NashCFLAGS_add += -fno-builtin 4056811b08SViral B. Shahendif 4156811b08SViral B. Shah 4256811b08SViral B. Shahifeq ($(USEGCC),1) 4356811b08SViral B. ShahCC = gcc 444a1b310fSViral B. ShahCFLAGS_add += -fno-gnu89-inline -fno-builtin 4556811b08SViral B. Shahendif 46ccd319c0SViral B. Shah 47f70240deSAlexander LightARCH ?= $(shell $(CC) -dumpmachine | sed "s/\([^-]*\).*$$/\1/") 48f70240deSAlexander LightARCH_ORIGIN := $(origin ARCH) 49f70240deSAlexander Light 50f948e55cSJameson Nashifeq ($(ARCH),mingw32) 51f948e55cSJameson Nash$(error "the mingw32 compiler you are using fails the openblas testsuite. please see the Julia README.windows.md document for a replacement") 52f948e55cSJameson Nashendif 53bcefcc3dSJameson Nash 543095eef6SPeter ColbergCFLAGS_add += -std=c99 -Wall -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 553095eef6SPeter Colberg 56f5fb9274SViral B. Shahdefault: all 57f5fb9274SViral B. Shah 58dcc0d8daSSimon Byrne# *int / *intf need to be built with -O0 59dcc0d8daSSimon Byrnesrc/%int.c.o: src/%int.c 60dcc0d8daSSimon Byrne $(CC) $(CPPFLAGS) -O0 $(CFLAGS_add) -c $< -o $@ 61dcc0d8daSSimon Byrne 62dcc0d8daSSimon Byrnesrc/%intf.c.o: src/%intf.c 63dcc0d8daSSimon Byrne $(CC) $(CPPFLAGS) -O0 $(CFLAGS_add) -c $< -o $@ 64dcc0d8daSSimon Byrne 65f0862df1SKeno Fischer%.c.o: %.c 66f70240deSAlexander Light $(CC) $(CPPFLAGS) $(CFLAGS) $(CFLAGS_add) -c $< -o $@ 67e8bf3685SViral B. Shah 68f0862df1SKeno Fischer%.S.o: %.S 69395d9985SGraham Inggs $(CC) $(CPPFLAGS) $(SFLAGS) $(SFLAGS_add) $(filter -m% -B% -I% -D%,$(CFLAGS_add)) -c $< -o $@ 70f0862df1SKeno Fischer 71ccd319c0SViral B. Shah# OS-specific stuff 72f70240deSAlexander LightREAL_ARCH := $(ARCH) 73f70240deSAlexander Lightifeq ($(findstring arm,$(ARCH)),arm) 74f70240deSAlexander Lightoverride ARCH := arm 75f70240deSAlexander Lightendif 76*019990ecSGraham Inggsifeq ($(ARCH),aarch64) 77*019990ecSGraham Inggsoverride ARCH := arm 78*019990ecSGraham Inggsendif 7910bae660SSimon Byrneifeq ($(findstring powerpc,$(ARCH)),powerpc) 8010bae660SSimon Byrneoverride ARCH := powerpc 8110bae660SSimon Byrneendif 82b87b1631SSimon Byrneifeq ($(findstring ppc,$(ARCH)),ppc) 83b87b1631SSimon Byrneoverride ARCH := powerpc 84b87b1631SSimon Byrneendif 85307d7361SKeno Fischerifeq ($(ARCH),i386) 86bcefcc3dSJameson Nashoverride ARCH := i387 87307d7361SKeno Fischerendif 88bb082acaSJameson Nashifeq ($(ARCH),i486) 89bb082acaSJameson Nashoverride ARCH := i387 90bb082acaSJameson Nashendif 9109055587SViral B. Shahifeq ($(ARCH),i586) 9209055587SViral B. Shahoverride ARCH := i387 9309055587SViral B. Shahendif 94bb082acaSJameson Nashifeq ($(ARCH),i686) 95bb082acaSJameson Nashoverride ARCH := i387 96bb082acaSJameson Nashendif 97307d7361SKeno Fischer 98307d7361SKeno Fischerifeq ($(ARCH),x86_64) 99bcefcc3dSJameson Nashoverride ARCH := amd64 100307d7361SKeno Fischerendif 1010df00dd0SJameson Nash 102ac6fb73cSSimon Byrne# The optimization flag may be overriden with the environment variable CFLAGS. 103ac6fb73cSSimon ByrneCFLAGS ?= -O2 104ac6fb73cSSimon Byrne 10513cc5795SJameson Nashifneq (,$(findstring MINGW,$(OS))) 10613cc5795SJameson Nashoverride OS=WINNT 1073fda504fSJameson Nashendif 108716317b7STony Kelman 109716317b7STony Kelman#keep these if statements separate 110ebe1db3cSGraham Inggs 1113fda504fSJameson Nashifeq ($(OS), WINNT) 112251814ebSMilan Bouchet-Valat SHLIB_EXT = dll 113251814ebSMilan Bouchet-Valat SONAME_FLAG = -soname 114ebe1db3cSGraham Inggs override CFLAGS_add += -nodefaultlibs 1151cc9ad07STony Kelman shlibdir = $(bindir) 116716317b7STony Kelmanelse 117ccd319c0SViral B. Shah ifeq ($(OS), Darwin) 118ccd319c0SViral B. Shah SHLIB_EXT = dylib 119251814ebSMilan Bouchet-Valat SONAME_FLAG = -install_name 120ebe1db3cSGraham Inggs else 121ebe1db3cSGraham Inggs SHLIB_EXT = so 122ebe1db3cSGraham Inggs SONAME_FLAG = -soname 123ebe1db3cSGraham Inggs endif 124ebe1db3cSGraham Inggs override CFLAGS_add += -fPIC 125ebe1db3cSGraham Inggs shlibdir = $(libdir) 1260df00dd0SJameson Nashendif 127f70240deSAlexander Light 128f70240deSAlexander Light# The target specific FLAGS_add 129f70240deSAlexander Lightifeq ($(ARCH_ORIGIN),file) 130f70240deSAlexander LightCFLAGS_add_TARGET_$(ARCH) := 131f70240deSAlexander LightSFLAGS_add_TARGET_$(ARCH) := 132f70240deSAlexander LightLDFLAGS_add_TARGET_$(ARCH) := 133f70240deSAlexander Lightelse 134f70240deSAlexander Lightifeq ($(ARCH),i387) 135f70240deSAlexander LightCFLAGS_add_TARGET_$(ARCH) := -m32 -march=$(REAL_ARCH) 136f70240deSAlexander LightSFLAGS_add_TARGET_$(ARCH) := -m32 -march=$(REAL_ARCH) 137f70240deSAlexander LightLDFLAGS_add_TARGET_$(ARCH) := -m32 -march=$(REAL_ARCH) 138f70240deSAlexander Lightendif 139f70240deSAlexander LightCFLAGS_add_TARGET_x86_64 := -m64 140f70240deSAlexander LightSFLAGS_add_TARGET_x86_64 := -m64 141f70240deSAlexander LightLDFLAGS_add_TARGET_x86_64 := -m64 142f70240deSAlexander Light# Arm 143f70240deSAlexander Lightifeq ($(ARCH),arm) 144f70240deSAlexander Lightifneq ($(REAL_ARCH),arm) 145f70240deSAlexander LightCFLAGS_add_TARGET_$(ARCH) := -march=$(REAL_ARCH) 146f70240deSAlexander LightSFLAGS_add_TARGET_$(ARCH) := -march=$(REAL_ARCH) 147f70240deSAlexander LightLDFLAGS_add_TARGET_$(ARCH) := -march=$(REAL_ARCH) 148f70240deSAlexander Lightelse 149f70240deSAlexander Light$(error No known generic arm cflags. Please specify arch type) 150f70240deSAlexander Lightendif 151f70240deSAlexander Lightendif 152f70240deSAlexander Lightendif 153f70240deSAlexander Light 154f70240deSAlexander Light# Actually finish setting the FLAGS_add 155f70240deSAlexander LightCFLAGS_add += $(CFLAGS_add_TARGET_$(ARCH)) 156f70240deSAlexander LightLDFLAGS_add += $(LDFLAGS_add_TARGET_$(ARCH)) 157f70240deSAlexander LightSFLAGS_add += $(SFLAGS_add_TARGET_$(ARCH)) 158