summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Repository.mk5
-rw-r--r--solenv/gbuild/CliAssembly.mk178
-rw-r--r--solenv/gbuild/CliLibrary.mk201
-rw-r--r--solenv/gbuild/CliNativeLibrary.mk139
-rw-r--r--solenv/gbuild/CliUnoApi.mk166
-rw-r--r--solenv/gbuild/TargetLocations.mk18
-rw-r--r--solenv/gbuild/gbuild.mk4
-rw-r--r--solenv/gbuild/platform/IOS_ARM_GCC.mk5
-rw-r--r--solenv/gbuild/platform/WNT_INTEL_GCC.mk5
-rw-r--r--solenv/gbuild/platform/WNT_INTEL_MSC.mk9
-rw-r--r--solenv/gbuild/platform/macosx.mk5
-rw-r--r--solenv/gbuild/platform/solaris.mk5
-rw-r--r--solenv/gbuild/platform/unxgcc.mk5
13 files changed, 744 insertions, 1 deletions
diff --git a/Repository.mk b/Repository.mk
index d2ed49fb67ff..590cc8a384f8 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -78,8 +78,9 @@ ifneq ($(OS),IOS)
$(eval $(call gb_Helper_register_executables,SDK, \
autodoc \
- javamaker \
+ climaker \
cppumaker \
+ javamaker \
regcompare \
uno-skeletonmaker \
))
@@ -400,6 +401,8 @@ endif
$(eval $(call gb_Helper_register_libraries,PLAINLIBS_URE, \
affine_uno \
+ cli_cppuhelper_native \
+ cli_uno \
jpipe \
juh \
juhx \
diff --git a/solenv/gbuild/CliAssembly.mk b/solenv/gbuild/CliAssembly.mk
new file mode 100644
index 000000000000..d068fa55eec3
--- /dev/null
+++ b/solenv/gbuild/CliAssembly.mk
@@ -0,0 +1,178 @@
+# -*- 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
+
+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)) : $$(CLI_CONFIG_VERSIONFILE)
+$(call gb_CliConfigTarget_get_target,$(1)) :| $(dir $(call gb_CliConfigTarget_get_target,$(1))).dir
+
+endef
+
+# CliAssemblyTarget class
+
+# platform:
+# CliAssemblyTarget_POLICYEXT
+# CliAssemblyTarget_get_dll
+
+gb_CliAssemblyTarget_KEYFILE_DEFAULT := $(SRCDIR)/cli_ure/source/cliuno.snk
+
+define gb_CliAssemblyTarget__command
+$(call gb_Output_announce,$(2),$(true),AL ,2)
+$(call gb_Helper_abbreviate_dirs,\
+ al \
+ -out:$(1) \
+ -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)) \
+)
+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))
+ $(call gb_CliAssemblyTarget__command,$@,$*,$<)
+
+.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,$*) \
+ )
+
+# 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_PLATFORM :=
+$(call gb_CliAssemblyTarget_get_target,$(1)) : CLI_ASSEMBLY_VERSION :=
+
+$(call gb_CliAssemblyTarget_get_target,$(1)) : $$(CLI_ASSEMBLY_KEYFILE)
+$(call gb_CliAssemblyTarget_get_target,$(1)) :| $(dir $(call gb_CliAssemblyTarget_get_target,$(1))).dir
+
+endef
+
+define gb_CliAssemblyTarget_set_configfile
+$(call gb_CliAssemblyTarget_get_target,$(1)) : CLI_ASSEMBLY_CONFIGFILE := $(2)
+$(call gb_CliAssemblyTarget_get_target,$(1)) : $(2)
+
+endef
+
+define gb_CliAssemblyTarget_set_keyfile
+$(call gb_CliAssemblyTarget_get_target,$(1)) : CLI_ASSEMBLY_KEYFILE := $(2)
+
+endef
+
+define gb_CliAssemblyTarget_set_platform
+$(call gb_CliAssemblyTarget_get_target,$(1)) : CLI_ASSEMBLY_PLATFORM := $(2)
+
+endef
+
+define gb_CliAssemblyTarget_set_version
+$(call gb_CliAssemblyTarget_get_target,$(1)) : CLI_ASSEMBLY_VERSION := $(2)
+
+endef
+
+# CliAssembly class
+
+gb_CliAssembly_KEYFILE_DEFAULT := $(gb_CliAssemblyTarget_KEYFILE_DEFAULT)
+gb_CliAssembly_POLICYEXT := $(gb_CliAssemblyTarget_POLICYEXT)
+
+gb_CliAssembly_get_dll = $(call gb_CliAssemblyTarget_get_dll,$(1))
+
+$(call gb_CliAssembly_get_target,%) :
+ $(call gb_Output_announce,$*,$(true),CLA,3)
+ mkdir -p $(dir $@) && 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,$*)
+
+define gb_CliAssembly_CliAssembly
+$(call gb_CliAssemblyTarget_CliAssemblyTarget,$(1))
+$(call gb_Package_Package_internal,$(1)_assembly,$(WORKDIR))
+
+$(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_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)
+
+endef
+
+define gb_CliAssembly__set_configfile_impl
+$(call gb_CliAssemblyTarget_set_configfile,$(1),$(2))
+$(call gb_Package_add_file,$(1)_assembly,bin/$(notdir $(2)),$(subst $(WORKDIR)/,,$(2)))
+
+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)))
+
+endef
+
+define gb_CliAssembly_set_configfile
+$(call gb_CliAssembly__set_configfile,$(1),$(patsubst %_config,%,$(2)),$(SRCDIR)/$(2))
+
+endef
+
+define gb_CliAssembly_set_keyfile
+$(call gb_CliAssemblyTarget_set_keyfile,$(1),$(2))
+
+endef
+
+define gb_CliAssembly_set_platform
+$(call gb_CliAssemblyTarget_set_platform,$(1),$(2))
+
+endef
+
+define gb_CliAssembly_set_policy
+$(call gb_CliAssemblyTarget_set_version,$(1),$(3))
+$(call gb_Package_add_file,$(1)_assembly,bin/$(2)$(gb_CliAssembly_POLICYEXT),$(subst $(WORKDIR)/,,$(call gb_CliAssemblyTarget_get_target,$(1))))
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/CliLibrary.mk b/solenv/gbuild/CliLibrary.mk
new file mode 100644
index 000000000000..36352b702043
--- /dev/null
+++ b/solenv/gbuild/CliLibrary.mk
@@ -0,0 +1,201 @@
+# -*- 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/.
+#
+
+# CliLibraryTarget class
+
+gb_CliLibraryTarget_EXT := $(gb_CliAssembly_POLICYEXT)
+
+gb_CliLibraryTarget_CSCFLAGS := \
+ -noconfig \
+ -warnaserror+
+
+gb_CliLibraryTarget_CSCFLAGS_DEBUG := \
+ -checked+ \
+ -define:DEBUG \
+ -define:TRACE \
+
+define gb_CliLibraryTarget__get_csflags
+ifeq ($(strip $(debug)),)
+ifeq ($(strip $(PRODUCT)),)
+$(gb_CliLibraryTarget_CSCFLAGS) $(gb_CliLibraryTarget_CSCFLAGS_DEBUG)
+else
+$(gb_CliLibraryTarget_CSCFLAGS) -o
+endif
+else
+$(gb_CliLibraryTarget_CSCFLAGS) $(gb_CliLibraryTarget_CSCFLAGS_DEBUG) -debug+
+endif
+endef
+
+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)
+$(call gb_Helper_abbreviate_dirs,\
+ csc \
+ $(call gb_CliLibraryTarget__get_csflags) \
+ $(CLI_CSCFLAGS) \
+ -target:library \
+ -out:$(1) \
+ -reference:System.dll \
+ $(foreach assembly,$(CLI_ASSEMBLIES),-reference:$(assembly).dll) \
+ $(CLI_SOURCES) \
+)
+endef
+
+$(dir $(call gb_CliLibraryTarget_get_target,%)).dir :
+ $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
+
+$(dir $(call gb_CliLibraryTarget_get_target,%))%/.dir :
+ $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
+
+$(call gb_CliLibraryTarget_get_target,%) :
+ $(call gb_CliLibraryTarget__command,$@,$*,$<,$?,$^)
+
+.PHONY : $(call gb_CliLibraryTarget_get_clean_target,%)
+$(call gb_CliLibraryTarget_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),CSC,3)
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -f $(call gb_CliLibraryTarget_get_target,$*) \
+ )
+
+# Compiles one or more C# source files
+#
+# 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)) :| $(dir $(call gb_CliLibraryTarget_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))
+
+endef
+
+define gb_CliLibraryTarget_use_assemblies
+$(foreach assembly,$(2),$(call gb_CliLibraryTarget_use_assembly,$(1),$(assembly)))
+
+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))
+
+endef
+
+# Add source files to compile
+define gb_CliLibraryTarget_add_csfiles
+$(foreach csfile,$(2),$(call gb_CliLibraryTarget_add_csfile,$(1),$(csfile)))
+
+endef
+
+# 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))
+
+endef
+
+# Add generated source files to compile
+define gb_CliLibraryTarget_add_generated_csfiles
+$(foreach csfile,$(2),$(call gb_CliLibraryTarget_add_generated_csfile,$(1),$(csfile)))
+
+endef
+
+# Add flags used for compilation
+define gb_CliLibraryTarget_add_csflags
+$(call gb_CliLibraryTarget_get_target,$(1)) : CLI_CSCFLAGS += $(2)
+
+endef
+
+# CliLibrary class
+
+gb_CliLibrary_EXT := $(gb_CliLibraryTarget_EXT)
+
+# Compiles one or more C# source files
+#
+# gb_CliLibrary_CliLibrary target
+define gb_CliLibrary_CliLibrary
+$(call gb_CliLibraryTarget_CliLibraryTarget,$(1))
+$(call gb_CliAssembly_CliAssembly,$(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_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))
+
+$$(eval $$(call gb_Module_register_target,$(call gb_CliLibrary_get_target,$(1)),$(call gb_CliLibrary_get_clean_target,$(1))))
+
+endef
+
+define gb_CliLibrary_set_configfile
+$(call gb_CliAssembly_set_configfile,$(1),$(2))
+
+endef
+
+define gb_CliLibrary_set_keyfile
+$(call gb_CliAssembly_set_keyfile,$(1),$(2))
+
+endef
+
+define gb_CliLibrary_set_policy
+$(call gb_CliAssembly_set_policy,$(1),$(2),$(3))
+
+endef
+
+define gb_CliLibrary_use_assembly
+$(call gb_CliLibraryTarget_use_assembly,$(1),$(2))
+
+endef
+
+define gb_CliLibrary_use_assemblies
+$(call gb_CliLibraryTarget_use_assemblies,$(1),$(2))
+
+endef
+
+# Add a source file to compile
+define gb_CliLibrary_add_csfile
+$(call gb_CliLibraryTarget_add_csfile,$(1),$(2))
+
+endef
+
+# Add source files to compile
+define gb_CliLibrary_add_csfiles
+$(call gb_CliLibraryTarget_add_csfiles,$(1),$(2))
+
+endef
+
+# Add a generated source file to compile
+define gb_CliLibrary_add_generated_csfile
+$(call gb_CliLibraryTarget_add_generated_csfile,$(1),$(2))
+
+endef
+
+# Add generated source files to compile
+define gb_CliLibrary_add_generated_csfiles
+$(call gb_CliLibraryTarget_add_generated_csfiles,$(1),$(2))
+
+endef
+
+# Add flags used for compilation
+define gb_CliLibrary_add_csflags
+$(call gb_CliLibraryTarget_add_csflags,$(1),$(2))
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/CliNativeLibrary.mk b/solenv/gbuild/CliNativeLibrary.mk
new file mode 100644
index 000000000000..2324211b15ac
--- /dev/null
+++ b/solenv/gbuild/CliNativeLibrary.mk
@@ -0,0 +1,139 @@
+# -*- 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/.
+#
+
+# CliNativeLibraryTarget class
+
+gb_CliNativeLibraryTarget_EXT := $(gb_CliAssembly_POLICYEXT)
+
+gb_CliNativeLibraryTarget__get_library = $(call gb_CliAssembly_get_dll,$(1))
+
+define gb_CliNativeLibraryTarget__command
+$(call gb_Output_announce,$(1),$(true),SN ,4)
+$(call gb_Helper_abbreviate_dirs,\
+ $(GNUCOPY) $(CLI_NATIVE_LIBRARY) $(1).tmp && \
+ sn -R $(1).tmp $(CLI_NATIVE_KEYFILE) && \
+ mv $(1).tmp $(1) \
+)
+endef
+
+$(dir $(call gb_CliNativeLibraryTarget_get_target,%)).dir :
+ $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
+
+$(dir $(call gb_CliNativeLibraryTarget_get_target,%))%/.dir :
+ $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
+
+$(call gb_CliNativeLibraryTarget_get_target,%) :
+ $(call gb_CliNativeLibraryTarget__command,$@,$*,$<)
+
+.PHONY : $(call gb_CliNativeLibraryTarget_get_clean_target,%)
+$(call gb_CliNativeLibraryTarget_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),SN ,4)
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -r $(call gb_CliNativeLibraryTarget_get_target,$*) \
+ )
+
+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 :=
+$(call gb_CliNativeLibraryTarget_get_target,$(1)) : CLI_NATIVE_LIBRARY :=
+
+$(call gb_CliNativeLibraryTarget_get_target,$(1)) :| $(dir $(call gb_CliNativeLibraryTarget_get_target,$(1))).dir
+
+endef
+
+# TODO gb_Library_get_target might be sufficient here. I do not know if
+# #using <assembly.dll> actually does anything at compile time, or if it is
+# only needed at link time.
+define gb_CliNativeLibraryTarget_wrap_library
+$(call gb_CliNativeLibraryTarget_get_target,$(1)) : CLI_NATIVE_LIBRARY := $(call gb_CliNativeLibraryTarget__get_library,$(2))
+$(call gb_CliNativeLibraryTarget_get_target,$(1)) : $(call gb_Library_get_target,$(2))
+$(call gb_Library_get_external_headers_target,$(2)) : $$(CLI_NATIVE_ASSEMBLIES)
+
+endef
+
+define gb_CliNativeLibraryTarget_set_keyfile
+$(call gb_CliNativeLibraryTarget_get_target,$(1)) : CLI_NATIVE_KEYFILE := $(2)
+$(call gb_CliNativeLibraryTarget_get_target,$(1)) : $(2)
+
+endef
+
+define gb_CliNativeLibraryTarget_use_assembly
+$(call gb_CliNativeLibraryTarget_get_target,$(1)) : CLI_NATIVE_ASSEMBLIES += $(call gb_CliLibrary_get_target,$(2))
+
+endef
+
+define gb_CliNativeLibraryTarget_use_assemblies
+$(foreach assembly,$(2),$(call gb_CliNativeLibraryTarget_use_assembly,$(1),$(assembly)))
+
+endef
+
+# CliNativeLibrary class
+
+gb_CliNativeLibrary_PLATFORM_DEFAULT := x86
+gb_CliNativeLibrary_EXT := $(gb_CliNativeLibraryTarget_EXT)
+
+# Create a CLI library for a native library
+#
+# CliNativeLibrary target
+define gb_CliNativeLibrary_CliNativeLibrary
+$(call gb_CliNativeLibraryTarget_CliNativeLibraryTarget,$(1))
+$(call gb_CliAssembly_CliAssembly,$(1))
+
+$(call gb_CliNativeLibraryTarget_set_keyfile,$(1),$(gb_CliAssembly_KEYFILE_DEFAULT))
+$(call gb_CliAssembly_set_platform,$(1),$(gb_CliNativeLibrary_PLATFORM_DEFAULT))
+
+$(call gb_CliNativeLibrary_get_target,$(1)) : $(call gb_CliNativeLibraryTarget_get_target,$(1))
+$(call gb_CliNativeLibrary_get_target,$(1)) :| $(call gb_CliAssembly_get_target,$(1))
+$(call gb_CliNativeLibrary_get_target,$(1)) :| $(dir $(call gb_CliNativeLibrary_get_target,$(1))).dir
+$(call gb_CliNativeLibrary_get_clean_target,$(1)) : $(call gb_CliNativeLibraryTarget_get_clean_target,$(1))
+$(call gb_CliNativeLibrary_get_clean_target,$(1)) : $(call gb_CliAssembly_get_clean_target,$(1))
+
+$(call gb_Deliver_add_deliverable,$(call gb_CliNativeLibrary_get_target,$(1)),$(call gb_CliNativeLibraryTarget_get_target,$(1)),$(1))
+
+$$(eval $$(call gb_Module_register_target,$(call gb_CliNativeLibrary_get_target,$(1)),$(call gb_CliNativeLibrary_get_clean_target,$(1))))
+
+endef
+
+define gb_CliNativeLibrary_set_configfile
+$(call gb_CliAssembly_set_configfile,$(1),$(2))
+
+endef
+
+define gb_CliNativeLibrary_set_keyfile
+$(call gb_CliNativeLibraryTarget_set_keyfile,$(1),$(2))
+$(call gb_CliAssembly_set_keyfile,$(1),$(2))
+
+endef
+
+define gb_CliNativeLibrary_set_platform
+$(call gb_CliAssembly_set_platform,$(1),$(2))
+
+endef
+
+define gb_CliNativeLibrary_set_policy
+$(call gb_CliAssembly_set_policy,$(1),$(2),$(3))
+
+endef
+
+define gb_CliNativeLibrary_wrap_library
+$(call gb_CliNativeLibraryTarget_wrap_library,$(1),$(2))
+
+endef
+
+define gb_CliNativeLibrary_use_assembly
+$(call gb_CliNativeLibraryTarget_use_assembly,$(1),$(2))
+
+endef
+
+define gb_CliNativeLibrary_use_assemblies
+$(call gb_CliNativeLibraryTarget_use_assemblies,$(1),$(2))
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/CliUnoApi.mk b/solenv/gbuild/CliUnoApi.mk
new file mode 100644
index 000000000000..6be9f992fb7c
--- /dev/null
+++ b/solenv/gbuild/CliUnoApi.mk
@@ -0,0 +1,166 @@
+# -*- 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/.
+#
+
+# CliUnoApiTarget class
+
+gb_CliUnoApiTarget_EXT := $(gb_CliAssembly_POLICYEXT)
+
+gb_CliUnoApiTarget_TARGET := $(call gb_Executable_get_target_for_build,climaker)
+gb_CliUnoApiTarget_COMMAND := $(gb_Helper_set_ld_path) $(gb_CliUnoApiTarget_TARGET)
+
+define gb_CliUnoApiTarget__command
+$(call gb_Output_announce,$(2),$(true),CLI,4)
+$(call gb_Helper_abbreviate_dirs,\
+ $(gb_CliUnoApiTarget_COMMAND) \
+ --out $(1) \
+ --assembly-company "LibreOffice" \
+ --assembly-description "This assembly contains metadata for the LibreOffice API." \
+ --assembly-version $(CLI_UNOAPI_VERSION) \
+ --keyfile $(CLI_UNOAPI_KEYFILE) \
+ $(foreach api,$(CLI_UNOAPI_DEPS),-X $(api)) \
+ $(foreach assembly,$(CLI_UNOAPI_ASSEMBLIES),-r $(assembly)) \
+ $(CLI_UNOAPI_API) \
+)
+endef
+
+$(dir $(call gb_CliUnoApiTarget_get_target,%)).dir :
+ $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
+
+$(dir $(call gb_CliUnoApiTarget_get_target,%))%/.dir :
+ $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
+
+$(call gb_CliUnoApiTarget_get_target,%) :
+ $(call gb_CliUnoApiTarget__command,$@,$*,$<)
+
+.PHONY : $(call gb_CliUnoApiTarget_get_clean_target,%)
+$(call gb_CliUnoApiTarget_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),CLI,4)
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -f $(call gb_CliUnoApiTarget_get_target,$*) \
+ )
+
+define gb_CliUnoApiTarget_CliUnoApiTarget
+$(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_API :=
+$(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_ASSEMBLIES :=
+$(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_DEPS :=
+$(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_KEYFILE :=
+$(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_VERSION :=
+
+$(call gb_CliUnoApiTarget_get_target,$(1)) : $(gb_CliUnoApiTarget_TARGET)
+$(call gb_CliUnoApiTarget_get_target,$(1)) :| $(dir $(call gb_CliUnoApiTarget_get_target,$(1))).dir
+
+endef
+
+define gb_CliUnoApiTarget_set_keyfile
+$(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_KEYFILE := $(2)
+$(call gb_CliUnoApiTarget_get_target,$(1)) : $(2)
+
+endef
+
+define gb_CliUnoApiTarget_set_version
+$(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_VERSION := $(2)
+
+endef
+
+define gb_CliUnoApiTarget_wrap_api
+$(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_API := $(call gb_UnoApi_get_target,$(2))
+$(call gb_CliUnoApiTarget_get_target,$(1)) : $(call gb_UnoApi_get_target,$(2))
+
+endef
+
+define gb_CliUnoApiTarget__use_api
+$(call gb_CliUnoApiTarget_get_target,$(1)) : CLI_UNOAPI_DEPS += $(2)
+$(call gb_CliUnoApiTarget_get_target,$(1)) : $(2)
+
+endef
+
+define gb_CliUnoApiTarget_use_api
+$(foreach api,$(2),$(call gb_CliUnoApiTarget__use_api,$(1),$(call gb_UnoApi_get_target,$(api))))
+
+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))
+
+endef
+
+define gb_CliUnoApiTarget_use_assemblies
+$(foreach assembly,$(2),$(call gb_CliUnoApiTarget_use_assembly,$(1),$(assembly)))
+
+endef
+
+# CliUnoApi class
+
+gb_CliUnoApi_EXT := $(gb_CliUnoApiTarget_EXT)
+gb_CliUnoApi_KEYFILE_DEFAULT := $(gb_CliAssembly_KEYFILE_DEFAULT)
+
+# 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_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)) :| $(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))
+
+$$(eval $$(call gb_Module_register_target,$(call gb_CliUnoApiTarget_get_target,$(1)),$(call gb_CliUnoApiTarget_get_clean_target,$(1))))
+
+endef
+
+define gb_CliUnoApi_set_configfile
+$(call gb_CliAssembly_set_configfile,$(1),$(2))
+
+endef
+
+define gb_CliUnoApi_set_keyfile
+$(call gb_CliUnoApiTarget_set_keyfile,$(1),$(2))
+$(call gb_CliAssembly_set_keyfile,$(1),$(2))
+
+endef
+
+define gb_CliUnoApi_set_assembly_version
+$(call gb_CliUnoApiTarget_set_version,$(1),$(2))
+
+endef
+
+define gb_CliUnoApi_set_policy
+$(call gb_CliAssembly_set_policy,$(1),$(2),$(3))
+
+endef
+
+define gb_CliUnoApi_wrap_api
+$(call gb_CliUnoApiTarget_wrap_api,$(1),$(2))
+
+endef
+
+define gb_CliUnoApi_use_api
+$(call gb_CliUnoApiTarget_use_api,$(1),$(2))
+
+endef
+
+define gb_CliUnoApi_use_assembly
+$(call gb_CliUnoApiTarget_use_assembly,$(1),$(2))
+
+endef
+
+define gb_CliUnoApi_use_assemblies
+$(call gb_CliUnoApiTarget_use_assemblies,$(1),$(2))
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
index 2451e0720802..7a2240ec8106 100644
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -28,6 +28,9 @@
# 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_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)
@@ -79,6 +82,12 @@ gb_AllLangZip_get_target = $(WORKDIR)/AllLangZip/$(1)
gb_AsmObject_get_target = $(WORKDIR)/AsmObject/$(1).o
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)$(gb_CliAssemblyTarget_POLICYEXT)
+gb_CliConfigTarget_get_target = $(WORKDIR)/CliConfigTarget/$(1).config
+gb_CliLibraryTarget_get_target = $(WORKDIR)/CliLibraryTarget/$(1)$(gb_CliLibraryTarget_EXT)
+gb_CliNativeLibraryTarget_get_target = $(WORKDIR)/CliNativeLibraryTarget/$(1)$(gb_CliNativeLibraryTarget_EXT)
+gb_CliUnoApiTarget_get_target = $(WORKDIR)/CliUnoApiTarget/$(1)$(gb_CliUnoApiTarget_EXT)
gb_ComponentTarget_get_target = $(WORKDIR)/ComponentTarget/$(1).component
gb_ComponentsTarget_get_target = $(WORKDIR)/ComponentsTarget/$(1).components
gb_CppunitTest_get_target = $(WORKDIR)/CppunitTest/$(1).test
@@ -197,6 +206,12 @@ endef
$(eval $(call gb_Helper_make_clean_targets,\
AllLangResTarget \
AllLangZip \
+ CliAssembly \
+ CliAssemblyTarget \
+ CliConfigTarget \
+ CliLibraryTarget \
+ CliNativeLibraryTarget \
+ CliUnoApiTarget \
ComponentTarget \
ComponentsTarget \
ExtensionTarget \
@@ -244,6 +259,9 @@ $(eval $(call gb_Helper_make_clean_targets,\
))
$(eval $(call gb_Helper_make_outdir_clean_targets,\
+ CliLibrary \
+ CliNativeLibrary \
+ CliUnoApi \
Dictionary \
Executable \
Extension \
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
index 20ac7a0a0d9f..55442de5b329 100644
--- a/solenv/gbuild/gbuild.mk
+++ b/solenv/gbuild/gbuild.mk
@@ -328,6 +328,10 @@ include $(foreach class, \
UnoApiMerge \
UnpackedTarball \
InternalUnoApi \
+ CliAssembly \
+ CliLibrary \
+ CliNativeLibrary \
+ CliUnoApi \
Zip \
AllLangZip \
Configuration \
diff --git a/solenv/gbuild/platform/IOS_ARM_GCC.mk b/solenv/gbuild/platform/IOS_ARM_GCC.mk
index ebe64d124482..a1f0ba042a13 100644
--- a/solenv/gbuild/platform/IOS_ARM_GCC.mk
+++ b/solenv/gbuild/platform/IOS_ARM_GCC.mk
@@ -314,6 +314,11 @@ 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
diff --git a/solenv/gbuild/platform/WNT_INTEL_GCC.mk b/solenv/gbuild/platform/WNT_INTEL_GCC.mk
index f92a278a71a8..a3bd1a826518 100644
--- a/solenv/gbuild/platform/WNT_INTEL_GCC.mk
+++ b/solenv/gbuild/platform/WNT_INTEL_GCC.mk
@@ -455,6 +455,11 @@ 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
diff --git a/solenv/gbuild/platform/WNT_INTEL_MSC.mk b/solenv/gbuild/platform/WNT_INTEL_MSC.mk
index b0721addcea0..1de257c7c99f 100644
--- a/solenv/gbuild/platform/WNT_INTEL_MSC.mk
+++ b/solenv/gbuild/platform/WNT_INTEL_MSC.mk
@@ -401,6 +401,7 @@ gb_Library_PLAINLIBS_NONE += \
d3d9 \
d3dx \
ddraw \
+ delayimp \
gdi32 \
gdiplus \
gnu_getopt \
@@ -411,8 +412,11 @@ gb_Library_PLAINLIBS_NONE += \
libcmt \
libcmtd \
mpr \
+ mscoree \
msi \
msimg32 \
+ msvcmrt \
+ msvcmrtd \
msvcrt \
msvcprt \
$(gb_Library_win32_OLDNAMES) \
@@ -733,6 +737,11 @@ endef
gb_InstallScript_EXT := .inf
+# CliAssemblyTarget class
+
+gb_CliAssemblyTarget_POLICYEXT := $(gb_Library_DLLEXT)
+gb_CliAssemblyTarget_get_dll = $(gb_Library_OUTDIRLOCATION)/$(1)$(gb_CliAssemblyTarget_POLICYEXT)
+
# ExtensionTarget class
gb_ExtensionTarget_LICENSEFILE_DEFAULT := $(OUTDIR)/bin/osl/license.txt
diff --git a/solenv/gbuild/platform/macosx.mk b/solenv/gbuild/platform/macosx.mk
index 4d5594b986e0..f933f3e15d6a 100644
--- a/solenv/gbuild/platform/macosx.mk
+++ b/solenv/gbuild/platform/macosx.mk
@@ -408,6 +408,11 @@ 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
diff --git a/solenv/gbuild/platform/solaris.mk b/solenv/gbuild/platform/solaris.mk
index adb1a61db15c..3a95d90030b8 100644
--- a/solenv/gbuild/platform/solaris.mk
+++ b/solenv/gbuild/platform/solaris.mk
@@ -405,6 +405,11 @@ 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
diff --git a/solenv/gbuild/platform/unxgcc.mk b/solenv/gbuild/platform/unxgcc.mk
index 387980205b59..6e50439a09eb 100644
--- a/solenv/gbuild/platform/unxgcc.mk
+++ b/solenv/gbuild/platform/unxgcc.mk
@@ -406,6 +406,11 @@ 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