[Libreoffice-commits] core.git: bin/update_pch.sh pch/inc pch/Makefile pch/Module_pch.mk pch/README pch/StaticLibrary_precompiled_system.mk pch/system_empty.cxx RepositoryModule_host.mk

Luboš Luňák (via logerrit) logerrit at kemper.freedesktop.org
Fri Oct 4 06:59:37 UTC 2019


 RepositoryModule_host.mk                |    1 
 bin/update_pch.sh                       |    6 +-
 pch/Makefile                            |    7 ++
 pch/Module_pch.mk                       |   26 +++++++++
 pch/README                              |    3 +
 pch/StaticLibrary_precompiled_system.mk |   20 +++++++
 pch/inc/pch/precompiled_system.cxx      |   12 ++++
 pch/inc/pch/precompiled_system.hxx      |   87 ++++++++++++++++++++++++++++++++
 pch/system_empty.cxx                    |   10 +++
 9 files changed, 171 insertions(+), 1 deletion(-)

New commits:
commit 08d02b550a1aee0e109334384c260244d450d6a0
Author:     Luboš Luňák <l.lunak at collabora.com>
AuthorDate: Sun Sep 22 12:13:42 2019 +0200
Commit:     Luboš Luňák <l.lunak at collabora.com>
CommitDate: Fri Oct 4 08:58:52 2019 +0200

    add "system" PCH that contains often used system headers such as STL
    
    The idea is that this PCH will be used as a fallback for linktargets
    that do not explicitly set their own PCH.
    
    Change-Id: If05d3f04893a386e5d991f913e094f49249c8f44
    Reviewed-on: https://gerrit.libreoffice.org/79363
    Tested-by: Jenkins
    Reviewed-by: Luboš Luňák <l.lunak at collabora.com>

