aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQyriad <qyriad@qyriad.me>2024-06-06 12:46:26 -0600
committerQyriad <qyriad@qyriad.me>2024-06-06 12:46:26 -0600
commit06e65e537bd0570aa9de3cc8bad3a1ca006b38b8 (patch)
treef5d8300f7acb71e96e4f1acd95a0166ec9acdf5a
parent8f9bcd20ebc1a4bdf44e8c1b16cac9a905c505d9 (diff)
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
-rw-r--r--meson.build14
-rw-r--r--meson.options4
-rw-r--r--src/libcmd/meson.build2
-rw-r--r--src/libexpr/meson.build2
-rw-r--r--src/libfetchers/meson.build2
-rw-r--r--src/libmain/meson.build2
-rw-r--r--src/libstore/meson.build2
-rw-r--r--src/libutil/meson.build2
-rw-r--r--src/nix/meson.build2
-rw-r--r--tests/unit/meson.build12
10 files changed, 31 insertions, 13 deletions
diff --git a/meson.build b/meson.build
index b98b1fb15..7fd29bdf5 100644
--- a/meson.build
+++ b/meson.build
@@ -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:
diff --git a/meson.options b/meson.options
index 6b13fa8a0..fc2050809 100644
--- a/meson.options
+++ b/meson.options
@@ -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)',
+)
diff --git a/src/libcmd/meson.build b/src/libcmd/meson.build
index 4dc0714c8..3d92f36a4 100644
--- a/src/libcmd/meson.build
+++ b/src/libcmd/meson.build
@@ -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,
diff --git a/src/libexpr/meson.build b/src/libexpr/meson.build
index e60a85b5d..080fdb443 100644
--- a/src/libexpr/meson.build
+++ b/src/libexpr/meson.build
@@ -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,
diff --git a/src/libfetchers/meson.build b/src/libfetchers/meson.build
index ee38b6cda..b66d0b9f9 100644
--- a/src/libfetchers/meson.build
+++ b/src/libfetchers/meson.build
@@ -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,
diff --git a/src/libmain/meson.build b/src/libmain/meson.build
index 075aa83b2..a7cce287c 100644
--- a/src/libmain/meson.build
+++ b/src/libmain/meson.build
@@ -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,
diff --git a/src/libstore/meson.build b/src/libstore/meson.build
index 7a129d22c..fa363bd19 100644
--- a/src/libstore/meson.build
+++ b/src/libstore/meson.build
@@ -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,
diff --git a/src/libutil/meson.build b/src/libutil/meson.build
index 8c3377e76..f6d14a11b 100644
--- a/src/libutil/meson.build
+++ b/src/libutil/meson.build
@@ -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,
)
diff --git a/src/nix/meson.build b/src/nix/meson.build
index 8115a3d08..22f148fcb 100644
--- a/src/nix/meson.build
+++ b/src/nix/meson.build
@@ -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,
diff --git a/tests/unit/meson.build b/tests/unit/meson.build
index 06aff4626..0d3f00ba5 100644
--- a/tests/unit/meson.build
+++ b/tests/unit/meson.build
@@ -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(