diff options
author | Andras Timar <atimar@suse.com> | 2012-10-13 17:41:05 +0200 |
---|---|---|
committer | Andras Timar <atimar@suse.com> | 2012-10-13 17:41:05 +0200 |
commit | e5ce011c3f32f53ef073aec5485450b2588b656a (patch) | |
tree | 8a838a53bcdd70cc3d4cdbca0ebe07504790952e /solenv/gbuild | |
parent | Use isFuzzy() instead of getFuzzy() (diff) | |
parent | tubes: use new .ui format for contacts dialog (diff) | |
download | core-e5ce011c3f32f53ef073aec5485450b2588b656a.tar.gz core-e5ce011c3f32f53ef073aec5485450b2588b656a.zip |
Merge branch 'master' into feature/killsdf
Conflicts:
Makefile.top
Module_tail_build.mk
RepositoryExternal.mk
RepositoryFixes.mk
accessibility/source/standard/vclxaccessibletoolbox.cxx
basic/source/uno/dlgcont.cxx
connectivity/Library_ado.mk
cross_tail_build/prj/build.lst
desktop/source/offacc/acceptor.cxx
filter/Library_PptImporter.mk
filter/source/t602/filterenv.cxx
i18npool/Library_textconv_dict.mk
ooo.lst.in
saxon/ExternalProject_saxon.mk
saxon/build.xml
sc/sdi/scalc.sdi
sc/source/filter/xml/xmlstyli.cxx
sc/source/ui/condformat/condformatdlg.cxx
sc/source/ui/condformat/condformatmgr.cxx
sc/source/ui/view/cellsh1.cxx
sdext/source/pdfimport/misc/pwdinteract.cxx
shell/qa/zip/makefile.mk
shell/qa/zip/testimpl/makefile.mk
solenv/gbuild/CppunitTest.mk
solenv/gbuild/gbuild.mk
solenv/gbuild/platform/android.mk
solenv/gbuild/platform/com_GCC_defs.mk
solenv/gbuild/platform/macosx.mk
soltools/Executable_adjustvisibility.mk
soltools/Executable_checkdll.mk
soltools/Executable_cpp.mk
soltools/Executable_javadep.mk
soltools/Executable_makedepend.mk
sw/qa/extras/rtfimport/rtfimport.cxx
tail_build/prj/build.lst
tomcat/ExternalProject_tomcat.mk
ucb/source/ucp/webdav/webdavcontent.cxx
xml2cmp/Executable_xml2cmp.mk
Diffstat (limited to 'solenv/gbuild')
-rw-r--r-- | solenv/gbuild/CppunitTest.mk | 12 | ||||
-rw-r--r-- | solenv/gbuild/ExternalProject.mk | 74 | ||||
-rw-r--r-- | solenv/gbuild/InternalUnoApi.mk | 5 | ||||
-rw-r--r-- | solenv/gbuild/JavaClassSet.mk | 2 | ||||
-rw-r--r-- | solenv/gbuild/TargetLocations.mk | 18 | ||||
-rw-r--r-- | solenv/gbuild/UnoApiTarget.mk | 161 | ||||
-rw-r--r-- | solenv/gbuild/UnpackedTarball.mk | 2 | ||||
-rw-r--r-- | solenv/gbuild/gbuild.help.txt | 1 | ||||
-rw-r--r-- | solenv/gbuild/gbuild.mk | 8 | ||||
-rw-r--r-- | solenv/gbuild/platform/IOS_ARM_GCC.mk | 13 | ||||
-rw-r--r-- | solenv/gbuild/platform/WNT_INTEL_GCC.mk | 8 | ||||
-rw-r--r-- | solenv/gbuild/platform/WNT_INTEL_MSC.mk | 20 | ||||
-rw-r--r-- | solenv/gbuild/platform/android.mk | 66 | ||||
-rw-r--r-- | solenv/gbuild/platform/com_GCC_class.mk | 2 | ||||
-rw-r--r-- | solenv/gbuild/platform/com_GCC_defs.mk | 10 | ||||
-rw-r--r-- | solenv/gbuild/platform/macosx.mk | 22 | ||||
-rw-r--r-- | solenv/gbuild/platform/solaris.mk | 18 | ||||
-rw-r--r-- | solenv/gbuild/platform/unxgcc.mk | 17 | ||||
-rw-r--r-- | solenv/gbuild/tail_build_modules.mk | 4 |
19 files changed, 341 insertions, 122 deletions
diff --git a/solenv/gbuild/CppunitTest.mk b/solenv/gbuild/CppunitTest.mk index 5d0788aab372..f4145dc297bc 100644 --- a/solenv/gbuild/CppunitTest.mk +++ b/solenv/gbuild/CppunitTest.mk @@ -196,6 +196,16 @@ $(foreach rdb,$(2),$(call gb_CppunitTest__use_api,$(1),$(rdb))) endef +define gb_CppunitTest_use_udk_api +$(call gb_CppunitTest_use_api,$(1),udkapi) + +endef + +define gb_CppunitTest_use_sdk_api +$(call gb_CppunitTest_use_api,$(1),udkapi offapi) + +endef + define gb_CppunitTest_add_service_rdb $$(call gb_Output_error,\ gb_CppunitTest_add_service_rdb: use gb_CppunitTest_use_rdb instead.) @@ -345,8 +355,6 @@ $(eval $(foreach method,\ disable_standard_system_libs \ use_system_darwin_frameworks \ use_system_win32_libs \ - use_sdk_api \ - use_udk_api \ use_internal_api \ use_internal_bootstrap_api \ use_internal_comprehensive_api \ diff --git a/solenv/gbuild/ExternalProject.mk b/solenv/gbuild/ExternalProject.mk index d35d238316d8..ff504bb38200 100644 --- a/solenv/gbuild/ExternalProject.mk +++ b/solenv/gbuild/ExternalProject.mk @@ -103,10 +103,80 @@ $(foreach target,$(2),$(call gb_ExternalProject_register_target,$(1),$(target))) endef -# Make an external Project depend on another external project -define gb_ExternalProject_use_external +# Make an external Project depend on another ExternalProject +define gb_ExternalProject_use_external_project $(call gb_ExternalProject_get_preparation_target,$(1)) : $(call gb_ExternalProject_get_target,$(2)) endef +# Make an ExternalProject depend on an external +# +# this forwards to functions that must be defined in RepositoryExternal.mk. +# $(eval $(call gb_ExternalProject_use_external,library,external)) +define gb_ExternalProject_use_external +$(if $(filter undefined,$(origin gb_ExternalProject__use_$(2))),\ + $(error gb_ExternalProject_use_external: unknown external: $(2)),\ + $(call gb_ExternalProject__use_$(2),$(1))) +endef + +define gb_ExternalProject_use_externals +$(foreach external,$(2),$(call gb_ExternalProject_use_external,$(1),$(external))) +endef + +# Make an external project depend on a package +# +# This is most useful for depending on output files created by another +# ExternalProject. +# +# gb_ExternalProject_use_package external package +define gb_ExternalProject_use_package +$(call gb_ExternalProject_get_preparation_target,$(1)) : $(call gb_Package_get_target,$(2)) + +endef + +# Make an external project depend on several packages at once +# +# gb_ExternalProject_use_packages external package(s) +define gb_ExternalProject_use_packages +$(foreach package,$(2),$(call gb_ExternalProject_use_package,$(1),$(package))) + +endef + +# Make an external project depend on a StaticLibrary +# +# Realistically there are some externals that do not have a usable build +# system, and other externals that do may depend on those. +# +# gb_ExternalProject_use_static_libraries external staticlibraries +define gb_ExternalProject_use_static_libraries +ifneq (,$$(filter-out $(gb_StaticLibrary_KNOWNLIBS),$(2))) +$$(eval $$(call gb_Output_info, currently known static libraries are: $(sort $(gb_StaticLibrary_KNOWNLIBS)),ALL)) +$$(eval $$(call gb_Output_error,Cannot link against static library/libraries $$(filter-out $(gb_StaticLibrary_KNOWNLIBS),$(2)). Static libraries must be registered in Repository.mk)) +endif + +$(call gb_ExternalProject_get_preparation_target,$(1)) : \ + $(foreach lib,$(2),$(call gb_StaticLibrary_get_target,$(lib))) + +endef + +# Make an external project depend on a Library +# +# Realistically there are some externals that do not have a usable build +# system, and other externals that do may depend on those. +# +# gb_ExternalProject_use_libraries external libraries +define gb_ExternalProject_use_libraries +ifneq (,$$(filter-out $(gb_Library_KNOWNLIBS),$(2))) +$$(eval $$(call gb_Output_info,currently known libraries are: $(sort $(gb_Library_KNOWNLIBS)),ALL)) +$$(eval $$(call gb_Output_error,Cannot link against library/libraries $$(filter-out $(gb_Library_KNOWNLIBS),$(2)). Libraries must be registered in Repository.mk)) +endif +ifneq (,$$(filter $$(gb_MERGEDLIBS),$(2))) +$$(eval $$(call gb_Output_error,Cannot link against library/libraries $$(filter $$(gb_MERGEDLIBS),$(2)) because they are merged.)) +endif + +$(call gb_ExternalProject_get_preparation_target,$(1)) : \ + $(foreach lib,$(2),$(call gb_Library_get_target,$(lib))) + +endef + # vim: set noet sw=4 ts=4: diff --git a/solenv/gbuild/InternalUnoApi.mk b/solenv/gbuild/InternalUnoApi.mk index 8949323b9c12..587e62456620 100644 --- a/solenv/gbuild/InternalUnoApi.mk +++ b/solenv/gbuild/InternalUnoApi.mk @@ -117,11 +117,6 @@ $(foreach dep,$(3),$(call gb_InternalUnoApi_define_api_dependency,$(1),$(2),$(de endef -define gb_InternalUnoApi_set_xmlfile -$(call gb_UnoApiTarget_set_xmlfile,$(1)_out,$(2)) - -endef - define gb_InternalUnoApi_set_include $(call gb_UnoApiTarget_set_include,$(1)_out,$(2)) diff --git a/solenv/gbuild/JavaClassSet.mk b/solenv/gbuild/JavaClassSet.mk index 3f65099802f7..b5b743995e50 100644 --- a/solenv/gbuild/JavaClassSet.mk +++ b/solenv/gbuild/JavaClassSet.mk @@ -26,7 +26,7 @@ # #************************************************************************* -gb_JavaClassSet_JAVACCOMMAND := $(JAVACOMPILER) $(JAVAFLAGS) \ +gb_JavaClassSet_JAVACCOMMAND := $(ICECREAM_RUN) $(JAVACOMPILER) $(JAVAFLAGS) \ -source $(JAVA_SOURCE_VER) -target $(JAVA_TARGET_VER) gb_JavaClassSet_JAVACDEBUG := diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk index 90ff07926ce2..11ca2a01c632 100644 --- a/solenv/gbuild/TargetLocations.mk +++ b/solenv/gbuild/TargetLocations.mk @@ -163,12 +163,18 @@ gb_UITarget_get_target = $(WORKDIR)/UITarget/$(1).done gb_UnoApiTarget_get_external_headers_target = $(WORKDIR)/UnoApiTarget/$(1).external gb_UnoApiTarget_get_headers_target = $(WORKDIR)/UnoApiTarget/$(1).headers gb_UnoApiTarget_get_target = $(WORKDIR)/UnoApiTarget/$(1).rdb -gb_UnoApiHeadersTarget_get_bootstrap_dir = $(WORKDIR)/UnoApiHeadersTarget/$(1)/bootstrap$(2) -gb_UnoApiHeadersTarget_get_comprehensive_dir = $(WORKDIR)/UnoApiHeadersTarget/$(1)/comprehensive$(2) -gb_UnoApiHeadersTarget_get_dir = $(WORKDIR)/UnoApiHeadersTarget/$(1)/normal$(2) -gb_UnoApiHeadersTarget_get_bootstrap_target = $(WORKDIR)/UnoApiHeadersTarget/$(1)/bootstrap.done -gb_UnoApiHeadersTarget_get_comprehensive_target = $(WORKDIR)/UnoApiHeadersTarget/$(1)/comprehensive.done -gb_UnoApiHeadersTarget_get_target = $(WORKDIR)/UnoApiHeadersTarget/$(1)/normal.done +gb_UnoApiHeadersTarget_get_bootstrap_dir = $(WORKDIR)/UnoApiHeadersTarget/$(1)/$(call gb_UnoApiHeadersTarget_select_variant,$(1),bootstrap) +gb_UnoApiHeadersTarget_get_comprehensive_dir = $(WORKDIR)/UnoApiHeadersTarget/$(1)/$(call gb_UnoApiHeadersTarget_select_variant,$(1),comprehensive) +gb_UnoApiHeadersTarget_get_dir = $(WORKDIR)/UnoApiHeadersTarget/$(1)/$(call gb_UnoApiHeadersTarget_select_variant,$(1),normal) +gb_UnoApiHeadersTarget_get_real_bootstrap_dir = $(WORKDIR)/UnoApiHeadersTarget/$(1)/bootstrap +gb_UnoApiHeadersTarget_get_real_comprehensive_dir = $(WORKDIR)/UnoApiHeadersTarget/$(1)/comprehensive +gb_UnoApiHeadersTarget_get_real_dir = $(WORKDIR)/UnoApiHeadersTarget/$(1)/normal +gb_UnoApiHeadersTarget_get_real_bootstrap_target = $(WORKDIR)/UnoApiHeadersTarget/$(1)/bootstrap.done +gb_UnoApiHeadersTarget_get_real_comprehensive_target = $(WORKDIR)/UnoApiHeadersTarget/$(1)/comprehensive.done +gb_UnoApiHeadersTarget_get_real_target = $(WORKDIR)/UnoApiHeadersTarget/$(1)/normal.done +gb_UnoApiHeadersTarget_get_bootstrap_target = $(WORKDIR)/UnoApiHeadersTarget/$(1)/$(call gb_UnoApiHeadersTarget_select_variant,$(1),bootstrap).done +gb_UnoApiHeadersTarget_get_comprehensive_target = $(WORKDIR)/UnoApiHeadersTarget/$(1)/$(call gb_UnoApiHeadersTarget_select_variant,$(1),comprehensive).done +gb_UnoApiHeadersTarget_get_target = $(WORKDIR)/UnoApiHeadersTarget/$(1)/$(call gb_UnoApiHeadersTarget_select_variant,$(1),normal).done gb_UnoApiPartTarget_get_target = $(WORKDIR)/UnoApiPartTarget/$(1) gb_UnpackedTarball_get_dir = $(WORKDIR)/UnpackedTarball/$(1) gb_UnpackedTarball_get_pristine_dir = $(WORKDIR)/UnpackedTarball/$(1).org diff --git a/solenv/gbuild/UnoApiTarget.mk b/solenv/gbuild/UnoApiTarget.mk index fd7a0a333a59..98734ab34b75 100644 --- a/solenv/gbuild/UnoApiTarget.mk +++ b/solenv/gbuild/UnoApiTarget.mk @@ -82,46 +82,25 @@ endif # UnoApiTarget -gb_UnoApiTarget_RDBMAKERTARGET := $(call gb_Executable_get_target_for_build,rdbmaker) -gb_UnoApiTarget_RDBMAKERCOMMAND := $(gb_Helper_set_ld_path) SOLARBINDIR=$(OUTDIR_FOR_BUILD)/bin $(gb_UnoApiTarget_RDBMAKERTARGET) gb_UnoApiTarget_REGCOMPARETARGET := $(call gb_Executable_get_target_for_build,regcompare) gb_UnoApiTarget_REGCOMPARECOMMAND := $(gb_Helper_set_ld_path) SOLARBINDIR=$(OUTDIR_FOR_BUILD)/bin $(gb_UnoApiTarget_REGCOMPARETARGET) gb_UnoApiTarget_REGMERGETARGET := $(call gb_Executable_get_target_for_build,regmerge) gb_UnoApiTarget_REGMERGECOMMAND := $(gb_Helper_set_ld_path) SOLARBINDIR=$(OUTDIR_FOR_BUILD)/bin $(gb_UnoApiTarget_REGMERGETARGET) -gb_UnoApiTarget_XML2CMPTARGET := $(call gb_Executable_get_target_for_build,xml2cmp) -gb_UnoApiTarget_XML2CMPCOMMAND := $(gb_Helper_set_ld_path) $(gb_UnoApiTarget_XML2CMPTARGET) -gb_UnoApiTarget_XMLRDB := $(call gb_UnoApiTarget_get_target,types) - -define gb_UnoApiTarget__get_types -$(if $(1),$(foreach type,$(shell $(gb_UnoApiTarget_XML2CMPCOMMAND) -types stdout $(1)),$(addprefix -T,$(type)))) -endef +gb_UnoApiTarget_TYPESRDB := $(call gb_UnoApiTarget_get_target,types) define gb_UnoApiTarget__command_impl -RESPONSEFILE=$(call var2file,$(shell $(gb_MKTEMP)),500,$(2)) && \ -$(1) @$${RESPONSEFILE} && \ +RESPONSEFILE=$(call var2file,$(shell $(gb_MKTEMP)),500,$(1) $(2) $(3)) && \ +$(gb_UnoApiTarget_REGMERGECOMMAND) @$${RESPONSEFILE} && \ rm -f $${RESPONSEFILE} endef -define gb_UnoApiTarget__regmerge_command_impl -$(call gb_UnoApiTarget__command_impl,$(gb_UnoApiTarget_REGMERGECOMMAND),$(1) $(2) $(3)) -endef - -define gb_UnoApiTarget__rdbmaker_command_impl -$(call gb_UnoApiTarget__command_impl,$(gb_UnoApiTarget_RDBMAKERCOMMAND),-O$(1) -B$(2) -b$(3) $(4) $(5)) -endef - define gb_UnoApiTarget__command -$(call gb_Output_announce,$*,$(true),UNO,4) +$(call gb_Output_announce,$(2),$(true),UNO,4) mkdir -p $(dir $(1)) && \ -$(if $(UNOAPI_FILES),\ - $(call gb_UnoApiTarget__regmerge_command_impl,$(1),$(UNOAPI_ROOT),$(UNOAPI_FILES)),\ - $(if $(UNOAPI_MERGE),\ - $(call gb_UnoApiTarget__regmerge_command_impl,$(1),$(UNOAPI_ROOT),$(UNOAPI_MERGE)),\ - $(call gb_UnoApiTarget__rdbmaker_command_impl,$(1),UCR,$(UNOAPI_ROOT),\ - $(call gb_UnoApiTarget__get_types,$(UNOAPI_XML)),$(gb_UnoApiTarget_XMLRDB)))) \ +$(call gb_UnoApiTarget__command_impl,$(1),$(UNOAPI_ROOT),$(if $(UNOAPI_FILES),$(UNOAPI_FILES),$(UNOAPI_MERGE))) \ $(if $(UNOAPI_REFERENCE), \ - $(call gb_Output_announce,$*,$(true),DBc,3) \ + $(call gb_Output_announce,$(2),$(true),DBc,3) \ && $(gb_UnoApiTarget_REGCOMPARECOMMAND) \ -f -t \ -r1 $(UNOAPI_REFERENCE) \ @@ -129,11 +108,11 @@ $(if $(UNOAPI_REFERENCE), \ endef define gb_UnoApiTarget__check_mode -$(if $(or $(and $(1),$(2),$(3)),$(and $(1),$(2)),$(and $(2),$(3)),$(and $(1),$(3))),\ - $(error More than one mode of function of UnoApiTarget used: this is not supported),\ - $(if $(or $(1),$(2),$(3)),,\ - $(error Neither IDL files nor merged RDBs nor XML desc. were used: nothing will be produced))) -$(if $(4),,$(error No root has been set for the rdb file)) +$(if $(and $(UNOAPI_FILES),$(UNOAPI_MERGE)),\ + $(error Both IDL files and merged RDBs were used: this is not supported)) +$(if $(or $(UNOAPI_FILES),$(UNOAPI_MERGE)),,\ + $(error Neither IDL files nor merged RDBs were used: nothing will be produced)) +$(if $(UNOAPI_ROOT),,$(error No root has been set for the rdb file)) endef $(call gb_UnoApiTarget_get_external_headers_target,%) : @@ -143,7 +122,7 @@ $(call gb_UnoApiTarget_get_headers_target,%) : $(call gb_UnoApiTarget_get_extern mkdir -p $(dir $@) && touch $@ $(call gb_UnoApiTarget_get_target,%) : - $(call gb_UnoApiTarget__check_mode,$(UNOAPI_FILES),$(UNOAPI_MERGE),$(UNOAPI_XML),$(UNOAPI_ROOT)) + $(call gb_UnoApiTarget__check_mode) $(call gb_UnoApiTarget__command,$@,$*) .PHONY : $(call gb_UnoApiTarget_get_clean_target,%) @@ -180,7 +159,6 @@ define gb_UnoApiTarget_UnoApiTarget $(call gb_UnoApiTarget_get_target,$(1)) : INCLUDE := $(call gb_UnoApiTarget_get_target,$(1)) : UNOAPI_FILES := $(call gb_UnoApiTarget_get_target,$(1)) : UNOAPI_MERGE := -$(call gb_UnoApiTarget_get_target,$(1)) : UNOAPI_XML := $(call gb_UnoApiTarget_get_target,$(1)) : UNOAPI_REFERENCE := $(call gb_UnoApiTarget_get_target,$(1)) : UNOAPI_ROOT := @@ -253,16 +231,6 @@ $(call gb_UnoApiTarget_get_target,$(1)) : $(call gb_UnoApiTarget_get_target,$(2) endef -# Set XML component dependencies description. -define gb_UnoApiTarget_set_xmlfile -$(call gb_UnoApiTarget_get_target,$(1)) : UNOAPI_XML := $(SRCDIR)/$(2) -$(call gb_UnoApiTarget_get_target,$(1)) : $(SRCDIR)/$(2) -$(call gb_UnoApiTarget_get_target,$(1)) : $(gb_UnoApiTarget_XMLRDB) -$(call gb_UnoApiTarget_get_target,$(1)) : $(gb_UnoApiTarget_XML2CMPTARGET) -$(call gb_UnoApiTarget_get_target,$(1)) : $(gb_UnoApiTarget_RDBMAKERTARGET) - -endef - define gb_UnoApiTarget_add_reference_rdbfile $$(call gb_Output_error,gb_UnoApiTarget_add_reference_rdbfile: use gb_UnoApiTarget_set_reference_rdbfile instead.) endef @@ -285,6 +253,45 @@ endef # UnoApiHeadersTarget +# defined by platform +# gb_UnoApiHeadersTarget_select_variant + +# Allow to redefine header variant. +# +# On iOS we use static linking because dynamic loading of own code +# isn't allowed by the iOS App Store rules, and we want our code to be +# eventually distributable there as part of apps. +# +# To avoid problems that this causes together with the lovely +# intentional breaking of the One Definition Rule, for iOS we always +# generate comprehensive headers for certain type RDBS. (The ODR +# breakage doesn't harm, by accident or careful design, on platforms +# where shared libraries are used.) To avoid generating the same headers +# more than once, we are silently "redirecting" the target to point to +# comprehensive headers instead. +# +# Example: +# If gb_UnoApiHeadersTarget_select_variant is defined as +# +# ifeq ($(DISABLE_DYNLOADING),YES) +# gb_UnoApiHeadersTarget_select_variant = $(if $(filter udkapi,$(1)),comprehensive,$(2)) +# else +# gb_UnoApiHeadersTarget_select_variant = $(2) +# endif +# +# then, for the DISABLE_DYNLOADING case, whenever a makefile uses +# $(call gb_UnoApiHeadersTarget_get_target,udkapi) or $(call +# gb_UnoApiHeadersTarget_get_dir,udkapi), it will get target or dir for +# comprehensive headers instead. +# +# We are experimenting with static linking on Android, too. There for +# technical reasons to get around silly limitations in the OS, sigh. +# +# gb_UnoApiHeadersTarget_select_variant api default-variant +ifeq ($(origin gb_UnoApiHeadersTarget_select_variant),undefined) +$(eval $(call gb_Output_error,gb_UnoApiHeadersTarget_select_variant must be defined by platform)) +endif + gb_UnoApiHeadersTarget_CPPUMAKERTARGET := $(call gb_Executable_get_target_for_build,cppumaker) gb_UnoApiHeadersTarget_CPPUMAKERCOMMAND := $(gb_Helper_set_ld_path) SOLARBINDIR=$(OUTDIR_FOR_BUILD)/bin $(gb_UnoApiHeadersTarget_CPPUMAKERTARGET) @@ -300,52 +307,32 @@ define gb_UnoApiHeadersTarget__command endef -# On iOS we use static linking because dynamic loading of own code -# isn't allowed by the iOS App Store rules, and we want our code to be -# eventually distributable there as part of apps. - -# To avoid problems that this causes together with the lovely -# intentional breaking of the One Definition Rule, for iOS we always -# generate comprehensive headers for udkapi. (The ODR breakage doesn't -# harm, by accident or careful design, on platforms where shared -# libraries are used.) - -$(call gb_UnoApiHeadersTarget_get_bootstrap_target,%) : \ +$(call gb_UnoApiHeadersTarget_get_real_bootstrap_target,%) : \ $(gb_UnoApiHeadersTarget_CPPUMAKERTARGET) - $(if $(filter TRUEudkapi,$(DISABLE_DYNLOADING)$*), \ - $(call gb_Output_announce,$*,$(true),HPB,3) \ - $(call gb_UnoApiHeadersTarget__command,$@,$*,$(call gb_UnoApiHeadersTarget_get_bootstrap_dir,$*),-C), \ - \ - $(call gb_Output_announce,$*,$(true),HPB,3) \ - $(call gb_UnoApiHeadersTarget__command,$@,$*,$(call gb_UnoApiHeadersTarget_get_bootstrap_dir,$*)) \ - ) - -$(call gb_UnoApiHeadersTarget_get_comprehensive_target,%) : \ + $(call gb_Output_announce,$*,$(true),HPB,3) \ + $(call gb_UnoApiHeadersTarget__command,$@,$*,$(call gb_UnoApiHeadersTarget_get_bootstrap_dir,$*)) + +$(call gb_UnoApiHeadersTarget_get_real_comprehensive_target,%) : \ $(gb_UnoApiHeadersTarget_CPPUMAKERTARGET) $(call gb_Output_announce,$*,$(true),HPC,3) $(call gb_UnoApiHeadersTarget__command,$@,$*,$(call gb_UnoApiHeadersTarget_get_comprehensive_dir,$*),-C) -$(call gb_UnoApiHeadersTarget_get_target,%) : \ +$(call gb_UnoApiHeadersTarget_get_real_target,%) : \ $(gb_UnoApiHeadersTarget_CPPUMAKERTARGET) - $(if $(filter TRUEudkapi,$(DISABLE_DYNLOADING)$*), \ - $(call gb_Output_announce,$*,$(true),HPP,3) \ - $(call gb_UnoApiHeadersTarget__command,$@,$*,$(call gb_UnoApiHeadersTarget_get_dir,$*),-C), \ - \ - $(call gb_Output_announce,$*,$(true),HPP,3) \ - $(call gb_UnoApiHeadersTarget__command,$@,$*,$(call gb_UnoApiHeadersTarget_get_dir,$*),-L) \ - ) + $(call gb_Output_announce,$*,$(true),HPP,3) \ + $(call gb_UnoApiHeadersTarget__command,$@,$*,$(call gb_UnoApiHeadersTarget_get_dir,$*),-L) .PHONY : $(call gb_UnoApiHeadersTarget_get_clean_target,%) $(call gb_UnoApiHeadersTarget_get_clean_target,%) : $(call gb_Output_announce,$*,$(false),HPP,3) $(call gb_Helper_abbreviate_dirs,\ rm -rf \ - $(call gb_UnoApiHeadersTarget_get_dir,$*) \ - $(call gb_UnoApiHeadersTarget_get_bootstrap_dir,$*) \ - $(call gb_UnoApiHeadersTarget_get_comprehensive_dir,$*) \ - $(call gb_UnoApiHeadersTarget_get_target,$*) \ - $(call gb_UnoApiHeadersTarget_get_bootstrap_target,$*)) \ - $(call gb_UnoApiHeadersTarget_get_comprehensive_target,$*) + $(call gb_UnoApiHeadersTarget_get_real_dir,$*) \ + $(call gb_UnoApiHeadersTarget_get_real_bootstrap_dir,$*) \ + $(call gb_UnoApiHeadersTarget_get_real_comprehensive_dir,$*) \ + $(call gb_UnoApiHeadersTarget_get_real_target,$*) \ + $(call gb_UnoApiHeadersTarget_get_real_bootstrap_target,$*)) \ + $(call gb_UnoApiHeadersTarget_get_real_comprehensive_target,$*) define gb_UnoApiHeadersTarget_UnoApiHeadersTarget $(call gb_UnoApiHeadersTarget_get_target,$(1)) : $(call gb_UnoApiTarget_get_target,$(1)) @@ -360,29 +347,29 @@ $(call gb_UnoApiHeadersTarget_get_comprehensive_target,$(1)) : UNOAPI_DEPS := # need dummy recipes so that header files are delivered in Package_inc; # otherwise make will consider the header to be up-to-date because it was # actually built by the recipe for gb_UnoApiHeadersTarget_get_target -$(call gb_UnoApiHeadersTarget_get_dir,$(1),/%.hdl) : +$(call gb_UnoApiHeadersTarget_get_real_dir,$(1))/%.hdl : touch $$@ -$(call gb_UnoApiHeadersTarget_get_dir,$(1),/%.hpp) : +$(call gb_UnoApiHeadersTarget_get_real_dir,$(1))/%.hpp : touch $$@ -$(call gb_UnoApiHeadersTarget_get_bootstrap_dir,$(1),/%.hdl) : +$(call gb_UnoApiHeadersTarget_get_real_bootstrap_dir,$(1))/%.hdl : touch $$@ -$(call gb_UnoApiHeadersTarget_get_bootstrap_dir,$(1),/%.hpp) : +$(call gb_UnoApiHeadersTarget_get_real_bootstrap_dir,$(1))/%.hpp : touch $$@ -$(call gb_UnoApiHeadersTarget_get_comprehensive_dir,$(1),/%.hdl) : - touch $$@ +$(call gb_UnoApiHeadersTarget_get_real_comprehensive_dir,$(1))/%.hdl : + mkdir -p `dirname $$@` && touch $$@ -$(call gb_UnoApiHeadersTarget_get_comprehensive_dir,$(1),/%.hpp) : - touch $$@ +$(call gb_UnoApiHeadersTarget_get_real_comprehensive_dir,$(1))/%.hpp : + mkdir -p `dirname $$@` && touch $$@ endef # ensure that new urd triggers the dummy rule to rebuild the headers define gb_UnoApiHeadersTarget_add_headerfile -$(call gb_UnoApiHeadersTarget_get_dir,$(1),/$(3)) : \ +$(call gb_UnoApiHeadersTarget_get_dir,$(1))/$(3) : \ $(call gb_UnoApiPartTarget_get_target,$(basename $(2)).urd) endef diff --git a/solenv/gbuild/UnpackedTarball.mk b/solenv/gbuild/UnpackedTarball.mk index c96d4ced7cc2..73123622c2d4 100644 --- a/solenv/gbuild/UnpackedTarball.mk +++ b/solenv/gbuild/UnpackedTarball.mk @@ -100,7 +100,7 @@ endef # This is what dmake patches use. Once all external modules are # converted, it is better to be changed to 1. -gb_UnpackedTarball_PATCHLEVEL_DEFAULT := 3 +gb_UnpackedTarball_PATCHLEVEL_DEFAULT := 2 gb_UnpackedTarball_CONVERTTODOS = \ $(gb_AWK) 'sub("$$","\r")' $(1) > $(1).TEMP && mv $(1).TEMP $(1) diff --git a/solenv/gbuild/gbuild.help.txt b/solenv/gbuild/gbuild.help.txt index 3b15639bd326..b6707ebd8ff0 100644 --- a/solenv/gbuild/gbuild.help.txt +++ b/solenv/gbuild/gbuild.help.txt @@ -39,6 +39,7 @@ AVAILABLE TARGETS debugrun starts the dev-install instance and allows tests to be run against it <module> build the named module + <module>.check run unittests of the named module <module>.clean clean the named module <module>.all build the named module and the pre-requisite modules for it <module>.deliver for dmake modules only, deliver the named module diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk index a83bd305b2db..0f73a7422ed7 100644 --- a/solenv/gbuild/gbuild.mk +++ b/solenv/gbuild/gbuild.mk @@ -188,18 +188,18 @@ include $(SRCDIR)/RepositoryFixes.mk # RepositoryExternal.mk ? ifeq ($(SYSTEM_LIBXSLT_FOR_BUILD),YES) gb_XSLTPROCTARGET := -gb_XSLTPROC := xsltproc +gb_XSLTPROC := $(ICECREAM_RUN) xsltproc else gb_XSLTPROCTARGET := $(call gb_Executable_get_target_for_build,xsltproc) -gb_XSLTPROC := $(gb_Helper_set_ld_path) $(gb_XSLTPROCTARGET) +gb_XSLTPROC := $(gb_Helper_set_ld_path) $(ICECREAM_RUN) $(gb_XSLTPROCTARGET) endif ifeq ($(SYSTEM_LIBXML_FOR_BUILD),YES) gb_XMLLINTTARGET := -gb_XMLLINT := xsltproc +gb_XMLLINT := $(ICECREAM_RUN) xsltproc else gb_XMLLINTTARGET := $(call gb_Executable_get_target_for_build,xsltproc) -gb_XMLLINT := $(gb_Helper_set_ld_path) $(gb_XMLLINTTARGET) +gb_XMLLINT := $(gb_Helper_set_ld_path) $(ICECREAM_RUN) $(gb_XMLLINTTARGET) endif ifeq ($(SYSTEM_PYTHON),YES) diff --git a/solenv/gbuild/platform/IOS_ARM_GCC.mk b/solenv/gbuild/platform/IOS_ARM_GCC.mk index 21301fa95e84..c7d40d34bed9 100644 --- a/solenv/gbuild/platform/IOS_ARM_GCC.mk +++ b/solenv/gbuild/platform/IOS_ARM_GCC.mk @@ -79,6 +79,9 @@ gb_OBJCXXFLAGS := -x objective-c++ $(gb_OBJC_OBJCXX_COMMON_FLAGS) gb_OBJCFLAGS := -x objective-c $(gb_OBJC_OBJCXX_COMMON_FLAGS) +gb_COMPILERDEFS += \ + -DBOOST_DETAIL_NO_CONTAINER_FWD + gb_LinkTarget_LDFLAGS := \ $(subst -L../lib , ,$(SOLARLIB)) \ #man ld says: obsolete -Wl,-multiply_defined,suppress \ @@ -159,6 +162,7 @@ define gb_LinkTarget__command_dynamiclink $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \ $(foreach object,$(OBJCOBJECTS),$(call gb_ObjCObject_get_target,$(object))) \ $(foreach object,$(OBJCXXOBJECTS),$(call gb_ObjCxxObject_get_target,$(object))) \ + $(foreach object,$(ASMOBJECTS),$(call gb_AsmObject_get_target,$(object))) \ $(foreach object,$(GENCOBJECTS),$(call gb_GenCObject_get_target,$(object))) \ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \ $(foreach extraobjectlist,$(EXTRAOBJECTLISTS),`cat $(extraobjectlist)`) \ @@ -177,6 +181,7 @@ $(call gb_Helper_abbreviate_dirs,\ $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \ $(foreach object,$(OBJCOBJECTS),$(call gb_ObjCObject_get_target,$(object))) \ $(foreach object,$(OBJCXXOBJECTS),$(call gb_ObjCxxObject_get_target,$(object))) \ + $(foreach object,$(ASMOBJECTS),$(call gb_AsmObject_get_target,$(object))) \ $(foreach object,$(GENCOBJECTS),$(call gb_GenCObject_get_target,$(object))) \ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \ $(foreach extraobjectlist,$(EXTRAOBJECTLISTS),@$(extraobjectlist)) \ @@ -313,6 +318,14 @@ gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE gb_UnpackedTarget_TARFILE_LOCATION := $(TARFILE_LOCATION) +# UnoApiHeadersTarget class + +ifeq ($(DISABLE_DYNLOADING),TRUE) +gb_UnoApiHeadersTarget_select_variant = $(if $(filter udkapi,$(1)),comprehensive,$(2)) +else +gb_UnoApiHeadersTarget_select_variant = $(2) +endif + # Python gb_PYTHON_PRECOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR_FOR_BUILD)/lib diff --git a/solenv/gbuild/platform/WNT_INTEL_GCC.mk b/solenv/gbuild/platform/WNT_INTEL_GCC.mk index 427c622326ad..46f4e70d2462 100644 --- a/solenv/gbuild/platform/WNT_INTEL_GCC.mk +++ b/solenv/gbuild/platform/WNT_INTEL_GCC.mk @@ -420,6 +420,14 @@ gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/license.txt gb_UnpackedTarget_TARFILE_LOCATION := $(TARFILE_LOCATION) +# UnoApiHeadersTarget class + +ifeq ($(DISABLE_DYNLOADING),TRUE) +gb_UnoApiHeadersTarget_select_variant = $(if $(filter udkapi,$(1)),comprehensive,$(2)) +else +gb_UnoApiHeadersTarget_select_variant = $(2) +endif + # Python gb_PYTHON_PRECOMMAND := PATH="$${PATH}:$(OUTDIR_FOR_BUILD)/bin" PYTHONHOME="$(OUTDIR_FOR_BUILD)/lib/python" PYTHONPATH="$(OUTDIR_FOR_BUILD)/lib/python;$(OUTDIR_FOR_BUILD)/lib/python/lib-dynload" diff --git a/solenv/gbuild/platform/WNT_INTEL_MSC.mk b/solenv/gbuild/platform/WNT_INTEL_MSC.mk index a232b661eb93..151327eb0d5b 100644 --- a/solenv/gbuild/platform/WNT_INTEL_MSC.mk +++ b/solenv/gbuild/platform/WNT_INTEL_MSC.mk @@ -157,6 +157,7 @@ gb_CXXFLAGS := \ -wd4351 \ -wd4355 \ -wd4365 \ + -wd4435 \ -wd4503 \ -wd4505 \ -wd4511 \ @@ -340,6 +341,13 @@ gb_LinkTarget_INCLUDE_STL := $(filter %/stl, $(subst -I. , ,$(SOLARINC))) gb_LinkTarget_get_pdbfile = $(call gb_LinkTarget_get_target,)pdb/$(1).pdb +# avoid fatal error LNK1170 for Library_merged +define gb_LinkTarget_MergedResponseFile +cut -f -1000 -d ' ' $${RESPONSEFILE} > $${RESPONSEFILE}.1 && \ +cut -f 1001- -d ' ' $${RESPONSEFILE} >> $${RESPONSEFILE}.1 && \ +mv $${RESPONSEFILE}.1 $${RESPONSEFILE} && +endef + define gb_LinkTarget__command $(call gb_Output_announce,$(2),$(true),LNK,4) $(call gb_Helper_abbreviate_dirs,\ @@ -353,6 +361,7 @@ $(call gb_Helper_abbreviate_dirs,\ $(foreach object,$(ASMOBJECTS),$(call gb_AsmObject_get_target,$(object))) \ $(foreach extraobjectlist,$(EXTRAOBJECTLISTS),$(shell cat $(extraobjectlist))) \ $(NATIVERES)) && \ + $(if $(filter $(call gb_Library_get_linktargetname,merged),$(2)),$(call gb_LinkTarget_MergedResponseFile)) \ unset INCLUDE && \ $(if $(filter YES,$(LIBRARY_X64)), $(LINK_X64_BINARY), $(gb_LINK)) \ $(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \ @@ -360,7 +369,8 @@ $(call gb_Helper_abbreviate_dirs,\ $(if $(filter Executable,$(TARGETTYPE)),$(gb_Executable_TARGETTYPEFLAGS)) \ $(if $(filter YES,$(TARGETGUI)), -SUBSYSTEM:WINDOWS, -SUBSYSTEM:CONSOLE) \ $(if $(filter YES,$(LIBRARY_X64)), -MACHINE:X64, -MACHINE:IX86) \ - $(if $(filter YES,$(LIBRARY_X64)), -LIBPATH:$(OUTDIR)/lib/x64 -LIBPATH:$(COMPATH)/lib/amd64 -LIBPATH:$(WINDOWS_SDK_HOME)/lib/x64,) \ + $(if $(filter YES,$(LIBRARY_X64)), -LIBPATH:$(OUTDIR)/lib/x64 -LIBPATH:$(COMPATH)/lib/amd64 -LIBPATH:$(WINDOWS_SDK_HOME)/lib/x64 \ + $(if $(filter 80,$(WINDOWS_SDK_VERSION)),-LIBPATH:$(WINDOWS_SDK_HOME)/lib/win8/um/x64,),) \ $(T_LDFLAGS) \ @$${RESPONSEFILE} \ $(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib))) \ @@ -713,6 +723,14 @@ gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/license.txt gb_UnpackedTarget_TARFILE_LOCATION := $(shell cygpath -u $(TARFILE_LOCATION)) +# UnoApiHeadersTarget class + +ifeq ($(DISABLE_DYNLOADING),TRUE) +gb_UnoApiHeadersTarget_select_variant = $(if $(filter udkapi,$(1)),comprehensive,$(2)) +else +gb_UnoApiHeadersTarget_select_variant = $(2) +endif + # Python gb_PYTHON_PRECOMMAND := $(gb_Helper_set_ld_path) PYTHONHOME="$(OUTDIR_FOR_BUILD)/lib/python" PYTHONPATH="$(OUTDIR_FOR_BUILD)/lib/python;$(OUTDIR_FOR_BUILD)/lib/python/lib-dynload" diff --git a/solenv/gbuild/platform/android.mk b/solenv/gbuild/platform/android.mk index 58e7029f9851..4b8886470d8b 100644 --- a/solenv/gbuild/platform/android.mk +++ b/solenv/gbuild/platform/android.mk @@ -7,10 +7,22 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. # +ifeq ($(DISABLE_DYNLOADING),TRUE) +# Link with -lgnustl_static +gb_STDLIBS := \ + gnustl_static + +gb_Library_PLAINLIBS_NONE := \ + android \ + gnustl_static \ + +else # Link almost everything with -lgnustl_shared gb_STDLIBS := \ -lgnustl_shared \ +endif + # No unit testing can be run gb_CppunitTest_CPPTESTPRECOMMAND := : @@ -45,6 +57,28 @@ $(call gb_Helper_abbreviate_dirs,\ -o $(1)) endef +ifeq ($(DISABLE_DYNLOADING),TRUE) + +# Library class + +gb_Library_DEFS := +gb_Library_SYSPRE := lib +gb_Library_UNOVERPRE := $(gb_Library_SYSPRE)uno_ +gb_Library_PLAINEXT := .a +gb_Library_DLLEXT := .a +gb_Library_RTEXT := gcc3$(gb_Library_PLAINEXT) + +gb_Library_OOOEXT := $(gb_Library_DLLPOSTFIX)$(gb_Library_PLAINEXT) +gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT) + +gb_Library_PLAINLIBS_NONE += \ + jpeg \ + m \ + pthread \ + z \ + +endif + # Prefix UNO library filenames with "lib" gb_Library_FILENAMES := \ $(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_OOOEXT)) \ @@ -58,6 +92,38 @@ gb_Library_FILENAMES := \ $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(gb_Library_UNOVERPRE)$(lib)$(gb_Library_PLAINEXT)) \ +ifeq ($(DISABLE_DYNLOADING),TRUE) + +gb_Library_FILENAMES += \ + $(foreach lib,$(gb_Library_EXTENSIONLIBS),$(lib):$(lib)$(gb_Library_UNOEXT)) \ + +gb_Library_LAYER := \ + $(foreach lib,$(gb_Library_OOOLIBS),$(lib):OOO) \ + $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):OOO) \ + $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):OOO) \ + $(foreach lib,$(gb_Library_RTLIBS),$(lib):OOO) \ + $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):OOO) \ + $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):OOO) \ + $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):OOO) \ + $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):OOO) \ + $(foreach lib,$(gb_Library_EXTENSIONLIBS),$(lib):OXT) \ + +define gb_Library_Library_platform +$(call gb_LinkTarget_get_target,$(2)) : LAYER := $(call gb_Library_get_layer,$(1)) + +endef + +# CppunitTest class + +gb_CppunitTest_EXT := .a + +define gb_LinkTarget__command +$(call gb_Output_announce,$(2),$(true),LNK,4) +$(call gb_LinkTarget__command_staticlink,$(1)) +endef + +endif + # No DT_RPATH or DT_RUNPATH support in the Bionic dynamic linker so # don't bother generating such. diff --git a/solenv/gbuild/platform/com_GCC_class.mk b/solenv/gbuild/platform/com_GCC_class.mk index 630eed78c560..aa00267222f0 100644 --- a/solenv/gbuild/platform/com_GCC_class.mk +++ b/solenv/gbuild/platform/com_GCC_class.mk @@ -60,6 +60,7 @@ $(call gb_Helper_abbreviate_dirs,\ $(if $(filter Library,$(TARGETTYPE)),$(gb_Library_LTOFLAGS)) \ $(if $(VISIBILITY),,$(gb_VISIBILITY_FLAGS)) \ $(if $(WARNINGS_NOT_ERRORS),,$(gb_CFLAGS_WERROR)) \ + $(if $(COMPILER_PLUGINS),$(gb_COMPILER_PLUGINS)) \ $(T_CFLAGS) \ -c $(3) \ -o $(1) \ @@ -82,6 +83,7 @@ $(call gb_Helper_abbreviate_dirs,\ $(if $(filter Library,$(TARGETTYPE)),$(gb_Library_LTOFLAGS)) \ $(if $(VISIBILITY),,$(gb_VISIBILITY_FLAGS)) \ $(if $(WARNINGS_NOT_ERRORS),,$(gb_CXXFLAGS_WERROR)) \ + $(if $(COMPILER_PLUGINS),$(gb_COMPILER_PLUGINS)) \ $(T_CXXFLAGS) \ -c $(3) \ -o $(1) \ diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk index 0cc86e3c73d2..0cc32b52505b 100644 --- a/solenv/gbuild/platform/com_GCC_defs.mk +++ b/solenv/gbuild/platform/com_GCC_defs.mk @@ -81,6 +81,10 @@ gb_CXXFLAGS_COMMON := \ -fno-common \ -pipe \ +ifneq ($(HAVE_THREADSAFE_STATICS),TRUE) +gb_CXXFLAGS_COMMON += -fno-threadsafe-statics +endif + ifeq ($(HAVE_GCC_VISIBILITY_FEATURE),TRUE) gb_VISIBILITY_FLAGS := -DHAVE_GCC_VISIBILITY_FEATURE -fvisibility=hidden ifneq ($(HAVE_GCC_VISIBILITY_BROKEN),TRUE) @@ -149,6 +153,12 @@ gb_DEBUG_CXXFLAGS := $(FNO_DEFAULT_INLINE) gb_LinkTarget_INCLUDE := $(filter-out %/stl, $(subst -I. , ,$(SOLARINC))) gb_LinkTarget_INCLUDE_STL := $(filter %/stl, $(subst -I. , ,$(SOLARINC))) +ifeq ($(COM_GCC_IS_CLANG),TRUE) +gb_COMPILER_PLUGINS :=-Xclang -load -Xclang $(SRCDIR)/compilerplugins/obj/compileplugin.so -Xclang -add-plugin -Xclang loplugin +else +gb_COMPILER_PLUGINS := +endif + # Executable class gb_Executable_EXT_for_build := diff --git a/solenv/gbuild/platform/macosx.mk b/solenv/gbuild/platform/macosx.mk index 1aad554722ba..c013bf57ab96 100644 --- a/solenv/gbuild/platform/macosx.mk +++ b/solenv/gbuild/platform/macosx.mk @@ -87,10 +87,6 @@ ifeq ($(HAVE_GCC_NO_LONG_DOUBLE),TRUE) gb_CXXFLAGS += -Wno-long-double endif -ifneq ($(HAVE_THREADSAFE_STATICS),TRUE) -gb_CXXFLAGS += -fno-threadsafe-statics -endif - # these are to get g++ to switch to Objective-C++ mode # (see toolkit module for a case where it is necessary to do it this way) gb_OBJCXXFLAGS := -x objective-c++ -fobjc-exceptions @@ -212,10 +208,10 @@ $(call gb_Helper_abbreviate_dirs,\ $(foreach object,$(GENCOBJECTS),$(call gb_GenCObject_get_target,$(object))) \ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \ $(foreach extraobjectlist,$(EXTRAOBJECTLISTS),`cat $(extraobjectlist)`) \ - $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \ + `cat $${DYLIB_FILE}` \ $(LIBS) \ - -o $(if $(SOVERSION),$(1).$(SOVERSION),$(1)) \ - `cat $${DYLIB_FILE}` && \ + $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \ + -o $(if $(SOVERSION),$(1).$(SOVERSION),$(1)) && \ $(if $(SOVERSION),ln -sf $(notdir $(1)).$(SOVERSION) $(1),:) && \ $(if $(filter Executable,$(TARGETTYPE)), \ $(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl Executable \ @@ -413,6 +409,18 @@ gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE gb_UnpackedTarget_TARFILE_LOCATION := $(TARFILE_LOCATION) +# UnoApiHeadersTarget class + +# It seems that when using the latest Xcode and Clang for OS X, we +# also neeed to always generate comprehensive headers for +# udkapi. Otherwise we get assertion failures in saxparser when doing +# i18npool, at least. +ifneq ($(filter TRUE,$(COM_GCC_IS_CLANG) $(DISABLE_DYNLOADING)),) +gb_UnoApiHeadersTarget_select_variant = $(if $(filter udkapi,$(1)),comprehensive,$(2)) +else +gb_UnoApiHeadersTarget_select_variant = $(2) +endif + # Python gb_PYTHON_PRECOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR)/lib diff --git a/solenv/gbuild/platform/solaris.mk b/solenv/gbuild/platform/solaris.mk index 47c12d2c1292..2abac87c6b4c 100644 --- a/solenv/gbuild/platform/solaris.mk +++ b/solenv/gbuild/platform/solaris.mk @@ -301,12 +301,16 @@ gb_Executable_LAYER := \ $(foreach exe,$(gb_Executable_NONE),$(exe):NONE) \ -define gb_Executable_get_rpath -'-Wl,-rpath,$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Executable_get_layer,$(1)))' \ --L$(gb_Library_OUTDIRLOCATION) +define gb_Executable__get_rpath +$(strip $(if $(1),'-Wl$(COMMA)-rpath$(COMMA)$(1)') \ +-L$(gb_Library_OUTDIRLOCATION)) #JAD#-Wl,-rpath-link,$(gb_Library_OUTDIRLOCATION) endef +define gb_Executable_get_rpath +$(call gb_Executable__get_rpath,$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Executable_get_layer,$(1)))) +endef + define gb_Executable_Executable_platform $(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Executable_get_rpath,$(1)) @@ -396,6 +400,14 @@ gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE gb_UnpackedTarget_TARFILE_LOCATION := $(TARFILE_LOCATION) +# UnoApiHeadersTarget class + +ifeq ($(DISABLE_DYNLOADING),TRUE) +gb_UnoApiHeadersTarget_select_variant = $(if $(filter udkapi,$(1)),comprehensive,$(2)) +else +gb_UnoApiHeadersTarget_select_variant = $(2) +endif + # Python gb_PYTHON_PRECOMMAND := $(gb_Helper_set_ld_path) PYTHONHOME=$(OUTDIR)/lib/python PYTHONPATH=$(OUTDIR)/lib/python:$(OUTDIR)/lib/python/lib-dynload diff --git a/solenv/gbuild/platform/unxgcc.mk b/solenv/gbuild/platform/unxgcc.mk index d996bd46107d..2b0612080a3b 100644 --- a/solenv/gbuild/platform/unxgcc.mk +++ b/solenv/gbuild/platform/unxgcc.mk @@ -262,7 +262,7 @@ gb_Library_LAYER := \ $(foreach lib,$(gb_Library_EXTENSIONLIBS),$(lib):OXT) \ define gb_Library__get_rpath -$(if $(1),$(strip -Wl,-z,origin '-Wl,-rpath,$(1)' '-Wl,-rpath-link,$(gb_Library_OUTDIRLOCATION)')) +$(if $(1),$(strip -Wl,-z,origin '-Wl,-rpath,$(1)' -Wl,-rpath-link,$(gb_Library_OUTDIRLOCATION))) endef define gb_Library_get_rpath @@ -299,9 +299,12 @@ gb_Executable_LAYER := \ $(foreach exe,$(gb_Executable_NONE),$(exe):NONE) \ +define gb_Executable__get_rpath +$(strip -Wl,-z,origin $(if $(1),'-Wl$(COMMA)-rpath$(COMMA)$(1)') -Wl,-rpath-link,$(gb_Library_OUTDIRLOCATION)) +endef + define gb_Executable_get_rpath --Wl,-z,origin '-Wl,-rpath,$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Executable_get_layer,$(1)))' \ --Wl,-rpath-link,$(gb_Library_OUTDIRLOCATION) +$(call gb_Executable__get_rpath,$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Executable_get_layer,$(1)))) endef define gb_Executable_Executable_platform @@ -399,6 +402,14 @@ gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE gb_UnpackedTarget_TARFILE_LOCATION := $(TARFILE_LOCATION) +# UnoApiHeadersTarget class + +ifeq ($(DISABLE_DYNLOADING),TRUE) +gb_UnoApiHeadersTarget_select_variant = $(if $(filter udkapi,$(1)),comprehensive,$(2)) +else +gb_UnoApiHeadersTarget_select_variant = $(2) +endif + # Python gb_PYTHON_PRECOMMAND := $(gb_Helper_set_ld_path) PYTHONHOME=$(OUTDIR)/lib/python PYTHONPATH=$(OUTDIR)/lib/python:$(OUTDIR)/lib/python/lib-dynload diff --git a/solenv/gbuild/tail_build_modules.mk b/solenv/gbuild/tail_build_modules.mk index e5301f4d9728..2ce60fd6af1f 100644 --- a/solenv/gbuild/tail_build_modules.mk +++ b/solenv/gbuild/tail_build_modules.mk @@ -29,6 +29,10 @@ TAIL_BUILD_MODULES := gb_Module_Module := +define gb_Helper_optional +$(if $(filter $(1),$(BUILD_TYPE)),$(2)) +endef + define gb_Module_add_moduledirs TAIL_BUILD_MODULES += $(2) |