diff options
| author | Joel Klinghed <the_jk@spawned.biz> | 2023-04-17 21:52:30 +0200 |
|---|---|---|
| committer | Joel Klinghed <the_jk@spawned.biz> | 2023-04-17 21:52:30 +0200 |
| commit | a65df5d6b21233e7058afff0e1cd8e7e0ec193ac (patch) | |
| tree | 24c6f93c8dc32d946a9d8b2d6f66f7317d3e4e64 | |
| parent | 67362896a37742e880025b9c85c4fe49d690ba02 (diff) | |
Replace build system: autoconf -> meson
| -rw-r--r-- | .gitignore | 23 | ||||
| -rw-r--r-- | Makefile.am | 7 | ||||
| -rw-r--r-- | configure.ac | 83 | ||||
| -rw-r--r-- | meson.build | 246 | ||||
| -rw-r--r-- | src/.gitignore | 14 | ||||
| -rw-r--r-- | src/Makefile.am | 49 | ||||
| -rw-r--r-- | test/.gitignore | 7 | ||||
| -rw-r--r-- | test/Makefile.am | 23 |
8 files changed, 247 insertions, 205 deletions
@@ -1,22 +1 @@ -.deps -.libs -*.o -*.lo -Makefile -Makefile.in -/aclocal.m4 -/autom4te.cache -/compile -/config.guess -/config.log -/config.rpath -/config.status -/config.sub -/configure -/depcomp -/install-sh -/ltmain.sh -/libtool -/missing -/mkinstalldirs -/test-driver +build/ diff --git a/Makefile.am b/Makefile.am deleted file mode 100644 index 1107628..0000000 --- a/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -ACLOCAL_AMFLAGS = -I m4 - -MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess config.h.in \ - config.sub configure depcomp install-sh ltmain.sh \ - missing config.rpath mkinstalldirs compile - -SUBDIRS = src test diff --git a/configure.ac b/configure.ac deleted file mode 100644 index 5b49ee5..0000000 --- a/configure.ac +++ /dev/null @@ -1,83 +0,0 @@ -AC_INIT([stuff], [0.1], [the_jk@yahoo.com]) -AC_CONFIG_MACRO_DIR([m4]) - -AM_INIT_AUTOMAKE([dist-bzip2 foreign]) -AM_SILENT_RULES([yes]) -LT_INIT([disable-shared]) -AC_PROG_CXX -AM_PROG_CC_C_O - -AC_LANG([C++]) - -DEFINES= -AX_APPEND_COMPILE_FLAGS([-fno-rtti -fno-exceptions],DEFINES) - -# Test c++11 -OLDCXXFLAGS="$CXXFLAGS" -# Check if it just works with -std=c++11 -# The code below was choosen because if you mix a compiler that is C++11 -# compatible with a libc++ that isn't fully (like clang 3.3 with gcc 4.6 -# libstdcxx) you get errors because of a missing copy constructor for -# std::shared_ptr. Add more tests as we find them. -CXXFLAGS="-std=c++11 $CXXFLAGS" -AC_MSG_CHECKING([for C++11 using (-std=c++11)]) -AC_LINK_IFELSE([AC_LANG_PROGRAM([[ -#include <memory> -]],[[ -std::shared_ptr<int> i(new int(5)); -std::shared_ptr<int> j(i); -]])], - [AC_MSG_RESULT([yes]) - DEFINES="$DEFINES -std=c++11"], - [AC_MSG_RESULT([no]) - CXXFLAGS="-std=c++11 -stdlib=libc++ $OLDCXXFLAGS" - AC_MSG_CHECKING([for C++11 using (-std=c++11 -stdlib=libc++)]) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[ -#include <memory> -]],[[ -std::shared_ptr<int> i(new int(5)); -std::shared_ptr<int> j(i); -]])], - [AC_MSG_RESULT([yes]) - DEFINES="$DEFINES -std=c++11 -stdlib=libc++"], - [AC_MSG_RESULT([no]) - AC_MSG_ERROR([No working C++11 support])])]) -CXXFLAGS="$OLDCXXFLAGS" - -AX_CXXFLAGS_WARN_ALL([DEFINES]) -AX_APPEND_COMPILE_FLAGS([-Wextra -Wno-unused-parameter],DEFINES) -AC_ARG_ENABLE([debug], AC_HELP_STRING([compile with debug options]), - if test "x$enableval" = "xyes"; then - DEFINES="$DEFINES -g -DDEBUG" - else - DEFINES="$DEFINES -DNDEBUG" - fi) -AC_SUBST([DEFINES]) - -# SQLite3 - -# 3.6.5 so that sqlite3_changes() return correct values for DELETE -PKG_CHECK_MODULES([SQLITE3],[sqlite3 >= 3.6.5]) - -# FastCGI - -have_fastcgi=1 -AC_CHECK_HEADER([fcgiapp.h],[],[have_fastcgi=0]) -AC_CHECK_LIB([fcgi],[FCGX_Accept],[],[have_fastcgi=0],[-lfcgi++]) -if test "x$have_fastcgi" = "x1"; then - FASTCGI_CFLAGS= - FASTCGI_LIBS="-lfcgi++ -lfcgi" -fi -AC_SUBST(FASTCGI_CFLAGS) -AC_SUBST(FASTCGI_LIBS) -AC_DEFINE_UNQUOTED([HAVE_FASTCGI],[$have_fastcgi],[define to 1 if FastCGI is available]) - -# Neon - -# 7.25 ??? -PKG_CHECK_MODULES([CURL],[libcurl >= 7.25.0]) - -# Finish up - -AC_CONFIG_HEADERS([src/config.h]) -AC_OUTPUT([Makefile src/Makefile test/Makefile]) 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, + ], + ) +) diff --git a/src/.gitignore b/src/.gitignore deleted file mode 100644 index bda1427..0000000 --- a/src/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -/config.h.in -/config.h.in~ -/config.h -/stamp-h1 -/libcgi.la -/libdb.la -/libevent.la -/libjson.la -/libutil.la -/libsender_client.la -/event -/page -/sender -/test-sender diff --git a/src/Makefile.am b/src/Makefile.am deleted file mode 100644 index e615808..0000000 --- a/src/Makefile.am +++ /dev/null @@ -1,49 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = @DEFINES@ -DLOCALSTATEDIR='"@localstatedir@/stuff"' \ - -DSYSCONFDIR='"@sysconfdir@/stuff"' - -bin_PROGRAMS = event sender page -noinst_PROGRAMS = test-sender -noinst_LTLIBRARIES = libdb.la libcgi.la libutil.la libsender_client.la \ - libjson.la libevent.la - -event_SOURCES = event_main.cc common.hh cgi.hh -event_LDADD = libcgi.la libevent.la - -page_SOURCES = page_main.cc common.hh cgi.hh -page_LDADD = libcgi.la libevent.la - -sender_SOURCES = common.hh sender.cc -sender_CPPFLAGS = $(AM_CPPFLAGS) @CURL_CFLAGS@ -sender_LDADD = libjson.la libutil.la @CURL_LIBS@ - -test_sender_SOURCES = common.hh test_sender.cc sender_client.hh -test_sender_LDADD = libsender_client.la - -libevent_la_SOURCES = event.cc event.hh event_utils.cc event_utils.hh \ - common.hh db.hh sender_client.hh -libevent_la_LIBADD = libdb.la libsender_client.la - -libjson_la_SOURCES = json.hh json.cc common.hh - -libcgi_la_SOURCES = cgi.hh common.hh cgi.cc \ - query_parser.hh query_parser.cc \ - header_parser.hh header_parser.cc \ - args.hh args.cc \ - http.hh http.cc \ - auth.hh auth.cc \ - multipart_formdata_parser.hh multipart_formdata_parser.cc -libcgi_la_CPPFLAGS = $(AM_CPPFLAGS) @FASTCGI_CFLAGS@ -libcgi_la_LIBADD = @FASTCGI_LIBS@ libutil.la - -libdb_la_SOURCES = db.hh common.hh db.cc sqlite3_db.hh sqlite3_db.cc -libdb_la_CPPFLAGS = $(AM_CPPFLAGS) @SQLITE3_CFLAGS@ -libdb_la_LIBADD = @SQLITE3_LIBS@ - -libutil_la_SOURCES = common.hh fsutils.cc fsutils.hh config.cc config.hh \ - strutils.hh strutils.cc sockutils.hh sockutils.cc \ - base64.hh base64.cc - -libsender_client_la_SOURCES = common.h sender_client.cc sender_client.hh -libsender_client_la_LIBADD = libutil.la diff --git a/test/.gitignore b/test/.gitignore deleted file mode 100644 index 2099e3a..0000000 --- a/test/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -/test-*.log -/*.trs -/test-header-parser -/test-multipart-formdata-parser -/test-query-parser -/test-args -/test-json diff --git a/test/Makefile.am b/test/Makefile.am deleted file mode 100644 index 9636062..0000000 --- a/test/Makefile.am +++ /dev/null @@ -1,23 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = @DEFINES@ -I$(top_builddir)/src - -TESTS = test-query-parser test-header-parser test-multipart-formdata-parser \ - test-args test-json - -check_PROGRAMS = $(TESTS) - -test_query_parser_SOURCES = test-query-parser.cc -test_query_parser_LDADD = $(top_srcdir)/src/libcgi.la - -test_header_parser_SOURCES = test-header-parser.cc -test_header_parser_LDADD = $(top_srcdir)/src/libcgi.la - -test_multipart_formdata_parser_SOURCES = test-multipart-formdata-parser.cc -test_multipart_formdata_parser_LDADD = $(top_srcdir)/src/libcgi.la - -test_args_SOURCES = test-args.cc -test_args_LDADD = $(top_srcdir)/src/libcgi.la - -test_json_SOURCES = test-json.cc -test_json_LDADD = $(top_srcdir)/src/libjson.la |
