diff --git a/meson.build b/meson.build index 55395449cc081cb833b2e7ec2758c167ec5fd9e8..d6b2eb8cf890474b855d93fd0eec39bd75047e20 100644 --- a/meson.build +++ b/meson.build @@ -52,6 +52,12 @@ project( find_program('meson', version: '>=0.52.0') +############################################################ +# require Ninja 1.8.2 or later +# +find_program('ninja', + version: '>=1.8.2') + ############################################################ # compiler object # @@ -796,14 +802,17 @@ endif # We put the objects in this build target so they can be # shared by the executable and library builds. # -# We're not really interested in the static library that -# results, but it gets the job done. +# We're not really interested in the static libraries that +# result, but they are joined later into one big library. +# +# Note: in theory this step is not required, we could just +# link all the .o files. The problem is that there are +# many .o files and this makes the command line too long +# (even in Linux) which means the linking fails. # - binary_c_subdir_objects = [] src_subdirs = run_command('meson/source_directories.sh').stdout().strip().split('\n') - src_root_sourcefiles = run_command('meson/source_files.sh','./src').stdout().strip().split('\n') # build the objects from each subdir into their own static library @@ -841,8 +850,8 @@ foreach src_subdir : src_subdirs target_type : 'static_library', sources : [ precompiled_headers, - _sources, - _headers, + _sources, + _headers, ], include_directories: include_directories(incdirs), c_args : [ @@ -854,8 +863,12 @@ foreach src_subdir : src_subdirs endif endforeach -# binary_c objects references all the binary_c_subdir_objects -# as well as the src/*.c files +############################################################ +# +# binary_c objects references all the binary_c_subdir_objects, +# as well as the src/*.c files, so makes one static library +# with everything in it. +# binary_c_objects = build_target( 'binary_c_objects', build_by_default: true, @@ -945,7 +958,7 @@ binary_c_executable = executable( ############################################################ # install both binary_c and libbinary_c.so in their legacy -# locations +# locations. run: ninja binary_c_install_legacy # binary_c_install_legacy = custom_target( 'binary_c_install_legacy',