summaryrefslogtreecommitdiffstats
path: root/solenv
diff options
context:
space:
mode:
authorMatúš Kukan <matus.kukan@gmail.com>2011-10-01 03:01:23 +0200
committerMatúš Kukan <matus.kukan@gmail.com>2011-10-01 17:25:42 +0200
commitc11d61eec93b6bae3f4e106f4a8e4c8f895a99bc (patch)
tree628d6d9cd0f9d0ff64e4c95234772f7baa78a6f6 /solenv
parentconvert scripting to gbuild - first step (diff)
downloadcore-c11d61eec93b6bae3f4e106f4a8e4c8f895a99bc.tar.gz
core-c11d61eec93b6bae3f4e106f4a8e4c8f895a99bc.zip
add extension support to gbuild for creating .oxt files
Diffstat (limited to 'solenv')
-rw-r--r--solenv/gbuild/Extension.mk85
-rw-r--r--solenv/gbuild/TargetLocations.mk4
-rw-r--r--solenv/gbuild/gbuild.mk1
3 files changed, 90 insertions, 0 deletions
diff --git a/solenv/gbuild/Extension.mk b/solenv/gbuild/Extension.mk
new file mode 100644
index 000000000000..63627ec6e96c
--- /dev/null
+++ b/solenv/gbuild/Extension.mk
@@ -0,0 +1,85 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Major Contributor(s):
+# Copyright (C) 2011 Matúš Kukan <matus.kukan@gmail.com>
+#
+# All Rights Reserved.
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
+# Extension class
+
+gb_Extension_ZIPCOMMAND := zip $(if $(findstring s,$(MAKEFLAGS)),-q)
+ifeq ($(GUI),WNT)
+gb_Extension_LICENSEFILE := license.txt
+else
+gb_Extension_LICENSEFILE := LICENSE
+endif
+
+# remove extension directory in workdir and oxt file in workdir and outdir
+$(call gb_Extension_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),OXT,3)
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -f -r $(call gb_Extension_get_workdir,$*) && \
+ rm -f $(call gb_Extension_get_target,$*) && \
+ rm -f $(call gb_Extension_get_outdir_target,$*))
+
+# rule to create oxt package in workdir
+# --filesync makes sure that all files in the oxt package will be removed that no longer are in $(FILES)
+$(call gb_Extension_get_target,%) :
+ $(call gb_Output_announce,$*,$(true),OXT,3)
+ $(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(call gb_Extension_get_workdir,$*)/META-INF && \
+ mkdir -p $(call gb_Extension_get_workdir,$*)/registration && \
+ cp -f $(LOCATION)/description.xml $(call gb_Extension_get_workdir,$*) && \
+ cp -f $(LOCATION)/manifest.xml $(call gb_Extension_get_workdir,$*)/META-INF && \
+ cp -f $(OUTDIR)/bin/osl/$(gb_Extension_LICENSEFILE) $(call gb_Extension_get_workdir,$*)/registration && \
+ cd $(call gb_Extension_get_workdir,$*) && \
+ $(gb_Extension_ZIPCOMMAND) -rX --filesync $(call gb_Extension_get_target,$*) $(FILES) )
+
+# TODO: needs dependency on $(OUTDIR)/bin/osl/$(gb_Extension_LICENSEFILE) once readlicense_oo will be gbuildized
+# or just another simpler solution
+
+# set file list and location of manifest and description files
+# register target and clean target
+# add deliverable
+# add dependency for outdir target to workdir target (pattern rule for delivery is in Package.mk)
+define gb_Extension_Extension
+$(call gb_Extension_get_target,$(1)) : FILES := META-INF description.xml registration
+$(call gb_Extension_get_target,$(1)) : LOCATION := $(SRCDIR)/$(2)
+$(eval $(call gb_Module_register_target,$(call gb_Extension_get_outdir_target,$(1)),$(call gb_Extension_get_clean_target,$(1))))
+$(call gb_Deliver_add_deliverable,$(call gb_Extension_get_outdir_target,$(1)),$(call gb_Extension_get_target,$(1)),$(1))
+$(call gb_Extension_get_outdir_target,$(1)) : $(call gb_Extension_get_target,$(1))
+
+endef
+
+# adding a file creates a dependency to it
+# file is copied to $(WORKDIR)
+define gb_Extension_add_file
+$(call gb_Extension_get_target,$(1)) : FILES += $(2)
+$(call gb_Extension_get_target,$(1)) : $(call gb_Extension_get_workdir,$(1))/$(2)
+$(call gb_Extension_get_workdir,$(1))/$(2) : $(3)
+ mkdir -p $$(dir $$@)
+ cp -f $$< $$@
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
index 7f067d2bcd7b..cdd43cc3cde9 100644
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -32,6 +32,7 @@ gb_ComponentTarget_get_outdir_target = $(OUTDIR)/xml/component/$(1).component
gb_ComponentTarget_get_outdir_inbuild_target = $(OUTDIR)/xml/component/$(1).inbuild.component
gb_Executable_get_target = $(OUTDIR)/bin/$(1)$(gb_Executable_EXT)
gb_Executable_get_target_for_build = $(OUTDIR_FOR_BUILD)/bin/$(1)$(gb_Executable_EXT_for_build)
+gb_Extension_get_outdir_target = $(OUTDIR)/bin/$(1).oxt
gb_PackagePart_get_destinations = \
$(OUTDIR)/xml \
$(OUTDIR)/pck \
@@ -79,6 +80,8 @@ gb_CxxObject_get_target = $(WORKDIR)/CxxObject/$(1).o
gb_GenCxxObject_get_target = $(WORKDIR)/GenCxxObject/$(1).o
gb_Executable_get_external_headers_target = $(WORKDIR)/ExternalHeaders/Executable/$(1)
gb_Executable_get_headers_target = $(WORKDIR)/Headers/Executable/$(1)
+gb_Extension_get_target = $(WORKDIR)/Extension/$(1).oxt
+gb_Extension_get_workdir = $(WORKDIR)/Extension/$(1)
gb_ExternalLib_get_workdir = $(WORKDIR)/ExternalLib/$(1)
gb_ExternalLib_get_builddir = $(WORKDIR)/ExternalLib/$(1)/build
gb_ExternalLib_get_target = $(WORKDIR)/ExternalLib/$(1).done
@@ -153,6 +156,7 @@ endef
$(eval $(call gb_Helper_make_clean_targets,\
AllLangResTarget \
ComponentTarget \
+ Extension \
JavaClassSet \
Jar \
JunitTest \
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
index 6c387c2cff81..4116b6ce3ad1 100644
--- a/solenv/gbuild/gbuild.mk
+++ b/solenv/gbuild/gbuild.mk
@@ -311,6 +311,7 @@ include $(foreach class, \
UnoApiTarget \
Zip \
Configuration \
+ Extension \
,$(GBUILDDIR)/$(class).mk)
# optional extensions that should never be essential