[Libreoffice-commits] .: 4 commits - clucene/ExternalPackage_clucene.mk clucene/Module_clucene.mk clucene/Package_source.mk libcdr/ExternalPackage_libcdr.mk libcdr/Module_libcdr.mk libcdr/Package_libcdr.mk libcmis/ExternalPackage_libcmis.mk libcmis/Module_libcmis.mk libcmis/Package_libcmis.mk libmspub/ExternalPackage_libmspub.mk libmspub/Module_libmspub.mk libmspub/Package_libmspub.mk libpng/ExternalPackage_libpng.mk libpng/Module_libpng.mk libpng/Package_libpng.mk libvisio/ExternalPackage_libvisio.mk libvisio/Module_libvisio.mk libvisio/Package_libvisio.mk libwpd/ExternalPackage_libwpd.mk libwpd/Module_libwpd.mk libwpd/Package_libwpd.mk libwpg/ExternalPackage_libwpg.mk libwpg/Module_libwpg.mk libwpg/Package_libwpg.mk libwps/ExternalPackage_libwps.mk libwps/Module_libwps.mk libwps/Package_libwps.mk mdds/UnpackedTarball_mdds.mk solenv/gbuild vigra/UnpackedTarball_vigra.mk

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Sat Sep 22 06:01:38 PDT 2012


 clucene/ExternalPackage_clucene.mk   |  123 ++++++++++++++++++++++++++++
 clucene/Module_clucene.mk            |    2 
 clucene/Package_source.mk            |  125 -----------------------------
 libcdr/ExternalPackage_libcdr.mk     |   19 ++++
 libcdr/Module_libcdr.mk              |    2 
 libcdr/Package_libcdr.mk             |   21 ----
 libcmis/ExternalPackage_libcmis.mk   |   28 ++++++
 libcmis/Module_libcmis.mk            |    2 
 libcmis/Package_libcmis.mk           |   30 -------
 libmspub/ExternalPackage_libmspub.mk |   18 ++++
 libmspub/Module_libmspub.mk          |    2 
 libmspub/Package_libmspub.mk         |   20 ----
 libpng/ExternalPackage_libpng.mk     |   19 ++++
 libpng/Module_libpng.mk              |    2 
 libpng/Package_libpng.mk             |   21 ----
 libvisio/ExternalPackage_libvisio.mk |   18 ++++
 libvisio/Module_libvisio.mk          |    2 
 libvisio/Package_libvisio.mk         |   20 ----
 libwpd/ExternalPackage_libwpd.mk     |   29 ++++++
 libwpd/Module_libwpd.mk              |    2 
 libwpd/Package_libwpd.mk             |   31 -------
 libwpg/ExternalPackage_libwpg.mk     |   18 ++++
 libwpg/Module_libwpg.mk              |    2 
 libwpg/Package_libwpg.mk             |   20 ----
 libwps/ExternalPackage_libwps.mk     |   17 +++
 libwps/Module_libwps.mk              |    2 
 libwps/Package_libwps.mk             |   19 ----
 mdds/UnpackedTarball_mdds.mk         |   31 +++++++
 solenv/gbuild/ExternalPackage.mk     |  150 +++++++++++++++++++++++++++++++++++
 solenv/gbuild/ExternalProject.mk     |   10 +-
 solenv/gbuild/LinkTarget.mk          |    2 
 solenv/gbuild/TargetLocations.mk     |    3 
 solenv/gbuild/UnpackedTarball.mk     |   98 ++++++++++++++++++----
 solenv/gbuild/gbuild.mk              |    1 
 vigra/UnpackedTarball_vigra.mk       |   86 ++++++++++++++++++++
 35 files changed, 654 insertions(+), 341 deletions(-)

New commits:
commit ff7ac2253210bd87631d6031466a3ee47268d252
Author: David Tardon <dtardon at redhat.com>
Date:   Fri Sep 21 17:01:39 2012 +0200

    fix output files of mdds and vigra too
    
    Change-Id: Ie7b78dbc0e9ac3715149faad0238f4f51a08527e

diff --git a/mdds/UnpackedTarball_mdds.mk b/mdds/UnpackedTarball_mdds.mk
index 3394388..fd0d4a1 100644
--- a/mdds/UnpackedTarball_mdds.mk
+++ b/mdds/UnpackedTarball_mdds.mk
@@ -16,4 +16,35 @@ $(eval $(call gb_UnpackedTarball_add_patches,mdds,\
 	mdds/0001-Workaround-for-gcc-bug.patch \
 ))
 
+$(eval $(call gb_UnpackedTarball_mark_output_files,mdds,\
+	include/mdds/compat/unique_ptr.hpp \
+	include/mdds/default_deleter.hpp \
+	include/mdds/flat_segment_tree.hpp \
+	include/mdds/flat_segment_tree_def.inl \
+	include/mdds/flat_segment_tree_itr.hpp \
+	include/mdds/global.hpp \
+	include/mdds/hash_container/map.hpp \
+	include/mdds/mixed_type_matrix.hpp \
+	include/mdds/mixed_type_matrix_def.inl \
+	include/mdds/mixed_type_matrix_element.hpp \
+	include/mdds/mixed_type_matrix_flag_storage.hpp \
+	include/mdds/mixed_type_matrix_storage.hpp \
+	include/mdds/mixed_type_matrix_storage_filled_linear.inl \
+	include/mdds/mixed_type_matrix_storage_sparse.inl \
+	include/mdds/multi_type_matrix.hpp \
+	include/mdds/multi_type_matrix_def.inl \
+	include/mdds/multi_type_vector.hpp \
+	include/mdds/multi_type_vector_def.inl \
+	include/mdds/multi_type_vector_itr.hpp \
+	include/mdds/multi_type_vector_macro.hpp \
+	include/mdds/multi_type_vector_trait.hpp \
+	include/mdds/multi_type_vector_types.hpp \
+	include/mdds/node.hpp \
+	include/mdds/point_quad_tree.hpp \
+	include/mdds/quad_node.hpp \
+	include/mdds/rectangle_set.hpp \
+	include/mdds/rectangle_set_def.inl \
+	include/mdds/segment_tree.hpp \
+))
+
 # vim: set noet sw=4 ts=4:
diff --git a/vigra/UnpackedTarball_vigra.mk b/vigra/UnpackedTarball_vigra.mk
index 72e6209..d6296c4 100644
--- a/vigra/UnpackedTarball_vigra.mk
+++ b/vigra/UnpackedTarball_vigra.mk
@@ -18,4 +18,90 @@ $(eval $(call gb_UnpackedTarball_add_patches,vigra,\
 	vigra/vigra1.4.0-enumwarn.patch \
 ))
 
