xref: /aoo41x/main/solenv/inc/unxmacx.mk (revision 9964c96f)
1#**************************************************************
2#
3#  Licensed to the Apache Software Foundation (ASF) under one
4#  or more contributor license agreements.  See the NOTICE file
5#  distributed with this work for additional information
6#  regarding copyright ownership.  The ASF licenses this file
7#  to you under the Apache License, Version 2.0 (the
8#  "License"); you may not use this file except in compliance
9#  with the License.  You may obtain a copy of the License at
10#
11#    http://www.apache.org/licenses/LICENSE-2.0
12#
13#  Unless required by applicable law or agreed to in writing,
14#  software distributed under the License is distributed on an
15#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16#  KIND, either express or implied.  See the License for the
17#  specific language governing permissions and limitations
18#  under the License.
19#
20#**************************************************************
21
22
23
24##########################################################################
25# Platform MAKEFILE for Mac OS X and Darwin on both PowerPC and Intel
26##########################################################################
27
28# PROCESSOR_DEFINES and DLLPOSTFIX are defined in the particular platform file
29
30ASM=
31AFLAGS=
32LINKOUTPUT_FILTER=
33
34# Definitions that we may need on the compile line.
35# -D_PTHREADS and -D_REENTRANT are needed for STLport, and must be specified when
36#  compiling STLport sources too, either internally or externally.
37CDEFS+=-DGLIBC=2 -D_PTHREADS -D_REENTRANT -DNO_PTHREAD_PRIORITY $(PROCESSOR_DEFINES) -DSTLPORT_VERSION=$(STLPORT_VER) -D_USE_NAMESPACE=1
38.IF "$(GUIBASE)"=="unx" && "$(USE_SYSTEM_STL)"!="YES"
39CDEFS+=-DX_LOCALE
40.ENDIF
41.IF "$(GUIBASE)"=="aqua"
42# MAXOSX_DEPLOYMENT_TARGET : The minimum version required to run the build,
43# build can assume functions/libraries of that version to be available
44# unless you want to do runtime checks for 10.5 api, you also want to use the 10.4 sdk
45# (safer/easier than dealing with the MAC_OS_X_VERSION_MAX_ALLOWED macro)
46# http://developer.apple.com/technotes/tn2002/tn2064.html
47# done in setsolar/configure now. left here for documentation
48#MACOSX_DEPLOYMENT_TARGET=10.4
49#.EXPORT: MACOSX_DEPLOYMENT_TARGET
50CDEFS+=-DQUARTZ
51EXTRA_CDEFS*=-isysroot /Developer/SDKs/MacOSX10.4u.sdk
52.ENDIF
53
54# Name of library where static data members are initialized
55# STATICLIBNAME=static$(DLLPOSTFIX)
56# STATICLIB=-l$(STATICLIBNAME)
57
58# enable visibility define in "sal/types.h"
59.IF "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
60CDEFS += -DHAVE_GCC_VISIBILITY_FEATURE
61.ENDIF # "$(HAVE_GCC_VISIBILITY_FEATURE)" == "TRUE"
62
63
64# MacOS X specific Java compilation/link flags
65SOLAR_JAVA*=TRUE
66.IF "$(SOLAR_JAVA)"!=""
67	JAVADEF=-DSOLAR_JAVA
68	JAVAFLAGSDEBUG=-g
69	JAVA_RUNTIME=-framework JavaVM
70.ENDIF
71
72# architecture dependent flags for the C and C++ compiler that can be changed by
73# exporting the variable ARCH_FLAGS="..." in the shell, which is used to start build
74ARCH_FLAGS*=
75
76# Specify the compiler to use.  NOTE:  MacOS X should always specify
77# c++ for C++ compilation as it does certain C++ specific things
78# behind the scenes for us.
79# CC = C++ compiler to use
80# cc = C compiler to use
81# objc = Objective C compiler to use
82# objcpp = Objective C++ compiler to use
83CXX*=g++
84CC*=gcc
85objc*=$(CC)
86objcpp*=$(CXX)
87
88CFLAGS=-fsigned-char -fmessage-length=0 -malign-natural -c $(EXTRA_CFLAGS)
89
90.IF "$(DISABLE_DEPRECATION_WARNING)" == "TRUE"
91CFLAGS+=-Wno-deprecated-declarations
92.ENDIF
93# ---------------------------------
94#  Compilation flags
95# ---------------------------------
96# Normal C compilation flags
97CFLAGSCC=-pipe -fsigned-char -malign-natural $(ARCH_FLAGS)
98
99# Normal Objective C compilation flags
100#OBJCFLAGS=-no-precomp
101OBJCFLAGS=-fobjc-exceptions
102# -x options generally ignored by ccache, tell it that it can cache
103# the result nevertheless
104CCACHE_SKIP:=$(eq,$(USE_CCACHE),YES --ccache-skip $(NULL))
105OBJCXXFLAGS:=$(CCACHE_SKIP) -x $(CCACHE_SKIP) objective-c++ -fobjc-exceptions
106
107# Comp Flags for files that need exceptions enabled (C and C++)
108CFLAGSEXCEPTIONS=-fexceptions -fno-enforce-eh-specs
109
110# Comp Flags for files that do not need exceptions enabled (C and C++)
111CFLAGS_NO_EXCEPTIONS=-fno-exceptions
112
113# Normal C++ compilation flags
114CFLAGSCXX=-pipe -malign-natural -fsigned-char $(ARCH_FLAGS)
115CFLAGSCXX+= -Wno-ctor-dtor-privacy
116
117PICSWITCH:=-fPIC
118# Other flags
119CFLAGSOBJGUIMT=$(PICSWITCH) -fno-common
120CFLAGSOBJCUIMT=$(PICSWITCH) -fno-common
121CFLAGSSLOGUIMT=$(PICSWITCH) -fno-common
122CFLAGSSLOCUIMT=$(PICSWITCH) -fno-common
123CFLAGSPROF=
124
125# Flag for including debugging information in object files
126CFLAGSDEBUG=-g
127CFLAGSDBGUTIL=
128
129# Flag to specify output file to compiler/linker
130CFLAGSOUTOBJ=-o
131
132# Flags to enable precompiled headers
133CFLAGS_CREATE_PCH=-x c++-header -I$(INCPCH) -DPRECOMPILED_HEADERS
134CFLAGS_USE_PCH=-I$(SLO)/pch -DPRECOMPILED_HEADERS -Winvalid-pch
135CFLAGS_USE_EXCEPTIONS_PCH=-I$(SLO)/pch_ex -DPRECOMPILED_HEADERS -Winvalid-pch
136
137# ---------------------------------
138#  Optimization flags
139# ---------------------------------
140CFLAGSOPT=-O2 -fno-strict-aliasing
141CFLAGSNOOPT=-O0
142
143# -Wshadow does not work for C with nested uses of pthread_cleanup_push:
144# -Wshadow does not work for C++ as /usr/include/c++/4.0.0/ext/hashtable.h
145# l. 717 contains a declaration of __cur2 shadowing the declaration at l. 705,
146# in template code for which a #pragma gcc system_header would not work:
147# -Wextra doesn not work for gcc-3.3
148CFLAGSWARNCC=-Wall -Wendif-labels
149CFLAGSWARNCXX=$(CFLAGSWARNCC) -Wno-ctor-dtor-privacy -Wno-non-virtual-dtor
150CFLAGSWALLCC=$(CFLAGSWARNCC)
151CFLAGSWALLCXX=$(CFLAGSWARNCXX)
152CFLAGSWERRCC=-Werror
153
154# All modules on this platform compile without warnings.
155# If you need to set MODULES_WITH_WARNINGS here, comment
156# COMPILER_WARN_ERRORS=TRUE here (see settings.mk):
157COMPILER_WARN_ERRORS=TRUE
158
159#special settings form environment
160CDEFS+=$(EXTRA_CDEFS)
161
162STDLIBCPP=-lstdc++
163
164# ---------------------------------
165#  STLport library names
166# ---------------------------------
167.IF "$(USE_STLP_DEBUG)" != ""
168.IF "$(STLPORT_VER)" >= "500"
169LIBSTLPORT=-lstlportstlg
170LIBSTLPORTST=$(STATIC) -lstlportstlg
171.ELSE
172LIBSTLPORT=-lstlport_gcc_stldebug
173LIBSTLPORTST=$(SOLARVERSION)/$(INPATH)/lib/libstlport_gcc_stldebug.a
174.ENDIF
175.ELSE # "$(USE_STLP_DEBUG" != ""
176.IF "$(STLPORT_VER)" >= "500"
177LIBSTLPORT=-lstlport
178LIBSTLPORTST=$(STATIC) -lstlport
179.ELSE
180LIBSTLPORT=-lstlport_gcc
181LIBSTLPORTST=$(SOLARVERSION)/$(INPATH)/lib/libstlport_gcc.a
182.ENDIF
183.ENDIF # "$(USE_STLP_DEBUG" != ""
184
185# ---------------------------------
186#  Link stage flags
187# ---------------------------------
188# always link with gcc since you may be linking c code and don't want -lstdc++ linked in!
189
190##  ericb 04 mars 2005
191
192LINK*=$(CXX)
193LINKC*=$(CC)
194
195LINKFLAGSDEFS*=-Wl,-multiply_defined,suppress
196# assure backwards-compatibility
197EXTRA_LINKFLAGS*=-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk
198# Very long install_names are needed so that install_name_tool -change later on
199# does not complain that "larger updated load commands do not fit:"
200LINKFLAGSRUNPATH_URELIB=-install_name '@__________________________________________________URELIB/$(@:f)'
201LINKFLAGSRUNPATH_UREBIN=
202LINKFLAGSRUNPATH_OOO=-install_name '@__________________________________________________OOO/$(@:f)'
203LINKFLAGSRUNPATH_SDK=
204LINKFLAGSRUNPATH_BRAND=
205LINKFLAGSRUNPATH_OXT=
206LINKFLAGSRUNPATH_BOXT=
207LINKFLAGSRUNPATH_NONE=-install_name '@__________________________________________________NONE/$(@:f)'
208LINKFLAGS=$(LINKFLAGSDEFS)
209
210# [ed] 5/14/02 If we're building for aqua, add in the objc runtime library into our link line
211.IF "$(GUIBASE)" == "aqua"
212	LINKFLAGS+=-lobjc
213	# Sometimes we still use files that would be in a GUIBASE="unx" specific directory
214	# because they really aren't GUIBASE specific, so we've got to account for that here.
215	INCGUI+= -I$(PRJ)/unx/inc
216.ENDIF
217
218#special settings form environment
219LINKFLAGS+=$(EXTRA_LINKFLAGS)
220
221# Random link flags dealing with different cases of linking
222
223LINKFLAGSAPPGUI=-bind_at_load
224LINKFLAGSSHLGUI=-dynamiclib -single_module
225LINKFLAGSAPPCUI=-bind_at_load
226LINKFLAGSSHLCUI=-dynamiclib -single_module
227LINKFLAGSTACK=
228LINKFLAGSPROF=
229
230# Flag to add debugging information to final products
231LINKFLAGSDEBUG=-g
232LINKFLAGSOPT=
233
234# ---------------------------------
235#  MacOS X shared library specifics
236# ---------------------------------
237
238# Tag to identify an output file as a library
239DLLPRE=lib
240# File extension to identify dynamic shared libraries on MacOS X
241DLLPOST=.dylib
242# Precompiled header file extension
243PCHPOST=.gch
244
245# We don't use mapping on MacOS X
246#LINKVERSIONMAPFLAG=-Wl,--version-script
247LINKVERSIONMAPFLAG=-Wl,-exported_symbols_list
248
249SONAME_SWITCH=-Wl,-h
250
251STDLIBCPP=-lstdc++
252
253STDOBJVCL=$(L)/salmain.o
254STDOBJGUI=
255STDSLOGUI=
256STDOBJCUI=
257STDSLOCUI=
258
259.IF "$(GUIBASE)" == "aqua"
260	STDLIBCUIMT=CPPRUNTIME -lm
261	STDLIBGUIMT=-framework Carbon -framework Cocoa -lpthread CPPRUNTIME -lm
262	STDSHLCUIMT=-lpthread CPPRUNTIME -lm
263	STDSHLGUIMT=-framework Carbon -framework CoreFoundation -framework Cocoa -lpthread CPPRUNTIME -lm
264.ELSE
265	STDLIBCUIMT= CPPRUNTIME -lm
266	STDLIBGUIMT=-lX11 -lpthread CPPRUNTIME -lm
267	STDSHLCUIMT=-lpthread CPPRUNTIME -lm
268	STDSHLGUIMT=-lX11 -lXext -lpthread CPPRUNTIME -lm -framework CoreFoundation
269.ENDIF
270
271LIBMGR=ar
272LIBFLAGS=-r
273
274IMPLIB=
275IMPLIBFLAGS=
276
277MAPSYM=
278MAPSYMFLAGS=
279
280RC=irc
281RCFLAGS=-fo$@ $(RCFILES)
282RCLINK=
283RCLINKFLAGS=
284RCSETVERSION=
285
286OOO_LIBRARY_PATH_VAR = DYLD_LIBRARY_PATH
287