]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
meson: Add build-lsfd option and make rt dependency optional
authorJordan Williams <jordan@jwillikers.com>
Tue, 9 Apr 2024 21:58:27 +0000 (16:58 -0500)
committerJordan Williams <jordan@jwillikers.com>
Tue, 9 Apr 2024 21:58:27 +0000 (16:58 -0500)
A dependency on the rt library is unnecessarily required when checking
for the clock_gettime and timer_create functions.
This causes the build to fail if the rt library is not found.
This should not fail the build as rt is only required for the checks.
Additionally, the lsfd executable and some tests require rt.
There is currently no option to toggle building lsfd.

This PR makes it possible to build without the rt library.
Function checks no longer require rt for the build.
The function checks for the rt library only run when rt is available.
This PR adds an option to allow building without lsfd.
This makes it possible to build without the executable that requires rt.
To not require rt for the test, a additional check has been added.
The effected tests won't be built unless rt has been found.

Signed-off-by: Jordan Williams <jordan@jwillikers.com>
(cherry picked from commit 06b27058a04c1ac9eba44f19e320ecd862f6d75f)

meson.build
meson_options.txt

index 66a90b66fed098d63cc411ebef93b7bfc7ef85ad..d2a1654762c3aa149e29425dabde6c48d6022492 100644 (file)
@@ -732,9 +732,12 @@ endif
 realtime_libs = []
 have = cc.has_function('clock_gettime')
 if not have
-  realtime_libs += cc.find_library('rt', required : true)
-  have = cc.has_function('clock_gettime',
-                         dependencies : realtime_libs)
+  lib_rt = cc.find_library('rt', required : false)
+  if lib_rt.found()
+    realtime_libs += lib_rt
+    have = cc.has_function('clock_gettime',
+                          dependencies : realtime_libs)
+  endif
 endif
 conf.set('HAVE_CLOCK_GETTIME', have ? 1 : false)
 
@@ -742,9 +745,12 @@ thread_libs = dependency('threads')
 
 have = cc.has_function('timer_create')
 if not have
-  realtime_libs = [cc.find_library('rt', required : true)]
-  have = cc.has_function('timer_create',
-                         dependencies : realtime_libs)
+  lib_rt = cc.find_library('rt', required : false)
+  if lib_rt.found()
+    realtime_libs = [lib_rt]
+    have = cc.has_function('timer_create',
+                           dependencies : realtime_libs)
+  endif
   if not have
     realtime_libs += thread_libs
     have = cc.has_function('timer_create',
@@ -2708,16 +2714,20 @@ endif
 mq_libs = []
 mq_libs += cc.find_library('rt', required : true)
 
+lib_rt = cc.find_library('rt', required : get_option('build-lsfd'))
+
+opt = not get_option('build-lsfd').disabled()
 exe = executable(
   'lsfd',
   lsfd_sources,
   include_directories : includes,
   link_with : [lib_common,
                lib_smartcols],
-  dependencies : mq_libs,
+  dependencies : [lib_rt],
   install_dir : usrbin_exec_dir,
-  install : true)
-if not is_disabler(exe)
+  install : opt,
+  build_by_default : opt)
+if opt and not is_disabler(exe)
   exes += exe
   manadocs += ['misc-utils/lsfd.1.adoc']
 endif
@@ -3493,14 +3503,14 @@ exe = executable(
   build_by_default: program_tests)
 exes += exe
 
-if LINUX
+if LINUX and lib_rt.found()
   exe = executable(
     'test_mkfds',
     'tests/helpers/test_mkfds.c',
     'tests/helpers/test_mkfds.h',
     'tests/helpers/test_mkfds_ppoll.c',
     include_directories : includes,
-    dependencies : mq_libs,
+    dependencies : [lib_rt],
     build_by_default: program_tests)
   exes += exe
 endif
index 7acf9d4fcadbb245b989a280d5e2feb4388fe0d5..5cc8b4f6133fbac8c3dbdecd3f134636c1d1e37a 100644 (file)
@@ -101,6 +101,8 @@ option('build-cal', type : 'feature',
        description : 'build cal')
 option('build-logger', type : 'feature',
        description : 'build logger')
+option('build-lsfd', type : 'feature',
+       description : 'build lsfd')
 option('build-switch_root', type : 'feature',
        description : 'switch_root')
 option('build-pivot_root', type : 'feature',