# Most of the setup is copy&paste, how to reproduce (the hard way..): # 0. try to use `cgreen` as normal `cmake` subproject # 1. add bare git-wrap for cgreen -> `subprojects/cgreen.wrap`: # > [wrap-git] # > url = https://github.com/cgreen-devs/cgreen.git # > revision = master # > depth = 1 # 2. in `/meson.build`, add normal cmake subproject setup: # > cmake = import('cmake') # > cgreen = cmake.subproject('cgreen') # > # you may want to lookup available targets before # > message('CMaket targets:\n - ' + '\n - '.join(cgreen.target_list())) # > cgreen_dep = cgreen.dependency('cgreen_shared') # > cgreen_runner_dep = cgreen.dependency('cgreen_runner') # 3. compile with meson (`meson compile -C `) # 4. look up generated meson.build in `/subprojects/cgreen/meson.build` # 5. copy & paste into subprojects/packagefiles # a. add meson overrides for wanted dependencies: # > meson.override_dependency('cgreen', cgreen_shared_dep) # > meson.override_find_program('cgreen-runner', cgreen_runner) # b. remove all other generated targets # 6. fix the errors you faced before :) # a. remove redundant `FILENAME` defines # b. checkout how `config.h` is generated (see `subprojects/cgreen/config.h.cmake`) # c. apply that to [meson setup](https://mesonbuild.com/Configuration.html) # or create a minimal working substitute ;) -> see below (:30-35) project('cgreen', 'c', 'cpp') configure_file( output : 'config.h', configuration: { 'PACKAGE': '"cgreen"', 'VERSION': '"2.8.12"' }) cgreen_shared_dir = include_directories('src', '.', 'include') cgreen_shared_sys = include_directories(is_system : true) cgreen_shared_inc = [cgreen_shared_dir, cgreen_shared_sys] cgreen_shared_src = files( 'src/assertions.c', 'src/boxed_double.c', 'src/breadcrumb.c', 'src/cgreen_time.c', 'src/cgreen_value.c', 'src/constraint.c', 'src/cute_reporter.c', 'src/cdash_reporter.c', 'src/messaging.c', 'src/message_formatting.c', 'src/mocks.c', 'src/parameters.c', 'src/reporter.c', 'src/runner.c', 'src/string_comparison.c', 'src/suite.c', 'src/text_reporter.c', 'src/utils.c', 'src/vector.c', 'src/xml_reporter.c', 'src/posix_cgreen_pipe.c', 'src/posix_cgreen_time.c', 'src/posix_runner_platform.c', 'src/cpp_assertions.cpp', 'src/cpp_constraint.cpp', 'gitrevision.h' ) cgreen_shared = shared_library( 'cgreen_shared', cgreen_shared_src, build_by_default : true, link_args : [ '-lstdc++', '-lm', '-lgcc_s', '-lgcc', '-lc', '-lgcc_s', '-lgcc', '-lc' ], link_with : [], include_directories : cgreen_shared_inc, install : true, override_options : ['c_std=c99', 'cpp_std=c++98'], objects : [], install_dir : 'lib64', c_args : [ '-Wstrict-prototypes', '-Wunused', '-O', '-DFILENAME="src/assertions.c"', '-DVERSION="1.6.0"', '-D_FORTIFY_SOURCE=2', '-D_REENTRANT', '-D_XOPEN_SOURCE', '-D_XOPEN_SOURCE_EXTENDED', '-D__STDC_FORMAT_MACROS', '-Dcgreen_shared_EXPORTS', ], cpp_args : [ '-Weffc++', '-Wunused', '-O', '-DFILENAME="src/cpp_assertions.cpp"', '-DVERSION="1.6.0"', '-D_FORTIFY_SOURCE=2', '-D_REENTRANT', '-D_XOPEN_SOURCE', '-D_XOPEN_SOURCE_EXTENDED', '-D__STDC_FORMAT_MACROS', '-Dcgreen_shared_EXPORTS', '-DFILENAME="src/cpp_constraint.cpp"' ] ) cgreen_shared_dep = declare_dependency( link_args : [ '-lstdc++', '-lm', '-lgcc_s', '-lgcc', '-lc', '-lgcc_s', '-lgcc', '-lc' ], link_with : cgreen_shared, compile_args : [], include_directories : cgreen_shared_inc ) meson.override_dependency('cgreen', cgreen_shared_dep) cgreen_runner_dir = include_directories( 'tools', '.', 'include', 'src', ) cgreen_runner_sys = include_directories(is_system : true) cgreen_runner_inc = [cgreen_runner_dir, cgreen_runner_sys] cgreen_runner_src = files( 'tools/cgreen-runner.c', 'tools/gopt.c', 'tools/gopt-errors.c', 'tools/runner.c', 'tools/discoverer.c', 'tools/test_item.c', 'tools/io.c' ) cgreen_runner = executable( 'cgreen_runner', cgreen_runner_src, build_by_default : true, link_args : [ '-std=c99', '-Wstrict-prototypes', '-rdynamic', '-ldl', '-lstdc++', '-lm', '-lgcc_s', '-lgcc', '-lc', '-lgcc_s', '-lgcc', '-lc' ], link_with : [cgreen_shared], include_directories : cgreen_runner_inc, install : true, override_options : ['c_std=c99'], objects : [], install_dir : 'bin', c_args : [ '-Wstrict-prototypes', '-Wunused', '-O', '-DFILENAME="tools/cgreen-runner.c"', '-DVERSION="1.6.0"', '-D_FORTIFY_SOURCE=2', '-D_REENTRANT', '-D_XOPEN_SOURCE', '-D_XOPEN_SOURCE_EXTENDED', '-D__STDC_FORMAT_MACROS', '-DNM_EXECUTABLE="/usr/bin/nm"', ], pie : true ) meson.override_find_program('cgreen-runner', cgreen_runner)