tdd-in-c/subprojects/packagefiles/cgreen/meson.build

190 lines
4.9 KiB
Meson

# 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 `<project_root>/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 <builddir>`)
# 4. look up generated meson.build in `<builddir>/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)