summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRafael G. Martins <rafael@rafaelmartins.eng.br>2024-05-21 01:29:20 +0200
committerRafael G. Martins <rafael@rafaelmartins.eng.br>2024-05-21 01:29:20 +0200
commitb54b8f5b25403cf3b9623804b2491ec78a8b913e (patch)
tree8100b69a2fd1e37d1eb400a33c92ec3c984f208b /src
parent0bbc18869720ad042b668742ca48e5cb8a37491a (diff)
downloadblogc-b54b8f5b25403cf3b9623804b2491ec78a8b913e.tar.gz
blogc-b54b8f5b25403cf3b9623804b2491ec78a8b913e.tar.bz2
blogc-b54b8f5b25403cf3b9623804b2491ec78a8b913e.zip
build: replace autotools with cmake
this patch removes all the autoconf/automake/libtool build infrastructure and replaces it with cmake. notable default behavior changes: - man pages are not pre-built, and are not built by default, must be enabled with `-DBUILD_MANPAGES=ON`. removed features: - srpm packaging, to be reintroduced at some point. - deb packaging, now handled externally via rafaelmartins/deb.rgm.io more stuff must be missing, please report bugs!
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt22
-rw-r--r--src/blogc-git-receiver/CMakeLists.txt41
-rw-r--r--src/blogc-make/CMakeLists.txt50
-rw-r--r--src/blogc-make/main.c6
-rw-r--r--src/blogc-runserver/CMakeLists.txt37
-rw-r--r--src/blogc-runserver/main.c6
-rw-r--r--src/blogc/CMakeLists.txt58
-rw-r--r--src/blogc/main.c2
-rw-r--r--src/common/CMakeLists.txt21
9 files changed, 240 insertions, 3 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644
index 0000000..cc5af5d
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,22 @@
+# SPDX-FileCopyrightText: 2024 Rafael G. Martins <rafael@rafaelmartins.eng.br>
+# SPDX-License-Identifier: BSD-3-Clause
+
+add_subdirectory(common)
+
+option(BUILD_BLOGC_MAKE "Build blogc-make binary." OFF)
+option(BUILD_BLOGC_MAKE_EMBEDDED "Build blogc-make embedded into blogc binary." OFF)
+if(BUILD_BLOGC_MAKE OR BUILD_BLOGC_MAKE_EMBEDDED)
+ add_subdirectory(blogc-make)
+endif()
+
+option(BUILD_BLOGC_RUNSERVER "Build blogc-runserver binary." OFF)
+if(BUILD_BLOGC_RUNSERVER)
+ add_subdirectory(blogc-runserver)
+endif()
+
+option(BUILD_BLOGC_GIT_RECEIVER "Build blogc-git-receiver binary." OFF)
+if(BUILD_BLOGC_GIT_RECEIVER)
+ add_subdirectory(blogc-git-receiver)
+endif()
+
+add_subdirectory(blogc)
diff --git a/src/blogc-git-receiver/CMakeLists.txt b/src/blogc-git-receiver/CMakeLists.txt
new file mode 100644
index 0000000..57f5ab6
--- /dev/null
+++ b/src/blogc-git-receiver/CMakeLists.txt
@@ -0,0 +1,41 @@
+# SPDX-FileCopyrightText: 2024 Rafael G. Martins <rafael@rafaelmartins.eng.br>
+# SPDX-License-Identifier: BSD-3-Clause
+
+if(NOT DEFINED HAVE_DIRENT_H OR
+ NOT DEFINED HAVE_ERRNO_H OR
+ NOT DEFINED HAVE_LIBGEN_H OR
+ NOT DEFINED HAVE_SYS_TYPES_H OR
+ NOT DEFINED HAVE_SYS_STAT_H OR
+ NOT DEFINED HAVE_TIME_H OR
+ NOT DEFINED HAVE_UNISTD_H)
+ message(FATAL_ERROR "Missing header dependencies for blogc-git-receiver")
+endif()
+
+add_library(libblogc_git_receiver STATIC
+ post-receive.c
+ post-receive.h
+ pre-receive-parser.c
+ pre-receive-parser.h
+ pre-receive.c
+ pre-receive.h
+ settings.c
+ settings.h
+ shell-command-parser.c
+ shell-command-parser.h
+ shell.c
+ shell.h
+)
+
+target_link_libraries(libblogc_git_receiver PRIVATE
+ libblogc_common
+)
+
+add_executable(blogc-git-receiver
+ main.c
+)
+
+target_link_libraries(blogc-git-receiver PRIVATE
+ libblogc_git_receiver
+)
+
+install(TARGETS blogc-git-receiver)
diff --git a/src/blogc-make/CMakeLists.txt b/src/blogc-make/CMakeLists.txt
new file mode 100644
index 0000000..778db37
--- /dev/null
+++ b/src/blogc-make/CMakeLists.txt
@@ -0,0 +1,50 @@
+# SPDX-FileCopyrightText: 2024 Rafael G. Martins <rafael@rafaelmartins.eng.br>
+# SPDX-License-Identifier: BSD-3-Clause
+
+if(NOT DEFINED HAVE_DIRENT_H OR
+ NOT DEFINED HAVE_FCNTL_H OR
+ NOT DEFINED HAVE_LIBGEN_H OR
+ NOT DEFINED HAVE_SYS_STAT_H OR
+ NOT DEFINED HAVE_SYS_WAIT_H OR
+ NOT DEFINED HAVE_TIME_H OR
+ NOT DEFINED HAVE_UNISTD_H)
+ message(FATAL_ERROR "Missing header dependencies for blogc-make")
+endif()
+
+add_library(libblogc_make STATIC
+ atom.c
+ atom.h
+ ctx.c
+ ctx.h
+ exec.c
+ exec.h
+ exec-native.c
+ exec-native.h
+ httpd.c
+ httpd.h
+ reloader.c
+ reloader.h
+ rules.c
+ rules.h
+ settings.c
+ settings.h
+ utils.c
+ utils.h
+)
+
+target_link_libraries(libblogc_make PRIVATE
+ libblogc_common
+ m
+)
+
+if(NOT BUILD_BLOGC_MAKE_EMBEDDED)
+ add_executable(blogc-make
+ main.c
+ )
+
+ target_link_libraries(blogc-make PRIVATE
+ libblogc_make
+ )
+
+ install(TARGETS blogc-make)
+endif()
diff --git a/src/blogc-make/main.c b/src/blogc-make/main.c
index 5d3f686..7007c1a 100644
--- a/src/blogc-make/main.c
+++ b/src/blogc-make/main.c
@@ -14,6 +14,10 @@
#include "ctx.h"
#include "rules.h"
+#ifndef PACKAGE_VERSION
+#define PACKAGE_VERSION "Unknown"
+#endif
+
static void
print_help(void)
@@ -70,7 +74,7 @@ main(int argc, char **argv)
print_help();
goto cleanup;
case 'v':
- printf("%s\n", PACKAGE_STRING);
+ printf("blogc " PACKAGE_VERSION "\n");
goto cleanup;
case 'D':
dev = true;
diff --git a/src/blogc-runserver/CMakeLists.txt b/src/blogc-runserver/CMakeLists.txt
new file mode 100644
index 0000000..09f203e
--- /dev/null
+++ b/src/blogc-runserver/CMakeLists.txt
@@ -0,0 +1,37 @@
+# SPDX-FileCopyrightText: 2022 Rafael G. Martins <rafael@rafaelmartins.eng.br>
+# SPDX-License-Identifier: BSD-3-Clause
+
+if(NOT DEFINED HAVE_ARPA_INET_H OR
+ NOT DEFINED HAVE_FCNTL_H OR
+ NOT DEFINED HAVE_LIMITS_H OR
+ NOT DEFINED HAVE_NETINET_IN_H OR
+ NOT DEFINED HAVE_SIGNAL_H OR
+ NOT DEFINED HAVE_SYS_SOCKET_H OR
+ NOT DEFINED HAVE_SYS_STAT_H OR
+ NOT DEFINED HAVE_SYS_TYPES_H OR
+ NOT DEFINED HAVE_UNISTD_H)
+ message(FATAL_ERROR "Missing header dependencies for blogc-runserver")
+endif()
+
+add_library(libblogc_runserver STATIC
+ httpd-utils.c
+ httpd-utils.h
+ httpd.c
+ httpd.h
+ mime.c
+ mime.h
+)
+
+target_link_libraries(libblogc_runserver PRIVATE
+ libblogc_common
+)
+
+add_executable(blogc-runserver
+ main.c
+)
+
+target_link_libraries(blogc-runserver PRIVATE
+ libblogc_runserver
+)
+
+install(TARGETS blogc-runserver)
diff --git a/src/blogc-runserver/main.c b/src/blogc-runserver/main.c
index ca402ec..8abd83a 100644
--- a/src/blogc-runserver/main.c
+++ b/src/blogc-runserver/main.c
@@ -11,6 +11,10 @@
#include "../common/utils.h"
#include "httpd.h"
+#ifndef PACKAGE_VERSION
+#define PACKAGE_VERSION "Unknown"
+#endif
+
static void
print_help(const char *default_host, const char *default_port)
@@ -71,7 +75,7 @@ main(int argc, char **argv)
print_help(default_host, default_port);
goto cleanup;
case 'v':
- printf("%s\n", PACKAGE_STRING);
+ printf("blogc " PACKAGE_VERSION "\n");
goto cleanup;
case 't':
if (argv[i][2] != '\0')
diff --git a/src/blogc/CMakeLists.txt b/src/blogc/CMakeLists.txt
new file mode 100644
index 0000000..bdc3f02
--- /dev/null
+++ b/src/blogc/CMakeLists.txt
@@ -0,0 +1,58 @@
+# SPDX-FileCopyrightText: 2024 Rafael G. Martins <rafael@rafaelmartins.eng.br>
+# SPDX-License-Identifier: BSD-3-Clause
+
+add_library(libblogc STATIC
+ content-parser.c
+ content-parser.h
+ datetime-parser.c
+ datetime-parser.h
+ debug.c
+ debug.h
+ filelist-parser.c
+ filelist-parser.h
+ funcvars.c
+ funcvars.h
+ loader.c
+ loader.h
+ renderer.c
+ renderer.h
+ rusage.c
+ rusage.h
+ source-parser.c
+ source-parser.h
+ sysinfo.c
+ sysinfo.h
+ template-parser.c
+ template-parser.h
+ toctree.c
+ toctree.h
+)
+
+target_link_libraries(libblogc PRIVATE
+ libblogc_common
+ m
+)
+
+add_executable(blogc
+ main.c
+)
+
+target_link_libraries(blogc PRIVATE
+ libblogc
+)
+
+if(BUILD_BLOGC_MAKE_EMBEDDED)
+ target_sources(blogc PRIVATE
+ ../blogc-make/main.c
+ )
+
+ target_link_libraries(blogc PRIVATE
+ libblogc_make
+ )
+
+ target_compile_definitions(blogc PRIVATE
+ MAKE_EMBEDDED
+ )
+endif()
+
+install(TARGETS blogc)
diff --git a/src/blogc/main.c b/src/blogc/main.c
index 1e21464..fb28ca1 100644
--- a/src/blogc/main.c
+++ b/src/blogc/main.c
@@ -156,7 +156,7 @@ main(int argc, char **argv)
blogc_print_help();
goto cleanup;
case 'v':
- printf("%s\n", PACKAGE_STRING);
+ printf("blogc " PACKAGE_VERSION "\n");
goto cleanup;
case 'd':
debug = true;
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
new file mode 100644
index 0000000..1619f95
--- /dev/null
+++ b/src/common/CMakeLists.txt
@@ -0,0 +1,21 @@
+# SPDX-FileCopyrightText: 2024 Rafael G. Martins <rafael@rafaelmartins.eng.br>
+# SPDX-License-Identifier: BSD-3-Clause
+
+add_library(libblogc_common STATIC
+ compat.c
+ compat.h
+ config-parser.c
+ config-parser.h
+ error.c
+ error.h
+ file.c
+ file.h
+ sort.c
+ sort.h
+ stdin.c
+ stdin.h
+ utf8.c
+ utf8.h
+ utils.c
+ utils.h
+)