build: expose option to enable or disable precompiled std headers

They are enabled by default, and Meson will also prints whether or not
they're enabled at the bottom at the end of configuration.

Change-Id: I48db238510bf9e74340b86f243f4bbe360794281
This commit is contained in:
Qyriad 2024-06-06 12:46:26 -06:00
parent 8f9bcd20eb
commit 06e65e537b
10 changed files with 31 additions and 13 deletions

View file

@ -129,6 +129,20 @@ endif
cxx = meson.get_compiler('cpp')
# clangd breaks when GCC is using precompiled headers lmao
# https://git.lix.systems/lix-project/lix/issues/374
should_pch = get_option('enable-pch-std')
summary('PCH C++ stdlib', should_pch, bool_yn : true)
if should_pch
# Unlike basically everything else that takes a file, Meson requires the arguments to
# cpp_pch : to be strings and doesn't accept files(). So absolute path it is.
cpp_pch = [meson.project_source_root() / 'src/pch/precompiled-headers.hh']
else
cpp_pch = []
endif
# Translate some historical and Mesony CPU names to Lixy CPU names.
# FIXME(Qyriad): the 32-bit x86 code is not tested right now, because cross compilation for Lix
# to those architectures is currently broken for other reasons, namely:

View file

@ -64,3 +64,7 @@ option('internal-api-docs', type : 'feature', value : 'auto',
option('profile-dir', type : 'string', value : 'etc/profile.d',
description : 'the path to install shell profile files',
)
option('enable-pch-std', type : 'boolean', value : true,
description : 'whether to use precompiled headers for C++\'s standard library (breaks clangd if you\'re using GCC)',
)

View file

@ -54,7 +54,7 @@ libcmd = library(
nlohmann_json,
lix_doc
],
cpp_pch : ['../pch/precompiled-headers.hh'],
cpp_pch : cpp_pch,
install : true,
# FIXME(Qyriad): is this right?
install_rpath : libdir,

View file

@ -145,7 +145,7 @@ libexpr = library(
include_directories : [
'../libmain',
],
cpp_pch : ['../pch/precompiled-headers.hh'],
cpp_pch : cpp_pch,
install : true,
# FIXME(Qyriad): is this right?
install_rpath : libdir,

View file

@ -30,7 +30,7 @@ libfetchers = library(
liblixutil,
nlohmann_json,
],
cpp_pch : ['../pch/precompiled-headers.hh'],
cpp_pch : cpp_pch,
install : true,
# FIXME(Qyriad): is this right?
install_rpath : libdir,

View file

@ -20,7 +20,7 @@ libmain = library(
liblixutil,
liblixstore,
],
cpp_pch : ['../pch/precompiled-headers.hh'],
cpp_pch : cpp_pch,
install : true,
# FIXME(Qyriad): is this right?
install_rpath : libdir,

View file

@ -220,7 +220,7 @@ libstore = library(
nlohmann_json,
],
cpp_args : cpp_args,
cpp_pch : ['../pch/precompiled-headers.hh'],
cpp_pch : cpp_pch,
install : true,
# FIXME(Qyriad): is this right?
install_rpath : libdir,

View file

@ -129,7 +129,7 @@ libutil = library(
openssl,
nlohmann_json,
],
cpp_pch : ['../pch/precompiled-headers.hh'],
cpp_pch : cpp_pch,
implicit_include_directories : true,
install : true,
)

View file

@ -89,7 +89,7 @@ nix = executable(
boehm,
nlohmann_json,
],
cpp_pch : ['../pch/precompiled-headers.hh'],
cpp_pch : cpp_pch,
install : true,
# FIXME(Qyriad): is this right?
install_rpath : libdir,

View file

@ -68,7 +68,7 @@ libutil_tester = executable(
liblixutil_test_support,
nlohmann_json,
],
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
cpp_pch : cpp_pch,
)
test(
@ -103,7 +103,7 @@ libstore_test_support = library(
include_directories : include_directories(
'libstore-support',
),
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
cpp_pch : cpp_pch,
)
liblixstore_test_support = declare_dependency(
include_directories : include_directories('libstore-support'),
@ -137,7 +137,7 @@ libstore_tester = executable(
gtest,
nlohmann_json,
],
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
cpp_pch : cpp_pch,
)
test(
@ -169,7 +169,7 @@ libexpr_test_support = library(
include_directories : include_directories(
'libexpr-support',
),
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
cpp_pch : cpp_pch,
)
liblixexpr_test_support = declare_dependency(
include_directories : include_directories('libexpr-support'),
@ -203,7 +203,7 @@ libexpr_tester = executable(
gtest,
nlohmann_json,
],
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
cpp_pch : cpp_pch,
)
test(
@ -230,7 +230,7 @@ libcmd_tester = executable(
gtest,
boost,
],
cpp_pch : ['../../src/pch/precompiled-headers.hh'],
cpp_pch : cpp_pch,
)
test(