xref: /trunk/main/solenv/inc/settings.mk (revision 91144cd0085a7583d2099b982122deb2184ab956)
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
22MKFILENAME:=SETTINGS.MK
23
24# smaller/greater arithmetic's like ".IF 400<=200" are an AOO extension to
25# the initial dmake 4.1PL0 (unfortunately called 4.10) version and are
26# tested implicitly by the construction below.
27.IF $(MAKEVERSION:s/-cvs//:s/.//)<=410
28.ERROR : ; @echo Forced error: dmake version 4.11 or newer is needed!
29force_dmake_to_error
30.ENDIF
31
32.INCLUDE .IGNORE : ooo_vendor.mk
33
34# --- common tool macros --------------------------------------
35
36.IF "$(USE_PCH)"!=""
37ENABLE_PCH=TRUE
38.ENDIF          # "$(USE_PCH)"!=""
39
40.INCLUDE : unitools.mk
41
42.INCLUDE : minor.mk
43
44.INCLUDE .IGNORE : rtlbootstrap.mk
45
46PLATFORMID = $(RTL_OS:l)_$(RTL_ARCH:l)
47EXTNAME*=$(EXTENSIONNAME)_in
48
49.IF "$(UPDATER)"!="" || "$(CWS_WORK_STAMP)"!=""
50
51.IF "$(SOURCEVERSION)"!="$(WORK_STAMP)"
52.ERROR : ; @echo Forced error: minor.mk in solenv/inc does not match your version!
53WRONG_SOURCEVERSION
54.ENDIF
55
56# Create $(SOLARVERSION)/$(INPATH)/inc$(UPDMINOREXT)/$(UPD)minor.mk if needed
57%minor.mk : $(SOLARENV)/inc/minor.mk
58    @@-$(MKDIRHIER) $(SOLARVERSION)/$(INPATH)/inc$(UPDMINOREXT)
59    @@$(COPY) $(SOLARENV)/inc/minor.mk $(SOLARVERSION)/$(INPATH)/inc$(UPDMINOREXT)/$(UPD)minor.mk
60    @@$(TOUCH) $(SOLARVERSION)/$(INPATH)/inc$(UPDMINOREXT)/minormkchanged.flg
61.ENDIF          # "$(UPDATER)"!="" || "$(CWS_WORK_STAMP)"!=""
62
63# Force creation of $(SOLARVERSION)/$(INPATH)/inc$(UPDMINOREXT)/
64# $(UPD)minor.mk could be empty as its contents were already included from minor.mk
65.INCLUDE : $(SOLARVERSION)/$(INPATH)/inc$(UPDMINOREXT)/$(UPD)minor.mk
66
67.IF "$(BSCLIENT)"=="TRUE"
68.IF "$(UPDATER)"!="YES"
69incorrect_settings:
70    @echo "#"
71    @echo "#" ERROR: setsolar option -bsclient used but UPDATER=YES not set!
72    @echo "#"
73    force_dmake_to_error
74.ENDIF
75.ENDIF
76
77.INCLUDE : udkversion.mk
78
79# --- reset defined Environments --------------------
80ASM=
81AFLAGS=
82
83
84#START JAVA
85
86#interpreter location
87.IF "$(JAVAINTERPRETER)" == ""
88.IF "$(JDK)" == "J++"
89JAVAINTERPRETER=jview.exe
90.ELSE
91.IF "$(JDK)" == "SCAFE"
92.IF "$(JDK_VERSION)" != ""
93JAVAINTERPRETER=$(DEVROOT)/vcafe11/java/bin/java.exe
94.ELSE
95JAVAINTERPRETER=$(DEVROOT)/cafepro/java/bin/java.exe
96.ENDIF
97.ELSE
98.IF "$(JAVACISGCJ)" == "yes"
99JAVAINTERPRETER=gij
100.ELSE
101JAVAINTERPRETER=java
102.ENDIF
103.ENDIF
104.ENDIF
105.ENDIF
106
107#compiler location
108.IF "$(JAVACOMPILER)" == ""
109.IF "$(JDK)" == "J++"
110JAVACOMPILER=jvc.exe
111.ELSE
112.IF "$(JDK)" == "SCAFE"
113.IF "$(JDK_VERSION)" != ""
114JAVACOMPILER=$(DEVROOT)/vcafe11/bin/sj.exe
115.ELSE
116JAVACOMPILER=$(DEVROOT)/cafepro/bin/sj.exe
117.ENDIF
118.ELSE
119.IF "$(JAVACISGCJ)" == "yes"
120JAVACOMPILER=gcj
121.ELSE
122JAVACOMPILER=javac
123.ENDIF
124.ENDIF
125.ENDIF
126.ENDIF
127
128#if javadoc is not already set
129.IF "$(JAVADOC)"==""
130JAVADOC=javadoc -J-Xmx120m
131.ENDIF
132
133#required arguments
134JAVAC=$(JAVACOMPILER)
135JAVAI:=$(JAVAINTERPRETER)
136.IF "$(JAVACISGCJ)" == "yes"
137JAVAC+=--encoding=UTF-8 -O2 -fno-assert -Wno-deprecated -C
138.ENDIF
139
140#classpath and response
141.IF "$(JDK)" == "J++"
142JAVACPS=/cp
143.ELSE
144.IF "$(JDK)" == "SCAFE"
145JAVACPS=-classpath
146JAVARESPONSE=TRUE
147.ELSE
148JAVACPS=-classpath
149JAVARESPONSE=
150.ENDIF
151.ENDIF
152
153# Tree-wide Java bytecode floor: compile all Java to a fixed source/target level
154# so artifacts run on the minimum supported JRE (Java 8) regardless of how new
155# the build JDK is. Without this, building on a modern JDK (e.g. 21) emits
156# bytecode that will not load on Java 8. gcj does not accept -source/-target,
157# so skip it there. Can be overridden by setting JAVA_TARGET_FLAG in the env.
158.IF "$(JAVA_TARGET_FLAG)"==""
159.IF "$(JAVACISGCJ)"!="yes"
160JAVA_TARGET_FLAG=-source 1.8 -target 1.8
161.ENDIF          # "$(JAVACISGCJ)"!="yes"
162.ENDIF          # "$(JAVA_TARGET_FLAG)"==""
163
164JAVAFLAGS+=$(JAVA_TARGET_FLAG)
165
166#END JAVA
167
168CDEFS=
169CXXDEFS=
170CDEFSCXX=
171CDEFSOBJ=
172CDEFSSLO=
173CDEFSGUI=
174CDEFSCUI=
175CDEFSMT=
176CDEFSPROF=
177CDEFSDEBUG=
178CDEFSDBGUTIL=
179CDEFSOPT=
180
181CFLAGS=
182CFLAGSCALL=
183CFLAGSCXX=
184CFLAGSCC=
185CFLAGSOBJ=
186CFLAGSSLO=
187CFLAGSOBJGUIMT=
188CFLAGSOBJCUIMT=
189CFLAGSSLOGUIMT=
190CFLAGSSLOCUIMT=
191CFLAGSPROF=
192CFLAGSDEBUG=
193CFLAGSDBGUTIL=
194CFLAGSOPT=
195CFLAGSNOOPT=
196CFLAGSOUTOBJ=
197
198CFLAGSINCXX=
199
200LINKFLAGS=
201LINKFLAGSAPPGUI=
202LINKFLAGSSHLGUI=
203LINKFLAGSAPPCUI=
204LINKFLAGSSHLCUI=
205LINKFLAGSTACK=
206LINKFLAGSPROF=
207LINKFLAGSDEBUG=
208LINKFLAGSOPT=
209LINKFLAGSAPP=
210LINKFLAGSSHL=
211LINKEXTENDLINE=
212
213STDOBJGUI=
214STDSLOGUI=
215STDOBJCUI=
216STDSLOCUI=
217STDLIBGUIMT=
218STDLIBCUIMT=
219STDSHLGUIMT=
220STDSHLCUIMT=
221STDOBJ=
222STDSLO=
223STDLIB=
224STDSHL=
225
226LIBFLAGS=
227
228IMPLIBMGR=
229IMPLIBFLAGS=
230
231MAPSYM=
232MAPSYMFLAGS=
233
234RSC=
235RSCFLAGS=
236RSCDEFS=
237RSCLANG=
238
239RC=
240RCFLAGS=
241RCLINK=
242RCLINKFLAGS=
243RCSETVERSION=
244
245DLLPOSTFIX=
246
247HC=
248HCFLAGS=
249
250MKDEP=
251
252AS=
253BC=
254COBOL=
255CPP=
256FOR=
257PASCAL=
258
259BFLAGS=
260COBFLAGS=
261CPPFLAGS=
262CXXFLAGS=
263FFLAGS=
264PFLAGS=
265RFLAGS=
266
267LNT=
268LNTFLAGS=
269LNTFLAGSGUI=
270LNTFLAGSCOM=
271
272# doesn't make sense
273#IDLSTATICOBJS=
274
275E2P=
276CAP=
277cap=
278
279# not to reset because possibly taken from environment
280#CC=
281#CXX=
282#LINK=
283#LIBMGR=
284
285
286# avoid confusion with CUE PROFILE variable...
287PROFILE=
288
289# can be set on the command line. we shouldn't delete them!
290#profile=
291
292# reset as setting those manually is no longer supported
293DBGUTIL=
294dbgutil=
295
296# ===========================================================================
297# unter NT werden Variablennamen an untergeordnete makefiles UPPERCASE
298# weitergereicht, aber case significant ausgewertet!
299# ---------------------------------------------------------------------------
300
301DMAKE_WORK_DIR*:=$(subst,/,/ $(PWD))
302.IF "$(GUI)"=="WNT"
303posix_PWD:=/cygdrive/$(PWD:s/://)
304.ELIF "$(GUI)"=="OS2"
305# add /drives/ prefix, requires libc pathrewriter, otherwise breaks dmake % rule
306posix_PWD:=/drives/$(PWD:s/://)
307.ELSE           #GUI)"=="WNT"
308posix_PWD:=$(PWD)
309.ENDIF          #GUI)"=="WNT"
310
311
312.IF "$(TMP)"!=""
313tmp*=$(TMP)
314.ENDIF
315
316.IF "$(tmp)"!=""
317TMP*=$(tmp)
318.ENDIF
319
320.IF "$(TEMP)"!=""
321temp*=$(TEMP)
322.ENDIF
323
324.IF "$(temp)"!=""
325TEMP*=$(temp)
326.ENDIF
327
328.IF "$(DEPEND)"!=""
329depend=$(DEPEND)
330.ENDIF
331
332.IF "$(OPTIMIZE)"!=""
333optimize=$(OPTIMIZE)
334.ENDIF
335
336.IF "$(NOPT)"!=""
337nopt*=$(NOPT)
338.ENDIF
339
340.IF "$(GROUP)"!=""
341group*=$(GROUP)
342.ENDIF
343
344.IF "$(group)"!=""
345GROUP*=$(group)
346.ENDIF
347
348# override dbglevel if set manually
349.IF "$(dbglevel)"!=""
350DBG_LEVEL=$(dbglevel)
351.ENDIF
352
353.IF "$(NODEBUG)"!=""
354nodebug=$(NODEBUG)
355.ENDIF
356
357.IF "$(hbtoolkit)"!=""
358HBTOOLKIT=$(hbtoolkit)
359.ENDIF
360
361.IF "$(PRODUCT)"!=""
362product*=$(PRODUCT)
363.ENDIF
364
365.IF "$(product)"!=""
366PRODUCT*=$(product)
367.ENDIF
368
369.IF "$(VERBOSE)"!=""
370verbose*=$(VERBOSE)
371.ENDIF
372
373.IF "$(verbose)"!=""
374# normalize: "false" (any upper/lower case) and "0" mean FALSE, everything else means TRUE
375VERBOSE_IS_FALSE:=$(or $(eq,"$(verbose:u)","FALSE" "false"  ) $(eq,"$(verbose)","0" "false"  ))
376VERBOSE!:=$(eq,"$(VERBOSE_IS_FALSE)","t" FALSE TRUE)
377.ENDIF
378
379.IF "$(SOLARLANG)" != ""
380solarlang*=$(SOLARLANG)
381.ENDIF
382
383.IF "$(solarlang)" != ""
384SOLARLANG:=$(solarlang)
385.ENDIF
386
387.IF "$(wall)"!=""
388COMPILER_WARN_ALL=TRUE
389.ENDIF          # "$(wall)"!=""
390
391.IF "$(werror)"!=""
392COMPILER_WARN_ERRORS=TRUE
393.ENDIF
394
395.IF "$(RSC_ONCE)"!=""
396rsc_once*=$(RSC_ONCE)
397.ENDIF
398
399#.IF "$(COMMON_BUILD)"!=""
400#common_build*=$(COMMON_BUILD)
401#.ENDIF
402common_build:=
403COMMON_BUILD:=
404
405.IF "$(USE_SHL_VERSIONS)"!=""
406use_shl_versions*=$(USE_SHL_VERSIONS)
407.ENDIF
408
409.IF "$(noremove)"!=""
410NOREMOVE*=$(noremove)
411.ENDIF
412
413# --- env flags not case sensitive --------------------------------
414
415#.IF "$(envcflags)"!=""
416ENVCFLAGS*=$(envcflags)
417#.ENDIF
418
419#.IF "$(envcflagscxx)"!=""
420ENVCFLAGSCXX*=$(envcflagscxx)
421#.ENDIF
422
423
424.IF "$(envcdefs)"!=""
425ENVCDEFS*=$(envcdefs)
426.ENDIF
427
428.IF "$(envlibflags)"!=""
429ENVLIBFLAGS*=$(envlibflags)
430.ENDIF
431
432.IF "$(envcflagsincxx)"!=""
433ENVCFLAGSINCXX*=$(envcflagsincxx)
434.ENDIF
435
436.IF "$(envlinkflags)"!=""
437ENVLINKFLAGS*=$(envlinkflags)
438.ENDIF
439
440.IF "$(envrscflags)"!=""
441ENVRSCFLAGS*=$(envrscflags)
442.ENDIF
443
444.IF "$(envrscdefs)"!=""
445ENVRSCDEFS*=$(envrscdefs)
446.ENDIF
447
448.IF "$(envrsclinkflags)"!=""
449# ENVRSCLINKFLAGS*=$(envrsclinkflags)
450.ENDIF
451
452.IF "$(envrcflags)"!=""
453ENVRCFLAGS*=$(envrcflags)
454.ENDIF
455
456.IF "$(envrclinkflags)"!=""
457ENVRCLINKFLAGS*=$(envrclinkflags)
458.ENDIF
459
460# --- set both L10N variables to keep things working ---------------
461
462L10N-framework=$(L10N_framework)
463
464# --- Parameter Einstellungen überpruefen und umsetzen ------------
465
466# profile immer mit product
467.IF "$(profile)"!=""
468.IF "$(product)"==""
469product=full
470.ENDIF
471.ENDIF
472
473.IF "$(debug)"!=""
474DBG_LEVEL*=2
475.ENDIF
476
477# Produkt auf einen Wert setzen (alles klein)
478.IF "$(product)" != ""
479optimize=true
480.IF "$(product)" == "full" || "$(product)" == "Full" || "$(product)" == "FULL"
481product!=full
482.ENDIF
483.IF "$(product)" == "demo" || "$(product)" == "Demo" || "$(product)" == "DEMO"
484product!=demo
485.ENDIF
486.IF "$(product)" == "compact" || "$(product)" == "Compact" || "$(product)" == "COMPACT"
487product!=compact
488.ENDIF
489DBG_LEVEL*=0
490.ELSE
491optimize!=true
492dbgutil!=true
493DBG_LEVEL*=1
494USE_STLP_DEBUG*=TRUE
495.ENDIF
496
497.IF "$(debug)"!=""
498.IF "$(debug)"!="D_FORCE_OPT"
499optimize=
500OPTIMIZE=
501.ENDIF
502.ENDIF
503
504.IF "$(nopt)"!=""
505optimize=
506OPTIMIZE=
507.ENDIF
508
509# Optimierung bei FinalCheck funktioniert nicht!
510.IF "$(bndchk)" != ""
511optimize=
512OPTIMIZE=
513.ENDIF
514
515######################################################
516# sprachabhängige Einstellungen
517######################################################
518
519.INCLUDE : lang.mk
520
521.INCLUDE : postset.mk
522
523RSC_LANG_ISO+:=$(completelangiso)
524.EXPORT : RSC_LANG_ISO
525
526######################################################
527
528.IF "$(TARGETTYPE)"==""
529TARGETTYPE=CUI
530.ENDIF
531
532# --- Pfade setzen -------------------------------------------------
533
534# Output-Pfad
535# profile has to be first for not getting the .pro extension
536.IF "$(profile)"!=""
537OUT=$(PRJ)/$(OUTPATH).cap
538ROUT=$(OUTPATH).cap
539.ELSE
540
541.IF "$(product)"!=""
542OUT=$(PRJ)/$(OUTPATH).pro
543ROUT=$(OUTPATH).pro
544
545.ELSE
546.IF "$(profile)"!=""
547OUT=$(PRJ)/$(OUTPATH).cap
548ROUT=$(OUTPATH).cap
549.ENDIF
550.IF "$(dbcs)"!=""
551OUT=$(PRJ)/$(OUTPATH).w
552ROUT=$(OUTPATH).w
553.ENDIF
554# could already be set by makefile.mk
555.IF "$(OUT)" == ""
556OUT*=$(PRJ)/$(OUTPATH)
557ROUT*=$(OUTPATH)
558.ENDIF
559.ENDIF
560.ENDIF
561
562.IF "$(bndchk)" != ""
563OUT:=$(PRJ)/$(OUTPATH).bnd
564ROUT=$(OUTPATH).bnd
565.ENDIF
566.IF "$(truetime)" != ""
567OUT=$(PRJ)/$(OUTPATH).tt
568ROUT=$(OUTPATH).tt
569.ENDIF
570.IF "$(hbtoolkit)"!=""
571OUT=$(PRJ)/$(OUTPATH).tlk
572ROUT=$(OUTPATH).tlk
573.ENDIF
574
575.IF "$(PRJ)"!="."
576.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
577PATH_IN_MODULE:=\
578    $(subst,$(normpath $(shell @+cd $(PRJ) && pwd $(PWDFLAGS)))/, $(PWD))
579.ELSE           # "$(GUI)"=="WNT"
580PATH_IN_MODULE:=$(subst,$(shell @+cd $(PRJ) && pwd $(PWDFLAGS))/, $(PWD))
581.ENDIF          # "$(GUI)"=="WNT"
582.ELSE           # "$(PRJ)"!="."
583PATH_IN_MODULE:=
584.ENDIF          # "$(PRJ)"!="."
585
586## common output tree
587#.IF "$(common_build)"!=""
588#COMMON_OUTDIR*=common
589#.IF "$(no_common_build_reslib)"==""
590#common_build_reslib=true
591#.ENDIF         # "$(no_common_build_reslib)"==""
592#.IF "$(no_common_build_zip)"==""
593#common_build_zip=true
594#.ENDIF         # "$(no_common_build_zip)"==""
595#.IF "$(no_common_build_sign_jar)"==""
596#common_build_sign_jar=true
597#.ENDIF         # "$(no_common_build_sign_jar)"==""
598#.IF "$(no_common_build_srs)"==""
599#common_build_srs=true
600#.ENDIF         # "$(no_common_build_srs)"==""
601#.ELSE          # "$(common_build)"!=""
602COMMON_OUTDIR:=$(OUTPATH)
603#.ENDIF         # "$(common_build)"!=""
604
605LOCAL_OUT:=$(OUT)
606LOCAL_COMMON_OUT:=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(OUT))
607.EXPORT : LOCAL_OUT LOCAL_COMMON_OUT
608
609# --- generate output tree -----------------------------------------
610
611# disable for makefiles wrapping a gnumake module
612.IF "$(TARGET)"!="prj"
613# As this is not part of the initial startup makefile we define an inferred
614# target instead of using $(OUT)/inc/myworld.mk as target name.
615# (See iz62795)
616$(posix_PWD)/$(OUT)/inc/%world.mk :
617    @$(MKOUT) $(ROUT)
618    @echo $(EMQ)# > $@
619
620.INCLUDE :  $(posix_PWD)/$(OUT)/inc/myworld.mk
621
622.IF "$(common_build)"!=""
623$(posix_PWD)/$(LOCAL_COMMON_OUT)/inc/%world.mk :
624    @$(MKOUT) $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(ROUT))
625    @echo $(EMQ)# > $@
626
627.INCLUDE : $(posix_PWD)/$(LOCAL_COMMON_OUT)/inc/myworld.mk
628.ENDIF          # "$(common_build)"!=""
629.ENDIF          # "$(TARGET)"!="prj"
630
631.INCLUDE .IGNORE : office.mk
632
633# Misc Path
634.IF "$(UNR)"!=""
635MISCX=$(OUT)/umisc
636MISC=$(OUT)/umisc
637.ELSE
638MISC=$(OUT)/misc
639# pointing to misc in common output tree if exists
640COMMONMISC={$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))}
641.ENDIF
642
643OUTCXX=$(OUT)/cxx
644
645.IF "$(PACKAGE)"!=""
646IDLPACKAGE:=$(PACKAGE)
647IDLPACKAGENAME:=$(IDLPACKAGE:sX\X/X)
648.ELSE
649IDLPACKAGE=$(PRJNAME)
650IDLPACKAGENAME=$(PRJNAME)
651.ENDIF
652
653# Object Path
654OBJ=$(OUT)/obj
655SLO=$(OUT)/slo
656ROBJ=$(ROUT)/obj
657RSLO=$(ROUT)/slo
658
659# Particle Path
660PAR=$(OUT)/par
661
662# Library-Pfad
663LB=$(OUT)/lib
664SLB=$(OUT)/slb
665
666# wir haben ein ucr Verzeichnis
667UCR=$(OUT)/ucr
668
669# $(L) nur noch Pfad ins solver\upd\...\lib
670#L:={$(LB);$(SLB);$(ILIB)}
671L=$(SOLARLIBDIR)
672
673#.EXPORT : SLB LB L LIB
674ENVPRJ:=$(PRJ)
675#todo: check PRJ is still expected to exist in environment
676.EXPORT : PRJ ENVPRJ
677
678# Class-Path for java-classes
679# obwohl der generierte Bytecode plattformunabhängig sein sollte
680# generieren wir ihn ersteinmal ins abhängige Verzeichnis
681CLASSDIR=$(OUT)/class
682CLASSPATH!:=.$(PATH_SEPERATOR)$(CLASSDIR)$(PATH_SEPERATOR)$(CLASSPATH)
683STARJAR=java -classpath $(CLASSPATH)$(PATH_SEPERATOR)$(SOLARENV)/bin/jtools.jar com.sun.star.tool.starjar.StarJar
684
685STARDEP=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/javadep
686.IF "$(PRJNAME)"=="sj2"
687CLASSPATH!:=$(CLASSPATH:s/sj2/no/)
688.ENDIF
689.IF "$(PRJNAME)"=="uno"
690CLASSPATH!:=$(CLASSPATH:s/uno/no/)
691.ENDIF
692.IF "$(PRJNAME)"=="tkt"
693CLASSPATH!:=$(CLASSPATH:s/tkt/no/)
694.ENDIF
695
696# default output directory when processing
697# configuration files
698PROCESSOUT*:=$(MISC)
699
700# Makros für die Librarynamen des Solar
701.INCLUDE : libs.mk
702
703.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
704VERSIONOBJ=$(SLO)/_version.obj
705.ENDIF
706
707.IF "$(GUI)"=="UNX"
708VERSIONOBJ=$(SLO)/_version.o
709.ENDIF
710
711.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
712WINVERSIONNAMES=$(UNIXVERSIONNAMES)
713.ENDIF          # "$(GUI)"=="WNT"
714
715.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2"
716.IF "$(COM)"=="GCC"
717SHELLLIB=-lgdi32 -lshell32 -ladvapi32 -lcomdlg32
718.ELSE
719SHELLLIB=gdi32.lib shell32.lib advapi32.lib comdlg32.lib
720.ENDIF
721.ENDIF
722
723# BIN Path
724.IF "$(UNR)"!=""
725BIN=$(OUT)/ubin
726.ELSE
727BIN=$(OUT)/bin
728.ENDIF
729# pointing to misc in common output tree if exists
730COMMONBIN=$(LOCAL_COMMON_OUT)/bin
731
732# Include Path
733# still without -I here s.a. target.mk INCLUDE
734INC=$(PRJ)/inc
735INCPCH=$(PRJ)/inc/pch
736INCLOCAL=../inc
737INCGUI=$(PRJ)/$(GUIBASE)/inc
738INCCOM=$(OUT)/inc
739INCCOMX=$(OUT)/inc
740INCUNOIDL=$(INCCOM)/$(PRJNAME)
741INCDEPN=. $(INCGUI) $(INCLOCAL) $(INC) $(INC)/$(PRJNAME)
742.IF "$(PRJINC)"!=""
743INCLOCPRJ=$(foreach,i,$(PRJINC) $i/inc)
744INCDEPN+=$(INCLOCPRJ)
745.ENDIF
746.IF "$(INCPRE)"!=""
747INCDEPN+=$(INCPRE)
748.ENDIF
749
750# Resource-Pfad fuer .SRS
751
752.IF "$(common_build_srs)"!=""
753SRS=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(OUT))/srs
754SRSX=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(OUT))/srs
755.ELSE          # "$(common_build_srs)"!=""
756SRS=$(OUT)/srs
757SRSX=$(OUT)/srs
758.ENDIF          # "$(common_build_srs)"!=""
759
760# Resource-Pfad fuer .RC und .RES
761RES=$(OUT)/res
762
763# das normale MISC wird nicht an LDMISC angepasst, stattdessen MISCX
764
765.IF "$(make_xl)"!=""
766BIN=$(PRJ)/$(OUTPATH).xl/bin
767.ENDIF
768
769# damit gezielt Abhängigkeiten auf s: angegeben werden können
770
771.IF "$(common_build)"!=""
772SOLARIDLDIR=$(SOLARVERSION)/common$(PROEXT)/idl$(UPDMINOREXT)
773.ELSE
774SOLARIDLDIR=$(SOLARVERSION)/$(INPATH)/idl$(UPDMINOREXT)
775.ENDIF
776
777#.IF "$(UPDMINOR)" != ""
778#UPDMINOREXT=.$(UPDMINOR)
779#.ELSE
780#UPDMINOREXT=
781#.ENDIF
782SOLARRESDIR=$(SOLARVERSION)/$(INPATH)/res$(UPDMINOREXT)
783SOLARRESXDIR=$(SOLARVERSION)/$(INPATH)/res$(UPDMINOREXT)
784SOLARLIBDIR=$(SOLARVERSION)/$(INPATH)/lib$(UPDMINOREXT)
785SOLARJAVADIR=$(SOLARVERSION)/$(INPATH)/java$(UPDMINOREXT)
786SOLARINCDIR=$(SOLARVERSION)/$(INPATH)/inc$(UPDMINOREXT)
787SOLARINCXDIR=$(SOLARVERSION)/$(INPATH)/inc$(UPDMINOREXT)
788.IF "$(SOLARLANG)"!="deut"
789.IF "$(SOLARLANG)" != ""
790SOLARINCXDIR=$(SOLARVERSION)/$(INPATH)/inc$(UPDMINOREXT)/$(SOLARLANG)
791SOLARRESXDIR=$(SOLARVERSION)/$(INPATH)/res$(UPDMINOREXT)/$(SOLARLANG)
792.ENDIF
793.ENDIF
794SOLARBINDIR:=$(SOLARVERSION)/$(INPATH)/bin$(UPDMINOREXT)
795SOLARUCRDIR=$(SOLARVERSION)/$(INPATH)/ucr$(UPDMINOREXT)
796SOLARPARDIR=$(SOLARVERSION)/$(INPATH)/par$(UPDMINOREXT)
797SOLARXMLDIR=$(SOLARVERSION)/$(INPATH)/xml$(UPDMINOREXT)
798SOLARDOCDIR=$(SOLARVERSION)/$(INPATH)/doc$(UPDMINOREXT)
799SOLARPCKDIR=$(SOLARVERSION)/$(INPATH)/pck$(UPDMINOREXT)
800SOLARSDFDIR=$(SOLARVERSION)/$(INPATH)/sdf$(UPDMINOREXT)
801SOLARCOMMONBINDIR=$(SOLARVERSION)/common$(PROEXT)/bin$(UPDMINOREXT)
802SOLARCOMMONRESDIR=$(SOLARVERSION)/common$(PROEXT)/res$(UPDMINOREXT)
803SOLARCOMMONPCKDIR=$(SOLARVERSION)/common$(PROEXT)/pck$(UPDMINOREXT)
804SOLARCOMMONSDFDIR=$(SOLARVERSION)/common$(PROEXT)/sdf$(UPDMINOREXT)
805.IF "$(common_build)"==""
806SOLARCOMMONBINDIR=$(SOLARBINDIR)
807SOLARCOMMONRESDIR=$(SOLARRESDIR)
808SOLARCOMMONPCKDIR=$(SOLARPCKDIR)
809SOLARCOMMONSDFDIR=$(SOLARSDFDIR)
810.ENDIF
811
812.EXPORT : SOLARBINDIR
813
814L10N_MODULE*=$(SOURCE_ROOT_DIR)/extras/l10n
815ALT_L10N_MODULE*=$(SOLARSRC)$/l10n_so
816
817.IF "$(WITH_LANG)"!=""
818.INCLUDE .IGNORE: $(L10N_MODULE)/$(COMMON_OUTDIR)$(PROEXT)/inc/localization_present.mk
819.INCLUDE .IGNORE: $(ALT_L10N_MODULE)/$(COMMON_OUTDIR)$(PROEXT)/inc/localization_present.mk
820
821# check for localization not hosted in l10n module. if a file exists there
822# it won't in l10n
823.IF "$(ALT_LOCALIZATION_FOUND)"!=""
824TRYALTSDF:=$(ALT_L10N_MODULE)$/$(COMMON_OUTDIR)$(PROEXT)$/misc/sdf$/$(PRJNAME)$/$(PATH_IN_MODULE)$/localize.sdf
825LOCALIZESDF:=$(strip $(shell @+$(IFEXIST) $(TRYALTSDF) $(THEN) echo $(TRYALTSDF) $(FI)))
826.ENDIF          # "$(ALT_LOCALIZATION_FOUND)"!=""
827# if the l10n module exists, use split localize.sdf directly from there
828.IF "$(LOCALIZATION_FOUND)"!="" && "$(LOCALIZESDF)"==""
829# still check for existence as there may be no localization yet
830TRYSDF:=$(L10N_MODULE)$/$(COMMON_OUTDIR)$(PROEXT)$/misc/sdf$/$(PRJNAME)$/$(PATH_IN_MODULE)$/localize.sdf
831LOCALIZESDF:=$(strip $(shell @+$(IFEXIST) $(TRYSDF) $(THEN) echo $(TRYSDF) $(FI)))
832.ENDIF          # "$(LOCALIZATION_FOUND)"!="" && "$(LOCALIZESDF)"==""
833# else use localize.sdf from local output tree if localization .zip exists
834.IF  "$(LOCALIZESDF)"==""
835LOCALSDFFILE:=$(COMMONMISC)$/$(PRJNAME)$/$(PATH_IN_MODULE)$/localize.sdf
836LOCALIZESDF:=$(strip $(shell @+$(IFEXIST) $(SOLARCOMMONSDFDIR)$/$(PRJNAME).zip $(THEN) echo $(LOCALSDFFILE) $(FI)))
837.IF  "$(LOCALIZESDF)"==""
838LOCALSDFFILE!:=
839.ENDIF          # "$(LOCALIZESDF)"==""
840.ENDIF          # "$(LOCALIZESDF)"==""
841# dummy target to keep the build happy.
842.IF  "$(LOCALIZESDF)"==""
843LOCALIZESDF:=$(COMMONMISC)$/$(PRJNAME)$/dummy$/localize.sdf
844.ENDIF          # "$(LOCALIZESDF)"==""
845.ENDIF          # "$(WITH_LANG)"!=""
846
847JARDIR=$(OUT)/class
848
849# needs to be expanded!!!
850
851# extend library path for MS Compiler
852.IF "$(COM)"=="MSC"
853LIB:=$(LB);$(SLB);$(ILIB)
854.ENDIF
855
856# extend library path for MinGW Compiler
857.IF "$(GUI)$(COM)"=="WNTGCC"
858LIB:=$(LB);$(BIN);$(ILIB)
859.ENDIF
860
861# --- Environment-Allgemein ----------------------------------------
862
863.IF "$(CPUNAME)" == ""
864CPUNAME=CPUNAME_HAS_TO_BE_SET_IN_ENVIRONMENT
865.ENDIF
866
867.IF "$(USE_STLP_DEBUG)" != ""
868SCPCDEFS+=-D_STLP_DEBUG
869.ENDIF
870
871.IF "$(UDK_MAJOR)"!=""
872SCPDEFS+=-DUDK_MAJOR=$(UDK_MAJOR)
873.ENDIF          # "$(UDK_MAJOR)"!=""
874
875SCPDEFS+=-U$(COMID) -DCOMID=$(COMID) -DCOMNAME=$(COMNAME) -D_$(COMID)
876SCPDEFS+=-DCCNUMVER=$(CCNUMVER)
877
878# The installer lists the CLI assemblies, and they only exist when the CLI
879# binding was built.  configure sets DISABLE_CLI when the compiler cannot
880# build it; without this the .scp files still name the files and the build
881# stops at the very last module with "File not found: cli_uno.dll".
882.IF "$(DISABLE_CLI)"!=""
883SCPDEFS+=-DDISABLE_CLI
884.ENDIF
885# extend library path for OS/2 gcc/wlink
886.IF "$(GUI)"=="OS2"
887LIB:=$(LB);$(SLB);$(ILIB)
888.ENDIF
889
890
891UNOIDLDEFS+=-DSUPD=$(UPD) -DUPD=$(UPD)
892
893UNOIDLDEPFLAGS=-Mdepend=$(SOLARVER)
894
895UNOIDLINC+=-I. -I.. -I$(PRJ) -I$(PRJ)/inc -I$(PRJ)/$(INPATH)/idl -I$(OUT)/inc -I$(SOLARIDLDIR) -I$(SOLARINCDIR)
896
897CDEFS= -D$(OS) -D$(GUI) -D$(GVER) -D$(COM) -D$(CVER) -D$(ALIGN) -D$(CPUNAME) -DCPPU_ENV=$(COMNAME)
898
899.IF "$(USE_STLP_DEBUG)" != "" && "$(GUI)"!="OS2"
900CDEFS+=-D_STLP_DEBUG
901.ENDIF
902
903.IF "$(CDEFS_PRESET)" != ""
904CDEFS+=$(CDEFS_PRESET)
905.ENDIF
906
907.IF "$(TIMELOG)" != ""
908CDEFS+=-DTIMELOG
909.ENDIF
910
911# Required for correct Windows function call ABI for expat static library
912.IF "$(SYSTEM_EXPAT)"=="NO"
913CDEFS+=-DXML_STATIC
914.ENDIF
915
916CDEFSCXX=
917CDEFSOBJ=
918CDEFSSLO=-DSHAREDLIB -D_DLL_
919CDEFSGUI=-DGUI
920CDEFSCUI=-DCUI
921#CDEFSMT=-DMULTITHREAD
922CDEFSPROF=-DPROFILE
923.IF "$(dbg_build_only)" == ""
924CDEFSDEBUG=-DDEBUG
925.ENDIF
926CDEFSDBGUTIL=-DDBG_UTIL
927CDEFSOPT=-DOPTIMIZE
928
929MKDEPFLAGS+=-I$(INCDEPN:s/ / -I/:s/-I-I/-I/)
930MKDEPALLINC=$(SOLARINC:s/-I/ -I/)
931MKDEPPREINC=-I$(PREPATH)/$(INPATH)/inc$(UPDMINOREXT)
932MKDEPSOLENV=-I$(SOLARENV)/inc -I$(SOLARENV)/$(GUI)$(CVER)$(COMEX)/inc
933MKDEPSOLVER=-I$(SOLARVERSION)/$(INPATH)/inc$(UPDMINOREXT) -I$(SOLARVERSION)/$(INPATH)/inc
934MKDEPLOCAL=-I$(INCCOM)
935
936.IF "$(MKDEPENDALL)"!=""
937MKDEPFLAGS+=$(MKDEPALLINC)
938.ENDIF
939
940.IF "$(MKDEPENDSOLENV)"!=""
941MKDEPFLAGS+=$(MKDEPSOLENV)
942.ENDIF
943
944.IF "$(MKDEPENDPREPATH)"!=""
945MKDEPFLAGS+=$(MKDEPPREINC)
946.ENDIF
947
948.IF "$(MKDEPENDSOLVER)"!=""
949MKDEPFLAGS+=$(MKDEPSOLVER)
950.ENDIF
951# unused - nodep should do the same now
952#.IF "$(MKDEPENDLOCAL)"!="NO"
953MKDEPFLAGS+=$(MKDEPLOCAL)
954#.ENDIF
955
956BISON*=bison
957YACCFLAGS*=-d
958
959SVIDL=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/svidl
960
961LDUMP2*=$(SOLARBINDIR)/ldump4
962
963ZIPUPDATE=-u -j
964ZIPFLAGS=$(ZIPUPDATE)
965#hack for dynamic language subdirs
966LANGDIR=LANGDIR
967
968#scplinker flags
969SCPLINKFLAGS=-i $(PAR),$(SOLARPARDIR)
970.IF "$(SCPLINKVERSION)"!=""
971SCPLINKFLAGS+=-v $(SCPLINKVERSION)
972.ENDIF          # "$(SCPLINKVERSION)"!=""
973
974.IF "$(make_srs_deps)"!=""
975RSC=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/rscdep
976.ELSE # "$(make_srs_deps)"!=""
977RSC=$(AUGMENT_LIBRARY_PATH) $(FLIPCMD) $(SOLARBINDIR)/rsc
978.ENDIF # "$(make_srs_deps)"!=""
979
980.IF "$(VERBOSE)" == "TRUE"
981    VERBOSITY=-verbose
982.ELSE
983    COMMAND_ECHO=@
984    .IF "$(VERBOSE)" == "FALSE"
985        VERBOSITY=-quiet
986        ZIP_VERBOSITY=-q
987    .ENDIF
988.ENDIF # "$(VERBOSE)" == "TRUE"
989COMPILE_ECHO_SWITCH=
990COMPILE_ECHO_FILE=$(<:f)
991
992#new
993RSCUPDVER=$(RSCREVISION)
994RSCUPDVERDEF=-DUPDVER="$(RSCUPDVER)"
995
996RSCFLAGS=-s
997RSCDEFS=-D$(GUI) -D$(GVER) -D$(COM) -D$(CVER) $(JAVADEF)
998
999.IF "$(BUILD_SPECIAL)"!=""
1000RSCDEFS+=-DBUILD_SPECIAL=$(BUILD_SPECIAL)
1001.ENDIF
1002
1003RSCDEFIMG*=default_images
1004
1005RSCEXTINC=.
1006
1007.IF "$(DEBUG)" != ""
1008RSCDEFS+= -DDEBUG
1009.ENDIF
1010
1011# settings for mozilla idl compiler
1012XPIDL=xpidl
1013XPIDL_LINK=xpt_link
1014
1015# alle bisher verwendeten Linker benutzen + um LIBs auf der nächsten Zeile
1016# weiter zu schreiben, wenn es da eine Ausnahme geben sollte, muss
1017# LINKEXTENDLINE compilerabhängig definiert werden
1018LINKEXTENDLINE=+
1019
1020LNT=$(DEVROOT)/lint/lint
1021#LNTFLAGS=+v -i$(DEVROOT)/lint\ -mL options.lnt -u
1022LNTFLAGS=+v -i$(DEVROOT)/lint/ -mL options.lnt -u
1023LNTFLAGSOUTOBJ=-os
1024
1025.IF "$(GUI)"=="WNT"
1026.INCLUDE : wnt.mk
1027.ENDIF
1028
1029.IF "$(GUI)" == "UNX"
1030.INCLUDE : unx.mk
1031.ENDIF
1032
1033.IF "$(GUI)" == "OS2"
1034.INCLUDE : os2.mk
1035.ENDIF
1036
1037.IF "$(OOO_LIBRARY_PATH_VAR)" != ""
1038# Add SOLARLIBDIR at the begin of a (potentially previously undefined) library
1039# path (LD_LIBRARY_PATH, PATH, etc.; prepending avoids fetching libraries from
1040# an existing office/URE installation; the ": &&" enables this to work at the
1041# start of a recipe line that is not prefixed by "+" as well as in the middle of
1042# an existing && chain:
1043AUGMENT_LIBRARY_PATH = : && \
1044    $(OOO_LIBRARY_PATH_VAR)=$(normpath, $(SOLARSHAREDBIN))$${{$(OOO_LIBRARY_PATH_VAR):+:$${{$(OOO_LIBRARY_PATH_VAR)}}}}
1045AUGMENT_LIBRARY_PATH_LOCAL = : && \
1046    $(OOO_LIBRARY_PATH_VAR)=$(normpath, $(PWD)/$(DLLDEST)):$(normpath, $(SOLARSHAREDBIN))$${{$(OOO_LIBRARY_PATH_VAR):+:$${{$(OOO_LIBRARY_PATH_VAR)}}}}
1047.END
1048
1049# remove if .Net 2003 support has expired
1050.IF "$(debug)"!=""
1051.IF "$(OS)$(COM)$(CPU)" == "WNTMSCI"
1052.IF "$(COMEX)" == "10"
1053.IF "$(SLOFILES)$(OBJFILES)$(DEPOBJFILES)"!=""
1054MAXPROCESS!:=1
1055.EXPORT : MAXPROCESS
1056.ENDIF          # "$(SLOFILES)$(OBJFILES)$(DEPOBJFILES)"!=""
1057.ENDIF          # "$(COMEX)" == "10"
1058.ENDIF          # "$(OS)$(COM)$(CPU)" == "WNTMSCI"
1059.ENDIF          # "$(debug)"!=""
1060
1061# for multiprocess building in external modules
1062# allow separate handling
1063EXTMAXPROCESS*=$(MAXPROCESS)
1064
1065IDLC*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/idlc
1066REGMERGE*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/regmerge
1067REGCOMPARE*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/regcompare
1068REGCOMP*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/regcomp
1069CPPUMAKER*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/cppumaker
1070JAVAMAKER*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/javamaker
1071RDBMAKER*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/rdbmaker
1072CLIMAKER*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/climaker
1073
1074HELPEX=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/helpex
1075LNGCONVEX=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/lngconvex
1076HELPLINKER=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/HelpLinker
1077
1078.IF "$(JAVAINTERPRETER)" == ""
1079JAVA*:=java
1080.ELSE
1081JAVA*:=$(JAVAINTERPRETER)
1082.ENDIF
1083.EXPORT : JAVA JAVAI
1084
1085# Define SCPCOMP without wrapper because pre2par.pl chokes on DOS style
1086# paths. (See iz57443)
1087SCPCOMP=$(PERL) $(SOLARENV)/bin/pre2par.pl
1088SCPLINK=$(PERL) $(SOLARENV)/bin/par2script.pl
1089LZIP*=lzip
1090CPPLCC*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/cpplcc
1091
1092.IF "$(SOLAR_JAVA)"=="TRUE"
1093.IF "$(USE_JAVAVER)"!=""
1094.INCLUDE : tg_javav.mk
1095.ENDIF "$(USE_JAVAVER)"!=""
1096.ENDIF          # "$(SOLAR_JAVA)"=="TRUE"
1097
1098# --- extend new environment ----------------------------------
1099CDEFS+= -DSUPD=$(UPD)
1100
1101# flags to enable build with symbols; required for crashdump feature
1102.IF ("$(ENABLE_CRASHDUMP)"!="" && "$(ENABLE_CRASHDUMP)"!="DUMMY") || "$(ENABLE_SYMBOLS)"!=""
1103CFLAGSENABLESYMBOLS_CC_ONLY*=$(CFLAGSENABLESYMBOLS)
1104CFLAGSCXX+=$(CFLAGSENABLESYMBOLS)
1105CFLAGSCC+=$(CFLAGSENABLESYMBOLS_CC_ONLY)
1106.ENDIF          # ("$(ENABLE_CRASHDUMP)"!="" && "$(ENABLE_CRASHDUMP)"!="DUMMY") || "$(ENABLE_SYMBOLS)"!=""
1107
1108.IF "$(profile)"!=""
1109CDEFS+= $(CDEFSPROF)
1110CFLAGS+= $(CFLAGSPROF)
1111.IF "$(WST)"!=""
1112LINKFLAGS=$(LINKFLAGSWST)
1113LINKCFLAGS=$(LINKFLAGSWST)
1114.ELSE
1115LINKFLAGSADD+=$(LINKFLAGSPROF)
1116.ENDIF
1117.ENDIF
1118
1119.IF "$(debug)"!=""
1120JAVAFLAGS+=$(JAVAFLAGSDEBUG)
1121CDEFS+= $(CDEFSDEBUG)
1122CFLAGS+= $(CFLAGSDEBUG)
1123LINKFLAGSADD+= $(LINKFLAGSDEBUG)
1124.ENDIF
1125
1126.IF "$(dbgutil)"!=""
1127CDEFS+=$(CDEFSDBGUTIL)
1128CFLAGS+=$(CFLAGSDBGUTIL)
1129RSCDEFS+=-DDBG_UTIL
1130.ENDIF
1131
1132.IF "$(product)"!=""
1133CDEFS+= -DPRODUCT -DNDEBUG
1134RSCDEFS+= -DPRODUCT
1135RSCDEFS+= -DNDEBUG
1136.ENDIF
1137
1138.IF "$(DBG_LEVEL)"!=""
1139CDEFS+=-DOSL_DEBUG_LEVEL=$(DBG_LEVEL)
1140RSCDEFS+=-DOSL_DEBUG_LEVEL=$(DBG_LEVEL)
1141.ENDIF
1142
1143.IF "$(optimize)"!=""
1144CDEFS+=$(CDEFSOPT)
1145CFLAGS+=$(CFLAGSOPT)
1146LINKFLAGSADD+=$(LINKFLAGSOPT)
1147.ELSE
1148CFLAGS+=$(CFLAGSNOOPT)
1149.ENDIF
1150
1151.IF "$(ENABLE_EXCEPTIONS)"!=""
1152GLOBAL_EXCEPTIONS_FLAGS+=$(CFLAGSEXCEPTIONS)
1153GLOBAL_EXCEPTIONS_FLAGS+=-DEXCEPTIONS_ON
1154.ELSE
1155GLOBAL_EXCEPTIONS_FLAGS+=$(CFLAGS_NO_EXCEPTIONS)
1156GLOBAL_EXCEPTIONS_FLAGS+=-DEXCEPTIONS_OFF
1157.ENDIF
1158# used if an object appears in the EXCEPTIONSFILES list
1159# see also rules.mk
1160LOCAL_EXCEPTIONS_FLAGS+=$(CFLAGSEXCEPTIONS)
1161LOCAL_EXCEPTIONS_FLAGS+=-DEXCEPTIONS_ON
1162
1163.IF "$(ENABLE_LAYOUT)" == "TRUE"
1164CDEFS+=-DENABLE_LAYOUT=1
1165.ELSE # ENABLE_LAYOUT != TRUE
1166CFLAGS+=-DENABLE_LAYOUT=0
1167.ENDIF # ENABLE_LAYOUT != TRUE
1168
1169.IF "$(ENABLE_LAYOUT_EXPERIMENTAL)" == "TRUE"
1170CDEFS+=-DENABLE_LAYOUT_EXPERIMENTAL=1
1171.ELSE # ENABLE_LAYOUT_EXPERIMENTAL != TRUE
1172CFLAGS+=-DENABLE_LAYOUT_EXPERIMENTAL=0
1173.ENDIF # ENABLE_LAYOUT_EXPERIMENTAL != TRUE
1174
1175# compose flags and defines for GUI
1176.IF "$(TARGETTYPE)"=="GUI"
1177CDEFS+= $(CDEFSGUI)
1178CFLAGSSLO+=$(CFLAGSSLOGUIMT)
1179CDEFSSLO+=$(CDEFSSLOMT)
1180LINKFLAGSAPP=$(LINKFLAGSAPPGUI)
1181LINKFLAGSSHL=$(LINKFLAGSSHLGUI)
1182STDOBJ=$(STDOBJGUI)
1183STDSLO=$(STDSLOGUI)
1184
1185CDEFSOBJ+= $(CDEFSMT) $(CDEFSOBJMT)
1186CFLAGSOBJ+=$(CFLAGSOBJGUIMT)
1187STDLIB=$(STDLIBGUIMT)
1188STDSHL=$(STDSHLGUIMT)
1189
1190.ENDIF
1191
1192# compose flags and defines for CUI
1193.IF "$(TARGETTYPE)" == "CUI" || "$(TARGETTYPE)"=="cui"
1194CDEFS+= $(CDEFSCUI)
1195CFLAGSSLO+=$(CFLAGSSLOCUIMT)
1196CDEFSSLO+=$(CDEFSSLOMT)
1197LINKFLAGSAPP=$(LINKFLAGSAPPCUI)
1198LINKFLAGSSHL=$(LINKFLAGSSHLCUI)
1199STDOBJ=$(STDOBJCUI)
1200STDSLO=$(STDSLOCUI)
1201
1202CDEFSOBJ+=$(CDEFSMT) $(CDEFSOBJMT)
1203CFLAGSOBJ+=$(CFLAGSOBJCUIMT)
1204STDLIB=$(STDLIBCUIMT)
1205STDSHL=$(STDSHLCUIMT)
1206
1207.ENDIF
1208
1209.EXPORT : PICSWITCH
1210
1211.IF "$(USE_SYSTEM_STL)"=="YES"
1212.IF "$(GUI)"=="OS2"
1213LIBSTLPORT=
1214.ELSE
1215LIBSTLPORT=""
1216.ENDIF
1217.ENDIF
1218
1219.IF "$(NO_DEFAULT_STL)"==""
1220STDLIB+=$(LIBSTLPORT)
1221STDSHL+=$(LIBSTLPORT)
1222.ENDIF          # "$(NO_DEFAULT_STL)"==""
1223
1224# fill up unresolved symbols not found else where
1225.IF "$(FILLUPARC)"!=""
1226STDLIB+=$(FILLUPARC)
1227STDSHL+=$(FILLUPARC)
1228.ENDIF          # "$(FILUPARC)"!=""
1229
1230.IF "$(SOLAR_JAVA)"!=""
1231CDEFS+=$(JAVADEF)
1232.ENDIF          # "$(SOLAR_JAVA)"!=""
1233
1234.INCLUDE .IGNORE: $(UPD)$(LAST_MINOR).mk
1235
1236# Once all modules on a given platform compile without warnings, the specific
1237# .mk file for that platform should set COMPILER_WARN_ERRORS=TRUE and no longer
1238# set MODULES_WITH_WARNINGS, and once no platform sets MODULES_WITH_WARNINGS any
1239# longer, this code can go away:
1240.IF "$(MODULES_WITH_WARNINGS)" != ""
1241MODULES_WITH_WARNINGS_1 := $(foreach,i,$(MODULES_WITH_WARNINGS) .$(i).)
1242MODULES_WITH_WARNINGS_2 := $(subst,.$(PRJNAME)., $(MODULES_WITH_WARNINGS_1))
1243.IF "$(MODULES_WITH_WARNINGS_1)" == "$(MODULES_WITH_WARNINGS_2)"
1244COMPILER_WARN_ERRORS = TRUE
1245.ENDIF
1246.ENDIF
1247
1248CFLAGSWARNCXX *= $(CFLAGSWARNCC)
1249CFLAGSWALLCXX *= $(CFLAGSWALLCC)
1250CFLAGSWERRCXX *= $(CFLAGSWERRCC)
1251
1252.IF "$(ENVWARNFLAGS)"==""
1253.IF "$(COMPILER_WARN_ALL)"==""
1254CFLAGSCC+=$(CFLAGSWARNCC)
1255CFLAGSCXX+=$(CFLAGSWARNCXX)
1256.ELSE
1257CFLAGSCC+=$(CFLAGSWALLCC)
1258CFLAGSCXX+=$(CFLAGSWALLCXX)
1259.ENDIF
1260.IF "$(COMPILER_WARN_ERRORS)"!="" && "$(EXTERNAL_WARNINGS_NOT_ERRORS)"==""
1261CFLAGSCC+=$(CFLAGSWERRCC)
1262CFLAGSCXX+=$(CFLAGSWERRCXX)
1263.ENDIF
1264.ELSE           # "$(ENVWARNFLAGS)"==""
1265CFLAGSAPPEND+=$(ENVWARNFLAGS)
1266.ENDIF          # "$(ENVWARNFLAGS)"==""
1267
1268CDEFS+= $(ADDCDEFS)
1269CDEFS+= $(ENVCDEFS)
1270CFLAGS+= $(CFLAGSCALL) $(ENVCFLAGS)
1271CFLAGSCXX+= $(ENVCFLAGSCXX)
1272# andersrum wg. -TPxxxx
1273CFLAGSINCXX+:=$(ENVCFLAGSINCXX)
1274LIBFLAGS+= $(ENVLIBFLAGS)
1275LINKFLAGSADD+= $(ENVLINKFLAGS)
1276RSCFLAGS+= $(ENVRSCFLAGS)
1277RSCDEFS+= $(ENVRSCDEFS)
1278# RSCLINKFLAGS+= $(ENVRSCLINKFLAGS)
1279RCFLAGS+= $(ENVRCFLAGS)
1280RCLINKFLAGS+= $(ENVRCLINKFLAGS)
1281
1282LINKFLAGSRUNPATH_URELIB*=
1283LINKFLAGSRUNPATH_UREBIN*=
1284LINKFLAGSRUNPATH_OOO*=
1285LINKFLAGSRUNPATH_SDK*=
1286LINKFLAGSRUNPATH_BRAND*=
1287LINKFLAGSRUNPATH_OXT*=
1288LINKFLAGSRUNPATH_BOXT*=
1289LINKFLAGSRUNPATH_NONE*=
1290
1291# make sure both linker variables are set
1292LINKC*=$(LINK)
1293LINKCFLAGS*=$(LINKFLAGS)
1294LINKFLAGS+=$(LINKFLAGSADD)
1295LINKCFLAGS+=$(LINKFLAGSADD)
1296
1297#defaults for UCR HEADER
1298UNOUCRBASE*=UCR
1299UNOUCROUT*=$(OUT)/inc/$(TARGET)
1300INCPRE+=-I$(UNOUCROUT)
1301UNOUCRRDB*=$(SOLARBINDIR)/types.rdb
1302
1303# location of trustedinfo.manifest for Windows Vista
1304.IF "$(COM)"=="MSC"
1305TRUSTED_MANIFEST_LOCATION*=$(SOLARENV)/inc
1306.ENDIF # "$(COM)"=="MSC"
1307
1308# --- Compiler -----------------------------------------------------
1309.INCLUDE : rules.mk
1310
1311# --- include typelists --------------------------------------------
1312
1313.IF "$(COMP1TYPELIST)"!=""
1314.INCLUDE .IGNORE : $(MISC)/$(COMP1TYPELIST).mk
1315$(COMP1TYPELIST)_XML2CMPTYPES:=$(shell @$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/xml2cmp -types stdout $(MISC)/$(COMP1TYPELIST)$($(WINVERSIONNAMES)_MAJOR).xml)
1316.ENDIF
1317
1318.IF "$(COMP2TYPELIST)"!=""
1319.INCLUDE .IGNORE : $(MISC)/$(COMP2TYPELIST).mk
1320$(COMP2TYPELIST)_XML2CMPTYPES:=$(shell @$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/xml2cmp -types stdout $(MISC)/$(COMP2TYPELIST)$($(WINVERSIONNAMES)_MAJOR).xml)
1321.ENDIF
1322
1323.IF "$(COMP3TYPELIST)"!=""
1324.INCLUDE .IGNORE : $(MISC)/$(COMP3TYPELIST).mk
1325$(COMP3TYPELIST)_XML2CMPTYPES:=$(shell @$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/xml2cmp -types stdout $(MISC)/$(COMP3TYPELIST)$($(WINVERSIONNAMES)_MAJOR).xml)
1326.ENDIF
1327
1328.IF "$(COMP4TYPELIST)"!=""
1329.INCLUDE .IGNORE : $(MISC)/$(COMP4TYPELIST).mk
1330$(COMP4TYPELIST)_XML2CMPTYPES:=$(shell @$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/xml2cmp -types stdout $(MISC)/$(COMP4TYPELIST)$($(WINVERSIONNAMES)_MAJOR).xml)
1331.ENDIF
1332
1333.IF "$(COMP5TYPELIST)"!=""
1334.INCLUDE .IGNORE : $(MISC)/$(COMP5TYPELIST).mk
1335$(COMP5TYPELIST)_XML2CMPTYPES:=$(shell @$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/xml2cmp -types stdout $(MISC)/$(COMP5TYPELIST)$($(WINVERSIONNAMES)_MAJOR).xml)
1336.ENDIF
1337
1338.IF "$(COMP6TYPELIST)"!=""
1339.INCLUDE .IGNORE : $(MISC)/$(COMP6TYPELIST).mk
1340$(COMP6TYPELIST)_XML2CMPTYPES:=$(shell @$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/xml2cmp -types stdout $(MISC)/$(COMP6TYPELIST)$($(WINVERSIONNAMES)_MAJOR).xml)
1341.ENDIF
1342
1343.IF "$(COMP7TYPELIST)"!=""
1344.INCLUDE .IGNORE : $(MISC)/$(COMP7TYPELIST).mk
1345$(COMP7TYPELIST)_XML2CMPTYPES:=$(shell @$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/xml2cmp -types stdout $(MISC)/$(COMP7TYPELIST)$($(WINVERSIONNAMES)_MAJOR).xml)
1346.ENDIF
1347
1348.IF "$(COMP8TYPELIST)"!=""
1349.INCLUDE .IGNORE : $(MISC)/$(COMP8TYPELIST).mk
1350$(COMP8TYPELIST)_XML2CMPTYPES:=$(shell @$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/xml2cmp -types stdout $(MISC)/$(COMP8TYPELIST)$($(WINVERSIONNAMES)_MAJOR).xml)
1351.ENDIF
1352
1353.IF "$(COMP9TYPELIST)"!=""
1354.INCLUDE .IGNORE : $(MISC)/$(COMP9TYPELIST).mk
1355$(COMP9TYPELIST)_XML2CMPTYPES:=$(shell @$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/xml2cmp -types stdout $(MISC)/$(COMP9TYPELIST)$($(WINVERSIONNAMES)_MAJOR).xml)
1356.ENDIF
1357
1358# some place to define these jars for SO environment
1359XML_APIS_JAR*=$(SOLARBINDIR)/xml-apis.jar
1360XERCES_JAR*=$(SOLARBINDIR)/xercesImpl.jar
1361
1362COMPONENTPREFIX_URE_NATIVE = vnd.sun.star.expand:$$URE_INTERNAL_LIB_DIR/
1363COMPONENTPREFIX_URE_JAVA = vnd.sun.star.expand:$$URE_INTERNAL_JAVA_DIR/
1364#.IF "$(OS)" == "WNT" || "$(OS)" == "OS2"
1365#COMPONENTPREFIX_BASIS_NATIVE = vnd.sun.star.expand:$$OOO_BASE_DIR/program/
1366#.ELSE
1367COMPONENTPREFIX_BASIS_NATIVE = vnd.sun.star.expand:$$OOO_BASE_DIR/program/
1368#.END
1369COMPONENTPREFIX_BASIS_JAVA = vnd.sun.star.expand:$$OOO_BASE_DIR/program/classes/
1370COMPONENTPREFIX_BASIS_PYTHON = vnd.openoffice.pymodule:
1371COMPONENTPREFIX_INBUILD_NATIVE = \
1372    vnd.sun.star.expand:$$OOO_INBUILD_SHAREDLIB_DIR/
1373COMPONENTPREFIX_INBUILD_JAVA = vnd.sun.star.expand:$$OOO_INBUILD_JAR_DIR/
1374COMPONENTPREFIX_EXTENSION = ./
1375
1376# workaround for strange dmake bug:
1377# if the previous block was a rule or a target, "\#" isn't recognized
1378# as an escaped "#". if it was an assignment, escaping works...
1379some_unique_variable_name:=1
1380