diff options
Diffstat (limited to 'pch')
-rw-r--r-- | pch/Makefile | 7 | ||||
-rw-r--r-- | pch/Module_pch.mk | 26 | ||||
-rw-r--r-- | pch/README.md | 5 | ||||
-rw-r--r-- | pch/StaticLibrary_precompiled_system.mk | 28 | ||||
-rw-r--r-- | pch/inc/clangfix.hxx | 31 | ||||
-rw-r--r-- | pch/inc/pch/precompiled_system.cxx | 12 | ||||
-rw-r--r-- | pch/inc/pch/precompiled_system.hxx | 85 | ||||
-rw-r--r-- | pch/system_empty.cxx | 10 |
8 files changed, 204 insertions, 0 deletions
diff --git a/pch/Makefile b/pch/Makefile new file mode 100644 index 000000000..ccb1c85a0 --- /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 000000000..85bedb503 --- /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.md b/pch/README.md new file mode 100644 index 000000000..4aebbc94b --- /dev/null +++ b/pch/README.md @@ -0,0 +1,5 @@ +# Precompiled Headers + +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 000000000..1812bc6aa --- /dev/null +++ b/pch/StaticLibrary_precompiled_system.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_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 \ +)) + +# We use this to disable a weird "auto-link" feature of boost. +# Define it for the PCH, so that it's set in all cases, +# and gb_LinkTarget_reuse_precompiled_header enforces it for any uses. +$(eval $(call gb_StaticLibrary_add_defs,precompiled_system, \ + -DBOOST_ALL_NO_LIB \ +)) + + +# vim: set noet sw=4 ts=4: diff --git a/pch/inc/clangfix.hxx b/pch/inc/clangfix.hxx new file mode 100644 index 000000000..7280032ba --- /dev/null +++ b/pch/inc/clangfix.hxx @@ -0,0 +1,31 @@ +/* -*- 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/. + */ + +#ifdef __clang__ +// This is a bit lame, but when using -DMACRO that wasn't present when the PCH was built, +// Clang suddenly subjects it to the -Wunused-macros check, which isn't the case otherwise. +// And many of these macros are not actually used. So use them here to silence the warnings. +// See gb_PrecompiledHeader_ignore_flags_system in solenv/gbuild/PrecompiledHeaders.mk . + +#ifdef FASTSAX_DLLIMPLEMENTATION +#endif +#ifdef SAX_DLLIMPLEMENTATION +#endif +#ifdef SCQAHELPER_DLLIMPLEMENTATION +#endif +#ifdef SYSTEM_EXPAT +#endif +#ifdef SYSTEM_LIBXML +#endif +#ifdef SYSTEM_ZLIB +#endif + +#endif // __clang__ + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/pch/inc/pch/precompiled_system.cxx b/pch/inc/pch/precompiled_system.cxx new file mode 100644 index 000000000..ed382aeac --- /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 000000000..a7aa9bcf0 --- /dev/null +++ b/pch/inc/pch/precompiled_system.hxx @@ -0,0 +1,85 @@ +/* -*- 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/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 <optional> +#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 000000000..2b7f95335 --- /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: */ |