summaryrefslogtreecommitdiffstats
path: root/pch
diff options
context:
space:
mode:
Diffstat (limited to 'pch')
-rw-r--r--pch/Makefile7
-rw-r--r--pch/Module_pch.mk26
-rw-r--r--pch/README.md5
-rw-r--r--pch/StaticLibrary_precompiled_system.mk28
-rw-r--r--pch/inc/clangfix.hxx29
-rw-r--r--pch/inc/pch/precompiled_system.cxx12
-rw-r--r--pch/inc/pch/precompiled_system.hxx85
-rw-r--r--pch/system_empty.cxx10
8 files changed, 202 insertions, 0 deletions
diff --git a/pch/Makefile b/pch/Makefile
new file mode 100644
index 0000000000..ccb1c85a04
--- /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 0000000000..85bedb503a
--- /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 0000000000..4aebbc94b3
--- /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 0000000000..1812bc6aa6
--- /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 0000000000..1a3393b641
--- /dev/null
+++ b/pch/inc/clangfix.hxx
@@ -0,0 +1,29 @@
+/* -*- 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 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 0000000000..ed382aeacf
--- /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 0000000000..a7aa9bcf00
--- /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 0000000000..2b7f95335d
--- /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: */