aboutsummaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorla-ninpre <leobrekalini@gmail.com>2021-09-10 14:06:29 +0000
committerla-ninpre <leobrekalini@gmail.com>2021-09-10 14:06:29 +0000
commit60d1b0c720c58dc08b070dd9d39d72f93a07b028 (patch)
tree0bad69bc7864d2aeb2f9d6c6ddc5cd369589b66a /CMakeLists.txt
parente6e5718516d6258696287e24c1303898510ff091 (diff)
downloadnimisewi_c-0.3.0.tar.gz
nimisewi_c-0.3.0.zip
added support for arc4random_uniform functionv0.3.0
i know that it's probably an overkill for such stupid little program, but why not :D also refactored strlcat support a bit, to make sure that strncat function is used if strlcat could not be found. FossilOrigin-Name: 1b72489c7f0f5b72bac65f1469c9bec650d7ffdabfa4f88409e15c630ac5a52d
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt69
1 files changed, 56 insertions, 13 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index eb42777..a0c299d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.10)
project(nimisewi
- VERSION 0.2.0
+ VERSION 0.3.0
DESCRIPTION "small program that generates random toki pona noun phrase"
HOMEPAGE_URL "https://fsl.aaoth.xyz/nimisewi.c/home")
@@ -24,34 +24,70 @@ include(CheckIncludeFile)
include(CheckSymbolExists)
include(CheckCSourceCompiles)
+set(WARNING_STATIC_BUILD "static build won't work here")
+
# check libraries
cmake_host_system_information(RESULT OS_NAME QUERY OS_NAME)
message(VERBOSE "OS_NAME is ${OS_NAME}")
if(OS_NAME MATCHES "Linux")
check_include_file("bsd/string.h" HAVE_BSD_STRING_H)
- if(HAVE_BSD_STRING_H)
+ check_include_file("bsd/stdlib.h" HAVE_BSD_STDLIB_H)
+ if(HAVE_BSD_STRING_H AND HAVE_BSD_STDLIB_H)
set(CMAKE_REQUIRED_LIBRARIES "bsd")
+
check_symbol_exists(strlcat "bsd/string.h" HAVE_STRLCAT)
if (HAVE_STRLCAT)
list(APPEND EXTRA_DEFINITIONS HAVE_BSD_STRING_H HAVE_STRLCAT)
endif()
+
+ 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()
+
+ # check static libraries
set(CMAKE_REQUIRED_LINK_OPTIONS "-static")
check_c_source_compiles(
- "#include<bsd/string.h>\nint main(void){return 0;}" HAVE_LIBBSD_STATIC)
- if(NOT HAVE_LIBBSD_STATIC)
- message(WARNING "static build won't work here")
+ "#include<bsd/string.h>\nint main(void){return 0;}"
+ HAVE_LIBBSD_STATIC)
+ # libpthread and libmd are needed when linking statically on linux.
+ # these test aren't really checking particular functions, but
+ # they are here to make sure that program could be linked statically
+ unset(CMAKE_REQUIRED_LIBRARIES)
+ set(CMAKE_REQUIRED_LIBRARIES "pthread")
+ check_c_source_compiles(
+ "#include<pthread.h>\nint main(void){return 0;}"
+ HAVE_LIBPTHREAD_STATIC)
+
+ unset(CMAKE_REQUIRED_LIBRARIES)
+ set(CMAKE_REQUIRED_LIBRARIES "md")
+ check_c_source_compiles(
+ "#include<sha2.h>\nint main(void){return 0;}"
+ HAVE_LIBMD_STATIC)
+
+ if(NOT (HAVE_LIBBSD_STATIC
+ AND HAVE_LIBPTHREAD_STATIC
+ AND HAVE_LIBMD_STATIC))
+ message(WARNING ${WARNING_STATIC_BUILD})
endif()
- list(APPEND EXTRA_LIBS bsd)
+
+ list(APPEND EXTRA_LIBS bsd pthread md)
unset(CMAKE_REQUIRED_LIBRARIES)
unset(CMAKE_REQUIRED_LINK_OPTIONS)
endif()
endif()
+
if(OS_NAME MATCHES "(.*BSD)|(DragonFly)")
check_symbol_exists(strlcat "string.h" HAVE_STRLCAT)
if(HAVE_STRLCAT)
list(APPEND EXTRA_DEFINITIONS HAVE_STRLCAT)
endif()
+ check_symbol_exists(arc4random_uniform "stdlib.h" HAVE_ARC4RANDOM_UNIFORM)
+ if(HAVE_ARC4RANDOM_UNIFORM)
+ list(APPEND EXTRA_DEFINITIONS HAVE_ARC4RANDOM_UNIFORM)
+ endif()
check_symbol_exists(pledge "unistd.h" HAVE_PLEDGE)
if(HAVE_PLEDGE)
list(APPEND EXTRA_DEFINITIONS HAVE_PLEDGE)
@@ -63,7 +99,7 @@ check_c_source_compiles(
"#include<stdio.h>\nint main(void){return 0;}" HAVE_LIBC_STATIC
)
if(NOT HAVE_LIBC_STATIC)
- message(WARNING "static build won't work here")
+ message(WARNING ${WARNING_STATIC_BUILD})
endif()
target_link_libraries(nimisewi PUBLIC ${EXTRA_LIBS})
@@ -71,7 +107,7 @@ target_compile_definitions(nimisewi PRIVATE ${EXTRA_DEFINITIONS})
set(NIMISEWI_CGI_STATIC_BUILD FALSE)
if(HAVE_LIBC_STATIC)
- if(HAVE_BSD_STRING_H)
+ if(HAVE_BSD_STRING_H AND HAVE_BSD_STDLIB_H)
if(HAVE_LIBBSD_STATIC)
set(NIMISEWI_CGI_STATIC_BUILD TRUE)
endif()
@@ -88,9 +124,11 @@ if(BUILD_CGI)
${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})
+ set_property(TARGET nimisewi.cgi PROPERTY CGI_INSTALL_DIR
+ ${CGI_INSTALL_DIR})
else()
- set_property(TARGET nimisewi.cgi PROPERTY CGI_INSTALL_DIR "var/www/htdocs/cgi-bin")
+ set_property(TARGET nimisewi.cgi PROPERTY CGI_INSTALL_DIR
+ "var/www/htdocs/cgi-bin")
endif()
target_include_directories(nimisewi.cgi PUBLIC "${PROJECT_BINARY_DIR}")
target_compile_definitions(nimisewi.cgi PRIVATE ${EXTRA_DEFINITIONS})
@@ -106,9 +144,11 @@ if(BUILD_GEMINI_CGI)
${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})
+ set_property(TARGET nimisewi_gemini.cgi PROPERTY GEMINI_CGI_INSTALL_DIR
+ ${GEMINI_CGI_INSTALL_DIR})
else()
- set_property(TARGET nimisewi_gemini.cgi PROPERTY GEMINI_CGI_INSTALL_DIR "var/gemini/cgi-bin")
+ set_property(TARGET nimisewi_gemini.cgi PROPERTY GEMINI_CGI_INSTALL_DIR
+ "var/gemini/cgi-bin")
endif()
target_include_directories(nimisewi_gemini.cgi PUBLIC "${PROJECT_BINARY_DIR}")
target_compile_definitions(nimisewi_gemini.cgi PRIVATE ${EXTRA_DEFINITIONS})
@@ -136,13 +176,16 @@ set(CPACK_PROJECT_VERSION_MAJOR ${nimisewi_VERSION_MAJOR})
set(CPACK_PROJECT_VERSION_MINOR ${nimisewi_VERSION_MINOR})
set(CPACK_PROJECT_VERSION_PATCH ${nimisewi_VERSION_PATCH})
set(CPACK_PACKAGE_FILE_NAME
- ${CMAKE_PROJECT_NAME}-${nimisewi_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR})
+ ${CMAKE_PROJECT_NAME}-${nimisewi_VERSION}
+ -${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR})
set(CPACK_GENERATOR "TGZ" "ZIP")
set(CPACK_SOURCE_GENERATOR "TGZ" "ZIP")
set(CPACK_SOURCE_IGNORE_FILES
\.fslckout
\.fossil-settings
build/
+ utils/
+ download.md
)
set(CPACK_STRIP_FILES TRUE)
include(CPack)