diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2019-09-22 12:13:42 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2019-10-04 08:58:52 +0200 |
commit | 08d02b550a1aee0e109334384c260244d450d6a0 (patch) | |
tree | 8e38df99a4a1163a6f294381925e11a233662889 | |
parent | fd90ad734a931ddfdff4df9bfcf10f12a87b0286 (diff) |
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@collabora.com>
-rw-r--r-- | RepositoryModule_host.mk | 1 | ||||
-rwxr-xr-x | bin/update_pch.sh | 6 | ||||
-rw-r--r-- | pch/Makefile | 7 | ||||
-rw-r--r-- | pch/Module_pch.mk | 26 | ||||
-rw-r--r-- | pch/README | 3 | ||||
-rw-r--r-- | pch/StaticLibrary_precompiled_system.mk | 20 | ||||
-rw-r--r-- | pch/inc/pch/precompiled_system.cxx | 12 | ||||
-rw-r--r-- | pch/inc/pch/precompiled_system.hxx | 87 | ||||
-rw-r--r-- | pch/system_empty.cxx | 10 |
9 files changed, 171 insertions, 1 deletions
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: */ |