all repos — nimisewi_c @ 19f698803f5f7d1a212fe4df872b7cd53055451c

simple random toki pona phrase generator

fixed link flags on linux

and added comments to all endifs to not confuse this again.

FossilOrigin-Name: d284c4b7ba8baf2fcf9f6bdaa6b072beb8f8f3b67dee848a009445332f0ac198
la-ninpre leobrekalini@gmail.com
Fri, 10 Sep 2021 17:59:04 +0000
commit

19f698803f5f7d1a212fe4df872b7cd53055451c

parent

bdcc9d24189821bfe47521f439430164ede92302

1 files changed, 49 insertions(+), 31 deletions(-)

jump to
M CMakeLists.txtCMakeLists.txt

@@ -3,7 +3,7 @@

# project specification project(nimisewi - VERSION 0.3.1 + VERSION 0.3.2 DESCRIPTION "small program that generates random toki pona noun phrase" HOMEPAGE_URL "https://fsl.aaoth.xyz/nimisewi.c/home")

@@ -60,13 +60,13 @@

check_symbol_exists(strlcat "bsd/string.h" HAVE_STRLCAT) if (HAVE_STRLCAT) list(APPEND EXTRA_DEFINITIONS HAVE_BSD_STRING_H HAVE_STRLCAT) - endif() + endif() # HAVE_STRLCAT check_symbol_exists(arc4random_uniform "bsd/stdlib.h" HAVE_ARC4RANDOM_UNIFORM) if (HAVE_ARC4RANDOM_UNIFORM) list(APPEND EXTRA_DEFINITIONS HAVE_BSD_STDLIB_H HAVE_ARC4RANDOM_UNIFORM) - endif() + endif() # HAVE_ARC4RANDOM_UNIFORM # check static libraries set(CMAKE_REQUIRED_LINK_OPTIONS "-static")

@@ -94,35 +94,42 @@ if(NOT (HAVE_LIBBSD_STATIC

AND HAVE_LIBPTHREAD_STATIC AND HAVE_LIBMD_STATIC)) message(WARNING ${WARNING_STATIC_BUILD}) - list(APPEND EXTRA_LIBS bsd pthread md) - endif() + endif() # NOT (HAVE_LIBBSD_STATIC AND ...) + + list(APPEND EXTRA_LIBS bsd pthread md) - else() + else() # NOT ANDROID if(NOT (HAVE_LIBBSD_STATIC)) message(WARNING ${WARNING_STATIC_BUILD}) endif() list(APPEND EXTRA_LIBS bsd) - endif() + endif() # NOT ANDROID unset(CMAKE_REQUIRED_LIBRARIES) unset(CMAKE_REQUIRED_LINK_OPTIONS) - endif() -endif() + + endif() # HAVE_BSD_STRING_H AND HAVE_BSD_STDLIB_H + +endif() # OS_NAME MATCHES "Linux" if(OS_NAME MATCHES "(.*BSD)|(DragonFly)") check_symbol_exists(strlcat "string.h" HAVE_STRLCAT) + if(HAVE_STRLCAT) list(APPEND EXTRA_DEFINITIONS HAVE_STRLCAT) - endif() + endif() # HAVE_STRLCAT + check_symbol_exists(arc4random_uniform "stdlib.h" HAVE_ARC4RANDOM_UNIFORM) if(HAVE_ARC4RANDOM_UNIFORM) list(APPEND EXTRA_DEFINITIONS HAVE_ARC4RANDOM_UNIFORM) - endif() + endif() # HAVE_ARC4RANDOM_UNIFORM + check_symbol_exists(pledge "unistd.h" HAVE_PLEDGE) if(HAVE_PLEDGE) list(APPEND EXTRA_DEFINITIONS HAVE_PLEDGE) - endif() -endif() + endif() # HAVE_PLEDGE + +endif() # OS_NAME MATCHES "(.*BSD)|(DragonFly)" set(CMAKE_REQUIRED_LINK_OPTIONS "-static") check_c_source_compiles(

@@ -130,7 +137,7 @@ "#include<stdio.h>\nint main(void){return 0;}" HAVE_LIBC_STATIC

) if(NOT HAVE_LIBC_STATIC) message(WARNING ${WARNING_STATIC_BUILD}) -endif() +endif() # NOT HAVE_LIBC_STATIC target_link_libraries(nimisewi PUBLIC ${EXTRA_LIBS}) target_compile_definitions(nimisewi PRIVATE ${EXTRA_DEFINITIONS})

@@ -140,11 +147,11 @@ if(HAVE_LIBC_STATIC)

if(HAVE_BSD_STRING_H AND HAVE_BSD_STDLIB_H) if(HAVE_LIBBSD_STATIC) set(NIMISEWI_CGI_STATIC_BUILD TRUE) - endif() - else() + endif() # HAVE_LIBBSD_STATIC + else() # HAVE_BSD_STRING_H AND ... set(NIMISEWI_CGI_STATIC_BUILD TRUE) - endif() -endif() + endif() # HAVE_BSD_STRING_H AND ... +endif() # HAVE_LIBBSD_STATIC # optional binaries

@@ -153,52 +160,62 @@ if(BUILD_CGI)

add_executable(nimisewi.cgi cgi.c nimisewi.c ${PROJECT_BINARY_DIR}/nimitoki.c) option(CGI_INSTALL_DIR "specify installation directory of cgi script") + if(CGI_INSTALL_DIR) set_property(TARGET nimisewi.cgi PROPERTY CGI_INSTALL_DIR ${CGI_INSTALL_DIR}) - else() + else() # CGI_INSTALL_DIR set_property(TARGET nimisewi.cgi PROPERTY CGI_INSTALL_DIR "var/www/htdocs/cgi-bin") - endif() + endif() # CGI_INSTALL_DIR + target_include_directories(nimisewi.cgi PUBLIC "${PROJECT_BINARY_DIR}") target_compile_definitions(nimisewi.cgi PRIVATE ${EXTRA_DEFINITIONS}) target_link_libraries(nimisewi.cgi PUBLIC ${EXTRA_LIBS}) + if(NIMISEWI_CGI_STATIC_BUILD) target_link_options(nimisewi.cgi PUBLIC -static) - endif() -endif() + endif() # NIMISEWI_CGI_STATIC_BUILD + +endif() # BUILD_CGI option(BUILD_GEMINI_CGI "build cgi version of nimisewi for gemini protocol" OFF) if(BUILD_GEMINI_CGI) add_executable(nimisewi_gemini.cgi cgi_gemini.c nimisewi.c ${PROJECT_BINARY_DIR}/nimitoki.c) option(GEMINI_CGI_INSTALL_DIR "specify installation directory of cgi script") + if(GEMINI_CGI_INSTALL_DIR) set_property(TARGET nimisewi_gemini.cgi PROPERTY GEMINI_CGI_INSTALL_DIR ${GEMINI_CGI_INSTALL_DIR}) - else() + else() # GEMINI_CGI_INSTALL_DIR set_property(TARGET nimisewi_gemini.cgi PROPERTY GEMINI_CGI_INSTALL_DIR "var/gemini/cgi-bin") - endif() + endif() # GEMINI_CGI_INSTALL_DIR + target_include_directories(nimisewi_gemini.cgi PUBLIC "${PROJECT_BINARY_DIR}") target_compile_definitions(nimisewi_gemini.cgi PRIVATE ${EXTRA_DEFINITIONS}) target_link_libraries(nimisewi_gemini.cgi PUBLIC ${EXTRA_LIBS}) + if(NIMISEWI_CGI_STATIC_BUILD) target_link_options(nimisewi_gemini.cgi PUBLIC -static) - endif() -endif() + endif() # NIMISEWI_CGI_STATIC_BUILD + +endif() # BUILD_GEMINI_CGI # installation install(TARGETS nimisewi DESTINATION bin) + if(BUILD_CGI) install(TARGETS nimisewi.cgi DESTINATION $<TARGET_PROPERTY:nimisewi.cgi,CGI_INSTALL_DIR>) -endif() +endif() # BUILD_CGI + if(BUILD_GEMINI_CGI) install(TARGETS nimisewi_gemini.cgi DESTINATION $<TARGET_PROPERTY:nimisewi_gemini.cgi,GEMINI_CGI_INSTALL_DIR>) -endif() +endif() # BUILD_GEMINI_CGI # packaging

@@ -230,16 +247,17 @@

add_test(NAME version COMMAND nimisewi -v) set_tests_properties(version PROPERTIES PASS_REGULAR_EXPRESSION - "nimisewi [0-9]\.[0-9]\.[0-9]\n[a-z ]+(\nfeatures:\n([A-Z_]+(\n)?)+)?") + "nimisewi [0-9]\.[0-9]\.[0-9]\n[a-z ]+(\n([A-Z_]+(\n)?)+)?") if(BUILD_CGI) add_test(NAME cgi COMMAND nimisewi.cgi) set_tests_properties(cgi PROPERTIES PASS_REGULAR_EXPRESSION "Status: 200 OK\rContent-Type: text\/html\r\r<.*>") -endif() +endif() # BUILD_CGI + if(BUILD_GEMINI_CGI) add_test(NAME gemini_cgi COMMAND nimisewi_gemini.cgi) set_tests_properties(gemini_cgi PROPERTIES PASS_REGULAR_EXPRESSION "20 text\/gemini\r\n.*") -endif() +endif() # BUILD_GEMINI_CGI