From 9275d91e0e61029bad82875485a620f254147a62 Mon Sep 17 00:00:00 2001 From: David Tardon Date: Sun, 4 Nov 2012 10:21:13 +0100 Subject: rework CLI support in gbuild I took a couple of "shortcuts" in the original approach which I thought harmless, but which proved otherwise later. This revised approach is more like I had wanted to do it but had been too lazy to really do :-) The differences from user's POV are: * several classes were renamed - CliLibrary -> CliAssembly - CliNativeLibrary -> CliLibrary * CliLibrary is now based on LinkTarget, so there is no need for an intermediate Library for it I also added a comment to all functions and an explanation of purpose to most classes. Change-Id: If3d1be3016d84c21a35093fc370c0bcf7995d1bd --- cli_ure/CliAssembly_cli_basetypes.mk | 35 ++++ cli_ure/CliAssembly_cli_ure.mk | 35 ++++ cli_ure/CliLibrary_cli_basetypes.mk | 35 ---- cli_ure/CliLibrary_cli_cppuhelper.mk | 48 +++++ cli_ure/CliLibrary_cli_ure.mk | 35 ---- cli_ure/CliNativeLibrary_cli_cppuhelper.mk | 27 --- cli_ure/Library_cli_cppuhelper_native.mk | 67 ------- cli_ure/Module_cli_ure.mk | 6 +- solenv/gbuild/CliAssembly.mk | 276 ++++++++++++++++------------- solenv/gbuild/CliAssemblyTarget.mk | 269 ++++++++++++++++++++++++++++ solenv/gbuild/CliLibrary.mk | 266 +++++++++++++++------------ solenv/gbuild/CliNativeLibrary.mk | 6 +- solenv/gbuild/CliUnoApi.mk | 61 +++++-- solenv/gbuild/TargetLocations.mk | 28 +-- solenv/gbuild/gbuild.mk | 2 +- solenv/gbuild/platform/IOS_ARM_GCC.mk | 25 ++- solenv/gbuild/platform/WNT_INTEL_GCC.mk | 25 ++- solenv/gbuild/platform/WNT_INTEL_MSC.mk | 111 ++++++++++-- solenv/gbuild/platform/macosx.mk | 25 ++- solenv/gbuild/platform/solaris.mk | 25 ++- solenv/gbuild/platform/unxgcc.mk | 25 ++- 21 files changed, 967 insertions(+), 465 deletions(-) create mode 100644 cli_ure/CliAssembly_cli_basetypes.mk create mode 100644 cli_ure/CliAssembly_cli_ure.mk delete mode 100644 cli_ure/CliLibrary_cli_basetypes.mk create mode 100644 cli_ure/CliLibrary_cli_cppuhelper.mk delete mode 100644 cli_ure/CliLibrary_cli_ure.mk delete mode 100644 cli_ure/CliNativeLibrary_cli_cppuhelper.mk delete mode 100644 cli_ure/Library_cli_cppuhelper_native.mk create mode 100644 solenv/gbuild/CliAssemblyTarget.mk diff --git a/cli_ure/CliAssembly_cli_basetypes.mk b/cli_ure/CliAssembly_cli_basetypes.mk new file mode 100644 index 000000000000..9337870db6a0 --- /dev/null +++ b/cli_ure/CliAssembly_cli_basetypes.mk @@ -0,0 +1,35 @@ +# -*- 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/. +# + +include $(SRCDIR)/cli_ure/version/version.txt + +$(eval $(call gb_CliAssembly_CliAssembly,cli_basetypes)) + +$(eval $(call gb_CliAssembly_set_configfile,cli_basetypes,cli_ure/source/basetypes/cli_basetypes_config)) + +$(eval $(call gb_CliAssembly_set_keyfile,cli_basetypes,$(SRCDIR)/cli_ure/source/cliuno.snk)) + +$(eval $(call gb_CliAssembly_set_policy,cli_basetypes,$(CLI_BASETYPES_POLICY_ASSEMBLY),$(CLI_BASETYPES_POLICY_VERSION))) + +$(eval $(call gb_CliAssembly_add_csfiles,cli_basetypes,\ + cli_ure/source/basetypes/uno/Any \ + cli_ure/source/basetypes/uno/BoundAttribute \ + cli_ure/source/basetypes/uno/ExceptionAttribute \ + cli_ure/source/basetypes/uno/OnewayAttribute \ + cli_ure/source/basetypes/uno/ParameterizedTypeAttribute \ + cli_ure/source/basetypes/uno/PolymorphicType \ + cli_ure/source/basetypes/uno/TypeArgumentsAttribute \ + cli_ure/source/basetypes/uno/TypeParametersAttribute \ +)) + +$(eval $(call gb_CliAssembly_add_generated_csfiles,cli_basetypes,\ + CustomTarget/cli_ure/source/basetypes/assembly \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/cli_ure/CliAssembly_cli_ure.mk b/cli_ure/CliAssembly_cli_ure.mk new file mode 100644 index 000000000000..973d29c683fa --- /dev/null +++ b/cli_ure/CliAssembly_cli_ure.mk @@ -0,0 +1,35 @@ +# -*- 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/. +# + +include $(SRCDIR)/cli_ure/version/version.txt + +$(eval $(call gb_CliAssembly_CliAssembly,cli_ure)) + +$(eval $(call gb_CliAssembly_set_configfile,cli_ure,cli_ure/source/ure/cli_ure_config)) + +$(eval $(call gb_CliAssembly_set_keyfile,cli_ure,$(SRCDIR)/cli_ure/source/cliuno.snk)) + +$(eval $(call gb_CliAssembly_set_policy,cli_ure,$(CLI_URE_POLICY_ASSEMBLY),$(CLI_URE_POLICY_VERSION))) + +$(eval $(call gb_CliAssembly_use_assemblies,cli_ure,\ + cli_uretypes \ +)) + +$(eval $(call gb_CliAssembly_add_csfiles,cli_ure,\ + cli_ure/source/ure/uno/util/DisposeGuard \ + cli_ure/source/ure/uno/util/WeakAdapter \ + cli_ure/source/ure/uno/util/WeakBase \ + cli_ure/source/ure/uno/util/WeakComponentBase \ +)) + +$(eval $(call gb_CliAssembly_add_generated_csfiles,cli_ure,\ + CustomTarget/cli_ure/source/ure/assembly \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/cli_ure/CliLibrary_cli_basetypes.mk b/cli_ure/CliLibrary_cli_basetypes.mk deleted file mode 100644 index 2d7b93737823..000000000000 --- a/cli_ure/CliLibrary_cli_basetypes.mk +++ /dev/null @@ -1,35 +0,0 @@ -# -*- 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/. -# - -include $(SRCDIR)/cli_ure/version/version.txt - -$(eval $(call gb_CliLibrary_CliLibrary,cli_basetypes)) - -$(eval $(call gb_CliLibrary_set_configfile,cli_basetypes,cli_ure/source/basetypes/cli_basetypes_config)) - -$(eval $(call gb_CliLibrary_set_keyfile,cli_basetypes,$(SRCDIR)/cli_ure/source/cliuno.snk)) - -$(eval $(call gb_CliLibrary_set_policy,cli_basetypes,$(CLI_BASETYPES_POLICY_ASSEMBLY),$(CLI_BASETYPES_POLICY_VERSION))) - -$(eval $(call gb_CliLibrary_add_csfiles,cli_basetypes,\ - cli_ure/source/basetypes/uno/Any \ - cli_ure/source/basetypes/uno/BoundAttribute \ - cli_ure/source/basetypes/uno/ExceptionAttribute \ - cli_ure/source/basetypes/uno/OnewayAttribute \ - cli_ure/source/basetypes/uno/ParameterizedTypeAttribute \ - cli_ure/source/basetypes/uno/PolymorphicType \ - cli_ure/source/basetypes/uno/TypeArgumentsAttribute \ - cli_ure/source/basetypes/uno/TypeParametersAttribute \ -)) - -$(eval $(call gb_CliLibrary_add_generated_csfiles,cli_basetypes,\ - CustomTarget/cli_ure/source/basetypes/assembly \ -)) - -# vim: set noet sw=4 ts=4: diff --git a/cli_ure/CliLibrary_cli_cppuhelper.mk b/cli_ure/CliLibrary_cli_cppuhelper.mk new file mode 100644 index 000000000000..55c024745156 --- /dev/null +++ b/cli_ure/CliLibrary_cli_cppuhelper.mk @@ -0,0 +1,48 @@ +# -*- 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/. +# + +include $(SRCDIR)/cli_ure/version/version.txt + +$(eval $(call gb_CliLibrary_CliLibrary,cli_cppuhelper)) + +$(eval $(call gb_CliLibrary_set_configfile,cli_cppuhelper,cli_ure/source/native/cli_cppuhelper_config)) + +$(eval $(call gb_CliLibrary_set_keyfile,cli_cppuhelper,$(SRCDIR)/cli_ure/source/cliuno.snk)) + +$(eval $(call gb_CliLibrary_set_policy,cli_cppuhelper,$(CLI_CPPUHELPER_POLICY_ASSEMBLY),$(CLI_CPPUHELPER_POLICY_VERSION))) + +$(eval $(call gb_CliLibrary_use_assemblies,cli_cppuhelper,\ + cli_ure \ + cli_uretypes \ +)) + +$(eval $(call gb_CliLibrary_use_packages,cli_cppuhelper,\ + cli_ure_cliuno \ +)) + +$(eval $(call gb_CliLibrary_use_internal_bootstrap_api,cli_cppuhelper,\ + udkapi \ +)) + +$(eval $(call gb_CliLibrary_use_api_libraries,cli_cppuhelper,\ + cppu \ + cppuhelper \ + sal \ +)) + +$(eval $(call gb_CliLibrary_add_exception_objects,cli_cppuhelper,\ + cli_ure/source/native/native_bootstrap \ + cli_ure/source/native/path \ +)) + +$(eval $(call gb_CliLibrary_add_generated_exception_objects,cli_cppuhelper,\ + CustomTarget/cli_ure/source/native/assembly \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/cli_ure/CliLibrary_cli_ure.mk b/cli_ure/CliLibrary_cli_ure.mk deleted file mode 100644 index c169d3c22829..000000000000 --- a/cli_ure/CliLibrary_cli_ure.mk +++ /dev/null @@ -1,35 +0,0 @@ -# -*- 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/. -# - -include $(SRCDIR)/cli_ure/version/version.txt - -$(eval $(call gb_CliLibrary_CliLibrary,cli_ure)) - -$(eval $(call gb_CliLibrary_set_configfile,cli_ure,cli_ure/source/ure/cli_ure_config)) - -$(eval $(call gb_CliLibrary_set_keyfile,cli_ure,$(SRCDIR)/cli_ure/source/cliuno.snk)) - -$(eval $(call gb_CliLibrary_set_policy,cli_ure,$(CLI_URE_POLICY_ASSEMBLY),$(CLI_URE_POLICY_VERSION))) - -$(eval $(call gb_CliLibrary_use_assemblies,cli_ure,\ - cli_uretypes \ -)) - -$(eval $(call gb_CliLibrary_add_csfiles,cli_ure,\ - cli_ure/source/ure/uno/util/DisposeGuard \ - cli_ure/source/ure/uno/util/WeakAdapter \ - cli_ure/source/ure/uno/util/WeakBase \ - cli_ure/source/ure/uno/util/WeakComponentBase \ -)) - -$(eval $(call gb_CliLibrary_add_generated_csfiles,cli_ure,\ - CustomTarget/cli_ure/source/ure/assembly \ -)) - -# vim: set noet sw=4 ts=4: diff --git a/cli_ure/CliNativeLibrary_cli_cppuhelper.mk b/cli_ure/CliNativeLibrary_cli_cppuhelper.mk deleted file mode 100644 index dfc52baf33ce..000000000000 --- a/cli_ure/CliNativeLibrary_cli_cppuhelper.mk +++ /dev/null @@ -1,27 +0,0 @@ -# -*- 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/. -# - -include $(SRCDIR)/cli_ure/version/version.txt - -$(eval $(call gb_CliNativeLibrary_CliNativeLibrary,cli_cppuhelper)) - -$(eval $(call gb_CliNativeLibrary_wrap_library,cli_cppuhelper,cli_cppuhelper_native)) - -$(eval $(call gb_CliNativeLibrary_set_configfile,cli_cppuhelper,cli_ure/source/native/cli_cppuhelper_config)) - -$(eval $(call gb_CliNativeLibrary_set_keyfile,cli_cppuhelper,$(SRCDIR)/cli_ure/source/cliuno.snk)) - -$(eval $(call gb_CliNativeLibrary_set_policy,cli_cppuhelper,$(CLI_CPPUHELPER_POLICY_ASSEMBLY),$(CLI_CPPUHELPER_POLICY_VERSION))) - -$(eval $(call gb_CliNativeLibrary_use_assemblies,cli_cppuhelper,\ - cli_ure \ - cli_uretypes \ -)) - -# vim: set noet sw=4 ts=4: diff --git a/cli_ure/Library_cli_cppuhelper_native.mk b/cli_ure/Library_cli_cppuhelper_native.mk deleted file mode 100644 index 72ddeb1fc593..000000000000 --- a/cli_ure/Library_cli_cppuhelper_native.mk +++ /dev/null @@ -1,67 +0,0 @@ -# -*- 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/. -# - -include $(SRCDIR)/cli_ure/version/version.txt - -$(eval $(call gb_Library_Assembly,cli_cppuhelper_native)) - -# When compiling for CLR, disable "warning C4339: use of undefined type detected -# in CLR meta-data - use of this type may lead to a runtime exception": -$(eval $(call gb_Library_add_cxxflags,cli_cppuhelper_native,\ - -AI $(gb_Helper_OUTDIRLIBDIR) \ - -clr \ - -wd4339 \ -)) - -$(eval $(call gb_Library_add_ldflags,cli_cppuhelper_native,\ - -ignore:4248 \ - -keyfile:$(call gb_Helper_windows_path,$(SRCDIR)/cli_ure/source/cliuno.snk) \ -)) - -# TODO do not encode filenames here -$(eval $(call gb_Library_add_ldflags,cli_cppuhelper_native,\ - -delayload:cppuhelper3MSC.dll \ - -delayload:cppu3.dll \ - -delayload:sal3.dll \ -)) - -$(eval $(call gb_Library_use_internal_bootstrap_api,cli_cppuhelper_native,\ - udkapi \ -)) - -$(eval $(call gb_Library_use_packages,cli_cppuhelper_native,\ - cli_ure_cliuno \ -)) - -$(eval $(call gb_Library_use_libraries,cli_cppuhelper_native,\ - cppu \ - cppuhelper \ - sal \ -)) - -$(eval $(call gb_Library_use_system_win32_libs,cli_cppuhelper_native,\ - advapi32 \ - delayimp \ - mscoree \ - $(if $(USE_DEBUG_RUNTIME)\ - ,msvcmrtd \ - ,msvcmrt \ - ) \ -)) - -$(eval $(call gb_Library_add_exception_objects,cli_cppuhelper_native,\ - cli_ure/source/native/native_bootstrap \ - cli_ure/source/native/path \ -)) - -$(eval $(call gb_Library_add_generated_exception_objects,cli_cppuhelper_native,\ - CustomTarget/cli_ure/source/native/assembly \ -)) - -# vim: set noet sw=4 ts=4: diff --git a/cli_ure/Module_cli_ure.mk b/cli_ure/Module_cli_ure.mk index 64f9bb916bd2..d8d81ee94898 100644 --- a/cli_ure/Module_cli_ure.mk +++ b/cli_ure/Module_cli_ure.mk @@ -15,9 +15,9 @@ $(eval $(call gb_Module_add_targets,cli_ure,\ ifeq ($(COM),MSC) $(eval $(call gb_Module_add_targets,cli_ure,\ - CliLibrary_cli_basetypes \ - CliLibrary_cli_ure \ - CliNativeLibrary_cli_cppuhelper \ + CliAssembly_cli_basetypes \ + CliAssembly_cli_ure \ + CliLibrary_cli_cppuhelper \ CliUnoApi_cli_uretypes \ CustomTarget_cli_ure_assemblies \ Executable_climaker \ diff --git a/solenv/gbuild/CliAssembly.mk b/solenv/gbuild/CliAssembly.mk index f8c6fdb8a729..ab59a5f62139 100644 --- a/solenv/gbuild/CliAssembly.mk +++ b/solenv/gbuild/CliAssembly.mk @@ -7,194 +7,232 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. # -# CliConfigTarget class +# CliCSharpTarget class -gb_CliConfigTarget_TARGET := $(SOLARENV)/bin/clipatchconfig.pl -gb_CliConfigTarget_COMMAND := $(PERL) -w $(gb_CliConfigTarget_TARGET) +# platform defined +# gb_CliCSharpTarget__command -gb_CliConfigTarget_VERSIONFILE_DEFAULT := $(SRCDIR)/cli_ure/version/version.txt +gb_CliCSharpTarget__get_source = $(SRCDIR)/$(1).cs +gb_CliCSharpTarget__get_generated_source = $(WORKDIR)/$(1).cs -define gb_CliConfigTarget__command -$(call gb_Output_announce,$(2),$(true),CPA,1) -$(call gb_Helper_abbreviate_dirs,\ - $(gb_CliConfigTarget_COMMAND) $(3) $(CLI_CONFIG_VERSIONFILE) $(1) \ -) -endef +$(dir $(call gb_CliCSharpTarget_get_target,%)).dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) -$(dir $(call gb_CliConfigTarget_get_target,%))%/.dir : +$(dir $(call gb_CliCSharpTarget_get_target,%))%/.dir : $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) -$(call gb_CliConfigTarget_get_target,%) : - $(call gb_CliConfigTarget__command,$@,$*,$<) +$(call gb_CliCSharpTarget_get_target,%) : + $(call gb_CliCSharpTarget__command,$@,$*,$<,$?,$^) -$(call gb_CliConfigTarget_get_clean_target,%) : - $(call gb_Output_announce,$*,$(false),CPA,1) - rm -f $(call gb_CliConfigTarget_get_target,$*) +.PHONY : $(call gb_CliCSharpTarget_get_clean_target,%) +$(call gb_CliCSharpTarget_get_clean_target,%) : + $(call gb_Output_announce,$*,$(false),CSC,3) + $(call gb_Helper_abbreviate_dirs,\ + rm -f $(call gb_CliCSharpTarget_get_target,$*) \ + ) -# Subst. variables in a config file +# Compile one or more C# source files. # -# gb_CliConfigTarget_CliConfigTarget target source -define gb_CliConfigTarget_CliConfigTarget -$(call gb_CliConfigTarget_get_target,$(1)) : CLI_CONFIG_VERSIONFILE := $(gb_CliConfigTarget_VERSIONFILE_DEFAULT) +# gb_CliCSharpTarget_CliCSharpTarget assembly +define gb_CliCSharpTarget_CliCSharpTarget +$(call gb_CliCSharpTarget_get_target,$(1)) : CLI_ASSEMBLIES := +$(call gb_CliCSharpTarget_get_target,$(1)) : CLI_SOURCES := +$(call gb_CliCSharpTarget_get_target,$(1)) : CLI_CSCFLAGS := +$(call gb_CliCSharpTarget_get_target,$(1)) : CLI_KEYFILE := -$(call gb_CliConfigTarget_get_target,$(1)) : $(2) -$(call gb_CliConfigTarget_get_target,$(1)) : $(gb_CliConfigTarget_TARGET) -$(call gb_CliConfigTarget_get_target,$(1)) : $(gb_CliConfigTarget_VERSIONFILE_DEFAULT) -$(call gb_CliConfigTarget_get_target,$(1)) :| $(dir $(call gb_CliConfigTarget_get_target,$(1))).dir +$(call gb_CliCSharpTarget_get_target,$(1)) :| $(dir $(call gb_CliCSharpTarget_get_target,$(1))).dir endef -# CliAssemblyTarget class - -# platform: -# CliAssemblyTarget_POLICYEXT -# CliAssemblyTarget_get_dll - -gb_CliAssemblyTarget_KEYFILE_DEFAULT := $(SRCDIR)/cli_ure/source/cliuno.snk +# Use another assembly for compilation. +# +# gb_CliCSharpTarget_use_assembly assembly dep +define gb_CliCSharpTarget_use_assembly +$(call gb_CliCSharpTarget_get_target,$(1)) : CLI_ASSEMBLIES += $(call gb_CliAssemblyTarget_get_dll,$(2)) +$(call gb_CliCSharpTarget_get_target,$(1)) : $(call gb_CliAssemblyTarget_get_target,$(2)) -define gb_CliAssemblyTarget__command -$(call gb_Output_announce,$(2),$(true),AL ,2) -$(call gb_Helper_abbreviate_dirs,\ - al \ - -nologo \ - -out:$(CLI_ASSEMBLY_OUTFILE) \ - -version:$(CLI_ASSEMBLY_VERSION) \ - -keyfile:$(call gb_Helper_windows_path,$(CLI_ASSEMBLY_KEYFILE)) \ - -link:$(CLI_ASSEMBLY_CONFIGFILE) \ - $(if $(CLI_ASSEMBLY_PLATFORM),-platform:$(CLI_ASSEMBLY_PLATFORM)) && \ - touch $(1) \ -) endef -$(dir $(call gb_CliAssemblyTarget_get_target,%)).dir : - $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) - -$(dir $(call gb_CliAssemblyTarget_get_target,%))%/.dir : - $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) - -$(call gb_CliAssemblyTarget_get_target,%) : - $(if $(strip $(CLI_ASSEMBLY_VERSION)),,$(call gb_Output_error,assembly version not set)) - $(if $(strip $(CLI_ASSEMBLY_CONFIGFILE)),,$(call gb_Output_error,assembly configuration file not set)) - $(if $(strip $(CLI_ASSEMBLY_OUTFILE)),,$(call gb_Output_error,assembly name not set)) - $(call gb_CliAssemblyTarget__command,$@,$*,$<) - -$(call gb_CliAssemblyTarget_get_assembly_target,%) : - touch $@ - -.PHONY : $(call gb_CliAssemblyTarget_get_clean_target,%) -$(call gb_CliAssemblyTarget_get_clean_target,%) : - $(call gb_Output_announce,$*,$(false),AL ,2) - $(call gb_Helper_abbreviate_dirs,\ - rm -f $(call gb_CliAssemblyTarget_get_target,$*) $(CLI_ASSEMBLY_OUTFILE) \ - ) - -# Create a CLI assembly -define gb_CliAssemblyTarget_CliAssemblyTarget -$(call gb_CliAssemblyTarget_get_target,$(1)) : CLI_ASSEMBLY_CONFIGFILE := -$(call gb_CliAssemblyTarget_get_target,$(1)) : CLI_ASSEMBLY_KEYFILE := $(gb_CliAssemblyTarget_KEYFILE_DEFAULT) -$(call gb_CliAssemblyTarget_get_target,$(1)) : CLI_ASSEMBLY_OUTFILE := -$(call gb_CliAssemblyTarget_get_target,$(1)) : CLI_ASSEMBLY_PLATFORM := -$(call gb_CliAssemblyTarget_get_target,$(1)) : CLI_ASSEMBLY_VERSION := - -$(call gb_CliAssemblyTarget_get_clean_target,$(1)) : CLI_ASSEMBLY_OUTFILE := - -$(call gb_CliAssemblyTarget_get_target,$(1)) :| $(dir $(call gb_CliAssemblyTarget_get_target,$(1))).dir +# Use other assemblies for compilation. +# +# gb_CliCSharpTarget_use_assembly assembly dep(s) +define gb_CliCSharpTarget_use_assemblies +$(foreach assembly,$(2),$(call gb_CliCSharpTarget_use_assembly,$(1),$(assembly))) endef -define gb_CliAssemblyTarget_set_configfile -$(call gb_CliAssemblyTarget_get_target,$(1)) : CLI_ASSEMBLY_CONFIGFILE := $(2) -$(call gb_CliAssemblyTarget_get_target,$(1)) : $(2) +# Add a source file to compile. +# +# gb_CliCSharpTarget_add_csfile assembly csfile +define gb_CliCSharpTarget_add_csfile +$(call gb_CliCSharpTarget_get_target,$(1)) : CLI_SOURCES += $(call gb_CliCSharpTarget__get_source,$(2)) +$(call gb_CliCSharpTarget_get_target,$(1)) : $(call gb_CliCSharpTarget__get_source,$(2)) endef -define gb_CliAssemblyTarget_set_keyfile -$(call gb_CliAssemblyTarget_get_target,$(1)) : CLI_ASSEMBLY_KEYFILE := $(2) -$(call gb_CliAssemblyTarget_get_target,$(1)) : $(2) +# Add source files to compile. +# +# gb_CliCSharpTarget_add_csfiles assembly csfile(s) +define gb_CliCSharpTarget_add_csfiles +$(foreach csfile,$(2),$(call gb_CliCSharpTarget_add_csfile,$(1),$(csfile))) endef -define gb_CliAssemblyTarget_set_name -$(call gb_CliAssemblyTarget_get_target,$(1)) \ -$(call gb_CliAssemblyTarget_get_clean_target,$(1)) : \ - CLI_ASSEMBLY_OUTFILE := $(call gb_CliAssemblyTarget_get_assembly_target,$(2)) -$(call gb_CliAssemblyTarget_get_assembly_target,$(2)) : $(call gb_CliAssemblyTarget_get_target,$(1)) +# Add a generated source file to compile. +# +# gb_CliCSharpTarget_add_generated_csfile assembly csfile +define gb_CliCSharpTarget_add_generated_csfile +$(call gb_CliCSharpTarget_get_target,$(1)) : CLI_SOURCES += $(call gb_CliCSharpTarget__get_generated_source,$(2)) +$(call gb_CliCSharpTarget_get_target,$(1)) : $(call gb_CliCSharpTarget__get_generated_source,$(2)) endef -define gb_CliAssemblyTarget_set_platform -$(call gb_CliAssemblyTarget_get_target,$(1)) : CLI_ASSEMBLY_PLATFORM := $(2) +# Add generated source files to compile. +# +# gb_CliCSharpTarget_add_generated_csfiles assembly csfile(s) +define gb_CliCSharpTarget_add_generated_csfiles +$(foreach csfile,$(2),$(call gb_CliCSharpTarget_add_generated_csfile,$(1),$(csfile))) endef -define gb_CliAssemblyTarget_set_version -$(call gb_CliAssemblyTarget_get_target,$(1)) : CLI_ASSEMBLY_VERSION := $(2) +# Add flags used for compilation. +# +# gb_CliCSharpTarget_add_csflags assembly flags +define gb_CliCSharpTarget_add_csflags +$(call gb_CliCSharpTarget_get_target,$(1)) : CLI_CSCFLAGS += $(2) endef # CliAssembly class -gb_CliAssembly_KEYFILE_DEFAULT := $(gb_CliAssemblyTarget_KEYFILE_DEFAULT) -gb_CliAssembly_POLICYEXT := $(gb_CliAssemblyTarget_POLICYEXT) +# Handles creation of a CLI assembly from C# sources. -gb_CliAssembly_get_dll = $(call gb_CliAssemblyTarget_get_dll,$(1)) +$(dir $(call gb_CliAssembly_get_target,%)).dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(dir $(call gb_CliAssembly_get_target,%))%/.dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) $(call gb_CliAssembly_get_target,%) : - $(call gb_Output_announce,$*,$(true),CLA,3) - mkdir -p $(dir $@) && touch $@ + touch $@ .PHONY : $(call gb_CliAssembly_get_clean_target,%) $(call gb_CliAssembly_get_clean_target,%) : - $(call gb_Output_announce,$*,$(false),CLA,3) rm -f $(call gb_CliAssembly_get_target,$*) +# Create a CLI assembly from C# sources. +# +# gb_CliAssembly_CliAssembly assembly define gb_CliAssembly_CliAssembly -$(call gb_CliAssemblyTarget_CliAssemblyTarget,$(1)) -$(call gb_Package_Package_internal,$(1)_assembly,$(WORKDIR)) +$(call gb_CliCSharpTarget_CliCSharpTarget,$(1)) +$(call gb_CliAssemblyTarget_CliAssemblyTarget,$(1),$(call gb_CliCSharpTarget_get_target,$(1))) +$(call gb_CliAssembly_get_target,$(1)) : $(call gb_CliCSharpTarget_get_target,$(1)) $(call gb_CliAssembly_get_target,$(1)) : $(call gb_CliAssemblyTarget_get_target,$(1)) -$(call gb_CliAssembly_get_target,$(1)) :| $(call gb_Package_get_target,$(1)_assembly) +$(call gb_CliAssembly_get_target,$(1)) :| $(dir $(call gb_CliAssembly_get_target,$(1))).dir +$(call gb_CliAssembly_get_clean_target,$(1)) : $(call gb_CliCSharpTarget_get_clean_target,$(1)) $(call gb_CliAssembly_get_clean_target,$(1)) : $(call gb_CliAssemblyTarget_get_clean_target,$(1)) -$(call gb_CliAssembly_get_clean_target,$(1)) : $(call gb_Package_get_clean_target,$(1)_assembly) + +$$(eval $$(call gb_Module_register_target,$(call gb_CliAssembly_get_target,$(1)),$(call gb_CliAssembly_get_clean_target,$(1)))) + +endef + +# Set the configuration file for the assembly. +# +# The file is given by complete path. +# +# gb_CliAssembly_set_configfile assembly configfile +define gb_CliAssembly_set_configfile +$(call gb_CliAssemblyTarget_set_configfile,$(1),$(2)) endef -define gb_CliAssembly__add_file -$(call gb_Package_add_file,$(1)_assembly,bin/$(notdir $(2)),$(subst $(WORKDIR)/,,$(2))) +# Set the sign key file for the assembly. +# +# The file is given by complete path. +# +# gb_CliAssembly_set_keyfile assembly keyfile +define gb_CliAssembly_set_keyfile +$(call gb_CliCSharpTarget_get_target,$(1)) : CLI_KEYFILE := $(2) +$(call gb_CliAssemblyTarget_set_keyfile,$(1),$(2)) endef -define gb_CliAssembly__set_configfile_impl -$(call gb_CliAssemblyTarget_set_configfile,$(1),$(2)) -$(call gb_CliAssembly__add_file,$(1),$(2)) +# Set the policy file for the assembly. +# +# The file is given by complete path. +# +# gb_CliAssembly_set_policy assembly policyfile version +define gb_CliAssembly_set_policy +$(call gb_CliAssemblyTarget_set_policy,$(1),$(2),$(3)) endef -define gb_CliAssembly__set_configfile -$(call gb_CliConfigTarget_CliConfigTarget,$(2),$(3)) -$(call gb_CliAssembly__set_configfile_impl,$(1),$(call gb_CliConfigTarget_get_target,$(2))) +# Use another assembly for compilation. +# +# gb_CliAssembly_use_assembly assembly dep +define gb_CliAssembly_use_assembly +$(call gb_CliCSharpTarget_use_assembly,$(1),$(2)) endef -define gb_CliAssembly_set_configfile -$(call gb_CliAssembly__set_configfile,$(1),$(patsubst %_config,%,$(2)),$(SRCDIR)/$(2)) +# Use other assemblies for compilation. +# +# gb_CliAssembly_use_assemblies assembly dep(s) +define gb_CliAssembly_use_assemblies +$(call gb_CliCSharpTarget_use_assemblies,$(1),$(2)) endef -define gb_CliAssembly_set_keyfile -$(call gb_CliAssemblyTarget_set_keyfile,$(1),$(2)) +# Add a C# source file to compile. +# +# The file is specified without extension and with path relative to +# $(SRCDIR). +# +# gb_CliAssembly_add_csfile assembly csfile +define gb_CliAssembly_add_csfile +$(call gb_CliCSharpTarget_add_csfile,$(1),$(2)) endef -define gb_CliAssembly_set_platform -$(call gb_CliAssemblyTarget_set_platform,$(1),$(2)) +# Add C# source file(s) to compile. +# +# The files are specified without extension and with path relative to +# $(SRCDIR). +# +# gb_CliAssembly_add_csfiles assembly csfile(s) +define gb_CliAssembly_add_csfiles +$(call gb_CliCSharpTarget_add_csfiles,$(1),$(2)) endef -define gb_CliAssembly_set_policy -$(call gb_CliAssemblyTarget_set_version,$(1),$(3)) -$(call gb_CliAssemblyTarget_set_name,$(1),$(2)) -$(call gb_CliAssembly__add_file,$(1),$(call gb_CliAssemblyTarget_get_assembly_target,$(2))) +# Add a generated C# source file to compile. +# +# The file is specified without extension and with path relative to +# $(WORKDIR). +# +# gb_CliAssembly_add_generated_csfile assembly csfile +define gb_CliAssembly_add_generated_csfile +$(call gb_CliCSharpTarget_add_generated_csfile,$(1),$(2)) + +endef + +# Add generated C# source files to compile +# +# The files are specified without extension and with path relative to +# $(WORKDIR). +# +# gb_CliAssembly_add_generated_csfiles assembly csfile(s) +define gb_CliAssembly_add_generated_csfiles +$(call gb_CliCSharpTarget_add_generated_csfiles,$(1),$(2)) + +endef + +# Add flags used for compilation. +# +# gb_CliAssembly_add_csflags assembly flags +define gb_CliAssembly_add_csflags +$(call gb_CliCSharpTarget_add_csflags,$(1),$(2)) endef diff --git a/solenv/gbuild/CliAssemblyTarget.mk b/solenv/gbuild/CliAssemblyTarget.mk new file mode 100644 index 000000000000..639e0caca342 --- /dev/null +++ b/solenv/gbuild/CliAssemblyTarget.mk @@ -0,0 +1,269 @@ +# -*- 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/. +# + +# CliConfigTarget class + +# Substitutes variables in an assembly configuration file. + +gb_CliConfigTarget_TARGET := $(SOLARENV)/bin/clipatchconfig.pl +gb_CliConfigTarget_COMMAND := $(PERL) -w $(gb_CliConfigTarget_TARGET) + +gb_CliConfigTarget_VERSIONFILE_DEFAULT := $(SRCDIR)/cli_ure/version/version.txt + +define gb_CliConfigTarget__command +$(call gb_Output_announce,$(2),$(true),CPA,1) +$(call gb_Helper_abbreviate_dirs,\ + $(gb_CliConfigTarget_COMMAND) $(3) $(CLI_CONFIG_VERSIONFILE) $(1) \ +) +endef + +$(dir $(call gb_CliConfigTarget_get_target,%))%/.dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(call gb_CliConfigTarget_get_target,%) : + $(call gb_CliConfigTarget__command,$@,$*,$<) + +$(call gb_CliConfigTarget_get_clean_target,%) : + $(call gb_Output_announce,$*,$(false),CPA,1) + rm -f $(call gb_CliConfigTarget_get_target,$*) + +# Subst. variables in a config file +# +# gb_CliConfigTarget_CliConfigTarget target source +define gb_CliConfigTarget_CliConfigTarget +$(call gb_CliConfigTarget_get_target,$(1)) : CLI_CONFIG_VERSIONFILE := $(gb_CliConfigTarget_VERSIONFILE_DEFAULT) + +$(call gb_CliConfigTarget_get_target,$(1)) : $(2) +$(call gb_CliConfigTarget_get_target,$(1)) : $(gb_CliConfigTarget_TARGET) +$(call gb_CliConfigTarget_get_target,$(1)) : $(gb_CliConfigTarget_VERSIONFILE_DEFAULT) +$(call gb_CliConfigTarget_get_target,$(1)) :| $(dir $(call gb_CliConfigTarget_get_target,$(1))).dir + +endef + +# CliPolicyTarget class + +# Creates an associated policy dll for an assembly. + +gb_CliPolicyTarget_KEYFILE_DEFAULT := $(SRCDIR)/cli_ure/source/cliuno.snk + +$(dir $(call gb_CliPolicyTarget_get_target,%)).dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(dir $(call gb_CliPolicyTarget_get_target,%))%/.dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(call gb_CliPolicyTarget_get_target,%) : + $(if $(strip $(CLI_ASSEMBLY_VERSION)),,$(call gb_Output_error,assembly version not set)) + $(if $(strip $(CLI_ASSEMBLY_CONFIGFILE)),,$(call gb_Output_error,assembly configuration file not set)) + $(if $(strip $(CLI_ASSEMBLY_OUTFILE)),,$(call gb_Output_error,assembly name not set)) + $(call gb_CliPolicyTarget__command,$@,$*,$<) + +$(call gb_CliPolicyTarget_get_assembly_target,%) : + touch $@ + +.PHONY : $(call gb_CliPolicyTarget_get_clean_target,%) +$(call gb_CliPolicyTarget_get_clean_target,%) : + $(call gb_Output_announce,$*,$(false),AL ,2) + $(call gb_Helper_abbreviate_dirs,\ + rm -f $(call gb_CliPolicyTarget_get_target,$*) $(CLI_ASSEMBLY_OUTFILE) \ + ) + +# Create a policy dll. +# +# gb_CliPolicyTarget_CliPolicyTarget assembly +define gb_CliPolicyTarget_CliPolicyTarget +$(call gb_CliPolicyTarget_get_target,$(1)) : CLI_ASSEMBLY_CONFIGFILE := +$(call gb_CliPolicyTarget_get_target,$(1)) : CLI_ASSEMBLY_KEYFILE := $(gb_CliPolicyTarget_KEYFILE_DEFAULT) +$(call gb_CliPolicyTarget_get_target,$(1)) : CLI_ASSEMBLY_OUTFILE := +$(call gb_CliPolicyTarget_get_target,$(1)) : CLI_ASSEMBLY_PLATFORM := +$(call gb_CliPolicyTarget_get_target,$(1)) : CLI_ASSEMBLY_VERSION := + +$(call gb_CliPolicyTarget_get_clean_target,$(1)) : CLI_ASSEMBLY_OUTFILE := + +$(call gb_CliPolicyTarget_get_target,$(1)) :| $(dir $(call gb_CliPolicyTarget_get_target,$(1))).dir + +endef + +# Get the assembly dll. +# +# gb_CliAssemblyTarget_get_dll assembly +gb_CliAssemblyTarget_get_dll = $(call gb_CliAssemblyTarget_get_outdir_target,$(1)).dll + +# Set the configuration file for the assembly. +# +# The file is given by complete path. +# +# gb_CliPolicyTarget_set_configfile assembly configfile +define gb_CliPolicyTarget_set_configfile +$(call gb_CliPolicyTarget_get_target,$(1)) : CLI_ASSEMBLY_CONFIGFILE := $(2) +$(call gb_CliPolicyTarget_get_target,$(1)) : $(2) + +endef + +# Set the sign key file for the assembly. +# +# The file is given by complete path. +# +# gb_CliPolicyTarget_set_keyfile assembly keyfile +define gb_CliPolicyTarget_set_keyfile +$(call gb_CliPolicyTarget_get_target,$(1)) : CLI_ASSEMBLY_KEYFILE := $(2) +$(call gb_CliPolicyTarget_get_target,$(1)) : $(2) + +endef + +# Set the name of the created policy dll. +# +# gb_CliPolicyTarget_set_name assembly policy +define gb_CliPolicyTarget_set_name +$(call gb_CliPolicyTarget_get_target,$(1)) \ +$(call gb_CliPolicyTarget_get_clean_target,$(1)) : \ + CLI_ASSEMBLY_OUTFILE := $(call gb_CliPolicyTarget_get_assembly_target,$(2)) +$(call gb_CliPolicyTarget_get_assembly_target,$(2)) : $(call gb_CliPolicyTarget_get_target,$(1)) + +endef + +# Set the platform of the assembly. +# +# Only applicable for C++ assemblies (CliLibrary). +# +# gb_CliPolicyTarget_set_platform assembly platform +define gb_CliPolicyTarget_set_platform +$(call gb_CliPolicyTarget_get_target,$(1)) : CLI_ASSEMBLY_PLATFORM := $(2) + +endef + +# Set the version of the assembly. +# +# gb_CliPolicyTarget_set_version assembly version +define gb_CliPolicyTarget_set_version +$(call gb_CliPolicyTarget_get_target,$(1)) : CLI_ASSEMBLY_VERSION := $(2) + +endef + +# CliAssemblyTarget class + +# Handles creation and delivery of signed multi-file CLI assembly. +# +# This class groups common parts of the process of creation and delivery +# of a signed assembly. It does not specify how to create the "core" dll +# (which must be supplied externally). This is because there are various +# ways how to create the assembly, so they are handled by separate +# classes (CliAssembly, CliLibrary, CliUnoApi). +# +# The delivered files are +# * the assembly itself (.dll) +# * the associated policy (.dll) +# * the associated configuration file (.config) + +gb_CliAssemblyTarget_KEYFILE_DEFAULT := $(gb_CliPolicyTarget_KEYFILE_DEFAULT) + +$(dir $(call gb_CliAssemblyTarget_get_target,%)).dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(dir $(call gb_CliAssemblyTarget_get_target,%))%/.dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(call gb_CliAssemblyTarget_get_target,%) : + $(call gb_Output_announce,$*,$(true),CLI,5) + $(call gb_Helper_abbreviate_dirs,\ + touch $@ \ + ) + +.PHONY : $(call gb_CliAssemblyTarget_get_clean_target,%) +$(call gb_CliAssemblyTarget_get_clean_target,%) : + $(call gb_Output_announce,$*,$(false),CLI,5) + $(call gb_Helper_abbreviate_dirs,\ + rm -f $(CLI_ASSEMBLY_OUTFILES) $(call gb_CliAssemblyTarget_get_target,$*) \ + ) + +# Define an assembly. +# +# gb_CliAssemblyTarget_CliAssemblyTarget assembly dll +define gb_CliAssemblyTarget_CliAssemblyTarget +$(call gb_CliPolicyTarget_CliPolicyTarget,$(1)) + +$(call gb_CliAssemblyTarget_get_clean_target,$(1)) : CLI_ASSEMBLY_OUTFILES := + +$(call gb_CliAssemblyTarget_get_target,$(1)) : $(call gb_CliPolicyTarget_get_target,$(1)) +$(call gb_CliAssemblyTarget_get_target,$(1)) :| $(dir (call gb_CliAssemblyTarget_get_target,$(1))).dir +$(call gb_CliAssemblyTarget_get_clean_target,$(1)) : $(call gb_CliPolicyTarget_get_clean_target,$(1)) + +$(call gb_CliAssemblyTarget__add_file,$(1),$(2)) + +endef + +define gb_CliAssemblyTarget__add_file_impl +$(call gb_Deliver_add_deliverable,$(2),$(3),$(1)) + +$(call gb_CliAssemblyTarget_get_clean_target,$(1)) : CLI_ASSEMBLY_OUTFILES += $(2) +$(call gb_CliAssemblyTarget_get_target,$(1)) : $(2) +$(2) : $(3) + +endef + +define gb_CliAssemblyTarget__add_file +$(call gb_CliAssemblyTarget__add_file_impl,$(1),$(call gb_CliAssemblyTarget_get_outdir_target,$(notdir $(2))),$(2)) + +endef + +define gb_CliAssemblyTarget__set_configfile_impl +$(call gb_CliPolicyTarget_set_configfile,$(1),$(2)) +$(call gb_CliAssemblyTarget__add_file,$(1),$(2)) + +endef + +define gb_CliAssemblyTarget__set_configfile +$(call gb_CliConfigTarget_CliConfigTarget,$(2),$(3)) +$(call gb_CliAssemblyTarget__set_configfile_impl,$(1),$(call gb_CliConfigTarget_get_target,$(2))) + +endef + +# Set the configuration file for the assembly. +# +# The file is given by complete path. +# +# gb_CliAssemblyTarget_set_configfile assembly configfile +define gb_CliAssemblyTarget_set_configfile +$(call gb_CliAssemblyTarget__set_configfile,$(1),$(patsubst %_config,%,$(2)),$(SRCDIR)/$(2)) + +endef + +# Set the sign key file for the assembly. +# +# The file is given by complete path. +# +# gb_CliAssemblyTarget_set_keyfile assembly keyfile +define gb_CliAssemblyTarget_set_keyfile +$(call gb_CliPolicyTarget_set_keyfile,$(1),$(2)) + +endef + +# Set the platform of the assembly. +# +# Only applicable for C++ assemblies (CliLibrary). +# +# gb_CliAssemblyTarget_set_platform assembly platform +define gb_CliAssemblyTarget_set_platform +$(call gb_CliPolicyTarget_set_platform,$(1),$(2)) + +endef + +# Set the policy file for the assembly. +# +# The file is given by complete path. +# +# gb_CliAssemblyTarget_set_policy assembly policyfile version +define gb_CliAssemblyTarget_set_policy +$(call gb_CliPolicyTarget_set_version,$(1),$(3)) +$(call gb_CliPolicyTarget_set_name,$(1),$(2)) +$(call gb_CliAssemblyTarget__add_file,$(1),$(call gb_CliPolicyTarget_get_assembly_target,$(2))) + +endef + +# vim: set noet sw=4 ts=4: diff --git a/solenv/gbuild/CliLibrary.mk b/solenv/gbuild/CliLibrary.mk index 6b3a4efc944f..ef56488643f7 100644 --- a/solenv/gbuild/CliLibrary.mk +++ b/solenv/gbuild/CliLibrary.mk @@ -7,196 +7,236 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. # -# CliLibraryTarget class - -gb_CliLibraryTarget_EXT := $(gb_CliAssembly_POLICYEXT) - -gb_CliLibraryTarget_CSCFLAGS := \ - -noconfig \ - -nologo \ - -gb_CliLibraryTarget_CSCFLAGS_DEBUG := \ - -checked+ \ - -define:DEBUG \ - -define:TRACE \ - -ifeq ($(strip $(debug)),) -ifeq ($(strip $(PRODUCT)),) -gb_CliLibraryTarget__get_csflags = $(gb_CliLibraryTarget_CSCFLAGS) $(gb_CliLibraryTarget_CSCFLAGS_DEBUG) -else -gb_CliLibraryTarget__get_csflags = $(gb_CliLibraryTarget_CSCFLAGS) -o -endif -else -gb_CliLibraryTarget__get_csflags = $(gb_CliLibraryTarget_CSCFLAGS) $(gb_CliLibraryTarget_CSCFLAGS_DEBUG) -debug+ -endif - -gb_CliLibraryTarget__get_source = $(SRCDIR)/$(1).cs -gb_CliLibraryTarget__get_generated_source = $(WORKDIR)/$(1).cs - -define gb_CliLibraryTarget__command -$(call gb_Output_announce,$(2),$(true),CSC,3) +# CliSignTarget class + +define gb_CliSignTarget__command +$(call gb_Output_announce,$(1),$(true),SN ,4) $(call gb_Helper_abbreviate_dirs,\ - csc $(call gb_Helper_windows_path, \ - $(call gb_CliLibraryTarget__get_csflags) \ - $(CLI_CSCFLAGS) \ - -target:library \ - -out:$(1) \ - -keyfile:$(call gb_Helper_windows_path,$(CLI_KEYFILE)) \ - -reference:System.dll \ - $(foreach assembly,$(CLI_ASSEMBLIES),-reference:$(assembly)) \ - $(CLI_SOURCES) \ - ) \ + $(GNUCOPY) $(CLI_SIGN_LIBRARY) $(1).tmp && \ + sn -R $(1).tmp $(CLI_SIGN_KEYFILE) && \ + mv $(1).tmp $(1) \ ) endef -$(dir $(call gb_CliLibraryTarget_get_target,%)).dir : +$(dir $(call gb_CliSignTarget_get_target,%)).dir : $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) -$(dir $(call gb_CliLibraryTarget_get_target,%))%/.dir : +$(dir $(call gb_CliSignTarget_get_target,%))%/.dir : $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) -$(call gb_CliLibraryTarget_get_target,%) : - $(call gb_CliLibraryTarget__command,$@,$*,$<,$?,$^) +$(call gb_CliSignTarget_get_target,%) : + $(call gb_CliSignTarget__command,$@,$*,$<) + +$(call gb_CliSignTarget_get_external_target,%) : + touch $@ -.PHONY : $(call gb_CliLibraryTarget_get_clean_target,%) -$(call gb_CliLibraryTarget_get_clean_target,%) : - $(call gb_Output_announce,$*,$(false),CSC,3) +.PHONY : $(call gb_CliSignTarget_get_clean_target,%) +$(call gb_CliSignTarget_get_clean_target,%) : + $(call gb_Output_announce,$*,$(false),SN ,4) $(call gb_Helper_abbreviate_dirs,\ - rm -f $(call gb_CliLibraryTarget_get_target,$*) \ + rm -rf $(call gb_CliSignTarget_get_target,$*) \ + $(call gb_CliSignTarget_get_external_target,$*) \ ) -# Compiles one or more C# source files +# Sign a native assembly. # -# gb_CliLibraryTarget_CliLibraryTarget target -define gb_CliLibraryTarget_CliLibraryTarget -$(call gb_CliLibraryTarget_get_target,$(1)) : CLI_ASSEMBLIES := -$(call gb_CliLibraryTarget_get_target,$(1)) : CLI_SOURCES := -$(call gb_CliLibraryTarget_get_target,$(1)) : CLI_CSCFLAGS := -$(call gb_CliLibraryTarget_get_target,$(1)) : CLI_KEYFILE := +# gb_CliSignTarget_CliSignTarget assembly +define gb_CliSignTarget_CliSignTarget +$(call gb_CliSignTarget_get_target,$(1)) : CLI_SIGN_KEYFILE := +$(call gb_CliSignTarget_get_target,$(1)) : CLI_SIGN_LIBRARY := $(2) -$(call gb_CliLibraryTarget_get_target,$(1)) :| $(dir $(call gb_CliLibraryTarget_get_target,$(1))).dir +$(call gb_CliSignTarget_get_external_target,$(1)) :| $(dir $(call gb_CliSignTarget_get_target,$(1))).dir +$(call gb_CliSignTarget_get_target,$(1)) :| $(dir $(call gb_CliSignTarget_get_target,$(1))).dir endef -define gb_CliLibraryTarget_use_assembly -$(call gb_CliLibraryTarget_get_target,$(1)) : CLI_ASSEMBLIES += $(call gb_CliLibrary_get_target,$(2)) -$(call gb_CliLibraryTarget_get_target,$(1)) : $(call gb_CliLibrary_get_target,$(2)) +# Set the sign key file for the assembly. +# +# The file is given by complete path. +# +# gb_CliSignTarget_set_keyfile assembly keyfile +define gb_CliSignTarget_set_keyfile +$(call gb_CliSignTarget_get_target,$(1)) : CLI_SIGN_KEYFILE := $(2) +$(call gb_CliSignTarget_get_target,$(1)) : $(2) endef -define gb_CliLibraryTarget_use_assemblies -$(foreach assembly,$(2),$(call gb_CliLibraryTarget_use_assembly,$(1),$(assembly))) +# Use another assembly for compilation. +# +# gb_CliSignTarget_use_assembly assembly dep +define gb_CliSignTarget_use_assembly +$(call gb_CliSignTarget_get_external_target,$(1)) : $(call gb_CliAssemblyTarget_get_target,$(2)) endef -# Add a source file to compile -define gb_CliLibraryTarget_add_csfile -$(call gb_CliLibraryTarget_get_target,$(1)) : CLI_SOURCES += $(call gb_CliLibraryTarget__get_source,$(2)) -$(call gb_CliLibraryTarget_get_target,$(1)) : $(call gb_CliLibraryTarget__get_source,$(2)) +# Use other assemblies for compilation. +# +# gb_CliSignTarget_use_assemblies assembly dep(s) +define gb_CliSignTarget_use_assemblies +$(foreach assembly,$(2),$(call gb_CliSignTarget_use_assembly,$(1),$(assembly))) endef -# Add source files to compile -define gb_CliLibraryTarget_add_csfiles -$(foreach csfile,$(2),$(call gb_CliLibraryTarget_add_csfile,$(1),$(csfile))) +# CliLibrary class -endef +# Handles creation of a CLI assembly from C++ sources. -# Add a generated source file to compile -define gb_CliLibraryTarget_add_generated_csfile -$(call gb_CliLibraryTarget_get_target,$(1)) : CLI_SOURCES += $(call gb_CliLibraryTarget__get_generated_source,$(2)) -$(call gb_CliLibraryTarget_get_target,$(1)) : $(call gb_CliLibraryTarget__get_generated_source,$(2)) +# platform defined +# gb_CliLibrary_LIBS +# gb_CliLibrary_CliLibrary_platform +# gb_CliLibrary_get_dll +# gb_CliLibrary_add_delayload_dll +# gb_CliLibrary_set_link_keyfile -endef +gb_CliLibrary_PLATFORM_DEFAULT := x86 -# Add generated source files to compile -define gb_CliLibraryTarget_add_generated_csfiles -$(foreach csfile,$(2),$(call gb_CliLibraryTarget_add_generated_csfile,$(1),$(csfile))) - -endef +$(dir $(call gb_CliLibrary_get_target,%)).dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) -# Add flags used for compilation -define gb_CliLibraryTarget_add_csflags -$(call gb_CliLibraryTarget_get_target,$(1)) : CLI_CSCFLAGS += $(2) +$(dir $(call gb_CliLibrary_get_target,%))%/.dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) -endef +$(call gb_CliLibrary_get_target,%) : + touch $@ -# CliLibrary class +.PHONY : $(call gb_CliLibrary_get_clean_target,%) +$(call gb_CliLibrary_get_clean_target,%) : + rm -f $(call gb_CliLibrary_get_target,$*) -gb_CliLibrary_EXT := $(gb_CliLibraryTarget_EXT) +gb_CliLibrary_get_linktargetname = CliLibrary/$(1) -# Compiles one or more C# source files +# Create a CLI assembly from C++ sources. # -# gb_CliLibrary_CliLibrary target +# gb_CliLibrary assembly define gb_CliLibrary_CliLibrary -$(call gb_CliLibraryTarget_CliLibraryTarget,$(1)) -$(call gb_CliAssembly_CliAssembly,$(1)) +$(call gb_CliLibrary__CliLibrary_impl,$(1),$(call gb_CliLibrary_get_linktargetname,$(1))) + +endef + +define gb_CliLibrary__CliLibrary_impl +$(call gb_LinkTarget_LinkTarget,$(2),CliLibrary_$(1)) +$(call gb_CliSignTarget_CliSignTarget,$(1),$(call gb_CliLibrary_get_dll,$(1))) +$(call gb_CliAssemblyTarget_CliAssemblyTarget,$(1),$(call gb_CliSignTarget_get_target,$(1))) + +$(call gb_LinkTarget_set_targettype,$(2),CliLibrary) +$(call gb_LinkTarget_add_defs,$(2),gb_CliLibrary_DEFS) +$(call gb_LinkTarget_add_libs,$(2),gb_CliLibrary_LIBS) + +$(call gb_CliLibrary_CliLibrary_platform,$(1),$(2),$(call gb_CliLibrary_get_dll,$(1))) -$(call gb_CliLibrary_get_target,$(1)) : $(call gb_CliLibraryTarget_get_target,$(1)) -$(call gb_CliLibrary_get_target,$(1)) :| $(call gb_CliAssembly_get_target,$(1)) +$(call gb_CliSignTarget_set_keyfile,$(1),$(gb_CliAssemblyTarget_KEYFILE_DEFAULT)) +$(call gb_CliAssemblyTarget_set_platform,$(1),$(gb_CliLibrary_PLATFORM_DEFAULT)) + +$(call gb_CliSignTarget_get_target,$(1)) : $(call gb_LinkTarget_get_target,$(2)) +$(call gb_CliLibrary_get_target,$(1)) : $(call gb_CliSignTarget_get_target,$(1)) +$(call gb_CliLibrary_get_target,$(1)) : $(call gb_CliAssemblyTarget_get_target,$(1)) $(call gb_CliLibrary_get_target,$(1)) :| $(dir $(call gb_CliLibrary_get_target,$(1))).dir -$(call gb_CliLibrary_get_clean_target,$(1)) : $(call gb_CliLibraryTarget_get_clean_target,$(1)) -$(call gb_CliLibrary_get_clean_target,$(1)) : $(call gb_CliAssembly_get_clean_target,$(1)) -$(call gb_Deliver_add_deliverable,$(call gb_CliLibrary_get_target,$(1)),$(call gb_CliLibraryTarget_get_target,$(1)),$(1)) +$(call gb_CliLibrary_get_clean_target,$(1)) : $(call gb_LinkTarget_get_clean_target,$(1)) +$(call gb_CliLibrary_get_clean_target,$(1)) : $(call gb_CliSignTarget_get_clean_target,$(1)) +$(call gb_CliLibrary_get_clean_target,$(1)) : $(call gb_CliAssemblyTarget_get_clean_target,$(1)) $$(eval $$(call gb_Module_register_target,$(call gb_CliLibrary_get_target,$(1)),$(call gb_CliLibrary_get_clean_target,$(1)))) endef +# Set the configuration file for the assembly. +# +# The file is given by complete path. +# +# gb_CliLibrary_set_configfile assembly configfile define gb_CliLibrary_set_configfile -$(call gb_CliAssembly_set_configfile,$(1),$(2)) +$(call gb_CliAssemblyTarget_set_configfile,$(1),$(2)) endef +# Set the sign key file for the assembly. +# +# The file is given by complete path. +# +# gb_CliLibrary_set_keyfile assembly keyfile define gb_CliLibrary_set_keyfile -$(call gb_CliLibraryTarget_get_target,$(1)) : CLI_KEYFILE := $(2) -$(call gb_CliAssembly_set_keyfile,$(1),$(2)) +$(call gb_CliSignTarget_set_keyfile,$(1),$(2)) +$(call gb_CliAssemblyTarget_set_keyfile,$(1),$(2)) +$(call gb_CliLibrary_set_link_keyfile,$(1),$(2)) + +endef + +# Set the platform of the assembly. +# TODO is this really needed? +# +# gb_CliLibrary_set_platform assembly platform +define gb_CliLibrary_set_platform +$(call gb_CliAssemblyTarget_set_platform,$(1),$(2)) endef +# Set the policy file for the assembly. +# +# The file is given by complete path. +# +# gb_CliLibrary_set_policy assembly policyfile version define gb_CliLibrary_set_policy -$(call gb_CliAssembly_set_policy,$(1),$(2),$(3)) +$(call gb_CliAssemblyTarget_set_policy,$(1),$(2),$(3)) endef +# Use another assembly for compilation. +# +# gb_CliLibrary_use_assembly assembly dep define gb_CliLibrary_use_assembly -$(call gb_CliLibraryTarget_use_assembly,$(1),$(2)) +$(call gb_CliSignTarget_use_assembly,$(1),$(2)) endef +# Use other assemblies for compilation. +# +# gb_CliLibrary_use_assemblies assembly dep(s) define gb_CliLibrary_use_assemblies -$(call gb_CliLibraryTarget_use_assemblies,$(1),$(2)) +$(call gb_CliSignTarget_use_assemblies,$(call gb_CliLibrary_get_linktargetname,$(1)),$(2)) endef -# Add a source file to compile -define gb_CliLibrary_add_csfile -$(call gb_CliLibraryTarget_add_csfile,$(1),$(2)) +# Use a public UNO API library. +# +# E.g., cppu, sal. +# +# gb_CliLibrary_use_api_library assembly library +define gb_CliLibrary_use_api_library +$(call gb_LinkTarget_use_library,$(call gb_CliLibrary_get_linktargetname,$(1)),$(2)) +$(call gb_CliLibrary_add_delayload_dll,$(1),$(2)) endef -# Add source files to compile -define gb_CliLibrary_add_csfiles -$(call gb_CliLibraryTarget_add_csfiles,$(1),$(2)) +# Use public UNO API libraries. +# +# E.g., cppu, sal. +# +# gb_CliLibrary_use_api_libraries assembly library +define gb_CliLibrary_use_api_libraries +$(foreach library,$(2),$(call gb_CliLibrary_use_api_library,$(1),$(library))) + +endef + +# straight forwards to LinkTarget + +define gb_CliLibrary_use_internal_bootstrap_api +$(call gb_Library_use_internal_bootstrap_api,$(call gb_CliLibrary_get_linktargetname,$(1)),$(2)) endef -# Add a generated source file to compile -define gb_CliLibrary_add_generated_csfile -$(call gb_CliLibraryTarget_add_generated_csfile,$(1),$(2)) +define gb_CliLibrary_use_packages +$(call gb_Library_use_packages,$(call gb_CliLibrary_get_linktargetname,$(1)),$(2)) endef -# Add generated source files to compile -define gb_CliLibrary_add_generated_csfiles -$(call gb_CliLibraryTarget_add_generated_csfiles,$(1),$(2)) +define gb_CliLibrary_add_exception_objects +$(call gb_Library_add_exception_objects,$(call gb_CliLibrary_get_linktargetname,$(1)),$(2)) endef -# Add flags used for compilation -define gb_CliLibrary_add_csflags -$(call gb_CliLibraryTarget_add_csflags,$(1),$(2)) +define gb_CliLibrary_add_generated_exception_objects +$(call gb_Library_add_generated_exception_objects,$(call gb_CliLibrary_get_linktargetname,$(1)),$(2)) endef diff --git a/solenv/gbuild/CliNativeLibrary.mk b/solenv/gbuild/CliNativeLibrary.mk index f5c124923ea6..4dd0d66c949d 100644 --- a/solenv/gbuild/CliNativeLibrary.mk +++ b/solenv/gbuild/CliNativeLibrary.mk @@ -42,6 +42,7 @@ $(call gb_CliNativeLibraryTarget_get_clean_target,%) : $(call gb_CliNativeLibraryTarget_get_external_target,$*) \ ) +# gb_CliNativeLibraryTarget_CliNativeLibraryTarget target lib define gb_CliNativeLibraryTarget_CliNativeLibraryTarget $(call gb_CliNativeLibraryTarget_get_target,$(1)) : CLI_NATIVE_ASSEMBLIES := $(gb_Helper_MISCDUMMY) $(call gb_CliNativeLibraryTarget_get_target,$(1)) : CLI_NATIVE_KEYFILE := @@ -81,11 +82,14 @@ endef gb_CliNativeLibrary_PLATFORM_DEFAULT := x86 gb_CliNativeLibrary_EXT := $(gb_CliNativeLibraryTarget_EXT) +gb_CliNativeLibrary_get_linktargetname = CliNativeLibrary/$(1) + # Create a CLI library for a native library # # CliNativeLibrary target define gb_CliNativeLibrary_CliNativeLibrary -$(call gb_CliNativeLibraryTarget_CliNativeLibraryTarget,$(1)) +$(call gb_LinkTarget_LinkTarget,$(call gb_CliNativeLibrary_get_linktargetname,$(1))) +$(call gb_CliNativeLibraryTarget_CliNativeLibraryTarget,$(1),$(call gb_LinkTarget_get_target,$(call gb_CliNativeLibrary_get_linktargetname,$(1)))) $(call gb_CliAssembly_CliAssembly,$(1)) $(call gb_CliNativeLibraryTarget_set_keyfile,$(1),$(gb_CliAssembly_KEYFILE_DEFAULT)) diff --git a/solenv/gbuild/CliUnoApi.mk b/solenv/gbuild/CliUnoApi.mk index f0a27356d3f1..2d84ecbb5935 100644 --- a/solenv/gbuild/CliUnoApi.mk +++ b/solenv/gbuild/CliUnoApi.mk @@ -9,7 +9,7 @@ # CliUnoApiTarget class -gb_CliUnoApiTarget_EXT := $(gb_CliAssembly_POLICYEXT) +# Handles creation of a CLI assembly from UNO types.rdb. gb_CliUnoApiTarget_TARGET := $(call gb_Executable_get_target_for_build,climaker) gb_CliUnoApiTarget_COMMAND := $(gb_Helper_set_ld_path) $(gb_CliUnoApiTarget_TARGET) @@ -91,8 +91,8 @@ $(foreach api,$(2),$(call gb_CliUnoApiTarget__use_api,$(1),$(call gb_UnoApi_get_ endef define gb_CliUnoApiTarget_use_assembly -$(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_ASSEMBLIES += $(call gb_CliUnoApi_get_target,$(2)) -$(call gb_CliUnoApiTarget_get_target,$(1)) : $(call gb_CliUnoApi_get_target,$(2)) +$(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_ASSEMBLIES += $(call gb_CliAssemblyTarget_get_dll,$(2)) +$(call gb_CliUnoApiTarget_get_target,$(1)) : $(call gb_CliAssemblyTarget_get_target,$(2)) endef @@ -103,38 +103,60 @@ endef # CliUnoApi class -gb_CliUnoApi_EXT := $(gb_CliUnoApiTarget_EXT) -gb_CliUnoApi_KEYFILE_DEFAULT := $(gb_CliAssembly_KEYFILE_DEFAULT) +# Handles creation and delivery of a CLI assembly from UNO types.rdb. -# Create a CLI library for UNO API +gb_CliUnoApi_KEYFILE_DEFAULT := $(gb_CliAssemblyTarget_KEYFILE_DEFAULT) + +$(dir $(call gb_CliUnoApi_get_target,%)).dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(dir $(call gb_CliUnoApi_get_target,%))%/.dir : + $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@)) + +$(call gb_CliUnoApi_get_target,%) : + touch $@ + +.PHONY : $(call gb_CliUnoApi_get_clean_target,%) +$(call gb_CliUnoApi_get_clean_target,%) : + rm -f $(call gb_CliUnoApi_get_target,$*) + +# Create a CLI library for UNO API. # # gb_CliUnoApi_CliUnoApi target define gb_CliUnoApi_CliUnoApi $(call gb_CliUnoApiTarget_CliUnoApiTarget,$(1)) -$(call gb_CliAssembly_CliAssembly,$(1)) +$(call gb_CliAssemblyTarget_CliAssemblyTarget,$(1),$(call gb_CliUnoApiTarget_get_target,$(1))) $(call gb_CliUnoApiTarget_set_keyfile,$(1),$(gb_CliUnoApi_KEYFILE_DEFAULT)) $(call gb_CliUnoApi_get_target,$(1)) : $(call gb_CliUnoApiTarget_get_target,$(1)) -$(call gb_CliUnoApi_get_target,$(1)) :| $(call gb_CliAssembly_get_target,$(1)) +$(call gb_CliUnoApi_get_target,$(1)) : $(call gb_CliAssemblyTarget_get_target,$(1)) $(call gb_CliUnoApi_get_target,$(1)) :| $(dir $(call gb_CliUnoApi_get_target,$(1))).dir $(call gb_CliUnoApi_get_clean_target,$(1)) : $(call gb_CliUnoApiTarget_get_clean_target,$(1)) -$(call gb_CliUnoApi_get_clean_target,$(1)) : $(call gb_CliAssembly_get_clean_target,$(1)) - -$(call gb_Deliver_add_deliverable,$(call gb_CliUnoApi_get_target,$(1)),$(call gb_CliUnoApiTarget_get_target,$(1)),$(1)) +$(call gb_CliUnoApi_get_clean_target,$(1)) : $(call gb_CliAssemblyTarget_get_clean_target,$(1)) $$(eval $$(call gb_Module_register_target,$(call gb_CliUnoApiTarget_get_target,$(1)),$(call gb_CliUnoApiTarget_get_clean_target,$(1)))) endef +# Set the configuration file for the assembly. +# +# The file is given by complete path. +# +# gb_CliUnoApi_set_configfile assembly configfile define gb_CliUnoApi_set_configfile -$(call gb_CliAssembly_set_configfile,$(1),$(2)) +$(call gb_CliAssemblyTarget_set_configfile,$(1),$(2)) endef +# Set the sign key file for the assembly. +# +# The file is given by complete path. +# +# gb_CliUnoApi_set_keyfile assembly keyfile define gb_CliUnoApi_set_keyfile $(call gb_CliUnoApiTarget_set_keyfile,$(1),$(2)) -$(call gb_CliAssembly_set_keyfile,$(1),$(2)) +$(call gb_CliAssemblyTarget_set_keyfile,$(1),$(2)) endef @@ -143,8 +165,13 @@ $(call gb_CliUnoApiTarget_set_version,$(1),$(2)) endef +# Set the policy file for the assembly. +# +# The file is given by complete path. +# +# gb_CliUnoApiTarget_set_policy assembly policyfile version define gb_CliUnoApi_set_policy -$(call gb_CliAssembly_set_policy,$(1),$(2),$(3)) +$(call gb_CliAssemblyTarget_set_policy,$(1),$(2),$(3)) endef @@ -158,11 +185,17 @@ $(call gb_CliUnoApiTarget_use_api,$(1),$(2)) endef +# Use another assembly for compilation. +# +# gb_CliUnoApi_use_assembly assembly dep define gb_CliUnoApi_use_assembly $(call gb_CliUnoApiTarget_use_assembly,$(1),$(2)) endef +# Use other assemblies for compilation. +# +# gb_CliUnoApi_use_assemblies assembly dep(s) define gb_CliUnoApi_use_assemblies $(call gb_CliUnoApiTarget_use_assemblies,$(1),$(2)) diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk index 36ff8edfb8b2..66f88afb2dca 100644 --- a/solenv/gbuild/TargetLocations.mk +++ b/solenv/gbuild/TargetLocations.mk @@ -28,9 +28,7 @@ # outdir target pattern -gb_CliLibrary_get_target = $(gb_Helper_OUTDIRLIBDIR)/$(1)$(gb_CliLibrary_EXT) -gb_CliNativeLibrary_get_target = $(gb_Helper_OUTDIRLIBDIR)/$(1)$(gb_CliNativeLibrary_EXT) -gb_CliUnoApi_get_target = $(gb_Helper_OUTDIRLIBDIR)/$(1)$(gb_CliUnoApi_EXT) +gb_CliAssemblyTarget_get_outdir_target = $(gb_Helper_OUTDIRLIBDIR)/$(1) gb_ComponentTarget_get_outdir_target = $(OUTDIR)/xml/component/$(1).component gb_Dictionary_get_target = $(OUTDIR)/pck/$(1).oxt gb_Executable_get_target = $(OUTDIR)/bin/$(1)$(gb_Executable_EXT) @@ -84,12 +82,15 @@ gb_CObject_get_target = $(WORKDIR)/CObject/$(1).o gb_GenCObject_get_target = $(WORKDIR)/GenCObject/$(1).o gb_CliAssembly_get_target = $(WORKDIR)/CliAssembly/$(1).done gb_CliAssemblyTarget_get_target = $(WORKDIR)/CliAssemblyTarget/$(1).done -gb_CliAssemblyTarget_get_assembly_target = $(WORKDIR)/CliAssemblyTarget/$(1)$(gb_CliAssemblyTarget_POLICYEXT) gb_CliConfigTarget_get_target = $(WORKDIR)/CliConfigTarget/$(1).config -gb_CliLibraryTarget_get_target = $(WORKDIR)/CliLibraryTarget/$(1)$(gb_CliLibraryTarget_EXT) -gb_CliNativeLibraryTarget_get_external_target = $(WORKDIR)/CliNativeLibraryTarget/$(1).external -gb_CliNativeLibraryTarget_get_target = $(WORKDIR)/CliNativeLibraryTarget/$(1)$(gb_CliNativeLibraryTarget_EXT) -gb_CliUnoApiTarget_get_target = $(WORKDIR)/CliUnoApiTarget/$(1)$(gb_CliUnoApiTarget_EXT) +gb_CliCSharpTarget_get_target = $(WORKDIR)/CliCSharpTarget/$(1).dll +gb_CliLibrary_get_target = $(WORKDIR)/CliLibrary/$(1).done +gb_CliPolicyTarget_get_target = $(WORKDIR)/CliPolicyTarget/$(1).done +gb_CliPolicyTarget_get_assembly_target = $(WORKDIR)/CliPolicyTarget/$(1).dll +gb_CliSignTarget_get_external_target = $(WORKDIR)/CliSignTarget/$(1).external +gb_CliSignTarget_get_target = $(WORKDIR)/CliSignTarget/$(1).dll +gb_CliUnoApi_get_target = $(WORKDIR)/CliUnoApi/$(1).done +gb_CliUnoApiTarget_get_target = $(WORKDIR)/CliUnoApiTarget/$(1).dll gb_ComponentTarget_get_target = $(WORKDIR)/ComponentTarget/$(1).component gb_ComponentsTarget_get_target = $(WORKDIR)/ComponentsTarget/$(1).components gb_Configuration_get_preparation_target = $(WORKDIR)/Configuration/$(1).prepared @@ -226,8 +227,11 @@ $(eval $(call gb_Helper_make_clean_targets,\ CliAssembly \ CliAssemblyTarget \ CliConfigTarget \ - CliLibraryTarget \ - CliNativeLibraryTarget \ + CliCSharpTarget \ + CliLibrary \ + CliPolicyTarget \ + CliSignTarget \ + CliUnoApi \ CliUnoApiTarget \ ComponentTarget \ ComponentsTarget \ @@ -280,9 +284,6 @@ $(eval $(call gb_Helper_make_clean_targets,\ )) $(eval $(call gb_Helper_make_outdir_clean_targets,\ - CliLibrary \ - CliNativeLibrary \ - CliUnoApi \ Dictionary \ Executable \ Extension \ @@ -337,6 +338,7 @@ gb_StaticLibrary_get_linktargetname = StaticLibrary/$(call gb_StaticLibrary_get_ gb_Executable_BINDIR = $(WORKDIR)/LinkTarget/Executable gb_Library_OUTDIRLOCATION = $(OUTDIR)/lib gb_Library_DLLDIR = $(WORKDIR)/LinkTarget/Library +gb_CliLibrary_DLLDIR = $(WORKDIR)/LinkTarget/CliLibrary gb_CppunitTest_DLLDIR = $(WORKDIR)/LinkTarget/CppunitTest gb_StaticLibrary_OUTDIRLOCATION = $(OUTDIR)/lib diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk index 521d4bd38e57..33fcf69c6a33 100644 --- a/solenv/gbuild/gbuild.mk +++ b/solenv/gbuild/gbuild.mk @@ -341,9 +341,9 @@ include $(foreach class, \ UnoApiMerge \ UnpackedTarball \ InternalUnoApi \ + CliAssemblyTarget \ CliAssembly \ CliLibrary \ - CliNativeLibrary \ CliUnoApi \ Zip \ AllLangZip \ diff --git a/solenv/gbuild/platform/IOS_ARM_GCC.mk b/solenv/gbuild/platform/IOS_ARM_GCC.mk index 9f2f54eef55b..078b20fdc4d3 100644 --- a/solenv/gbuild/platform/IOS_ARM_GCC.mk +++ b/solenv/gbuild/platform/IOS_ARM_GCC.mk @@ -298,11 +298,6 @@ gb_ScpConvertTarget_ScpConvertTarget_platform := gb_InstallScript_EXT := .ins -# CliAssemblyTarget class - -gb_CliAssemblyTarget_POLICYEXT := -gb_CliAssemblyTarget_get_dll := - # ExtensionTarget class gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE @@ -319,6 +314,26 @@ else gb_UnoApiHeadersTarget_select_variant = $(2) endif +# CliLibrary class + +gb_CliLibrary_LIBS := + +gb_CliLibrary_CliLibrary_platform := + +gb_CliLibrary_get_dll := + +gb_CliLibrary_add_delayload_dll := + +gb_CliLibrary_set_link_keyfile := + +# CliCSharpTarget class + +gb_CliCSharpTarget__command := + +# CliPolicyTarget class + +gb_CliPolicyTarget__command := + # 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 ae1e7857b0c6..2a92621cfa40 100644 --- a/solenv/gbuild/platform/WNT_INTEL_GCC.mk +++ b/solenv/gbuild/platform/WNT_INTEL_GCC.mk @@ -403,11 +403,6 @@ endef gb_InstallScript_EXT := .inf -# CliAssemblyTarget class - -gb_CliAssemblyTarget_POLICYEXT := -gb_CliAssemblyTarget_get_dll := - # ExtensionTarget class gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/license.txt @@ -424,6 +419,26 @@ else gb_UnoApiHeadersTarget_select_variant = $(2) endif +# CliLibrary class + +gb_CliLibrary_LIBS := + +gb_CliLibrary_CliLibrary_platform := + +gb_CliLibrary_get_dll := + +gb_CliLibrary_add_delayload_dll := + +gb_CliLibrary_set_link_keyfile := + +# CliCSharpTarget class + +gb_CliCSharpTarget__command := + +# CliPolicyTarget class + +gb_CliPolicyTarget__command := + # 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 0075db0329a9..809d5a24d65a 100644 --- a/solenv/gbuild/platform/WNT_INTEL_MSC.mk +++ b/solenv/gbuild/platform/WNT_INTEL_MSC.mk @@ -355,6 +355,7 @@ $(call gb_Helper_abbreviate_dirs,\ $(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \ $(if $(filter StaticLibrary,$(TARGETTYPE)),$(gb_StaticLibrary_TARGETTYPEFLAGS)) \ $(if $(filter Executable,$(TARGETTYPE)),$(gb_Executable_TARGETTYPEFLAGS)) \ + $(if $(filter CliLibrary,$(TARGETTYPE)),$(gb_CliLibrary_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 \ @@ -437,13 +438,6 @@ gb_Library_DLLFILENAMES :=\ $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(lib)$(gb_Library_UNOVEREXT)) \ $(foreach lib,$(gb_Library_EXTENSIONLIBS),$(lib):$(lib)$(gb_Library_UNOEXT)) \ -# An assembly is a special kind of library for CLI -define gb_Library_Assembly -$(call gb_Library_Library,$(1)) -$(call gb_LinkTarget_get_target,$(call gb_Library_get_linktargetname,$(1))) : NATIVERES := - -endef - define gb_Library_Library_platform $(call gb_LinkTarget_set_dlltarget,$(2),$(3)) @@ -705,11 +699,6 @@ endef gb_InstallScript_EXT := .inf -# CliAssemblyTarget class - -gb_CliAssemblyTarget_POLICYEXT := $(gb_Library_DLLEXT) -gb_CliAssemblyTarget_get_dll = $(OUTDIR)/bin/$(1)$(gb_CliAssemblyTarget_POLICYEXT) - # ExtensionTarget class gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/license.txt @@ -726,6 +715,104 @@ else gb_UnoApiHeadersTarget_select_variant = $(2) endif +# CliLibrary class + +gb_CliLibrary_LIBS := \ + advapi32 \ + delayimp \ + mscoree \ + $(if $(USE_DEBUG_RUNTIME)\ + ,msvcmrtd \ + ,msvcmrt \ + ) + +define gb_CliLibrary_CliLibrary_platform +$(call gb_LinkTarget_set_dlltarget,$(2),$(3)) + +# When compiling for CLR, disable "warning C4339: use of undefined type detected +# in CLR meta-data - use of this type may lead to a runtime exception": +$(call gb_LinkTarget_add_cxxflags,$(2),\ + -AI $(gb_Helper_OUTDIRLIBDIR) \ + -clr \ + -wd4339 \ +) + +$(call gb_LinkTarget_add_ldflags,$(2),\ + -ignore:4248 \ +) + +endef + +gb_CliLibrary_get_dll = $(gb_CliLibrary_DLLDIR)/$(call gb_CliLibrary_get_linktargetname,$(1)).dll + + +define gb_CliLibrary_add_delayload_dll +$(call gb_LinkTarget_add_ldflags,$(call gb_CliLibrary_get_linktargetname,$(1)),\ + -delayload:$(call gb_Library_get_dllname,$(2)) \ +) + +endef + +define gb_CliLibrary_set_link_keyfile +$(call gb_LinkTarget_add_ldflags,$(call gb_CliLibrary_get_linktargetname,$(1)),\ + -keyfile:$(call gb_Helper_windows_path,$(2)) \ +) + +endef + +# CliCSharpTarget class + +gb_CliCSharpTarget_CSCFLAGS := \ + -noconfig \ + -nologo \ + +gb_CliCSharpTarget_CSCFLAGS_DEBUG := \ + -checked+ \ + -define:DEBUG \ + -define:TRACE \ + +ifeq ($(strip $(debug)),) +ifeq ($(strip $(PRODUCT)),) +gb_CliCSharpTarget__get_csflags = $(gb_CliCSharpTarget_CSCFLAGS) $(gb_CliCSharpTarget_CSCFLAGS_DEBUG) +else +gb_CliCSharpTarget__get_csflags = $(gb_CliCSharpTarget_CSCFLAGS) -o +endif +else +gb_CliCSharpTarget__get_csflags = $(gb_CliCSharpTarget_CSCFLAGS) $(gb_CliCSharpTarget_CSCFLAGS_DEBUG) -debug+ +endif + +define gb_CliCSharpTarget__command +$(call gb_Output_announce,$(2),$(true),CSC,3) +$(call gb_Helper_abbreviate_dirs,\ + csc $(call gb_Helper_windows_path, \ + $(call gb_CliCSharpTarget__get_csflags) \ + $(CLI_CSCFLAGS) \ + -target:library \ + -out:$(1) \ + -keyfile:$(call gb_Helper_windows_path,$(CLI_KEYFILE)) \ + -reference:System.dll \ + $(foreach assembly,$(CLI_ASSEMBLIES),-reference:$(assembly)) \ + $(CLI_SOURCES) \ + ) \ +) +endef + +# CliPolicyTarget class + +define gb_CliPolicyTarget__command +$(call gb_Output_announce,$(2),$(true),AL ,2) +$(call gb_Helper_abbreviate_dirs,\ + al \ + -nologo \ + -out:$(CLI_ASSEMBLY_OUTFILE) \ + -version:$(CLI_ASSEMBLY_VERSION) \ + -keyfile:$(call gb_Helper_windows_path,$(CLI_ASSEMBLY_KEYFILE)) \ + -link:$(CLI_ASSEMBLY_CONFIGFILE) \ + $(if $(CLI_ASSEMBLY_PLATFORM),-platform:$(CLI_ASSEMBLY_PLATFORM)) && \ + touch $(1) \ +) +endef + # 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/macosx.mk b/solenv/gbuild/platform/macosx.mk index 59f6c5639e7b..4fcdee6a1337 100644 --- a/solenv/gbuild/platform/macosx.mk +++ b/solenv/gbuild/platform/macosx.mk @@ -389,11 +389,6 @@ gb_ScpConvertTarget_ScpConvertTarget_platform := gb_InstallScript_EXT := .ins -# CliAssemblyTarget class - -gb_CliAssemblyTarget_POLICYEXT := -gb_CliAssemblyTarget_get_dll := - # ExtensionTarget class gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE @@ -414,6 +409,26 @@ else gb_UnoApiHeadersTarget_select_variant = $(2) endif +# CliLibrary class + +gb_CliLibrary_LIBS := + +gb_CliLibrary_CliLibrary_platform := + +gb_CliLibrary_get_dll := + +gb_CliLibrary_add_delayload_dll := + +gb_CliLibrary_set_link_keyfile := + +# CliCSharpTarget class + +gb_CliCSharpTarget__command := + +# CliPolicyTarget class + +gb_CliPolicyTarget__command := + # Python gb_PYTHON_PRECOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR)/lib diff --git a/solenv/gbuild/platform/solaris.mk b/solenv/gbuild/platform/solaris.mk index 31e8e05b7a19..92a33091fe0c 100644 --- a/solenv/gbuild/platform/solaris.mk +++ b/solenv/gbuild/platform/solaris.mk @@ -387,11 +387,6 @@ gb_ScpConvertTarget_ScpConvertTarget_platform := gb_InstallScript_EXT := .ins -# CliAssemblyTarget class - -gb_CliAssemblyTarget_POLICYEXT := -gb_CliAssemblyTarget_get_dll := - # ExtensionTarget class gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE @@ -408,6 +403,26 @@ else gb_UnoApiHeadersTarget_select_variant = $(2) endif +# CliLibrary class + +gb_CliLibrary_LIBS := + +gb_CliLibrary_CliLibrary_platform := + +gb_CliLibrary_get_dll := + +gb_CliLibrary_add_delayload_dll := + +gb_CliLibrary_set_link_keyfile := + +# CliCSharpTarget class + +gb_CliCSharpTarget__command := + +# CliPolicyTarget class + +gb_CliPolicyTarget__command := + # 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 843ec1813fdf..158d73817101 100644 --- a/solenv/gbuild/platform/unxgcc.mk +++ b/solenv/gbuild/platform/unxgcc.mk @@ -391,11 +391,6 @@ gb_ScpConvertTarget_ScpConvertTarget_platform := gb_InstallScript_EXT := .ins -# CliAssemblyTarget class - -gb_CliAssemblyTarget_POLICYEXT := -gb_CliAssemblyTarget_get_dll := - # ExtensionTarget class gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/LICENSE @@ -412,6 +407,26 @@ else gb_UnoApiHeadersTarget_select_variant = $(2) endif +# CliLibrary class + +gb_CliLibrary_LIBS := + +gb_CliLibrary_CliLibrary_platform := + +gb_CliLibrary_get_dll := + +gb_CliLibrary_add_delayload_dll := + +gb_CliLibrary_set_link_keyfile := + +# CliCSharpTarget class + +gb_CliCSharpTarget__command := + +# CliPolicyTarget class + +gb_CliPolicyTarget__command := + # Python gb_PYTHON_PRECOMMAND := $(gb_Helper_set_ld_path) PYTHONHOME=$(OUTDIR)/lib/python PYTHONPATH=$(OUTDIR)/lib/python:$(OUTDIR)/lib/python/lib-dynload -- cgit