190 lines
4.9 KiB
Meson
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)
|