summaryrefslogtreecommitdiffstats
path: root/solenv/gbuild/gbuild.mk
diff options
context:
space:
mode:
Diffstat (limited to 'solenv/gbuild/gbuild.mk')
-rw-r--r--solenv/gbuild/gbuild.mk409
1 files changed, 409 insertions, 0 deletions
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
new file mode 100644
index 0000000000..f14e9f1a1e
--- /dev/null
+++ b/solenv/gbuild/gbuild.mk
@@ -0,0 +1,409 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This file incorporates work covered by the following license notice:
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed
+# with this work for additional information regarding copyright
+# ownership. The ASF licenses this file to you under the Apache
+# License, Version 2.0 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.apache.org/licenses/LICENSE-2.0 .
+#
+
+GBUILDDIR:=$(SRCDIR)/solenv/gbuild
+
+# vars needed from the env/calling makefile
+
+# DEBUG
+# JAVA_HOME
+# LIBXML_CFLAGS
+# OS
+# SOLARINC
+# UPD
+
+# PTHREAD_CFLAGS (Linux)
+# SYSTEM_ICU (Linux)
+# SYSTEM_LIBJPEG (Linux)
+# SYSTEM_LIBXML (Linux)
+
+.DELETE_ON_ERROR:
+
+# do not use built-in rules
+# DO NOT TOUCH THIS LINE UNLESS YOU REALLY KNOW WHAT YOU ARE DOING
+# REMOVING THIS MAKES e.g. MODULE SW ALONE SLOWER BY SOME 300%
+# FOR TAIL_BUILD THE IMPACT IS HUGE!
+# (unless you are doing make -r, which we should explicitly NOT require from
+# users)
+MAKEFLAGS += r
+.SUFFIXES:
+
+true := T
+false :=
+gb_not = $(if $(1),$(false),$(true))
+
+define NEWLINE
+
+
+endef
+
+define WHITESPACE
+
+endef
+
+COMMA :=,
+
+OPEN_PAREN :=(
+CLOSE_PAREN :=)
+
+gb_SPACE:=$(gb_SPACE) $(gb_SPACE)
+
+gb_VERBOSE := $(verbose)
+
+include $(GBUILDDIR)/Helper.mk
+
+include $(GBUILDDIR)/Conditions.mk
+
+include $(SRCDIR)/solenv/inc/langlist.mk
+
+# optional extensions that should never be essential
+ifneq ($(wildcard $(GBUILDDIR)/extensions/pre_*.mk),)
+include $(wildcard $(GBUILDDIR)/extensions/pre_*.mk)
+endif
+
+include $(GBUILDDIR)/Output.mk
+
+gb_TIMELOG := 0
+ifneq ($(strip $(TIMELOG)$(timelog)),)
+gb_TIMELOG := 1
+endif
+
+ifneq ($(ENABLE_DBGUTIL),)
+gb_ENABLE_DBGUTIL := $(true)
+else
+gb_ENABLE_DBGUTIL := $(false)
+endif
+
+gb_ENABLE_SYMBOLS_FOR := $(ENABLE_SYMBOLS_FOR)
+
+# ENABLE_SYMBOLS (presumably from the command line)
+ifneq ($(strip $(ENABLE_SYMBOLS)),)
+gb_ENABLE_SYMBOLS_FOR := $(ENABLE_SYMBOLS)
+endif
+ifneq ($(strip $(enable_symbols)),)
+gb_ENABLE_SYMBOLS_FOR := $(enable_symbols)
+endif
+
+# note: ENABLE_BREAKPAD turns on symbols
+ifneq ($(strip $(ENABLE_BREAKPAD)),)
+gb_ENABLE_SYMBOLS_FOR := all
+endif
+
+gb_DEBUGLEVEL := 0
+ifneq ($(strip $(DEBUG)),)
+gb_DEBUGLEVEL := 1
+# make DEBUG=true should force -g
+ifeq ($(origin DEBUG),command line)
+gb_ENABLE_SYMBOLS_FOR := all
+endif
+endif
+ifneq ($(strip $(debug)),)
+gb_DEBUGLEVEL := 1
+ifeq ($(origin debug),command line)
+gb_ENABLE_SYMBOLS_FOR := all
+endif
+endif
+ifeq ($(gb_ENABLE_DBGUTIL),$(true))
+gb_DEBUGLEVEL := 1
+endif
+
+ifneq ($(strip $(DBGLEVEL)),)
+gb_DEBUGLEVEL := $(strip $(DBGLEVEL))
+ifeq ($(origin DBGLEVEL),command line)
+gb_ENABLE_SYMBOLS_FOR := all
+endif
+endif
+ifneq ($(strip $(dbglevel)),)
+gb_DEBUGLEVEL := $(strip $(dbglevel))
+ifeq ($(origin dbglevel),command line)
+gb_ENABLE_SYMBOLS_FOR := all
+endif
+endif
+
+# handle special cases
+ifeq ($(gb_ENABLE_SYMBOLS_FOR),1)
+gb_ENABLE_SYMBOLS_FOR := all
+endif
+ifeq ($(gb_ENABLE_SYMBOLS_FOR),0)
+gb_ENABLE_SYMBOLS_FOR :=
+endif
+ifeq ($(gb_ENABLE_SYMBOLS_FOR),yes)
+gb_ENABLE_SYMBOLS_FOR := all
+endif
+ifeq ($(gb_ENABLE_SYMBOLS_FOR),no)
+gb_ENABLE_SYMBOLS_FOR :=
+endif
+
+# Detect whether symbols should be enabled for the given gbuild target.
+# enable if: no "-TARGET" defined AND [module is enabled OR "TARGET" defined]
+gb_target_symbols_enabled = \
+ $(and $(if $(filter -$(1),$(ENABLE_SYMBOLS_FOR)),,$(true)),\
+ $(or $(gb_Module_CURRENTMODULE_SYMBOLS_ENABLED),\
+ $(filter $(1),$(ENABLE_SYMBOLS_FOR))))
+
+ifeq ($(BLOCK_PCH),)
+gb_ENABLE_PCH := $(ENABLE_PCH)
+else
+# Setting BLOCK_PCH effectively disables PCH, but the extra object file will be still linked in.
+# This is useful for rebuilding only some files with PCH disabled, e.g. to check #include's,
+# disabling the whole ENABLE_PCH would lead to unresolved symbols at link time.
+gb_ENABLE_PCH :=
+endif
+
+ifneq ($(nodep)$(ENABLE_PRINT_DEPS),)
+gb_FULLDEPS := $(false)
+else
+gb_FULLDEPS := $(true)
+endif
+
+ifneq ($(strip $(patches)$(PATCHES)),)
+gb_KEEP_PRISTINE := $(true)
+else
+gb_KEEP_PRISTINE := $(false)
+endif
+
+ifeq ($(findstring s,$(MAKEFLAGS)),)
+gb_QUIET_EXTERNAL := $(false)
+else
+gb_QUIET_EXTERNAL := $(true)
+endif
+
+# save user-supplied flags for latter use
+ifneq ($(strip $(ENVCFLAGS)),)
+gb__ENV_CFLAGS := $(ENVCFLAGS)
+endif
+ifneq ($(strip $(ENVCFLAGSCXX)),)
+gb__ENV_CXXFLAGS := $(ENVCFLAGSCXX)
+endif
+
+include $(GBUILDDIR)/ExternalExecutable.mk
+include $(GBUILDDIR)/TargetLocations.mk
+
+define gb_var2file
+$(file >$(1),$(2))$(1)
+endef
+
+$(eval $(call gb_Helper_init_registries))
+include $(SRCDIR)/Repository.mk
+include $(SRCDIR)/RepositoryExternal.mk
+$(eval $(call gb_Helper_collect_knownlibs))
+
+gb_Library_DLLPOSTFIX := lo
+gb_RUN_CONFIGURE :=
+
+gb_CONFIGURE_PLATFORMS := --build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM)
+
+# Include platform/cpu/compiler specific config/definitions
+
+include $(GBUILDDIR)/platform/$(OS)_$(CPUNAME)_$(COM).mk
+
+# this is optional
+include $(SRCDIR)/RepositoryFixes.mk
+
+# after platform; at least currently python depends on variable set in platform
+$(eval $(call gb_ExternalExecutable_collect_registrations))
+
+# add user-supplied flags
+ifneq ($(strip gb__ENV_CFLAGS),)
+gb_LinkTarget_CFLAGS += $(gb__ENV_CFLAGS)
+endif
+ifneq ($(strip gb__ENV_CXXFLAGS),)
+gb_LinkTarget_CXXFLAGS += $(gb__ENV_CXXFLAGS)
+endif
+
+gb_CPUDEFS += -D$(CPUNAME)
+
+gb_GLOBALDEFS := \
+ -D_REENTRANT \
+ -DOSL_DEBUG_LEVEL=$(gb_DEBUGLEVEL) \
+ $(gb_OSDEFS) \
+ $(gb_COMPILERDEFS) \
+ $(gb_CPUDEFS) \
+
+ifeq ($(gb_ENABLE_DBGUTIL),$(true))
+gb_GLOBALDEFS += -DDBG_UTIL
+
+ifneq ($(COM)-$(MSVC_USE_DEBUG_RUNTIME),MSC-)
+gb_GLOBALDEFS += -D_DEBUG
+endif
+endif
+
+ifeq ($(gb_TIMELOG),1)
+gb_GLOBALDEFS += -DTIMELOG \
+
+endif
+
+ifeq ($(strip $(ASSERT_ALWAYS_ABORT)),FALSE)
+gb_GLOBALDEFS += -DNDEBUG \
+
+endif
+
+ifeq ($(ENABLE_SAL_LOG),TRUE)
+gb_GLOBALDEFS += -DSAL_LOG_INFO \
+ -DSAL_LOG_WARN \
+
+endif
+
+ifneq ($(gb_DEBUGLEVEL),0)
+ifneq ($(gb_DEBUGLEVEL),1) # 2 or more
+gb_GLOBALDEFS += -DDEBUG \
+
+endif
+endif
+
+gb_GLOBALDEFS += \
+ $(call gb_Helper_define_if_set,\
+ DISABLE_DYNLOADING \
+ )
+
+gb_GLOBALDEFS := $(sort $(gb_GLOBALDEFS))
+
+# Common environment variables passed into all gb_*Test classes:
+# * Cap the number of threads unittests use:
+gb_TEST_ENV_VARS := MAX_CONCURRENCY=4
+# * Disable searching for certificates by default:
+#
+# see xmlsecurity/source/xmlsec/nss/nssinitializer.cxx for use
+#
+# a) If MOZILLA_CERTIFICATE_FOLDER is empty then LibreOffice autodetects
+# the user's mozilla-descended application profile. To disable that we
+# use a non-empty string here.
+#
+# b) Using dbm: appears to nss as equivalent to an empty path so the
+# initial NSS_InitReadWrite will fail. In response to that failure
+# LibreOffice will create a temp fallback cert database which is removed
+# on process exit
+gb_TEST_ENV_VARS += MOZILLA_CERTIFICATE_FOLDER=dbm:
+# Avoid hanging if the cups daemon requests a password:
+gb_TEST_ENV_VARS += SAL_DISABLE_SYNCHRONOUS_PRINTER_DETECTION=1
+ifeq (,$(SAL_USE_VCLPLUGIN))
+gb_TEST_ENV_VARS += SAL_USE_VCLPLUGIN=svp
+endif
+
+# This is used to detect whether LibreOffice is being built (as opposed to building
+# 3rd-party code). Used for tag deprecation for API we want to
+# ensure is not used at all externally while we clean
+# out our internal usage, for code in sal/ that should be used only internally, etc.
+gb_DEFS_INTERNAL := \
+ -DLIBO_INTERNAL_ONLY \
+
+include $(GBUILDDIR)/Deliver.mk
+
+$(eval $(call gb_Deliver_init))
+
+include $(GBUILDDIR)/Trace.mk
+
+# We are using a set of scopes that we might as well call classes.
+
+# TODO: to what extent is the following still true?
+# It is important to include them in the right order as that is
+# -- at least in part -- defining precedence. This is not an issue in the
+# WORKDIR as there are no naming collisions there, but INSTDIR is a mess
+# and precedence is important there. This is also platform dependent.
+#
+# This is less of an issue with GNU Make versions > 3.82 which matches for
+# shortest stem instead of first match. However, upon introduction this version
+# is not available everywhere by default.
+
+include $(foreach class, \
+ ComponentTarget \
+ Postprocess \
+ AllLangMoTarget \
+ WinResTarget \
+ LinkTarget \
+ Library \
+ StaticLibrary \
+ Executable \
+ SdiTarget \
+ Package \
+ ExternalPackage \
+ CustomTarget \
+ ExternalProject \
+ Gallery \
+ Pagein \
+ PrecompiledHeaders \
+ Pyuno \
+ PythonTest \
+ UITest \
+ Rdb \
+ CppunitTest \
+ Jar \
+ JavaClassSet \
+ JunitTest \
+ Module \
+ UIConfig \
+ UnoApiTarget \
+ UnoApi \
+ UnpackedTarball \
+ InternalUnoApi \
+ CliAssembly \
+ CliLibrary \
+ CliNativeLibrary \
+ CliUnoApi \
+ Zip \
+ AllLangPackage \
+ Configuration \
+ HelpTarget \
+ AllLangHelp \
+ Extension \
+ ExtensionPackage \
+ Dictionary \
+ InstallModuleTarget \
+ InstallModule \
+ InstallScript \
+ AutoInstall \
+ PackageSet \
+ GeneratedPackage \
+ CompilerTest \
+,$(GBUILDDIR)/$(class).mk)
+
+$(eval $(call gb_Helper_process_executable_registrations))
+$(eval $(call gb_Postprocess_make_targets))
+
+# optional extensions that should never be essential
+ifneq ($(wildcard $(GBUILDDIR)/extensions/post_*.mk),)
+include $(wildcard $(GBUILDDIR)/extensions/post_*.mk)
+endif
+
+define gb_Extensions_final_hook
+ifneq ($(wildcard $(GBUILDDIR)/extensions/final_*.mk),)
+include $(wildcard $(GBUILDDIR)/extensions/final_*.mk)
+endif
+
+endef
+
+# Setup for ccache.
+ifneq ($(gb_ENABLE_PCH),)
+# CCACHE_SLOPPINESS should contain pch_defines,time_macros for PCHs.
+gb_CCACHE_SLOPPINESS :=
+ifeq ($(shell test -z "$$CCACHE_SLOPPINESS" && echo 1),1)
+gb_CCACHE_SLOPPINESS := CCACHE_SLOPPINESS=pch_defines,time_macros
+else
+ifeq ($(shell echo "$$CCACHE_SLOPPINESS" | grep -q pch_defines | grep -q time_macros && echo 1),1)
+gb_CCACHE_SLOPPINESS := CCACHE_SLOPPINESS=$CCACHE_SLOPPINESS:pch_defines,time_macros
+endif
+endif
+gb_COMPILER_SETUP += $(gb_CCACHE_SLOPPINESS)
+endif
+
+ifneq ($(CCACHE_DEPEND_MODE),)
+gb_COMPILER_SETUP += CCACHE_DEPEND=1
+endif
+
+# vim: set noet sw=4: