diff options
author | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2024-05-21 01:29:20 +0200 |
---|---|---|
committer | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2024-05-21 01:29:20 +0200 |
commit | b54b8f5b25403cf3b9623804b2491ec78a8b913e (patch) | |
tree | 8100b69a2fd1e37d1eb400a33c92ec3c984f208b /src | |
parent | 0bbc18869720ad042b668742ca48e5cb8a37491a (diff) | |
download | blogc-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.txt | 22 | ||||
-rw-r--r-- | src/blogc-git-receiver/CMakeLists.txt | 41 | ||||
-rw-r--r-- | src/blogc-make/CMakeLists.txt | 50 | ||||
-rw-r--r-- | src/blogc-make/main.c | 6 | ||||
-rw-r--r-- | src/blogc-runserver/CMakeLists.txt | 37 | ||||
-rw-r--r-- | src/blogc-runserver/main.c | 6 | ||||
-rw-r--r-- | src/blogc/CMakeLists.txt | 58 | ||||
-rw-r--r-- | src/blogc/main.c | 2 | ||||
-rw-r--r-- | src/common/CMakeLists.txt | 21 |
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 +) |