+$(eval $(call gb_UnpackedTarball_mark_output_files,vigra,\
+	include/vigra/accessor.hxx \
+	include/vigra/array_vector.hxx \
+	include/vigra/basicgeometry.hxx \
+	include/vigra/basicimage.hxx \
+	include/vigra/basicimageview.hxx \
+	include/vigra/bordertreatment.hxx \
+	include/vigra/boundarytensor.hxx \
+	include/vigra/codec.hxx \
+	include/vigra/colorconversions.hxx \
+	include/vigra/combineimages.hxx \
+	include/vigra/config.hxx \
+	include/vigra/contourcirculator.hxx \
+	include/vigra/convolution.hxx \
+	include/vigra/copyimage.hxx \
+	include/vigra/cornerdetection.hxx \
+	include/vigra/diff2d.hxx \
+	include/vigra/distancetransform.hxx \
+	include/vigra/edgedetection.hxx \
+	include/vigra/eigensystem.hxx \
+	include/vigra/error.hxx \
+	include/vigra/fftw.hxx \
+	include/vigra/fftw3.hxx \
+	include/vigra/fixedpoint.hxx \
+	include/vigra/flatmorphology.hxx \
+	include/vigra/functorexpression.hxx \
+	include/vigra/functortraits.hxx \
+	include/vigra/gaborfilter.hxx \
+	include/vigra/gaussians.hxx \
+	include/vigra/gradient_energy_tensor.hxx \
+	include/vigra/imagecontainer.hxx \
+	include/vigra/imageinfo.hxx \
+	include/vigra/imageiterator.hxx \
+	include/vigra/imageiteratoradapter.hxx \
+	include/vigra/impex.hxx \
+	include/vigra/initimage.hxx \
+	include/vigra/inspectimage.hxx \
+	include/vigra/interpolating_accessor.hxx \
+	include/vigra/iteratoradapter.hxx \
+	include/vigra/iteratortags.hxx \
+	include/vigra/iteratortraits.hxx \
+	include/vigra/labelimage.hxx \
+	include/vigra/linear_algebra.hxx \
+	include/vigra/linear_solve.hxx \
+	include/vigra/localminmax.hxx \
+	include/vigra/mathutil.hxx \
+	include/vigra/matrix.hxx \
+	include/vigra/memory.hxx \
+	include/vigra/metaprogramming.hxx \
+	include/vigra/multi_array.hxx \
+	include/vigra/multi_convolution.hxx \
+	include/vigra/multi_impex.hxx \
+	include/vigra/multi_iterator.hxx \
+	include/vigra/multi_pointoperators.hxx \
+	include/vigra/navigator.hxx \
+	include/vigra/nonlineardiffusion.hxx \
+	include/vigra/numerictraits.hxx \
+	include/vigra/orientedtensorfilters.hxx \
+	include/vigra/pixelneighborhood.hxx \
+	include/vigra/polynomial.hxx \
+	include/vigra/rational.hxx \
+	include/vigra/recursiveconvolution.hxx \
+	include/vigra/resampling_convolution.hxx \
+	include/vigra/resizeimage.hxx \
+	include/vigra/rfftw.hxx \
+	include/vigra/rgbvalue.hxx \
+	include/vigra/seededregiongrowing.hxx \
+	include/vigra/separableconvolution.hxx \
+	include/vigra/sized_int.hxx \
+	include/vigra/splineimageview.hxx \
+	include/vigra/splines.hxx \
+	include/vigra/static_assert.hxx \
+	include/vigra/stdconvolution.hxx \
+	include/vigra/stdimage.hxx \
+	include/vigra/stdimagefunctions.hxx \
+	include/vigra/symmetry.hxx \
+	include/vigra/tensorutilities.hxx \
+	include/vigra/tiff.hxx \
+	include/vigra/tinyvector.hxx \
+	include/vigra/transformimage.hxx \
+	include/vigra/tuple.hxx \
+	include/vigra/utilities.hxx \
+	include/vigra/watersheds.hxx \
+	include/vigra/windows.h \
+))
+
 # vim: set noet sw=4 ts=4:
commit f8afd6e28232a02eace0fda3a34b4edc8dc667fe
Author: David Tardon <dtardon at redhat.com>
Date:   Fri Sep 21 16:53:52 2012 +0200

    update ext. projects to use ExternalPackage
    
    Change-Id: Ia66854f21446fff9a04b1708964286c566333ab0

diff --git a/clucene/ExternalPackage_clucene.mk b/clucene/ExternalPackage_clucene.mk
new file mode 100644
index 0000000..e09c477
--- /dev/null
+++ b/clucene/ExternalPackage_clucene.mk
@@ -0,0 +1,123 @@
+# -*- 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) 2012 Red Hat, Inc., Caolán McNamara <caolanm at redhat.com>
+#  (initial developer)
+# Copyright (C) 2012 Red Hat, Inc., David Tardon <dtardon at redhat.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.
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,clucene_inc,clucene))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene.h,src/core/CLucene.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/clucene-config.h,src/shared/CLucene/clucene-config.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/SharedHeader.h,src/shared/CLucene/SharedHeader.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/document/DateField.h,src/core/CLucene/document/DateField.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/document/DateTools.h,src/core/CLucene/document/DateTools.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/document/Document.h,src/core/CLucene/document/Document.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/document/Field.h,src/core/CLucene/document/Field.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/document/NumberTools.h,src/core/CLucene/document/NumberTools.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/index/DirectoryIndexReader.h,src/core/CLucene/index/DirectoryIndexReader.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/index/Terms.h,src/core/CLucene/index/Terms.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/index/IndexDeletionPolicy.h,src/core/CLucene/index/IndexDeletionPolicy.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/index/MultipleTermPositions.h,src/core/CLucene/index/MultipleTermPositions.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/index/Term.h,src/core/CLucene/index/Term.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/index/IndexModifier.h,src/core/CLucene/index/IndexModifier.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/index/Payload.h,src/core/CLucene/index/Payload.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/index/MultiReader.h,src/core/CLucene/index/MultiReader.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/index/MergeScheduler.h,src/core/CLucene/index/MergeScheduler.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/index/TermVector.h,src/core/CLucene/index/TermVector.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/index/MergePolicy.h,src/core/CLucene/index/MergePolicy.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/index/IndexReader.h,src/core/CLucene/index/IndexReader.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/index/IndexWriter.h,src/core/CLucene/index/IndexWriter.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/BooleanClause.h,src/core/CLucene/search/BooleanClause.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/BooleanQuery.h,src/core/CLucene/search/BooleanQuery.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/DateFilter.h,src/core/CLucene/search/DateFilter.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/Explanation.h,src/core/CLucene/search/Explanation.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/Hits.h,src/core/CLucene/search/Hits.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/IndexSearcher.h,src/core/CLucene/search/IndexSearcher.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/FilteredTermEnum.h,src/core/CLucene/search/FilteredTermEnum.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/FuzzyQuery.h,src/core/CLucene/search/FuzzyQuery.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/MultiSearcher.h,src/core/CLucene/search/MultiSearcher.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/MultiTermQuery.h,src/core/CLucene/search/MultiTermQuery.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/Searchable.h,src/core/CLucene/search/Searchable.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/SearchHeader.h,src/core/CLucene/search/SearchHeader.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/Similarity.h,src/core/CLucene/search/Similarity.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/Sort.h,src/core/CLucene/search/Sort.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/spans/SpanTermQuery.h,src/core/CLucene/search/spans/SpanTermQuery.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/spans/SpanQuery.h,src/core/CLucene/search/spans/SpanQuery.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/spans/SpanNotQuery.h,src/core/CLucene/search/spans/SpanNotQuery.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/spans/SpanScorer.h,src/core/CLucene/search/spans/SpanScorer.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/spans/SpanFirstQuery.h,src/core/CLucene/search/spans/SpanFirstQuery.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/spans/SpanNearQuery.h,src/core/CLucene/search/spans/SpanNearQuery.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/spans/SpanOrQuery.h,src/core/CLucene/search/spans/SpanOrQuery.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/spans/Spans.h,src/core/CLucene/search/spans/Spans.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/spans/SpanWeight.h,src/core/CLucene/search/spans/SpanWeight.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/Filter.h,src/core/CLucene/search/Filter.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/FieldSortedHitQueue.h,src/core/CLucene/search/FieldSortedHitQueue.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/PhraseQuery.h,src/core/CLucene/search/PhraseQuery.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/PrefixQuery.h,src/core/CLucene/search/PrefixQuery.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/Query.h,src/core/CLucene/search/Query.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/RangeQuery.h,src/core/CLucene/search/RangeQuery.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/SpanQueryFilter.h,src/core/CLucene/search/SpanQueryFilter.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/TermQuery.h,src/core/CLucene/search/TermQuery.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/MultiPhraseQuery.h,src/core/CLucene/search/MultiPhraseQuery.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/search/WildcardQuery.h,src/core/CLucene/search/WildcardQuery.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/CLConfig.h,src/core/CLucene/CLConfig.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/util/VoidList.h,src/core/CLucene/util/VoidList.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/util/Reader.h,src/core/CLucene/util/Reader.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/util/VoidMap.h,src/core/CLucene/util/VoidMap.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/util/CLStreams.h,src/core/CLucene/util/CLStreams.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/util/Array.h,src/core/CLucene/util/Array.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/util/PriorityQueue.h,src/core/CLucene/util/PriorityQueue.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/util/BitSet.h,src/core/CLucene/util/BitSet.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/util/Equators.h,src/core/CLucene/util/Equators.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/queryParser/QueryParserConstants.h,src/core/CLucene/queryParser/QueryParserConstants.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/queryParser/QueryToken.h,src/core/CLucene/queryParser/QueryToken.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/queryParser/legacy/QueryToken.h,src/core/CLucene/queryParser/legacy/QueryToken.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/queryParser/legacy/MultiFieldQueryParser.h,src/core/CLucene/queryParser/legacy/MultiFieldQueryParser.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/queryParser/legacy/QueryParser.h,src/core/CLucene/queryParser/legacy/QueryParser.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/queryParser/MultiFieldQueryParser.h,src/core/CLucene/queryParser/MultiFieldQueryParser.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/queryParser/QueryParserTokenManager.h,src/core/CLucene/queryParser/QueryParserTokenManager.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/queryParser/QueryParser.h,src/core/CLucene/queryParser/QueryParser.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/LuceneThreads.h,src/shared/CLucene/LuceneThreads.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/store/LockFactory.h,src/core/CLucene/store/LockFactory.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/store/Lock.h,src/core/CLucene/store/Lock.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/store/Directory.h,src/core/CLucene/store/Directory.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/store/RAMDirectory.h,src/core/CLucene/store/RAMDirectory.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/store/IndexInput.h,src/core/CLucene/store/IndexInput.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/store/FSDirectory.h,src/core/CLucene/store/FSDirectory.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/store/IndexOutput.h,src/core/CLucene/store/IndexOutput.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/StdHeader.h,src/core/CLucene/StdHeader.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/debug/error.h,src/core/CLucene/debug/error.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/debug/mem.h,src/core/CLucene/debug/mem.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/debug/lucenebase.h,src/core/CLucene/debug/lucenebase.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/analysis/CachingTokenFilter.h,src/core/CLucene/analysis/CachingTokenFilter.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/analysis/AnalysisHeader.h,src/core/CLucene/analysis/AnalysisHeader.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/analysis/Analyzers.h,src/core/CLucene/analysis/Analyzers.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/analysis/standard/StandardTokenizer.h,src/core/CLucene/analysis/standard/StandardTokenizer.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/analysis/standard/StandardFilter.h,src/core/CLucene/analysis/standard/StandardFilter.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/analysis/standard/StandardTokenizerConstants.h,src/core/CLucene/analysis/standard/StandardTokenizerConstants.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/analysis/standard/StandardAnalyzer.h,src/core/CLucene/analysis/standard/StandardAnalyzer.h))
+$(eval $(call gb_ExternalPackage_add_unpacked_file,clucene_inc,inc/external/CLucene/analysis/LanguageBasedAnalyzer.h,src/contribs-lib/CLucene/analysis/LanguageBasedAnalyzer.h))
+
+# vim: set noet sw=4 ts=4:
diff --git a/clucene/Module_clucene.mk b/clucene/Module_clucene.mk
index 7228ac0..c6ee114 100644
--- a/clucene/Module_clucene.mk
+++ b/clucene/Module_clucene.mk
@@ -30,8 +30,8 @@ $(eval $(call gb_Module_Module,clucene))
 ifeq ($(SYSTEM_CLUCENE),NO)
 ifneq ($(OS),ANDROID)
 $(eval $(call gb_Module_add_targets,clucene,\
+    ExternalPackage_clucene \
     Library_clucene \
-    Package_source \
 	UnpackedTarball_clucene \
 ))
 endif
