summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meson.build16
-rw-r--r--src/backend/meson.build2
-rw-r--r--src/fe_utils/meson.build2
-rw-r--r--src/include/meson.build21
4 files changed, 32 insertions, 9 deletions
diff --git a/meson.build b/meson.build
index 431fe9ccc9b..30e0edda3e7 100644
--- a/meson.build
+++ b/meson.build
@@ -3133,6 +3133,8 @@ gen_export_kwargs = {
'install': false,
}
+# command to create stamp files on all OSs
+stamp_cmd = [python, '-c', 'import sys; open(sys.argv[1], "w")', '@OUTPUT0@']
###
@@ -3250,14 +3252,14 @@ subdir('src/port')
frontend_common_code = declare_dependency(
compile_args: ['-DFRONTEND'],
include_directories: [postgres_inc],
- sources: generated_headers,
+ sources: generated_headers_stamp,
dependencies: [os_deps, zlib, zstd, lz4],
)
backend_common_code = declare_dependency(
compile_args: ['-DBUILDING_DLL'],
include_directories: [postgres_inc],
- sources: generated_headers,
+ sources: generated_headers_stamp,
dependencies: [os_deps, zlib, zstd],
)
@@ -3272,7 +3274,7 @@ shlib_code = declare_dependency(
frontend_stlib_code = declare_dependency(
include_directories: [postgres_inc],
link_with: [common_static, pgport_static],
- sources: generated_headers,
+ sources: generated_headers_stamp,
dependencies: [os_deps, libintl],
)
@@ -3280,7 +3282,7 @@ frontend_stlib_code = declare_dependency(
frontend_shlib_code = declare_dependency(
include_directories: [postgres_inc],
link_with: [common_shlib, pgport_shlib],
- sources: generated_headers,
+ sources: generated_headers_stamp,
dependencies: [shlib_code, os_deps, libintl],
)
@@ -3290,7 +3292,7 @@ frontend_shlib_code = declare_dependency(
frontend_no_fe_utils_code = declare_dependency(
include_directories: [postgres_inc],
link_with: [common_static, pgport_static],
- sources: generated_headers,
+ sources: generated_headers_stamp,
dependencies: [os_deps, libintl],
)
@@ -3317,7 +3319,7 @@ subdir('src/interfaces/libpq-oauth')
frontend_code = declare_dependency(
include_directories: [postgres_inc],
link_with: [fe_utils, common_static, pgport_static],
- sources: generated_headers,
+ sources: generated_headers_stamp,
dependencies: [os_deps, libintl],
)
@@ -3347,7 +3349,7 @@ backend_code = declare_dependency(
include_directories: [postgres_inc],
link_args: ldflags_be,
link_with: [],
- sources: generated_headers + generated_backend_headers,
+ sources: generated_backend_headers_stamp,
dependencies: os_deps + backend_both_deps + backend_deps,
)
diff --git a/src/backend/meson.build b/src/backend/meson.build
index 2b0db214804..b831a541652 100644
--- a/src/backend/meson.build
+++ b/src/backend/meson.build
@@ -169,7 +169,7 @@ backend_mod_code = declare_dependency(
compile_args: pg_mod_c_args,
include_directories: postgres_inc,
link_args: pg_mod_link_args,
- sources: generated_headers + generated_backend_headers,
+ sources: generated_backend_headers_stamp,
dependencies: backend_mod_deps,
)
diff --git a/src/fe_utils/meson.build b/src/fe_utils/meson.build
index a18cbc939e4..5a9ddb73463 100644
--- a/src/fe_utils/meson.build
+++ b/src/fe_utils/meson.build
@@ -29,7 +29,7 @@ generated_sources += psqlscan
fe_utils_sources += psqlscan
fe_utils = static_library('libpgfeutils',
- fe_utils_sources + generated_headers,
+ fe_utils_sources,
c_pch: pch_postgres_fe_h,
include_directories: [postgres_inc, libpq_inc],
c_args: host_system == 'windows' ? ['-DFD_SETSIZE=1024'] : [],
diff --git a/src/include/meson.build b/src/include/meson.build
index 2e4b7aa529e..7cb3075da2a 100644
--- a/src/include/meson.build
+++ b/src/include/meson.build
@@ -177,3 +177,24 @@ install_subdir('catalog',
# autoconf generates the file there, ensure we get a conflict
generated_sources_ac += {'src/include': ['stamp-h']}
+
+
+# Instead of having targets depending directly on a list of all generated
+# headers, have them depend on a stamp files for all of them. Dependencies on
+# headers are implemented as order-only dependencies in meson (and then using
+# compiler generated dependencies during incremental rebuilds ). The benefit
+# of using a stamp file is that it makes ninja.build considerably smaller and
+# meson setup faster, as otherwise the list of headers is repeated for every C
+# file, bloating build.ninja by ~2x.
+generated_headers_stamp = custom_target('generated-headers-stamp.h',
+ output: 'generated-headers-stamp.h',
+ input: generated_headers,
+ command: stamp_cmd,
+)
+
+generated_backend_headers_stamp = custom_target('generated-backend-headers-stamp.h',
+ output: 'generated-backend-headers-stamp.h',
+ input: generated_backend_headers,
+ depends: generated_headers_stamp,
+ command: stamp_cmd,
+)