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>
This commit is contained in:
Luboš Luňák 2019-09-22 12:13:42 +02:00
parent fd90ad734a
commit 08d02b550a
9 changed files with 171 additions and 1 deletions

View file

@ -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) \

View file

@ -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

7
pch/Makefile Normal file
View file

@ -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:

26
pch/Module_pch.mk Normal file
View file

@ -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:

3
pch/README Normal file
View file

@ -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.

View file

@ -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:

View file

@ -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: */

View file

@ -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: */

10
pch/system_empty.cxx Normal file
View file

@ -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: */