summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2012-11-04 10:21:13 +0100
committerDavid Tardon <dtardon@redhat.com>2012-11-11 12:23:10 +0100
commit9275d91e0e61029bad82875485a620f254147a62 (patch)
treee9d29c3739eebe08c0888460e787b7befc6ee37d
parenttabs vs. spaces cleanup; and use QADEVOOO (diff)
downloadcore-feature/gbuild_cli.tar.gz
core-feature/gbuild_cli.zip
rework CLI support in gbuild feature/gbuild_cli
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
-rw-r--r--cli_ure/CliAssembly_cli_basetypes.mk (renamed from cli_ure/CliLibrary_cli_basetypes.mk)12
-rw-r--r--cli_ure/CliAssembly_cli_ure.mk (renamed from cli_ure/CliLibrary_cli_ure.mk)14
-rw-r--r--cli_ure/CliLibrary_cli_cppuhelper.mk48
-rw-r--r--cli_ure/CliNativeLibrary_cli_cppuhelper.mk27
-rw-r--r--cli_ure/Library_cli_cppuhelper_native.mk67
-rw-r--r--cli_ure/Module_cli_ure.mk6
-rw-r--r--solenv/gbuild/CliAssembly.mk276
-rw-r--r--solenv/gbuild/CliAssemblyTarget.mk269
-rw-r--r--solenv/gbuild/CliLibrary.mk266
-rw-r--r--solenv/gbuild/CliNativeLibrary.mk6
-rw-r--r--solenv/gbuild/CliUnoApi.mk61
-rw-r--r--solenv/gbuild/TargetLocations.mk28
-rw-r--r--solenv/gbuild/gbuild.mk2
-rw-r--r--solenv/gbuild/platform/IOS_ARM_GCC.mk25
-rw-r--r--solenv/gbuild/platform/WNT_INTEL_GCC.mk25
-rw-r--r--solenv/gbuild/platform/WNT_INTEL_MSC.mk111
-rw-r--r--solenv/gbuild/platform/macosx.mk25
-rw-r--r--solenv/gbuild/platform/solaris.mk25
-rw-r--r--solenv/gbuild/platform/unxgcc.mk25
19 files changed, 910 insertions, 408 deletions
diff --git a/cli_ure/CliLibrary_cli_basetypes.mk b/cli_ure/CliAssembly_cli_basetypes.mk
index 2d7b93737823..9337870db6a0 100644
--- a/cli_ure/CliLibrary_cli_basetypes.mk
+++ b/cli_ure/CliAssembly_cli_basetypes.mk
@@ -9,15 +9,15 @@
include $(SRCDIR)/cli_ure/version/version.txt
-$(eval $(call gb_CliLibrary_CliLibrary,cli_basetypes))
+$(eval $(call gb_CliAssembly_CliAssembly,cli_basetypes))
-$(eval $(call gb_CliLibrary_set_configfile,cli_basetypes,cli_ure/source/basetypes/cli_basetypes_config))
+$(eval $(call gb_CliAssembly_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_CliAssembly_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_CliAssembly_set_policy,cli_basetypes,$(CLI_BASETYPES_POLICY_ASSEMBLY),$(CLI_BASETYPES_POLICY_VERSION)))
-$(eval $(call gb_CliLibrary_add_csfiles,cli_basetypes,\
+$(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 \
@@ -28,7 +28,7 @@ $(eval $(call gb_CliLibrary_add_csfiles,cli_basetypes,\
cli_ure/source/basetypes/uno/TypeParametersAttribute \
))
-$(eval $(call gb_CliLibrary_add_generated_csfiles,cli_basetypes,\
+$(eval $(call gb_CliAssembly_add_generated_csfiles,cli_basetypes,\
CustomTarget/cli_ure/source/basetypes/assembly \
))
diff --git a/cli_ure/CliLibrary_cli_ure.mk b/cli_ure/CliAssembly_cli_ure.mk
index c169d3c22829..973d29c683fa 100644
--- a/cli_ure/CliLibrary_cli_ure.mk
+++ b/cli_ure/CliAssembly_cli_ure.mk
@@ -9,26 +9,26 @@
include $(SRCDIR)/cli_ure/version/version.txt
-$(eval $(call gb_CliLibrary_CliLibrary,cli_ure))
+$(eval $(call gb_CliAssembly_CliAssembly,cli_ure))
-$(eval $(call gb_CliLibrary_set_configfile,cli_ure,cli_ure/source/ure/cli_ure_config))
+$(eval $(call gb_CliAssembly_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_CliAssembly_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_CliAssembly_set_policy,cli_ure,$(CLI_URE_POLICY_ASSEMBLY),$(CLI_URE_POLICY_VERSION)))
-$(eval $(call gb_CliLibrary_use_assemblies,cli_ure,\
+$(eval $(call gb_CliAssembly_use_assemblies,cli_ure,\
cli_uretypes \
))
-$(eval $(call gb_CliLibrary_add_csfiles,cli_ure,\
+$(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_CliLibrary_add_generated_csfiles,cli_ure,\
+$(eval $(call gb_CliAssembly_add_generated_csfiles,cli_ure,\
CustomTarget/cli_ure/source/ure/assembly \
))
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/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