xref: /relibc/openlibm/Make.inc (revision 019990ecb710c161d19d38920969d64697b6babc)
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