xref: /relibc/openlibm/Make.inc (revision 65d7406056d4bdd0ec0da05694364333c4d44331)
1e8bf3685SViral B. Shah# -*- mode: makefile-gmake -*-
2e8bf3685SViral B. Shah
3c2145306SElliot Saba# Default build rule for any Makefile in this project: all
4c2145306SElliot Sabadefault: all
5c2145306SElliot Saba
6bcefcc3dSJameson NashOS := $(shell uname)
71f77ae02SMilan Bouchet-Valat# Do not forget to bump SOMINOR when changing VERSION,
8c41813f6SMilan Bouchet-Valat# and SOMAJOR when breaking ABI in a backward-incompatible way
94971b569SViral B. ShahVERSION = 0.6.0
10763da446SViral B. ShahSOMAJOR = 2
11a40570beSGraham InggsSOMINOR = 5
1271d942f7SViral B. ShahDESTDIR =
13bb40f6c7SMilan Bouchet-Valatprefix = /usr/local
14716317b7STony Kelmanbindir = $(prefix)/bin
15bb40f6c7SMilan Bouchet-Valatlibdir = $(prefix)/lib
16b4625783SMilan Bouchet-Valatincludedir = $(prefix)/include
1756811b08SViral B. Shah
1837559aa1SIblis Linifeq ($(OS), FreeBSD)
1937559aa1SIblis Linpkgconfigdir = $(prefix)/libdata/pkgconfig
2037559aa1SIblis Linelse
2137559aa1SIblis Linpkgconfigdir = $(libdir)/pkgconfig
2237559aa1SIblis Linendif
2337559aa1SIblis Lin
2456811b08SViral B. ShahUSEGCC = 1
2556811b08SViral B. ShahUSECLANG = 0
2656811b08SViral B. Shah
27bf188aebSAlex Arslanifneq (,$(findstring $(OS),Darwin FreeBSD OpenBSD))
2834d44ffaSEd SchoutenUSEGCC = 0
2934d44ffaSEd SchoutenUSECLANG = 1
3034d44ffaSEd Schoutenendif
3134d44ffaSEd Schouten
328d91ecb3SwarpcoilAR = $(TOOLPREFIX)ar
3375ba4267SMike Nolta
3456811b08SViral B. Shahifeq ($(USECLANG),1)
3556811b08SViral B. ShahUSEGCC = 0
3656811b08SViral B. ShahCC = clang
37ddf649beSSimon ByrneCFLAGS_add += -fno-builtin -fno-strict-aliasing
3856811b08SViral B. Shahendif
3956811b08SViral B. Shah
4056811b08SViral B. Shahifeq ($(USEGCC),1)
418d91ecb3SwarpcoilCC = $(TOOLPREFIX)gcc
424a1b310fSViral B. ShahCFLAGS_add += -fno-gnu89-inline -fno-builtin
4356811b08SViral B. Shahendif
44ccd319c0SViral B. Shah
45f70240deSAlexander LightARCH ?= $(shell $(CC) -dumpmachine | sed "s/\([^-]*\).*$$/\1/")
46f70240deSAlexander Light
47f948e55cSJameson Nashifeq ($(ARCH),mingw32)
48f948e55cSJameson Nash$(error "the mingw32 compiler you are using fails the openblas testsuite. please see the Julia README.windows.md document for a replacement")
49f948e55cSJameson Nashendif
50bcefcc3dSJameson Nash
51ccd319c0SViral B. Shah# OS-specific stuff
52f70240deSAlexander Lightifeq ($(findstring arm,$(ARCH)),arm)
53f70240deSAlexander Lightoverride ARCH := arm
54c2145306SElliot SabaMARCH ?= armv7-a
55c2145306SElliot SabaCFLAGS_add += -mhard-float
56019990ecSGraham Inggsendif
5710bae660SSimon Byrneifeq ($(findstring powerpc,$(ARCH)),powerpc)
5810bae660SSimon Byrneoverride ARCH := powerpc
5910bae660SSimon Byrneendif
60b87b1631SSimon Byrneifeq ($(findstring ppc,$(ARCH)),ppc)
61b87b1631SSimon Byrneoverride ARCH := powerpc
62b87b1631SSimon Byrneendif
63*2a1e5685SDan Horákifeq ($(findstring s390,$(ARCH)),s390)
64*2a1e5685SDan Horákoverride ARCH := s390
65*2a1e5685SDan Horákendif
66c2145306SElliot Sabaifneq ($(filter $(ARCH),i386 i486 i586 i686 i387 i487 i587 i687),)
67bcefcc3dSJameson Nashoverride ARCH := i387
68c2145306SElliot SabaMARCH ?= i686
69307d7361SKeno Fischerendif
70307d7361SKeno Fischerifeq ($(ARCH),x86_64)
71bcefcc3dSJameson Nashoverride ARCH := amd64
72307d7361SKeno Fischerendif
734f5112eaSRadovan Birdicifeq ($(findstring mips,$(ARCH)),mips)
744f5112eaSRadovan Birdicoverride ARCH := mips
754f5112eaSRadovan Birdicendif
760df00dd0SJameson Nash
7775ec57d9SElliot Saba# If CFLAGS does not contain a -O optimization flag, default to -O3
7875ec57d9SElliot Sabaifeq ($(findstring -O,$(CFLAGS)),)
7975ec57d9SElliot SabaCFLAGS_add += -O3
8075ec57d9SElliot Sabaendif
81ac6fb73cSSimon Byrne
8213cc5795SJameson Nashifneq (,$(findstring MINGW,$(OS)))
8313cc5795SJameson Nashoverride OS=WINNT
843fda504fSJameson Nashendif
85716317b7STony Kelman
86716317b7STony Kelman#keep these if statements separate
873fda504fSJameson Nashifeq ($(OS), WINNT)
88251814ebSMilan Bouchet-ValatSHLIB_EXT = dll
89251814ebSMilan Bouchet-ValatSONAME_FLAG = -soname
9057ed3553SPeter ColbergCFLAGS_add += -nodefaultlibs
911cc9ad07STony Kelmanshlibdir = $(bindir)
92716317b7STony Kelmanelse
93ccd319c0SViral B. Shahifeq ($(OS), Darwin)
94ccd319c0SViral B. ShahSHLIB_EXT = dylib
95251814ebSMilan Bouchet-ValatSONAME_FLAG = -install_name
96ebe1db3cSGraham Inggselse
97ebe1db3cSGraham InggsSHLIB_EXT = so
98ebe1db3cSGraham InggsSONAME_FLAG = -soname
99ebe1db3cSGraham Inggsendif
10057ed3553SPeter ColbergCFLAGS_add += -fPIC
101ebe1db3cSGraham Inggsshlibdir = $(libdir)
1020df00dd0SJameson Nashendif
103f70240deSAlexander Light
104c2145306SElliot Saba# Add `-march` to our CFLAGS if it's defined
105c2145306SElliot Sabaifneq ($(MARCH),)
106c2145306SElliot SabaCFLAGS_arch += -march=$(MARCH)
107f70240deSAlexander Lightendif
108f70240deSAlexander Light
109c2145306SElliot Sabaifeq ($(ARCH),i387)
110c2145306SElliot SabaCFLAGS_arch  += -m32
111c2145306SElliot SabaSFLAGS_arch  += -m32
112c2145306SElliot SabaLDFLAGS_arch += -m32
113c2145306SElliot Sabaendif
114c2145306SElliot Saba
115c2145306SElliot Sabaifeq ($(ARCH),amd64)
116c2145306SElliot SabaCFLAGS_arch  += -m64
117c2145306SElliot SabaSFLAGS_arch  += -m64
118c2145306SElliot SabaLDFLAGS_arch += -m64
119c2145306SElliot Sabaendif
120c2145306SElliot Saba
121c2145306SElliot Saba# Add our "arch"-related FLAGS in.  We separate arch-related flags out so that
122c2145306SElliot Saba# we can conveniently get at them for targets that don't want the rest of
123c2145306SElliot Saba# *FLAGS_add, such as the testing Makefile targets
124c2145306SElliot SabaCFLAGS_add  += $(CFLAGS_arch)
125c2145306SElliot SabaSFLAGS_add  += $(SFLAGS_arch)
126c2145306SElliot SabaLDFLAGS_add += $(LDFLAGS_arch)
127c2145306SElliot Saba
128c2145306SElliot SabaCFLAGS_add += -std=c99 -Wall -I$(OPENLIBM_HOME) -I$(OPENLIBM_HOME)/include -I$(OPENLIBM_HOME)/$(ARCH) -I$(OPENLIBM_HOME)/src -DASSEMBLER -D__BSD_VISIBLE -Wno-implicit-function-declaration
129238a9095SYichao Yuifneq ($(filter $(ARCH),i387 amd64 powerpc),)
130c2145306SElliot SabaCFLAGS_add += -I$(OPENLIBM_HOME)/ld80
131238a9095SYichao Yuelse
132238a9095SYichao Yuifneq ($(filter $(ARCH),aarch64),)
133238a9095SYichao YuCFLAGS_add += -I$(OPENLIBM_HOME)/ld128
134238a9095SYichao Yuendif
135c2145306SElliot Sabaendif
136c2145306SElliot Saba
137c2145306SElliot Saba
138c2145306SElliot Saba%.c.o: %.c
139c2145306SElliot Saba	$(CC) $(CPPFLAGS) $(CFLAGS) $(CFLAGS_add) -c $< -o $@
140c2145306SElliot Saba
141c2145306SElliot Saba%.S.o: %.S
142c2145306SElliot Saba	$(CC) $(CPPFLAGS) $(SFLAGS) $(SFLAGS_add) $(filter -m% -B% -I% -D%,$(CFLAGS_add)) -c $< -o $@
143c2145306SElliot Saba
144c2145306SElliot Saba
145c2145306SElliot Saba# Makefile debugging trick:
146c2145306SElliot Saba# call print-VARIABLE to see the runtime value of any variable
147c2145306SElliot Sabaprint-%:
148c2145306SElliot Saba	@echo '$*=$($*)'
149