diff --git a/RepositoryModule_host.mk b/RepositoryModule_host.mk
index e3ea0d994b3b..80992dfed7e2 100644
--- a/RepositoryModule_host.mk
+++ b/RepositoryModule_host.mk
@@ -97,6 +97,7 @@ $(eval $(call gb_Module_add_moduledirs,libreoffice,\
 	oox \
 	$(call gb_Helper_optional,OPENCL,opencl) \
 	package \
+	pch \
 	postprocess \
 	$(call gb_Helper_optional,PYUNO,pyuno) \
 	$(call gb_Helper_optional,QADEVOOO,qadevOOo) \
diff --git a/bin/update_pch.sh b/bin/update_pch.sh
index 2b2df6dc3b46..bc7742ea952e 100755
--- a/bin/update_pch.sh
+++ b/bin/update_pch.sh
@@ -42,8 +42,12 @@ for x in $headers; do
         fi
     else
         header=$x
-        echo updating `echo $header | sed -e s%$root/%%`
+        local update_msg=`echo $header | sed -e s%$root/%%`
         module=`readlink -f $header | sed -e s%$root/%% -e s%/.*%%`
+        if [ "$module" = "pch" ]; then
+            continue # PCH's in pch/inc/pch/ are handled manually
+        fi
+        echo updating $update_msg
         if [ "$module" = "external" ]; then
             module=external/`readlink -f $header | sed -e s%$root/external/%% -e s%/.*%%`
         fi
diff --git a/pch/Makefile b/pch/Makefile
new file mode 100644
index 000000000000..ccb1c85a04da
--- /dev/null
+++ b/pch/Makefile
@@ -0,0 +1,7 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+
+module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+
+include $(module_directory)/../solenv/gbuild/partial_build.mk
+
+# vim: set noet sw=4 ts=4:
diff --git a/pch/Module_pch.mk b/pch/Module_pch.mk
new file mode 100644
index 000000000000..85bedb503afa
--- /dev/null
+++ b/pch/Module_pch.mk
@@ -0,0 +1,26 @@
+# -*- 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/.
+#
+# This file incorporates work covered by the following license notice:
+#
+#   Licensed to the Apache Software Foundation (ASF) under one or more
+#   contributor license agreements. See the NOTICE file distributed
+#   with this work for additional information regarding copyright
+#   ownership. The ASF licenses this file to you under the Apache
+#   License, Version 2.0 (the "License"); you may not use this file
+#   except in compliance with the License. You may obtain a copy of
+#   the License at http://www.apache.org/licenses/LICENSE-2.0 .
+#
+
+$(eval $(call gb_Module_Module,pch))
+
+$(eval $(call gb_Module_add_targets,pch,\
+    StaticLibrary_precompiled_system \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/pch/README b/pch/README
new file mode 100644
index 000000000000..b6c8ca9dd932
--- /dev/null
+++ b/pch/README
@@ -0,0 +1,3 @@
+The purpose of this directory is to generate global precompiled headers
+that can be used by any other gbuild library/executable.
+The libraries themselves are not used.
diff --git a/pch/StaticLibrary_precompiled_system.mk b/pch/StaticLibrary_precompiled_system.mk
new file mode 100644
index 000000000000..9cc9f0b56a1a
--- /dev/null
+++ b/pch/StaticLibrary_precompiled_system.mk
@@ -0,0 +1,20 @@
+# -*- 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_StaticLibrary_StaticLibrary,precompiled_system))
+
+$(eval $(call gb_StaticLibrary_set_precompiled_header,precompiled_system,pch/inc/pch/precompiled_system))
+
+$(eval $(call gb_StaticLibrary_use_external,precompiled_system,boost_headers))
+
+$(eval $(call gb_StaticLibrary_add_exception_objects,precompiled_system,\
+	pch/system_empty \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/pch/inc/pch/precompiled_system.cxx b/pch/inc/pch/precompiled_system.cxx
new file mode 100644
index 000000000000..ed382aeacfef
--- /dev/null
+++ b/pch/inc/pch/precompiled_system.cxx
@@ -0,0 +1,12 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include "precompiled_system.hxx"
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/pch/inc/pch/precompiled_system.hxx b/pch/inc/pch/precompiled_system.hxx
new file mode 100644
index 000000000000..8e53109ecbfc
--- /dev/null
+++ b/pch/inc/pch/precompiled_system.hxx
@@ -0,0 +1,87 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * 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/.
+ */
+
+// Unlike other precompiled_* files, this one is (semi-)manually created.
+// It is based on the output of
+// (for file in */inc/pch/precompiled_*.hxx; do cat "$file" | grep -A 1000 -F "#if PCH_LEVEL >= 1" | grep -B 1000 -F "#endif // PCH_LEVEL >= 1"; done) | grep "#include" | sort -u
+// which is then examined and used here.
+
+#if PCH_LEVEL >= 1
+#include <algorithm>
+#include <array>
+#include <assert.h>
+#include <atomic>
+#include <boost/algorithm/string.hpp>
+#include <boost/cast.hpp>
+#include <boost/circular_buffer.hpp>
+#include <boost/functional/hash.hpp>
+#include <boost/intrusive_ptr.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/logic/tribool.hpp>
+#include <boost/math/special_functions/sinc.hpp>
+#include <boost/multi_array.hpp>
+#include <boost/multi_index/composite_key.hpp>
+#include <boost/multi_index_container.hpp>
+#include <boost/multi_index/identity.hpp>
+#include <boost/multi_index/mem_fun.hpp>
+#include <boost/multi_index/ordered_index.hpp>
+#include <boost/multi_index/random_access_index.hpp>
+#include <boost/operators.hpp>
+#include <boost/optional.hpp>
+#include <boost/optional/optional.hpp>
+#include <boost/property_tree/json_parser.hpp>
+#include <boost/rational.hpp>
+#include <boost/version.hpp>
+#include <cassert>
+#include <climits>
+#include <cmath>
+#include <cstddef>
+#include <cstdlib>
+#include <cstring>
+#include <deque>
+#include <errno.h>
+#include <exception>
+#include <float.h>
+#include <functional>
+#include <initializer_list>
+#include <iomanip>
+#include <iostream>
+#include <iterator>
+#include <limits>
+#include <limits.h>
+#include <list>
+#include <locale>
+#include <map>
+#include <math.h>
+#include <memory>
+#include <new>
+#include <numeric>
+#include <ostream>
+#include <queue>
+#include <set>
+#include <sstream>
+#include <stack>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdexcept>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string>
+#include <string.h>
+#include <string_view>
+#include <time.h>
+#include <typeinfo>
+#include <type_traits>
+#include <unordered_map>
+#include <unordered_set>
+#include <utility>
+#include <vector>
+#endif // PCH_LEVEL >= 1
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/pch/system_empty.cxx b/pch/system_empty.cxx
new file mode 100644
index 000000000000..2b7f95335dd7
--- /dev/null
+++ b/pch/system_empty.cxx
@@ -0,0 +1,10 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * 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/.
+ */
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list