diff --git a/clucene/Package_source.mk b/clucene/Package_source.mk
deleted file mode 100644
index 331c9e3..0000000
--- a/clucene/Package_source.mk
+++ /dev/null
@@ -1,125 +0,0 @@
-# -*- 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) 2012 Red Hat, Inc., Caolán McNamara <caolanm at redhat.com>
-#  (initial developer)
-# Copyright (C) 2012 Red Hat, Inc., David Tardon <dtardon at redhat.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.
-
-$(eval $(call gb_Package_Package,clucene_source,$(call gb_UnpackedTarball_get_dir,clucene)))
-
-$(eval $(call gb_Package_use_unpacked,clucene_source,clucene))
-
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene.h,src/core/CLucene.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/clucene-config.h,src/shared/CLucene/clucene-config.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/SharedHeader.h,src/shared/CLucene/SharedHeader.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/document/DateField.h,src/core/CLucene/document/DateField.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/document/DateTools.h,src/core/CLucene/document/DateTools.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/document/Document.h,src/core/CLucene/document/Document.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/document/Field.h,src/core/CLucene/document/Field.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/document/NumberTools.h,src/core/CLucene/document/NumberTools.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/index/DirectoryIndexReader.h,src/core/CLucene/index/DirectoryIndexReader.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/index/Terms.h,src/core/CLucene/index/Terms.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/index/IndexDeletionPolicy.h,src/core/CLucene/index/IndexDeletionPolicy.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/index/MultipleTermPositions.h,src/core/CLucene/index/MultipleTermPositions.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/index/Term.h,src/core/CLucene/index/Term.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/index/IndexModifier.h,src/core/CLucene/index/IndexModifier.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/index/Payload.h,src/core/CLucene/index/Payload.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/index/MultiReader.h,src/core/CLucene/index/MultiReader.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/index/MergeScheduler.h,src/core/CLucene/index/MergeScheduler.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/index/TermVector.h,src/core/CLucene/index/TermVector.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/index/MergePolicy.h,src/core/CLucene/index/MergePolicy.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/index/IndexReader.h,src/core/CLucene/index/IndexReader.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/index/IndexWriter.h,src/core/CLucene/index/IndexWriter.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/BooleanClause.h,src/core/CLucene/search/BooleanClause.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/BooleanQuery.h,src/core/CLucene/search/BooleanQuery.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/DateFilter.h,src/core/CLucene/search/DateFilter.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/Explanation.h,src/core/CLucene/search/Explanation.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/Hits.h,src/core/CLucene/search/Hits.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/IndexSearcher.h,src/core/CLucene/search/IndexSearcher.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/FilteredTermEnum.h,src/core/CLucene/search/FilteredTermEnum.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/FuzzyQuery.h,src/core/CLucene/search/FuzzyQuery.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/MultiSearcher.h,src/core/CLucene/search/MultiSearcher.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/MultiTermQuery.h,src/core/CLucene/search/MultiTermQuery.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/Searchable.h,src/core/CLucene/search/Searchable.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/SearchHeader.h,src/core/CLucene/search/SearchHeader.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/Similarity.h,src/core/CLucene/search/Similarity.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/Sort.h,src/core/CLucene/search/Sort.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/spans/SpanTermQuery.h,src/core/CLucene/search/spans/SpanTermQuery.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/spans/SpanQuery.h,src/core/CLucene/search/spans/SpanQuery.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/spans/SpanNotQuery.h,src/core/CLucene/search/spans/SpanNotQuery.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/spans/SpanScorer.h,src/core/CLucene/search/spans/SpanScorer.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/spans/SpanFirstQuery.h,src/core/CLucene/search/spans/SpanFirstQuery.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/spans/SpanNearQuery.h,src/core/CLucene/search/spans/SpanNearQuery.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/spans/SpanOrQuery.h,src/core/CLucene/search/spans/SpanOrQuery.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/spans/Spans.h,src/core/CLucene/search/spans/Spans.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/spans/SpanWeight.h,src/core/CLucene/search/spans/SpanWeight.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/Filter.h,src/core/CLucene/search/Filter.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/FieldSortedHitQueue.h,src/core/CLucene/search/FieldSortedHitQueue.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/PhraseQuery.h,src/core/CLucene/search/PhraseQuery.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/PrefixQuery.h,src/core/CLucene/search/PrefixQuery.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/Query.h,src/core/CLucene/search/Query.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/RangeQuery.h,src/core/CLucene/search/RangeQuery.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/SpanQueryFilter.h,src/core/CLucene/search/SpanQueryFilter.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/TermQuery.h,src/core/CLucene/search/TermQuery.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/MultiPhraseQuery.h,src/core/CLucene/search/MultiPhraseQuery.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/search/WildcardQuery.h,src/core/CLucene/search/WildcardQuery.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/CLConfig.h,src/core/CLucene/CLConfig.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/util/VoidList.h,src/core/CLucene/util/VoidList.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/util/Reader.h,src/core/CLucene/util/Reader.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/util/VoidMap.h,src/core/CLucene/util/VoidMap.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/util/CLStreams.h,src/core/CLucene/util/CLStreams.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/util/Array.h,src/core/CLucene/util/Array.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/util/PriorityQueue.h,src/core/CLucene/util/PriorityQueue.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/util/BitSet.h,src/core/CLucene/util/BitSet.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/util/Equators.h,src/core/CLucene/util/Equators.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/queryParser/QueryParserConstants.h,src/core/CLucene/queryParser/QueryParserConstants.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/queryParser/QueryToken.h,src/core/CLucene/queryParser/QueryToken.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/queryParser/legacy/QueryToken.h,src/core/CLucene/queryParser/legacy/QueryToken.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/queryParser/legacy/MultiFieldQueryParser.h,src/core/CLucene/queryParser/legacy/MultiFieldQueryParser.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/queryParser/legacy/QueryParser.h,src/core/CLucene/queryParser/legacy/QueryParser.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/queryParser/MultiFieldQueryParser.h,src/core/CLucene/queryParser/MultiFieldQueryParser.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/queryParser/QueryParserTokenManager.h,src/core/CLucene/queryParser/QueryParserTokenManager.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/queryParser/QueryParser.h,src/core/CLucene/queryParser/QueryParser.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/LuceneThreads.h,src/shared/CLucene/LuceneThreads.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/store/LockFactory.h,src/core/CLucene/store/LockFactory.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/store/Lock.h,src/core/CLucene/store/Lock.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/store/Directory.h,src/core/CLucene/store/Directory.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/store/RAMDirectory.h,src/core/CLucene/store/RAMDirectory.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/store/IndexInput.h,src/core/CLucene/store/IndexInput.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/store/FSDirectory.h,src/core/CLucene/store/FSDirectory.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/store/IndexOutput.h,src/core/CLucene/store/IndexOutput.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/StdHeader.h,src/core/CLucene/StdHeader.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/debug/error.h,src/core/CLucene/debug/error.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/debug/mem.h,src/core/CLucene/debug/mem.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/debug/lucenebase.h,src/core/CLucene/debug/lucenebase.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/analysis/CachingTokenFilter.h,src/core/CLucene/analysis/CachingTokenFilter.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/analysis/AnalysisHeader.h,src/core/CLucene/analysis/AnalysisHeader.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/analysis/Analyzers.h,src/core/CLucene/analysis/Analyzers.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/analysis/standard/StandardTokenizer.h,src/core/CLucene/analysis/standard/StandardTokenizer.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/analysis/standard/StandardFilter.h,src/core/CLucene/analysis/standard/StandardFilter.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/analysis/standard/StandardTokenizerConstants.h,src/core/CLucene/analysis/standard/StandardTokenizerConstants.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/analysis/standard/StandardAnalyzer.h,src/core/CLucene/analysis/standard/StandardAnalyzer.h))
-$(eval $(call gb_Package_add_file,clucene_source,inc/external/CLucene/analysis/LanguageBasedAnalyzer.h,src/contribs-lib/CLucene/analysis/LanguageBasedAnalyzer.h))
-
-# vim: set noet sw=4 ts=4:
diff --git a/libcdr/ExternalPackage_libcdr.mk b/libcdr/ExternalPackage_libcdr.mk
new file mode 100644
index 0000000..c2c12dc
--- /dev/null
+++ b/libcdr/ExternalPackage_libcdr.mk
@@ -0,0 +1,19 @@
+# -*- 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/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,libcdr_inc,cdr))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,libcdr_inc,inc/external/libcdr,\
+	libcdr.h \
+	CDRDocument.h \
+	CDRStringVector.h \
+	CMXDocument.h \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/libcdr/Module_libcdr.mk b/libcdr/Module_libcdr.mk
index 6fb369a..b02dc27 100644
--- a/libcdr/Module_libcdr.mk
+++ b/libcdr/Module_libcdr.mk
@@ -12,7 +12,7 @@ $(eval $(call gb_Module_Module,libcdr))
 ifeq ($(SYSTEM_LIBCDR),NO)
 
 $(eval $(call gb_Module_add_targets,libcdr,\
-	Package_libcdr \
+	ExternalPackage_libcdr \
 	StaticLibrary_cdr \
 	UnpackedTarball_cdr \
 ))
