1# This Source Code Form is subject to the terms of the Mozilla Public
2# License, v. 2.0. If a copy of the MPL was not distributed with this
3# file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
5##
6## Define CFLAGS to contain any local options your compiler
7## setup requires.
8##
9## Conditional compilation options are no longer here; see
10## the file 'mpi-config.h' instead.
11##
12MPICMN = -I. -DMP_API_COMPATIBLE -DMP_IOFUNC
13CFLAGS= -O $(MPICMN)
14#CFLAGS=-ansi -fullwarn -woff 1521 -O3 $(MPICMN)
15#CFLAGS=-ansi -pedantic -Wall -O3 $(MPICMN)
16#CFLAGS=-ansi -pedantic -Wall -g -O2 -DMP_DEBUG=1 $(MPICMN)
17
18ifeq ($(TARGET),mipsIRIX)
19#IRIX
20#MPICMN += -DMP_MONT_USE_MP_MUL
21MPICMN += -DMP_ASSEMBLY_MULTIPLY -DMP_ASSEMBLY_SQUARE
22MPICMN += -DMP_USE_UINT_DIGIT
23#MPICMN += -DMP_NO_MP_WORD
24AS_OBJS = mpi_mips.o
25#ASFLAGS = -O -OPT:Olimit=4000 -dollar -fullwarn -xansi -n32 -mips3 -exceptions
26ASFLAGS = -O -OPT:Olimit=4000 -dollar -fullwarn -xansi -n32 -mips3
27#CFLAGS=-ansi -n32 -O3 -fullwarn -woff 1429 -D_SGI_SOURCE $(MPICMN)
28CFLAGS=-ansi -n32 -O2 -fullwarn -woff 1429 -D_SGI_SOURCE $(MPICMN)
29#CFLAGS=-ansi -n32 -g -fullwarn -woff 1429 -D_SGI_SOURCE $(MPICMN)
30#CFLAGS=-ansi -64 -O2 -fullwarn -woff 1429 -D_SGI_SOURCE -DMP_NO_MP_WORD \
31 $(MPICMN)
32endif
33
34ifeq ($(TARGET),alphaOSF1)
35#Alpha/OSF1
36MPICMN += -DMP_ASSEMBLY_MULTIPLY
37AS_OBJS+= mpvalpha.o
38#CFLAGS= -O -Olimit 4000 -ieee_with_inexact -std1 -DOSF1 -D_REENTRANT $(MPICMN)
39CFLAGS= -O -Olimit 4000 -ieee_with_inexact -std1 -DOSF1 -D_REENTRANT \
40 -DMP_NO_MP_WORD $(MPICMN)
41endif
42
43ifeq ($(TARGET),v9SOLARIS)
44#Solaris 64
45SOLARIS_FPU_FLAGS = -fast -xO5 -xrestrict=%all -xchip=ultra -xarch=v9a -KPIC -mt
46#SOLARIS_FPU_FLAGS = -fast -xO5 -xrestrict=%all -xdepend -xchip=ultra -xarch=v9a -KPIC -mt
47SOLARIS_ASM_FLAGS = -xchip=ultra -xarch=v9a -KPIC -mt
48AS_OBJS += montmulfv9.o
49AS_OBJS += mpi_sparc.o mpv_sparcv9.o
50MPICMN += -DMP_USE_UINT_DIGIT
51#MPICMN += -DMP_NO_MP_WORD
52MPICMN += -DMP_ASSEMBLY_MULTIPLY
53MPICMN += -DMP_USING_MONT_MULF
54CFLAGS= -O -KPIC -DSVR4 -DSYSV -D__svr4 -D__svr4__ -DSOLARIS -D_REENTRANT \
55 -DSOLARIS2_8 -xarch=v9 -DXP_UNIX $(MPICMN)
56#CFLAGS= -g -KPIC -DSVR4 -DSYSV -D__svr4 -D__svr4__ -DSOLARIS -D_REENTRANT \
57 -DSOLARIS2_8 -xarch=v9 -DXP_UNIX $(MPICMN)
58endif
59
60ifeq ($(TARGET),v8plusSOLARIS)
61#Solaris 32
62SOLARIS_FPU_FLAGS = -fast -xO5 -xrestrict=%all -xdepend -xchip=ultra -xarch=v8plusa -KPIC -mt
63SOLARIS_ASM_FLAGS = -xchip=ultra -xarch=v8plusa -KPIC -mt
64AS_OBJS += montmulfv8.o
65AS_OBJS += mpi_sparc.o mpv_sparcv8.o
66#AS_OBJS = montmulf.o
67MPICMN += -DMP_ASSEMBLY_MULTIPLY
68MPICMN += -DMP_USING_MONT_MULF
69MPICMN += -DMP_USE_UINT_DIGIT
70MPICMN += -DMP_NO_MP_WORD
71CFLAGS=-O -KPIC -DSVR4 -DSYSV -D__svr4 -D__svr4__ -DSOLARIS -D_REENTRANT \
72 -DSOLARIS2_6 -xarch=v8plus -DXP_UNIX $(MPICMN)
73endif
74
75ifeq ($(TARGET),v8SOLARIS)
76#Solaris 32
77#SOLARIS_FPU_FLAGS = -fast -xO5 -xrestrict=%all -xdepend -xchip=ultra -xarch=v8 -KPIC -mt
78#SOLARIS_ASM_FLAGS = -xchip=ultra -xarch=v8plusa -KPIC -mt
79#AS_OBJS = montmulfv8.o mpi_sparc.o mpv_sparcv8.o
80#AS_OBJS = montmulf.o
81#MPICMN += -DMP_USING_MONT_MULF
82#MPICMN += -DMP_ASSEMBLY_MULTIPLY
83MPICMN += -DMP_USE_LONG_LONG_MULTIPLY -DMP_USE_UINT_DIGIT
84MPICMN += -DMP_NO_MP_WORD
85CFLAGS=-O -KPIC -DSVR4 -DSYSV -D__svr4 -D__svr4__ -DSOLARIS -D_REENTRANT \
86 -DSOLARIS2_6 -xarch=v8 -DXP_UNIX $(MPICMN)
87endif
88
89ifeq ($(TARGET),ia64HPUX)
90#HPUX 32 on ia64  -- 64 bit digits SCREAM.
91# This one is for DD32 which is the 32-bit ABI with 64-bit registers.
92CFLAGS= +O3 -DHPUX10 -D_POSIX_C_SOURCE=199506L -Aa +Z -DHPUX -Dhppa \
93 -D_HPUX_SOURCE -Aa +e -z +p +DD32 -DHPUX11 -DXP_UNIX -Wl,+k $(MPICMN)
94#CFLAGS= -O -DHPUX10 -D_POSIX_C_SOURCE=199506L -Aa +Z -DHPUX -Dhppa \
95 -D_HPUX_SOURCE -Aa +e -z +p +DD32 -DHPUX11 -DXP_UNIX -Wl,+k $(MPICMN)
96#CFLAGS= -g -DHPUX10 -D_POSIX_C_SOURCE=199506L -Ae +Z -DHPUX -Dhppa \
97 -D_HPUX_SOURCE -Aa +e -z +p +DD32 -DHPUX11 -DXP_UNIX -Wl,+k $(MPICMN)
98endif
99
100ifeq ($(TARGET),ia64HPUX64)
101#HPUX 32 on ia64
102# This one is for DD64 which is the 64-bit ABI
103CFLAGS= +O3 -DHPUX10 -D_POSIX_C_SOURCE=199506L -Aa +Z -DHPUX -Dhppa \
104 -D_HPUX_SOURCE -Aa +e -z +p +DD64 -DHPUX11 -DXP_UNIX -Wl,+k $(MPICMN)
105#CFLAGS= -g -DHPUX10 -D_POSIX_C_SOURCE=199506L -Ae +Z -DHPUX -Dhppa \
106 -D_HPUX_SOURCE -Aa +e -z +p +DD64 -DHPUX11 -DXP_UNIX -Wl,+k $(MPICMN)
107endif
108
109ifeq ($(TARGET),PA2.0WHPUX)
110#HPUX64 (HP PA 2.0 Wide) using MAXPY and 64-bit digits
111MPICMN += -DMP_ASSEMBLY_MULTIPLY -DMP_ASSEMBLY_SQUARE
112AS_OBJS = mpi_hp.o hpma512.o hppa20.o
113CFLAGS= -O -DHPUX10 -D_POSIX_C_SOURCE=199506L -Ae +Z -DHPUX -Dhppa \
114 -D_HPUX_SOURCE -Aa +e -z +DA2.0W +DS2.0 +O3 +DChpux -DHPUX11  -DXP_UNIX \
115 $(MPICMN)
116#CFLAGS= -g -DHPUX10 -D_POSIX_C_SOURCE=199506L -Ae +Z -DHPUX -Dhppa \
117 -D_HPUX_SOURCE -Aa +e -z +DA2.0W +DS2.0 +DChpux -DHPUX11  -DXP_UNIX \
118 $(MPICMN)
119AS = $(CC) $(CFLAGS) -c
120endif
121
122ifeq ($(TARGET),PA2.0NHPUX)
123#HPUX32 (HP PA 2.0 Narrow) hybrid model, using 32-bit digits
124# This one is for DA2.0 (N) which is the 32-bit ABI with 64-bit registers.
125MPICMN += -DMP_ASSEMBLY_MULTIPLY -DMP_ASSEMBLY_SQUARE
126AS_OBJS = mpi_hp.o hpma512.o hppa20.o
127CFLAGS= +O3 -DHPUX10 -D_POSIX_C_SOURCE=199506L -Ae +Z -DHPUX -Dhppa \
128 -D_HPUX_SOURCE -Aa +e -z +DA2.0 +DS2.0 +DChpux -DHPUX11  -DXP_UNIX \
129 -Wl,+k $(MPICMN)
130#CFLAGS= -g -DHPUX10 -D_POSIX_C_SOURCE=199506L -Ae +Z -DHPUX -Dhppa \
131 -D_HPUX_SOURCE -Aa +e -z +DA2.0 +DS2.0 +DChpux -DHPUX11  -DXP_UNIX \
132 -Wl,+k $(MPICMN)
133AS = $(CC) $(CFLAGS) -c
134endif
135
136ifeq ($(TARGET),PA1.1HPUX)
137#HPUX32 (HP PA 1.1) Pure 32 bit
138MPICMN += -DMP_USE_UINT_DIGIT -DMP_NO_MP_WORD
139#MPICMN += -DMP_USE_LONG_LONG_MULTIPLY
140CFLAGS= -O -DHPUX10 -D_POSIX_C_SOURCE=199506L -Ae +Z -DHPUX -Dhppa \
141 -D_HPUX_SOURCE +DAportable +DS1.1 -DHPUX11 -DXP_UNIX $(MPICMN)
142##CFLAGS= -g -DHPUX10 -D_POSIX_C_SOURCE=199506L -Ae +Z -DHPUX -Dhppa \
143# -D_HPUX_SOURCE +DAportable +DS1.1 -DHPUX11 -DXP_UNIX $(MPICMN)
144endif
145
146ifeq ($(TARGET),32AIX)
147#
148CC = xlC_r
149MPICMN += -DMP_USE_UINT_DIGIT
150MPICMN += -DMP_NO_DIV_WORD
151#MPICMN += -DMP_NO_MUL_WORD
152MPICMN += -DMP_NO_ADD_WORD
153MPICMN += -DMP_NO_SUB_WORD
154#MPICMN += -DMP_NO_MP_WORD
155#MPICMN += -DMP_USE_LONG_LONG_MULTIPLY
156CFLAGS = -O -DAIX -DSYSV -qarch=com -DAIX4_3 -DXP_UNIX -UDEBUG -DNDEBUG  $(MPICMN)
157#CFLAGS = -g -DAIX -DSYSV -qarch=com -DAIX4_3 -DXP_UNIX -UDEBUG -DNDEBUG  $(MPICMN)
158#CFLAGS += -pg
159endif
160
161ifeq ($(TARGET),64AIX)
162#
163CC = xlC_r
164MPICMN += -DMP_USE_UINT_DIGIT
165CFLAGS = -O -O2 -DAIX -DSYSV -qarch=com -DAIX_64BIT -DAIX4_3 -DXP_UNIX -UDEBUG -DNDEBUG $(MPICMN)
166OBJECT_MODE=64
167export OBJECT_MODE
168endif
169
170ifeq ($(TARGET),x86LINUX)
171#Linux
172AS_OBJS = mpi_x86.o
173MPICMN += -DMP_ASSEMBLY_MULTIPLY -DMP_ASSEMBLY_SQUARE -DMP_ASSEMBLY_DIV_2DX1D
174MPICMN += -DMP_MONT_USE_MP_MUL -DMP_IS_LITTLE_ENDIAN
175CFLAGS= -O2 -fPIC -DLINUX1_2 -Di386 -D_XOPEN_SOURCE -DLINUX2_1 -ansi -Wall \
176 -pipe -DLINUX -Dlinux -D_POSIX_SOURCE -D_BSD_SOURCE -DHAVE_STRERROR \
177 -DXP_UNIX -UDEBUG -DNDEBUG -D_REENTRANT $(MPICMN)
178#CFLAGS= -g -fPIC -DLINUX1_2 -Di386 -D_XOPEN_SOURCE -DLINUX2_1 -ansi -Wall \
179 -pipe -DLINUX -Dlinux -D_POSIX_SOURCE -D_BSD_SOURCE -DHAVE_STRERROR \
180 -DXP_UNIX -DDEBUG -UNDEBUG -D_REENTRANT $(MPICMN)
181#CFLAGS= -g -fPIC -DLINUX1_2 -Di386 -D_XOPEN_SOURCE -DLINUX2_1 -ansi -Wall \
182 -pipe -DLINUX -Dlinux -D_POSIX_SOURCE -D_BSD_SOURCE -DHAVE_STRERROR \
183 -DXP_UNIX -UDEBUG -DNDEBUG -D_REENTRANT $(MPICMN)
184endif
185
186ifeq ($(TARGET),armLINUX)
187MPICMN += -DMP_ASSEMBLY_MULTIPLY -DMP_ASSEMBLY_SQUARE
188MPICMN += -DMP_USE_UINT_DIGIT
189AS_OBJS += mpi_arm.o
190endif
191
192ifeq ($(TARGET),AMD64SOLARIS)
193ASFLAGS += -xarch=generic64
194AS_OBJS = mpi_amd64.o mpi_amd64_sun.o
195MP_CONFIG = -DMP_ASSEMBLY_MULTIPLY -DMPI_AMD64
196MP_CONFIG += -DMP_IS_LITTLE_ENDIAN
197CFLAGS = -xarch=generic64 -xO4 -I. -DMP_API_COMPATIBLE -DMP_IOFUNC $(MP_CONFIG)
198MPICMN += $(MP_CONFIG)
199
200mpi_amd64_asm.o: mpi_amd64_sun.s
201	$(AS) -xarch=generic64 -P -D_ASM mpi_amd64_sun.s
202endif
203
204ifeq ($(TARGET),WIN32)
205ifeq ($(CPU_ARCH),x86_64)
206AS_OBJS = mpi_amd64.obj mpi_amd64_masm.obj mp_comba_amd64_masm.asm
207CFLAGS  = -Od -Z7 -MDd -W3 -nologo -DDEBUG -D_DEBUG -UNDEBUG -DDEBUG_$(USER)
208CFLAGS += -DWIN32 -DWIN64 -D_WINDOWS -D_AMD_64_ -D_M_AMD64 -DWIN95 -DXP_PC
209CFLAGS += $(MPICMN)
210
211$(AS_OBJS): %.obj : %.asm
212	ml64 -Cp -Sn -Zi -coff -nologo -c $<
213
214$(LIBOBJS): %.obj : %.c
215	cl $(CFLAGS) -Fo$@ -c $<
216else
217AS_OBJS = mpi_x86.obj
218MPICMN += -DMP_ASSEMBLY_MULTIPLY -DMP_ASSEMBLY_SQUARE -DMP_ASSEMBLY_DIV_2DX1D
219MPICMN += -DMP_USE_UINT_DIGIT -DMP_NO_MP_WORD -DMP_API_COMPATIBLE
220MPICMN += -DMP_MONT_USE_MP_MUL
221MPICMN += -DMP_CHAR_STORE_SLOW -DMP_IS_LITTLE_ENDIAN
222CFLAGS  = -Od -Z7 -MDd -W3 -nologo -DDEBUG -D_DEBUG -UNDEBUG -DDEBUG_$(USER)
223CFLAGS += -DWIN32 -D_WINDOWS -D_X86_ -DWIN95 -DXP_PC
224CFLAGS += $(MPICMN)
225
226$(AS_OBJS): %.obj : %.asm
227	ml -Cp -Sn -Zi -coff -nologo -c $<
228
229$(LIBOBJS): %.obj : %.c
230	cl $(CFLAGS) -Fo$@ -c $<
231
232endif
233endif
234