From a65df5d6b21233e7058afff0e1cd8e7e0ec193ac Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Mon, 17 Apr 2023 21:52:30 +0200 Subject: Replace build system: autoconf -> meson --- meson.build | 246 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 246 insertions(+) create mode 100644 meson.build (limited to 'meson.build') diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..846e0c5 --- /dev/null +++ b/meson.build @@ -0,0 +1,246 @@ +project( + 'stuff', 'cpp', + version : '0.2', + meson_version: '>= 0.59', + default_options : [ + 'warning_level=3', + 'cpp_std=c++17', + 'cpp_rtti=false', + 'cpp_eh=none', + ], +) + +cpp = meson.get_compiler('cpp') +cpp_flags = cpp.get_supported_arguments( + '-Wno-unused-parameter', + checked: 'off', +) +if get_option('buildtype') == 'release' + cpp_flags += '-DNDEBUG' +endif + +add_global_arguments(cpp_flags, language: 'cpp') + +add_project_arguments(['-DHAVE_CONFIG_H'], language: 'cpp') + +conf_data = configuration_data() + +# 3.6.5 so that sqlite3_changes() return correct values for DELETE +sqlite3_dep = dependency('sqlite3', version: '>= 3.6.5') + +curl_dep = dependency('libcurl', version: '>= 7.25.0') + +# It is really weird that fcgi++ doesn't depend on fcgi +fastcgipp_dep = dependency('fcgi++', version: '>= 2.4.2', required: false) +fastcgi_dep = dependency('fcgi', version: '>= 2.4.2', required: false) + +conf_data.set10('HAVE_FASTCGI', fastcgipp_dep.found() and fastcgi_dep.found()) +conf_data.set_quoted('SYSCONFDIR', join_paths(get_option('prefix'), + get_option('sysconfdir'))) +conf_data.set_quoted('LOCALSTATEDIR', join_paths(get_option('prefix'), + get_option('localstatedir'))) +configure_file(output: 'config.h', + configuration: conf_data) + +inc = include_directories('src') + +util_lib = static_library( + 'util', + 'src/fsutils.cc', + 'src/config.cc', + 'src/strutils.cc', + 'src/sockutils.cc', + 'src/base64.cc', + gnu_symbol_visibility: 'hidden', + include_directories: inc, + install: false, +) +util_dep = declare_dependency( + include_directories: inc, + link_with: util_lib, +) + +json_lib = static_library( + 'json', + 'src/json.cc', + gnu_symbol_visibility: 'hidden', + include_directories: inc, + install: false, +) +json_dep = declare_dependency( + include_directories: inc, + link_with: json_lib, +) + +cgi_deps = [ + fastcgi_dep, + fastcgipp_dep, + util_dep, +] +cgi_lib = static_library( + 'cgi', + 'src/cgi.cc', + 'src/query_parser.cc', + 'src/header_parser.cc', + 'src/args.cc', + 'src/http.cc', + 'src/auth.cc', + 'src/multipart_formdata_parser.cc', + dependencies: cgi_deps, + gnu_symbol_visibility: 'hidden', + include_directories: inc, + install: false, +) +cgi_dep = declare_dependency( + dependencies: cgi_deps, + include_directories: inc, + link_with: cgi_lib, +) + +db_deps = [ + sqlite3_dep, +] +db_lib = static_library( + 'db', + 'src/db.cc', + 'src/sqlite3_db.cc', + dependencies: db_deps, + gnu_symbol_visibility: 'hidden', + include_directories: inc, + install: false, +) +db_dep = declare_dependency( + dependencies: db_deps, + include_directories: inc, + link_with: db_lib, +) + +sender_client_deps = [ + util_dep, +] +sender_client_lib = static_library( + 'sender_client', + 'src/sender_client.cc', + dependencies: sender_client_deps, + gnu_symbol_visibility: 'hidden', + include_directories: inc, + install: false, +) +sender_client_dep = declare_dependency( + dependencies: sender_client_deps, + include_directories: inc, + link_with: sender_client_lib, +) + +event_deps = [ + db_dep, + sender_client_dep, +] +event_lib = static_library( + 'event', + 'src/event.cc', + 'src/event_utils.cc', + dependencies: event_deps, + gnu_symbol_visibility: 'hidden', + include_directories: inc, + install: false, +) +event_dep = declare_dependency( + dependencies: event_deps, + include_directories: inc, + link_with: event_lib, +) + +executable( + 'event', + 'src/event_main.cc', + dependencies: [ + cgi_dep, + event_dep, + ], + install: true, +) + +executable( + 'page', + 'src/page_main.cc', + dependencies: [ + cgi_dep, + event_dep, + ], + install: true, +) + +executable( + 'sender', + 'src/sender.cc', + dependencies: [ + curl_dep, + json_dep, + util_dep, + ], + install: true, +) + +executable( + 'test-sender', + 'src/test_sender.cc', + dependencies: [ + sender_client_dep, + ], +) + +test( + 'query-parser', + executable( + 'test-query-parser', + 'test/test-query-parser.cc', + dependencies: [ + cgi_dep, + ], + ) +) + +test( + 'header-parser', + executable( + 'test-header-parser', + 'test/test-header-parser.cc', + dependencies: [ + cgi_dep, + ], + ) +) + +test( + 'multipart-formatdata-parser', + executable( + 'test-multipart-formatdata-parser', + 'test/test-multipart-formdata-parser.cc', + dependencies: [ + cgi_dep, + ], + ) +) + +test( + 'args', + executable( + 'test-args', + 'test/test-args.cc', + dependencies: [ + cgi_dep, + ], + ) +) + +test( + 'json', + executable( + 'test-json', + 'test/test-json.cc', + dependencies: [ + json_dep, + ], + ) +) -- cgit v1.2.3-70-g09d2