From: Daan De Meyer Date: Wed, 30 Apr 2025 14:20:15 +0000 (+0200) Subject: resolve: Simplify and optimize meson file X-Git-Tag: v258-rc1~706 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=40e0342e600049428db637b10e252fd8cc54d56f;p=thirdparty%2Fsystemd.git resolve: Simplify and optimize meson file We were compiling the same resolved sources over and over again (up to 10 times) which had a substantial effect on build times. Let's make sure we only compile the resolved sources once by having one static library containing the objects for all the resolved sources. While we're at it, get rid of unnecessary variables and includes in the resolve meson file and generally clean things up a bit. Before (recorded with ClangBuildAnalyzer): **** Time summary: Compilation (1823 times): Parsing (frontend): 675.5 s Codegen & opts (backend): 81.6 s After: **** Time summary: Compilation (1585 times): Parsing (frontend): 553.6 s Codegen & opts (backend): 70.7 s --- diff --git a/src/resolve/meson.build b/src/resolve/meson.build index 9353c2da948..9461d6a8629 100644 --- a/src/resolve/meson.build +++ b/src/resolve/meson.build @@ -1,22 +1,16 @@ # SPDX-License-Identifier: LGPL-2.1-or-later -resolve_includes = [includes, include_directories('.')] - -basic_dns_sources = files( - 'resolved-dns-dnssec.c', - 'resolved-dns-packet.c', - 'resolved-dns-rr.c', - 'resolved-dns-answer.c', - 'resolved-dns-question.c', - 'resolved-util.c', - 'dns-type.c', -) - systemd_resolved_sources = files( + 'dns-type.c', 'resolved-bus.c', 'resolved-conf.c', + 'resolved-dns-answer.c', 'resolved-dns-cache.c', + 'resolved-dns-dnssec.c', + 'resolved-dns-packet.c', 'resolved-dns-query.c', + 'resolved-dns-question.c', + 'resolved-dns-rr.c', 'resolved-dns-scope.c', 'resolved-dns-search-domain.c', 'resolved-dns-server.c', @@ -36,14 +30,10 @@ systemd_resolved_sources = files( 'resolved-mdns.c', 'resolved-resolv-conf.c', 'resolved-socket-graveyard.c', + 'resolved-util.c', 'resolved-varlink.c', ) -resolvectl_sources = files( - 'resolvconf-compat.c', - 'resolvectl.c', -) - ############################################################ dns_type_list_txt = custom_target( @@ -81,16 +71,6 @@ dns_type_to_name_h = custom_target( command : [awk, '-f', '@INPUT0@', '@INPUT1@'], capture : true) -generated_sources += [dns_type_from_name_h, dns_type_to_name_h] -basic_dns_sources += [dns_type_from_name_h, dns_type_to_name_h] - -libsystemd_resolve_core = static_library( - 'systemd-resolve-core', - basic_dns_sources, - include_directories : includes, - dependencies : userspace, - build_by_default : false) - resolved_gperf_c = custom_target( 'resolved_gperf.c', input : 'resolved-gperf.gperf', @@ -103,56 +83,54 @@ resolved_dnssd_gperf_c = custom_target( output : 'resolved-dnssd-gperf.c', command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@']) -generated_sources += [resolved_gperf_c, resolved_dnssd_gperf_c] -systemd_resolved_sources += [resolved_gperf_c, resolved_dnssd_gperf_c] +generated_sources += [dns_type_from_name_h, dns_type_to_name_h, resolved_gperf_c, resolved_dnssd_gperf_c] +systemd_resolved_sources += [dns_type_from_name_h, dns_type_to_name_h, resolved_gperf_c, resolved_dnssd_gperf_c] -systemd_resolved_dependencies = [threads, libm, libopenssl] if conf.get('ENABLE_DNS_OVER_TLS') == 1 systemd_resolved_sources += files( 'resolved-dnstls.c', ) endif -link_with = [ - libshared, - libsystemd_resolve_core, -] +resolved_core = static_library( + 'systemd-resolved-core', + systemd_resolved_sources, + include_directories : includes, + dependencies : userspace, + build_by_default : false) resolve_common_template = { 'link_with' : [ libshared, - libsystemd_resolve_core, + resolved_core, ], 'dependencies' : [ libopenssl, libm, + threads, ], } + resolve_test_template = test_template + resolve_common_template resolve_fuzz_template = fuzz_template + resolve_common_template executables += [ - libexec_template + { + libexec_template + resolve_common_template + { 'name' : 'systemd-resolved', 'dbus' : true, 'conditions' : ['ENABLE_RESOLVE'], - 'sources' : systemd_resolved_sources + - files('resolved.c'), - 'include_directories' : resolve_includes, - 'link_with' : link_with, - 'dependencies' : systemd_resolved_dependencies, + 'sources' : files('resolved.c'), }, - executable_template + { + executable_template + resolve_common_template + { 'name' : 'resolvectl', 'public' : true, 'conditions' : ['ENABLE_RESOLVE'], - 'sources' : resolvectl_sources, - 'link_with' : link_with, - 'dependencies' : [ - libopenssl, + 'sources' : files( + 'resolvconf-compat.c', + 'resolvectl.c', + ), + 'dependencies' : resolve_common_template['dependencies'] + [ libidn, - libm, - threads, ], }, resolve_test_template + { @@ -199,76 +177,26 @@ executables += [ 'sources' : files('test-dnssec-complex.c'), 'type' : 'manual', }, - test_template + { - 'sources' : [ - files('test-dns-search-domain.c'), - basic_dns_sources, - systemd_resolved_sources, - ], - 'dependencies' : systemd_resolved_dependencies, - 'include_directories' : resolve_includes, + resolve_test_template + { + 'sources' : files('test-dns-search-domain.c'), }, - test_template + { - 'sources' : [ - files('test-dns-synthesize.c'), - basic_dns_sources, - systemd_resolved_sources, - ], - 'dependencies' : [ - systemd_resolved_dependencies, - ], - 'include_directories' : resolve_includes, + resolve_test_template + { + 'sources' : files('test-dns-synthesize.c'), }, - test_template + { - 'sources' : [ - files('test-dns-zone.c'), - basic_dns_sources, - systemd_resolved_sources, - ], - 'dependencies' : [ - systemd_resolved_dependencies, - ], - 'include_directories' : resolve_includes, + resolve_test_template + { + 'sources' : files('test-dns-zone.c'), }, - test_template + { - 'sources' : [ - files('test-resolved-link.c'), - basic_dns_sources, - systemd_resolved_sources, - ], - 'dependencies' : [ - systemd_resolved_dependencies, - ], - 'include_directories' : resolve_includes, + resolve_test_template + { + 'sources' : files('test-resolved-link.c'), }, - test_template + { - 'sources' : [ - files('test-dns-query.c'), - basic_dns_sources, - systemd_resolved_sources, - ], - 'dependencies' : [ - systemd_resolved_dependencies, - ], - 'include_directories' : resolve_includes, + resolve_test_template + { + 'sources' : files('test-dns-query.c'), }, - test_template + { - 'sources' : [ - files('test-resolved-stream.c'), - basic_dns_sources, - systemd_resolved_sources, - ], - 'dependencies' : systemd_resolved_dependencies, - 'include_directories' : resolve_includes, + resolve_test_template + { + 'sources' : files('test-resolved-stream.c'), }, - test_template + { - 'sources' : [ - files('test-resolved-dummy-server.c'), - basic_dns_sources, - systemd_resolved_sources, - ], - 'dependencies' : systemd_resolved_dependencies, - 'include_directories' : resolve_includes, + resolve_test_template + { + 'sources' : files('test-resolved-dummy-server.c'), 'type' : 'manual', }, resolve_fuzz_template + {