1*b1cdbd2cSJim Jagielski#************************************************************** 2*b1cdbd2cSJim Jagielski# 3*b1cdbd2cSJim Jagielski# Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski# or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski# distributed with this work for additional information 6*b1cdbd2cSJim Jagielski# regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski# to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski# "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski# with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski# 11*b1cdbd2cSJim Jagielski# http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski# 13*b1cdbd2cSJim Jagielski# Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski# software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski# KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski# specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski# under the License. 19*b1cdbd2cSJim Jagielski# 20*b1cdbd2cSJim Jagielski#************************************************************** 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski# vars needed from the env/calling makefile 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski# CVER 27*b1cdbd2cSJim Jagielski# DEBUG 28*b1cdbd2cSJim Jagielski# GBUILDDIR 29*b1cdbd2cSJim Jagielski# INPATH 30*b1cdbd2cSJim Jagielski# JAVA_HOME 31*b1cdbd2cSJim Jagielski# JDKINCS 32*b1cdbd2cSJim Jagielski# LIBXML_CFLAGS 33*b1cdbd2cSJim Jagielski# OS 34*b1cdbd2cSJim Jagielski# PRODUCT 35*b1cdbd2cSJim Jagielski# SOLARINC 36*b1cdbd2cSJim Jagielski# SOLARLIB 37*b1cdbd2cSJim Jagielski# UPD 38*b1cdbd2cSJim Jagielski 39*b1cdbd2cSJim Jagielski# GXX_INCLUDE_PATH (Linux) 40*b1cdbd2cSJim Jagielski# PTHREAD_CFLAGS (Linux) 41*b1cdbd2cSJim Jagielski# SYSTEM_ICU (Linux) 42*b1cdbd2cSJim Jagielski# SYSTEM_JPEG (Linux) 43*b1cdbd2cSJim Jagielski# SYSTEM_LIBXML (Linux) 44*b1cdbd2cSJim Jagielski# USE_SYSTEM_STL (Linux) 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielskiifeq ($(OS),OS2) 47*b1cdbd2cSJim JagielskiSHELL := /@unixroot/usr/bin/sh 48*b1cdbd2cSJim Jagielskielse 49*b1cdbd2cSJim JagielskiSHELL := /bin/sh 50*b1cdbd2cSJim Jagielskiendif 51*b1cdbd2cSJim Jagielskitrue := T 52*b1cdbd2cSJim Jagielskifalse := 53*b1cdbd2cSJim Jagielskidefine NEWLINE 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski 56*b1cdbd2cSJim Jagielskiendef 57*b1cdbd2cSJim Jagielski 58*b1cdbd2cSJim Jagielskidefine WHITESPACE 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielskiendef 61*b1cdbd2cSJim Jagielski 62*b1cdbd2cSJim JagielskiCOMMA :=, 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski# optional extensions that should never be essential 65*b1cdbd2cSJim Jagielskiifneq ($(wildcard $(GBUILDDIR)/extensions/pre_*.mk),) 66*b1cdbd2cSJim Jagielskiinclude $(wildcard $(GBUILDDIR)/extensions/pre_*.mk) 67*b1cdbd2cSJim Jagielskiendif 68*b1cdbd2cSJim Jagielski 69*b1cdbd2cSJim Jagielskiinclude $(GBUILDDIR)/Output.mk 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski# BuildDirs uses the Output functions already 72*b1cdbd2cSJim Jagielskiinclude $(GBUILDDIR)/BuildDirs.mk 73*b1cdbd2cSJim Jagielski 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielskiifneq ($(strip $(PRODUCT)$(product)),) 76*b1cdbd2cSJim Jagielskigb_PRODUCT := $(true) 77*b1cdbd2cSJim Jagielskielse 78*b1cdbd2cSJim Jagielskiifneq ($(strip $(product)),) 79*b1cdbd2cSJim Jagielskigb_PRODUCT := $(true) 80*b1cdbd2cSJim Jagielskielse 81*b1cdbd2cSJim Jagielskigb_PRODUCT := $(false) 82*b1cdbd2cSJim Jagielskiendif 83*b1cdbd2cSJim Jagielskiendif 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielskiifneq ($(strip $(DEBUG)$(debug)),) 86*b1cdbd2cSJim Jagielskigb_DEBUGLEVEL := 2 87*b1cdbd2cSJim Jagielskielse 88*b1cdbd2cSJim Jagielskiifeq ($(gb_PRODUCT),$(true)) 89*b1cdbd2cSJim Jagielskigb_DEBUGLEVEL := 0 90*b1cdbd2cSJim Jagielskielse 91*b1cdbd2cSJim Jagielskigb_DEBUGLEVEL := 1 92*b1cdbd2cSJim Jagielskiendif 93*b1cdbd2cSJim Jagielskiendif 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielskiifneq ($(strip $(ENABLE_PCH)),) 96*b1cdbd2cSJim Jagielskigb_ENABLE_PCH := $(true) 97*b1cdbd2cSJim Jagielskielse 98*b1cdbd2cSJim Jagielskigb_ENABLE_PCH := $(false) 99*b1cdbd2cSJim Jagielskiendif 100*b1cdbd2cSJim Jagielski 101*b1cdbd2cSJim Jagielski# for clean, setuplocal and removelocal goals we switch off dependencies 102*b1cdbd2cSJim Jagielskiifneq ($(filter cleanpackmodule clean setuplocal removelocal showdeliverables,$(MAKECMDGOALS)),) 103*b1cdbd2cSJim Jagielskigb_FULLDEPS := $(false) 104*b1cdbd2cSJim Jagielskielse 105*b1cdbd2cSJim Jagielskigb_FULLDEPS := $(true) 106*b1cdbd2cSJim Jagielskiendif 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielskiinclude $(GBUILDDIR)/Helper.mk 109*b1cdbd2cSJim Jagielskiinclude $(GBUILDDIR)/TargetLocations.mk 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski$(eval $(call gb_Helper_init_registries)) 112*b1cdbd2cSJim Jagielski$(eval $(call gb_Helper_add_repositories,$(gb_REPOS))) 113*b1cdbd2cSJim Jagielski$(eval $(call gb_Helper_collect_libtargets)) 114*b1cdbd2cSJim Jagielski 115*b1cdbd2cSJim Jagielskiifeq ($(OS),LINUX) 116*b1cdbd2cSJim Jagielskiinclude $(GBUILDDIR)/platform/linux.mk 117*b1cdbd2cSJim Jagielskielse 118*b1cdbd2cSJim Jagielskiifeq ($(OS),WNT) 119*b1cdbd2cSJim Jagielskiifneq ($(USE_MINGW),) 120*b1cdbd2cSJim Jagielskiinclude $(GBUILDDIR)/platform/winmingw.mk 121*b1cdbd2cSJim Jagielskielse 122*b1cdbd2cSJim Jagielskiinclude $(GBUILDDIR)/platform/windows.mk 123*b1cdbd2cSJim Jagielskiendif 124*b1cdbd2cSJim Jagielskielse 125*b1cdbd2cSJim Jagielskiifeq ($(OS),SOLARIS) 126*b1cdbd2cSJim Jagielskiinclude $(GBUILDDIR)/platform/solaris.mk 127*b1cdbd2cSJim Jagielskielse 128*b1cdbd2cSJim Jagielskiifeq ($(OS),MACOSX) 129*b1cdbd2cSJim Jagielskiinclude $(GBUILDDIR)/platform/macosx.mk 130*b1cdbd2cSJim Jagielskielse 131*b1cdbd2cSJim Jagielskiifeq ($(OS),FREEBSD) 132*b1cdbd2cSJim Jagielskiinclude $(GBUILDDIR)/platform/freebsd.mk 133*b1cdbd2cSJim Jagielskielse 134*b1cdbd2cSJim Jagielskiifeq ($(OS),OS2) 135*b1cdbd2cSJim Jagielskiinclude $(GBUILDDIR)/platform/os2.mk 136*b1cdbd2cSJim Jagielskielse 137*b1cdbd2cSJim Jagielski$(eval $(call gb_Output_error,Unsupported OS: $(OS))) 138*b1cdbd2cSJim Jagielskiendif 139*b1cdbd2cSJim Jagielskiendif 140*b1cdbd2cSJim Jagielskiendif 141*b1cdbd2cSJim Jagielskiendif 142*b1cdbd2cSJim Jagielskiendif 143*b1cdbd2cSJim Jagielskiendif 144*b1cdbd2cSJim Jagielski 145*b1cdbd2cSJim Jagielskiinclude $(GBUILDDIR)/Tempfile.mk 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski# this is optional 148*b1cdbd2cSJim Jagielski-include $(foreach repo,$(gb_REPOS),$(repo)/RepositoryFixes.mk) 149*b1cdbd2cSJim Jagielski 150*b1cdbd2cSJim Jagielski$(eval $(call gb_Helper_collect_knownlibs)) 151*b1cdbd2cSJim Jagielski 152*b1cdbd2cSJim Jagielskigb_GLOBALDEFS := \ 153*b1cdbd2cSJim Jagielski -D_REENTRANT \ 154*b1cdbd2cSJim Jagielski -DCUI \ 155*b1cdbd2cSJim Jagielski -DENABLE_LAYOUT_EXPERIMENTAL=0 \ 156*b1cdbd2cSJim Jagielski -DENABLE_LAYOUT=0 \ 157*b1cdbd2cSJim Jagielski -DOSL_DEBUG_LEVEL=$(gb_DEBUGLEVEL) \ 158*b1cdbd2cSJim Jagielski -DSOLAR_JAVA \ 159*b1cdbd2cSJim Jagielski -DSUPD=$(UPD) \ 160*b1cdbd2cSJim Jagielski -DVCL \ 161*b1cdbd2cSJim Jagielski $(gb_OSDEFS) \ 162*b1cdbd2cSJim Jagielski $(gb_COMPILERDEFS) \ 163*b1cdbd2cSJim Jagielski $(gb_CPUDEFS) \ 164*b1cdbd2cSJim Jagielski 165*b1cdbd2cSJim Jagielskiifeq ($(gb_PRODUCT),$(true)) 166*b1cdbd2cSJim Jagielskigb_GLOBALDEFS += \ 167*b1cdbd2cSJim Jagielski -DPRODUCT \ 168*b1cdbd2cSJim Jagielski -DPRODUCT_FULL \ 169*b1cdbd2cSJim Jagielski 170*b1cdbd2cSJim Jagielskielse 171*b1cdbd2cSJim Jagielskigb_GLOBALDEFS += \ 172*b1cdbd2cSJim Jagielski -DDBG_UTIL \ 173*b1cdbd2cSJim Jagielski -D_STLP_DEBUG \ 174*b1cdbd2cSJim Jagielski 175*b1cdbd2cSJim Jagielskiendif 176*b1cdbd2cSJim Jagielski 177*b1cdbd2cSJim Jagielskiifeq ($(gb_DEBUGLEVEL),2) 178*b1cdbd2cSJim Jagielskigb_GLOBALDEFS += \ 179*b1cdbd2cSJim Jagielski -DDEBUG \ 180*b1cdbd2cSJim Jagielski 181*b1cdbd2cSJim Jagielskielse 182*b1cdbd2cSJim Jagielskigb_GLOBALDEFS += \ 183*b1cdbd2cSJim Jagielski -DOPTIMIZE \ 184*b1cdbd2cSJim Jagielski -DNDEBUG \ 185*b1cdbd2cSJim Jagielski 186*b1cdbd2cSJim Jagielskiendif 187*b1cdbd2cSJim Jagielski 188*b1cdbd2cSJim Jagielskiifneq ($(strip $(ENABLE_GTK)),) 189*b1cdbd2cSJim Jagielskigb_GLOBALDEFS += -DENABLE_GTK 190*b1cdbd2cSJim Jagielskiendif 191*b1cdbd2cSJim Jagielski 192*b1cdbd2cSJim Jagielskiifneq ($(strip $(ENABLE_KDE)),) 193*b1cdbd2cSJim Jagielskigb_GLOBALDEFS += -DENABLE_KDE 194*b1cdbd2cSJim Jagielskiendif 195*b1cdbd2cSJim Jagielski 196*b1cdbd2cSJim Jagielskiifneq ($(strip $(ENABLE_KDE4)),) 197*b1cdbd2cSJim Jagielskigb_GLOBALDEFS += -DENABLE_KDE4 198*b1cdbd2cSJim Jagielskiendif 199*b1cdbd2cSJim Jagielski 200*b1cdbd2cSJim Jagielskiifeq ($(strip $(ENABLE_GRAPHITE)),TRUE) 201*b1cdbd2cSJim Jagielskigb_GLOBALDEFS += -DENABLE_GRAPHITE 202*b1cdbd2cSJim Jagielskiendif 203*b1cdbd2cSJim Jagielski 204*b1cdbd2cSJim Jagielski# Required for correct Windows function call ABI for expat static library 205*b1cdbd2cSJim Jagielskiifeq ($(SYSTEM_EXPAT),NO) 206*b1cdbd2cSJim Jagielskigb_GLOBALDEFS += -DXML_STATIC 207*b1cdbd2cSJim Jagielskiendif 208*b1cdbd2cSJim Jagielski 209*b1cdbd2cSJim Jagielskigb_GLOBALDEFS := $(sort $(gb_GLOBALDEFS)) 210*b1cdbd2cSJim Jagielski 211*b1cdbd2cSJim Jagielskiinclude $(GBUILDDIR)/Deliver.mk 212*b1cdbd2cSJim Jagielski 213*b1cdbd2cSJim Jagielski$(eval $(call gb_Deliver_init)) 214*b1cdbd2cSJim Jagielski 215*b1cdbd2cSJim Jagielski# We are using a set of scopes that we might as well call classes. 216*b1cdbd2cSJim Jagielski 217*b1cdbd2cSJim Jagielski# It is important to include them in the right order as that is 218*b1cdbd2cSJim Jagielski# -- at least in part -- defining precedence. This is not an issue in the 219*b1cdbd2cSJim Jagielski# WORKDIR as there are no nameing collisions there, but OUTDIR is a mess 220*b1cdbd2cSJim Jagielski# and precedence is important there. This is also platform dependant. 221*b1cdbd2cSJim Jagielski# For example: 222*b1cdbd2cSJim Jagielski# $(OUTDIR)/bin/% for executables collides 223*b1cdbd2cSJim Jagielski# with $(OUTDIR)/bin/%.res for resources on unix 224*b1cdbd2cSJim Jagielski# $(OUTDIR)/lib/%.lib collides 225*b1cdbd2cSJim Jagielski# on windows (static and dynamic libs) 226*b1cdbd2cSJim Jagielski# $(OUTDIR)/xml/% for packageparts collides 227*b1cdbd2cSJim Jagielski# with $(OUTDIR)/xml/component/%.component for components 228*b1cdbd2cSJim Jagielski# This is less of an issue with GNU Make versions > 3.82 which matches for 229*b1cdbd2cSJim Jagielski# shortest stem instead of first match. However, upon intoduction this version 230*b1cdbd2cSJim Jagielski# is not available everywhere by default. 231*b1cdbd2cSJim Jagielski 232*b1cdbd2cSJim Jagielskiinclude $(foreach class, \ 233*b1cdbd2cSJim Jagielski ComponentTarget \ 234*b1cdbd2cSJim Jagielski AllLangResTarget \ 235*b1cdbd2cSJim Jagielski WinResTarget \ 236*b1cdbd2cSJim Jagielski LinkTarget \ 237*b1cdbd2cSJim Jagielski Library \ 238*b1cdbd2cSJim Jagielski StaticLibrary \ 239*b1cdbd2cSJim Jagielski Executable \ 240*b1cdbd2cSJim Jagielski SdiTarget \ 241*b1cdbd2cSJim Jagielski Package \ 242*b1cdbd2cSJim Jagielski CustomTarget \ 243*b1cdbd2cSJim Jagielski PrecompiledHeaders \ 244*b1cdbd2cSJim Jagielski CppunitTest \ 245*b1cdbd2cSJim Jagielski JavaClassSet \ 246*b1cdbd2cSJim Jagielski JunitTest \ 247*b1cdbd2cSJim Jagielski Module \ 248*b1cdbd2cSJim Jagielski,$(GBUILDDIR)/$(class).mk) 249*b1cdbd2cSJim Jagielski 250*b1cdbd2cSJim Jagielski# optional extensions that should never be essential 251*b1cdbd2cSJim Jagielskiifneq ($(wildcard $(GBUILDDIR)/extensions/post_*.mk),) 252*b1cdbd2cSJim Jagielskiinclude $(wildcard $(GBUILDDIR)/extensions/post_*.mk) 253*b1cdbd2cSJim Jagielskiendif 254*b1cdbd2cSJim Jagielski 255*b1cdbd2cSJim Jagielskiifeq ($(SYSTEM_LIBXSLT),YES) 256*b1cdbd2cSJim Jagielskigb_XSLTPROCTARGET := 257*b1cdbd2cSJim Jagielskigb_XSLTPROC := xsltproc 258*b1cdbd2cSJim Jagielskielse 259*b1cdbd2cSJim Jagielskigb_XSLTPROCTARGET := $(call gb_Executable_get_target,xsltproc) 260*b1cdbd2cSJim Jagielskigb_XSLTPROC := $(gb_XSLTPROCPRECOMMAND) $(gb_XSLTPROCTARGET) 261*b1cdbd2cSJim Jagielskiendif 262*b1cdbd2cSJim Jagielski 263*b1cdbd2cSJim Jagielskiexport gb_AWK 264*b1cdbd2cSJim Jagielskiexport gb_XSLTPROC 265*b1cdbd2cSJim Jagielski 266*b1cdbd2cSJim Jagielski# vim: set noet sw=4 ts=4: 267