summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2023-04-17 21:52:30 +0200
committerJoel Klinghed <the_jk@spawned.biz>2023-04-17 21:52:30 +0200
commita65df5d6b21233e7058afff0e1cd8e7e0ec193ac (patch)
tree24c6f93c8dc32d946a9d8b2d6f66f7317d3e4e64
parent67362896a37742e880025b9c85c4fe49d690ba02 (diff)
Replace build system: autoconf -> meson
-rw-r--r--.gitignore23
-rw-r--r--Makefile.am7
-rw-r--r--configure.ac83
-rw-r--r--meson.build246
-rw-r--r--src/.gitignore14
-rw-r--r--src/Makefile.am49
-rw-r--r--test/.gitignore7
-rw-r--r--test/Makefile.am23
8 files changed, 247 insertions, 205 deletions
diff --git a/.gitignore b/.gitignore
index 1ea0379..567609b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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