diff --git a/libcdr/Package_libcdr.mk b/libcdr/Package_libcdr.mk
deleted file mode 100644
index e7d21bc..0000000
--- a/libcdr/Package_libcdr.mk
+++ /dev/null
@@ -1,21 +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/.
-#
-
-$(eval $(call gb_Package_Package,libcdr_inc,$(call gb_UnpackedTarball_get_dir,cdr/src/lib)))
-
-$(eval $(call gb_Package_use_unpacked,libcdr_inc,cdr))
-
-$(eval $(call gb_Package_add_files,libcdr_inc,inc/external/libcdr,\
-	libcdr.h \
-	CDRDocument.h \
-	CDRStringVector.h \
-	CMXDocument.h \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/libcmis/ExternalPackage_libcmis.mk b/libcmis/ExternalPackage_libcmis.mk
new file mode 100644
index 0000000..7b0ba01
--- /dev/null
+++ b/libcmis/ExternalPackage_libcmis.mk
@@ -0,0 +1,28 @@
+# -*- 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/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,libcmis_inc,cmis))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,libcmis_inc,inc/external/libcmis,\
+	allowable-actions.hxx \
+	document.hxx \
+	exception.hxx \
+	folder.hxx \
+	object-type.hxx \
+	object.hxx \
+	property-type.hxx \
+	property.hxx \
+	repository.hxx \
+	session-factory.hxx \
+	session.hxx \
+	xml-utils.hxx \
+	xmlserializable.hxx \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/libcmis/Module_libcmis.mk b/libcmis/Module_libcmis.mk
index c2c09f0..5c44009 100644
--- a/libcmis/Module_libcmis.mk
+++ b/libcmis/Module_libcmis.mk
@@ -12,7 +12,7 @@ $(eval $(call gb_Module_Module,libcmis))
 ifeq ($(SYSTEM_LIBCMIS),NO)
 
 $(eval $(call gb_Module_add_targets,libcmis,\
-	Package_libcmis \
+	ExternalPackage_libcmis \
 	StaticLibrary_cmis \
 	UnpackedTarball_cmis \
 ))
diff --git a/libcmis/Package_libcmis.mk b/libcmis/Package_libcmis.mk
deleted file mode 100644
index c8c8fbe..0000000
--- a/libcmis/Package_libcmis.mk
+++ /dev/null
@@ -1,30 +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/.
-#
-
-$(eval $(call gb_Package_Package,libcmis_inc,$(call gb_UnpackedTarball_get_dir,cmis/src/libcmis)))
-
-$(eval $(call gb_Package_use_unpacked,libcmis_inc,cmis))
-
-$(eval $(call gb_Package_add_files,libcmis_inc,inc/external/libcmis,\
-	allowable-actions.hxx \
-	document.hxx \
-	exception.hxx \
-	folder.hxx \
-	object-type.hxx \
-	object.hxx \
-	property-type.hxx \
-	property.hxx \
-	repository.hxx \
-	session-factory.hxx \
-	session.hxx \
-	xml-utils.hxx \
-	xmlserializable.hxx \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/libmspub/ExternalPackage_libmspub.mk b/libmspub/ExternalPackage_libmspub.mk
new file mode 100644
index 0000000..2b834cf
--- /dev/null
+++ b/libmspub/ExternalPackage_libmspub.mk
@@ -0,0 +1,18 @@
+# -*- 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/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,libmspub_inc,mspub))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,libmspub_inc,inc/external/libmspub,\
+	libmspub.h \
+	MSPUBDocument.h \
+	MSPUBStringVector.h \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/libmspub/Module_libmspub.mk b/libmspub/Module_libmspub.mk
index d81abdd..0106a9f 100644
--- a/libmspub/Module_libmspub.mk
+++ b/libmspub/Module_libmspub.mk
@@ -12,7 +12,7 @@ $(eval $(call gb_Module_Module,libmspub))
 ifeq ($(SYSTEM_LIBMSPUB),NO)
 
 $(eval $(call gb_Module_add_targets,libmspub,\
-	Package_libmspub \
+	ExternalPackage_libmspub \
 	StaticLibrary_mspub \
 	UnpackedTarball_mspub \
 ))
diff --git a/libmspub/Package_libmspub.mk b/libmspub/Package_libmspub.mk
deleted file mode 100644
index af25dc1..0000000
--- a/libmspub/Package_libmspub.mk
+++ /dev/null
@@ -1,20 +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/.
-#
-
-$(eval $(call gb_Package_Package,libmspub_inc,$(call gb_UnpackedTarball_get_dir,mspub/src/lib)))
-
-$(eval $(call gb_Package_use_unpacked,libmspub_inc,mspub))
-
-$(eval $(call gb_Package_add_files,libmspub_inc,inc/external/libmspub,\
-	libmspub.h \
-	MSPUBDocument.h \
-	MSPUBStringVector.h \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/libpng/ExternalPackage_libpng.mk b/libpng/ExternalPackage_libpng.mk
new file mode 100644
index 0000000..6fb731d
--- /dev/null
+++ b/libpng/ExternalPackage_libpng.mk
@@ -0,0 +1,19 @@
+# -*- 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/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,libpng_inc,png))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,libpng_inc,inc/external/libpng,\
+	png.h \
+	pngconf.h \
+	pnglibconf.h \
+	pngstruct.h \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/libpng/Module_libpng.mk b/libpng/Module_libpng.mk
index a3ecb7b..6ee8e4c 100644
--- a/libpng/Module_libpng.mk
+++ b/libpng/Module_libpng.mk
@@ -12,7 +12,7 @@ $(eval $(call gb_Module_Module,libpng))
 ifeq ($(SYSTEM_LIBPNG),NO)
 
 $(eval $(call gb_Module_add_targets,libpng,\
-	Package_libpng \
+	ExternalPackage_libpng \
 	StaticLibrary_png \
 	UnpackedTarball_png \
 ))
diff --git a/libpng/Package_libpng.mk b/libpng/Package_libpng.mk
deleted file mode 100644
index 0bda07d..0000000
--- a/libpng/Package_libpng.mk
+++ /dev/null
@@ -1,21 +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/.
-#
-
-$(eval $(call gb_Package_Package,libpng_inc,$(call gb_UnpackedTarball_get_dir,png)))
-
-$(eval $(call gb_Package_use_unpacked,libpng_inc,png))
-
-$(eval $(call gb_Package_add_files,libpng_inc,inc/external/libpng,\
-	png.h \
-	pngconf.h \
-	pnglibconf.h \
-	pngstruct.h \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/libvisio/ExternalPackage_libvisio.mk b/libvisio/ExternalPackage_libvisio.mk
new file mode 100644
index 0000000..a876f14
--- /dev/null
+++ b/libvisio/ExternalPackage_libvisio.mk
@@ -0,0 +1,18 @@
+# -*- 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/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,libvisio_inc,visio))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,libvisio_inc,inc/external/libvisio,\
+	src/lib/libvisio.h \
+	src/lib/VisioDocument.h \
+	src/lib/VSDStringVector.h \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/libvisio/Module_libvisio.mk b/libvisio/Module_libvisio.mk
index 6c4190d..9e1309c 100644
--- a/libvisio/Module_libvisio.mk
+++ b/libvisio/Module_libvisio.mk
@@ -12,7 +12,7 @@ $(eval $(call gb_Module_Module,libvisio))
 ifeq ($(SYSTEM_LIBVISIO),NO)
 
 $(eval $(call gb_Module_add_targets,libvisio,\
-	Package_libvisio \
+	ExternalPackage_libvisio \
 	StaticLibrary_visio \
 	UnpackedTarball_visio \
 ))
diff --git a/libvisio/Package_libvisio.mk b/libvisio/Package_libvisio.mk
deleted file mode 100644
index 54bb8f4..0000000
--- a/libvisio/Package_libvisio.mk
+++ /dev/null
@@ -1,20 +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/.
-#
-
-$(eval $(call gb_Package_Package,libvisio_inc,$(call gb_UnpackedTarball_get_dir,visio/src/lib)))
-
-$(eval $(call gb_Package_use_unpacked,libvisio_inc,visio))
-
-$(eval $(call gb_Package_add_files,libvisio_inc,inc/external/libvisio,\
-	libvisio.h \
-	VisioDocument.h \
-	VSDStringVector.h \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/libwpd/ExternalPackage_libwpd.mk b/libwpd/ExternalPackage_libwpd.mk
new file mode 100644
index 0000000..72eb4c5
--- /dev/null
+++ b/libwpd/ExternalPackage_libwpd.mk
@@ -0,0 +1,29 @@
+# -*- 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/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,libwpd_inc,wpd))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,libwpd_inc,inc/external/libwpd,\
+	libwpd.h \
+	WPDocument.h \
+	WPXBinaryData.h \
+	WPXDocumentInterface.h \
+	WPXProperty.h \
+	WPXPropertyList.h \
+	WPXString.h \
+	WPXPropertyListVector.h \
+))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,libwpd_inc,inc/external/libwpd-stream,\
+	libwpd-stream.h \
+	WPXStream.h \
+	WPXStreamImplementation.h \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/libwpd/Module_libwpd.mk b/libwpd/Module_libwpd.mk
index fd0d0bb..74ff85e 100644
--- a/libwpd/Module_libwpd.mk
+++ b/libwpd/Module_libwpd.mk
@@ -12,7 +12,7 @@ $(eval $(call gb_Module_Module,libwpd))
 ifeq ($(SYSTEM_LIBWPD),NO)
 
 $(eval $(call gb_Module_add_targets,libwpd,\
-	Package_libwpd \
+	ExternalPackage_libwpd \
 	StaticLibrary_wpd \
 	UnpackedTarball_wpd \
 ))
diff --git a/libwpd/Package_libwpd.mk b/libwpd/Package_libwpd.mk
deleted file mode 100644
index 331a7d1..0000000
--- a/libwpd/Package_libwpd.mk
+++ /dev/null
@@ -1,31 +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/.
-#
-
-$(eval $(call gb_Package_Package,libwpd_inc,$(call gb_UnpackedTarball_get_dir,wpd/src/lib)))
-
-$(eval $(call gb_Package_use_unpacked,libwpd_inc,wpd))
-
-$(eval $(call gb_Package_add_files,libwpd_inc,inc/external/libwpd,\
-	libwpd.h \
-	WPDocument.h \
-	WPXBinaryData.h \
-	WPXDocumentInterface.h \
-	WPXProperty.h \
-	WPXPropertyList.h \
-	WPXString.h \
-	WPXPropertyListVector.h \
-))
-
-$(eval $(call gb_Package_add_files,libwpd_inc,inc/external/libwpd-stream,\
-	libwpd-stream.h \
-	WPXStream.h \
-	WPXStreamImplementation.h \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/libwpg/ExternalPackage_libwpg.mk b/libwpg/ExternalPackage_libwpg.mk
new file mode 100644
index 0000000..34cd932
--- /dev/null
+++ b/libwpg/ExternalPackage_libwpg.mk
@@ -0,0 +1,18 @@
+# -*- 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/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,libwpg_inc,wpg))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,libwpg_inc,inc/external/libwpg,\
+	libwpg.h \
+	WPGPaintInterface.h \
+	WPGraphics.h \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/libwpg/Module_libwpg.mk b/libwpg/Module_libwpg.mk
index 9e271dc..e628b89 100644
--- a/libwpg/Module_libwpg.mk
+++ b/libwpg/Module_libwpg.mk
@@ -12,7 +12,7 @@ $(eval $(call gb_Module_Module,libwpg))
 ifeq ($(SYSTEM_LIBWPG),NO)
 
 $(eval $(call gb_Module_add_targets,libwpg,\
-	Package_libwpg \
+	ExternalPackage_libwpg \
 	StaticLibrary_wpg \
 	UnpackedTarball_wpg \
 ))
diff --git a/libwpg/Package_libwpg.mk b/libwpg/Package_libwpg.mk
deleted file mode 100644
index 6a1f6a4..0000000
--- a/libwpg/Package_libwpg.mk
+++ /dev/null
@@ -1,20 +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/.
-#
-
-$(eval $(call gb_Package_Package,libwpg_inc,$(call gb_UnpackedTarball_get_dir,wpg/src/lib)))
-
-$(eval $(call gb_Package_use_unpacked,libwpg_inc,wpg))
-
-$(eval $(call gb_Package_add_files,libwpg_inc,inc/external/libwpg,\
-	libwpg.h \
-	WPGPaintInterface.h \
-	WPGraphics.h \
-))
-
-# vim: set noet sw=4 ts=4:
diff --git a/libwps/ExternalPackage_libwps.mk b/libwps/ExternalPackage_libwps.mk
new file mode 100644
index 0000000..1024537
--- /dev/null
+++ b/libwps/ExternalPackage_libwps.mk
@@ -0,0 +1,17 @@
+# -*- 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/.
+#
+
+$(eval $(call gb_ExternalPackage_ExternalPackage,libwps_inc,wps))
+
+$(eval $(call gb_ExternalPackage_add_unpacked_files,libwps_inc,inc/external/libwps,\
+	libwps.h \
+	WPSDocument.h \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/libwps/Module_libwps.mk b/libwps/Module_libwps.mk
index aacdb0e..a903fa9 100644
--- a/libwps/Module_libwps.mk
+++ b/libwps/Module_libwps.mk
@@ -12,7 +12,7 @@ $(eval $(call gb_Module_Module,libwps))
 ifeq ($(SYSTEM_LIBWPS),NO)
 
 $(eval $(call gb_Module_add_targets,libwps,\
-	Package_libwps \
+	ExternalPackage_libwps \
 	StaticLibrary_wps \
 	UnpackedTarball_wps \
 ))
diff --git a/libwps/Package_libwps.mk b/libwps/Package_libwps.mk
deleted file mode 100644
index 6ebee91..0000000
--- a/libwps/Package_libwps.mk
+++ /dev/null
@@ -1,19 +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/.
-#
-
-$(eval $(call gb_Package_Package,libwps_inc,$(call gb_UnpackedTarball_get_dir,wps/src/lib)))
-
-$(eval $(call gb_Package_use_unpacked,libwps_inc,wps))
-
-$(eval $(call gb_Package_add_files,libwps_inc,inc/external/libwps,\
-	libwps.h \
-	WPSDocument.h \
-))
-
-# vim: set noet sw=4 ts=4:
commit 98a852fe6af082fc9c9679841dc390b4635888d4
Author: David Tardon <dtardon at redhat.com>
Date:   Fri Sep 21 16:26:00 2012 +0200

    add gbuild class ExternalPackage
    
    This should make delivering of header files (but other kinds of files
    too) from the unpacked tarballs more reliable with respect to project
    updates.
    
    Change-Id: Ic9dac800eddecedffba5f955f1e8d585da9c1b17

diff --git a/solenv/gbuild/ExternalPackage.mk b/solenv/gbuild/ExternalPackage.mk
new file mode 100644
index 0000000..5bf1f51
--- /dev/null
+++ b/solenv/gbuild/ExternalPackage.mk
@@ -0,0 +1,150 @@
+# -*- 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/.
+#
+
+# ExternalPackage class
+
+# This class extends Package to reliably deliver header files (and
+# possibly other kinds of files) from unpacked tarballs. The problem
+# with using Package is that the unpacked files' timestamps do not
+# depend on the extraction time; when the project's tarball is updated,
+# some header files might have been changed, but it is likely their
+# timestamps will be older than these of the headers delivered from the
+# previous version, so the delivered headers will not be updated.
+#
+# Uff, I hope this is at least partially understandable :-)
+
+$(dir $(call gb_ExternalPackage_get_target,%)).dir :
+	$(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
+
+$(dir $(call gb_ExternalPackage_get_target,%))%/.dir :
+	$(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
+
+$(call gb_ExternalPackage_get_target,%) :
+	$(call gb_Output_announce,$*,$(true),EPK,2)
+	touch $@
+
+$(call gb_ExternalPackage_get_clean_target,%) :
+	$(call gb_Output_announce,$*,$(false),EPK,2)
+	rm -f $(call gb_ExternalPackage_get_target,$*)
+
+gb_ExternalPackage_get_packagename = External/$(1)
+
+# Create and register a new ExternalPackage
+#
+# The base directory of the package is the directory of the unpacked
+# tarball.
+#
+# gb_ExternalPackage_ExternalPackage name unpacked
+define gb_ExternalPackage_ExternalPackage
+$(call gb_ExternalPackage_ExternalPackage_internal,$(1),$(2))
+
+$$(eval $$(call gb_Module_register_target,$(call gb_ExternalPackage_get_target,$(1)),$(call gb_ExternalPackage_get_clean_target,$(1))))
+
+endef
+
+# Create a new ExternalPackage
+#
+# This function should only be used in implementations of other gbuild
+# classes.
+#
+# gb_ExternalPackage_ExternalPackage_internal name unpacked
+define gb_ExternalPackage_ExternalPackage_internal
+$(call gb_Package_Package_internal,$(call gb_ExternalPackage_get_packagename,$(1)),$(call gb_UnpackedTarball_get_dir,$(2)))
+$(call gb_Package_use_unpacked,$(call gb_ExternalPackage_get_packagename,$(1)),$(2))
+
+$(call gb_ExternalPackage_get_target,$(1)) : $(call gb_Package_get_target,$(call gb_ExternalPackage_get_packagename,$(1)))
+$(call gb_ExternalPackage_get_target,$(1)) :| $(dir $(call gb_ExternalPackage_get_target,$(1))).dir
+$(call gb_ExternalPackage_get_clean_target,$(1)) : $(call gb_Package_get_clean_target,$(call gb_ExternalPackage_get_packagename,$(1)))
+
+gb_ExternalPackage_UNPACKED_$(1) := $(2)
+
+endef
+
+# Add a file
+#
+# See gb_Package_add_file for details.
+#
+# gb_ExternalPackage_add_file package dest src
+define gb_ExternalPackage_add_file
+$(call gb_Package_add_file,$(call gb_ExternalPackage_get_packagename,$(1)),$(2),$(3))
+
+endef
+
+# Add several files at once
+#
+# See gb_Package_add_files for details.
+#
+# gb_ExternalPackage_add_files package destdir file(s)
+define gb_ExternalPackage_add_files
+$(call gb_Package_add_files,$(call gb_ExternalPackage_get_packagename,$(1)),$(2),$(3))
+
+endef
+
+# Add several files at once
+#
+# See gb_Package_add_files_with_dir for details.
+#
+# gb_ExternalPackage_add_files_with_dir package destdir file(s)
+define gb_ExternalPackage_add_files_with_dir
+$(call gb_Package_add_files_with_dir,$(call gb_ExternalPackage_get_packagename,$(1)),$(2),$(3))
+
+endef
+
+define gb_ExternalPackage__add_file
+$(call gb_UnpackedTarball_mark_output_file,$(gb_ExternalPackage_UNPACKED_$(1)),$(2))
+
+endef
+
+# Add an unpacked file
+#
+# See gb_Package_add_file for details.
+#
+# gb_ExternalPackage_add_unpacked_file package dest src
+define gb_ExternalPackage_add_unpacked_file
+$(call gb_Package_add_file,$(call gb_ExternalPackage_get_packagename,$(1)),$(2),$(3))
+$(call gb_ExternalPackage__add_file,$(1),$(3))
+
+endef
+
+define gb_ExternalPackage__add_files
+$(foreach file,$(2),$(call gb_ExternalPackage__add_file,$(1),$(file)))
+
+endef
+
+# Add several unpacked files at once
+#
+# See gb_Package_add_files for details.
+#
+# gb_ExternalPackage_add_unpacked_files package destdir file(s)
+define gb_ExternalPackage_add_unpacked_files
+$(call gb_Package_add_files,$(call gb_ExternalPackage_get_packagename,$(1)),$(2),$(3))
+$(call gb_ExternalPackage__add_files,$(1),$(3))
+
+endef
+
+# Add several unpacked files at once
+#
+# See gb_Package_add_files_with_dir for details.
+#
+# gb_ExternalPackage_add_unpacked_files_with_dir package destdir file(s)
+define gb_ExternalPackage_add_unpacked_files_with_dir
+$(call gb_Package_add_files_with_dir,$(call gb_ExternalPackage_get_packagename,$(1)),$(2),$(3))
+$(call gb_ExternalPackage__add_files,$(1),$(3))
+
+endef
+
+# Package files from build of an external project
+#
+# gb_ExternalPackage_use_external_project package external
+define gb_ExternalPackage_use_external_project
+$(call gb_Package_use_external_project,$(call gb_ExternalPackage_get_packagename,$(1),$(2)))
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/ExternalProject.mk b/solenv/gbuild/ExternalProject.mk
index 15ca6bc..5731cbf 100644
--- a/solenv/gbuild/ExternalProject.mk
+++ b/solenv/gbuild/ExternalProject.mk
@@ -12,10 +12,12 @@
 # Handles build of an external project
 
 # Build of an external typically uses three gbuild classes:
-# ExternalProject, Package and UnpackedTarball. The first step is to
-# prepare sources using UnpackedTarball. The tarball is passed to an
-# ExternalProject, which handles the build proper and the results are
-# delivered by a Package.
+# ExternalProject, ExternalPackage or Package, and UnpackedTarball. The
+# first step is to prepare sources using UnpackedTarball. The tarball is
+# passed to an ExternalProject, which handles the build proper and the
+# results are delivered by an ExternalPackage (or Package, again;
+# Package is sufficient if no files--e.g., headers--from the unpacked
+# tarball need to be delivered.)
 #
 # ExternalProject has no gbuild abstraction for actually building the
 # external code, so it is necessary to define rule(s) and recipe(s) to
diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk
index 7a34de0..dae1138 100644
--- a/solenv/gbuild/LinkTarget.mk
+++ b/solenv/gbuild/LinkTarget.mk
@@ -1100,7 +1100,7 @@ endef
 
 # Use sources from unpacked tarball of an external project
 define gb_LinkTarget_use_unpacked
-$(call gb_LinkTarget_get_external_headers_target,$(1)) :| $(call gb_UnpackedTarball_get_target,$(2))
+$(call gb_LinkTarget_get_external_headers_target,$(1)) :| $(call gb_UnpackedTarball_get_final_target,$(2))
 
 endef
 
diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
index 58a5407..a9de72c 100644
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -102,6 +102,7 @@ gb_Executable_get_headers_target = $(WORKDIR)/Headers/Executable/$(1)
 gb_ExtensionTarget_get_target = $(WORKDIR)/ExtensionTarget/$(1).oxt
 gb_ExtensionTarget_get_rootdir = $(WORKDIR)/ExtensionTarget/$(1)/root
 gb_ExtensionTarget_get_workdir = $(WORKDIR)/ExtensionTarget/$(1)
+gb_ExternalPackage_get_target = $(WORKDIR)/ExternalPackage/$(1)
 gb_ExternalProject_get_statedir = $(WORKDIR)/ExternalProject/$(1)
 gb_ExternalProject_get_preparation_target = $(WORKDIR)/ExternalProject/$(1).prepare
 gb_ExternalProject_get_state_target = $(WORKDIR)/ExternalProject/$(1)/$(2)
@@ -166,6 +167,7 @@ gb_UnoApiHeadersTarget_get_comprehensive_target = $(WORKDIR)/UnoApiHeadersTarget
 gb_UnoApiHeadersTarget_get_target = $(WORKDIR)/UnoApiHeadersTarget/$(1)/normal.done
 gb_UnoApiPartTarget_get_target = $(WORKDIR)/UnoApiPartTarget/$(1)
 gb_UnpackedTarball_get_dir = $(WORKDIR)/UnpackedTarball/$(1)
+gb_UnpackedTarball_get_final_target = $(WORKDIR)/UnpackedTarball/$(1).update
 gb_UnpackedTarball_get_target = $(WORKDIR)/UnpackedTarball/$(1).done
 gb_UnpackedTarball_get_preparation_target = $(WORKDIR)/UnpackedTarball/$(1).prepare
 gb_UnpackedTarget_get_target = $(WORKDIR)/UnpackedTarget/$(1)
@@ -217,6 +219,7 @@ $(eval $(call gb_Helper_make_clean_targets,\
 	CliUnoApiTarget \
 	ComponentTarget \
 	ComponentsTarget \
+	ExternalPackage \
 	ExtensionTarget \
 	InstallModule \
 	InstallModuleTarget \
diff --git a/solenv/gbuild/UnpackedTarball.mk b/solenv/gbuild/UnpackedTarball.mk
index eef8170..8dcf055 100644
--- a/solenv/gbuild/UnpackedTarball.mk
+++ b/solenv/gbuild/UnpackedTarball.mk
@@ -163,6 +163,9 @@ $(call gb_UnpackedTarball_get_preparation_target,%) :
 $(call gb_UnpackedTarball_get_target,%) :
 	$(call gb_UnpackedTarball__command,$@,$*,$(call gb_UnpackedTarball_get_dir,$*))
 
+$(call gb_UnpackedTarball_get_final_target,%) :
+	touch $@
+
 .PHONY : $(call gb_UnpackedTarball_get_clean_target,%)
 $(call gb_UnpackedTarball_get_clean_target,%) :
 	$(call gb_Output_announce,$*,$(false),PAT,2)
@@ -194,6 +197,9 @@ $(call gb_UnpackedTarball_get_preparation_target,$(1)) : $(call gb_UnpackedTarba
 $(call gb_UnpackedTarball_get_preparation_target,$(1)) :| $(dir $(call gb_UnpackedTarball_get_target,$(1))).dir
 $(call gb_UnpackedTarball_get_target,$(1)) : $(call gb_UnpackedTarball_get_preparation_target,$(1))
 $(call gb_UnpackedTarball_get_target,$(1)) :| $(dir $(call gb_UnpackedTarball_get_target,$(1))).dir
+$(call gb_UnpackedTarball_get_final_target,$(1)) : $(call gb_UnpackedTarball_get_target,$(1))
+
+private gb_UnpackedTarball_PATTERN_RULES_$(1) :=
 
 endef
 
@@ -201,7 +207,7 @@ endef
 define gb_UnpackedTarball_UnpackedTarball
 $(call gb_UnpackedTarball_UnpackedTarball_internal,$(1))
 
-$$(eval $$(call gb_Module_register_target,$(call gb_UnpackedTarball_get_target,$(1)),$(call gb_UnpackedTarball_get_clean_target,$(1))))
+$$(eval $$(call gb_Module_register_target,$(call gb_UnpackedTarball_get_final_target,$(1)),$(call gb_UnpackedTarball_get_clean_target,$(1))))
 
 endef
 
@@ -311,4 +317,50 @@ $(call gb_UnpackedTarball_get_target,$(1)) : UNPACKED_POST_ACTION := $(strip $(2
 
 endef
 
+define gb_UnpackedTarbal__make_pattern_rule
+$(call gb_UnpackedTarball_get_dir,$(1))/%$(2) :
+	touch $$@
+
+$(eval gb_UnpackedTarball_PATTERN_RULES_$(1) += $(2))
+
+endef
+
+define gb_UnpackedTarbal__ensure_pattern_rule
+$(if $(filter $(2),$(gb_UnpackedTarball_PATTERN_RULES_$(1))),,$(call gb_UnpackedTarbal__make_pattern_rule,$(1),$(2)))
+
+endef
+
+define gb_UnpackedTarbal__make_file_rule
+$(call gb_UnpackedTarball_get_dir,$(1))/$(2) :
+	touch $$@
+
+endef
+
+# Mark a source file to be used outside of this module
+#
+# This results in the timestamp of the file being updated, so a possible
+# change is recognized properly by other files depending on it. The
+# update is run after possible post action.
+#
+# See description of class ExternalPackage for more information.
+#
+# gb_UnpackedTarball_mark_output_file unpacked file
+define gb_UnpackedTarball_mark_output_file
+$(call gb_UnpackedTarball_get_final_target,$(1)) : $(call gb_UnpackedTarball_get_dir,$(1))/$(2)
+$(call gb_UnpackedTarball_get_dir,$(1))/$(2) : $(call gb_UnpackedTarball_get_target,$(1))
+$(if $(suffix $(2)),\
+	$(call gb_UnpackedTarbal__ensure_pattern_rule,$(1),$(suffix $(2))),\
+	$(call gb_UnpackedTarbal__make_file_rule,$(1),$(2)) \
+)
+
+endef
+
+# Mark several source files to be used outside of this module
+#
+# gb_UnpackedTarball_mark_output_files unpacked file(s)
+define gb_UnpackedTarball_mark_output_files
+$(foreach file,$(2),$(call gb_UnpackedTarball_mark_output_file,$(1),$(file)))
+
+endef
+
 # vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
index 55442de..8334ead 100644
--- a/solenv/gbuild/gbuild.mk
+++ b/solenv/gbuild/gbuild.mk
@@ -313,6 +313,7 @@ include $(foreach class, \
 	Executable \
 	SdiTarget \
 	Package \
+	ExternalPackage \
 	CustomTarget \
 	ExternalProject \
 	Pagein \
commit 9f42a82937accb19549971ebfe945c7e8273b58c
Author: David Tardon <dtardon at redhat.com>
Date:   Sat Sep 15 16:12:13 2012 +0200

    force unpack in the next run if patching failed
    
    Change-Id: I033e2ab491498ba6b393232bff702db0a52e9a92

diff --git a/solenv/gbuild/UnpackedTarball.mk b/solenv/gbuild/UnpackedTarball.mk
index c69d5e6..eef8170 100644
--- a/solenv/gbuild/UnpackedTarball.mk
+++ b/solenv/gbuild/UnpackedTarball.mk
@@ -126,25 +126,31 @@ endef
 define gb_UnpackedTarball__command
 $(call gb_Output_announce,$(2),$(true),PAT,2)
 $(call gb_Helper_abbreviate_dirs,\
-	cd $(3) && \
-	$(foreach file,$(UNPACKED_FIX_EOL),$(call gb_UnpackedTarball_CONVERTTOUNIX,$(file)) && ) \
-	$(if $(UNPACKED_PATCHES),\
-		for p in $(UNPACKED_PATCHES); do \
-			$(GNUPATCH) -s -p$(UNPACKED_PATCHLEVEL) < "$$p" || exit 1;\
-		done && \
-	) \
-	$(foreach file,$(UNPACKED_FIX_EOL),$(call gb_UnpackedTarball_CONVERTTODOS,$(file)) && ) \
-	$(if $(UNPACKED_FILES),\
-		mkdir -p $(sort $(dir $(UNPACKED_DESTFILES))) && \
-		$(call gb_UnpackedTarball__copy_files,$(UNPACKED_FILES),$(UNPACKED_DESTFILES)) && \
-	) \
-	$(if $(UNPACKED_SUBDIRS),\
-		cp -rf $(UNPACKED_SUBDIRS) $(gb_EXTERNAL_HEADERS_DIR) && \
-	) \
-	$(if $(UNPACKED_POST_ACTION),\
-		$(UNPACKED_POST_ACTION) && \
-	) \
-	touch $(1) \
+	( \
+		cd $(3) && \
+		$(foreach file,$(UNPACKED_FIX_EOL),$(call gb_UnpackedTarball_CONVERTTOUNIX,$(file)) && ) \
+		$(if $(UNPACKED_PATCHES),\
+			for p in $(UNPACKED_PATCHES); do \
+				$(GNUPATCH) -s -p$(UNPACKED_PATCHLEVEL) < "$$p" || exit 1;\
+			done && \
+		) \
+		$(foreach file,$(UNPACKED_FIX_EOL),$(call gb_UnpackedTarball_CONVERTTODOS,$(file)) && ) \
+		$(if $(UNPACKED_FILES),\
+			mkdir -p $(sort $(dir $(UNPACKED_DESTFILES))) && \
+			$(call gb_UnpackedTarball__copy_files,$(UNPACKED_FILES),$(UNPACKED_DESTFILES)) && \
+		) \
+		$(if $(UNPACKED_SUBDIRS),\
+			cp -rf $(UNPACKED_SUBDIRS) $(gb_EXTERNAL_HEADERS_DIR) && \
+		) \
+		$(if $(UNPACKED_POST_ACTION),\
+			$(UNPACKED_POST_ACTION) && \
+		) \
+		touch $(1) \
+	) || \
+	( \
+		touch $(call gb_UnpackedTarball_get_preparation_target,$(2)) && \
+		exit 1 \
+	)
 )
 endef
 


More information about the Libreoffice-commits mailing list