From 51095076793a09825c438e54b0dbbe15bef02678 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Eric=20Janouch?= Date: Sat, 30 Oct 2021 01:59:14 +0200 Subject: General project maintenance Bump the minimum required CMake version to 3.0. Bump dependencies. --- CMakeLists.txt | 95 ++++++++++++++++++++++++++-------------------------------- 1 file changed, 43 insertions(+), 52 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index a71a302..bcdf70f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,78 +1,73 @@ -project (autistdraw C) -cmake_minimum_required (VERSION 2.8.5) +cmake_minimum_required (VERSION 3.0) +project (autistdraw VERSION 0.1.0 LANGUAGES C) # Moar warnings if ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUCC) - # -Wunused-function is pretty annoying here, as everything is static - set (wdisabled "-Wno-unused-function -Wno-implicit-fallthrough") + set (wdisabled "-Wno-unused-function") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -Wextra ${wdisabled}") -endif ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUCC) - -if ("${CMAKE_SYSTEM_NAME}" MATCHES "BSD") - include_directories (/usr/local/include) - link_directories (/usr/local/lib) - # Need this for SIGWINCH in FreeBSD and OpenBSD respectively; - # our POSIX version macros make it undefined - add_definitions (-D__BSD_VISIBLE=1 -D_BSD_SOURCE=1) -endif ("${CMAKE_SYSTEM_NAME}" MATCHES "BSD") - -# Build options -option (USE_SYSTEM_TERMO "Don't compile our own termo, use the system one" OFF) - -# Version -set (project_VERSION_MAJOR "0") -set (project_VERSION_MINOR "1") -set (project_VERSION_PATCH "0") - -set (project_VERSION "${project_VERSION_MAJOR}") -set (project_VERSION "${project_VERSION}.${project_VERSION_MINOR}") -set (project_VERSION "${project_VERSION}.${project_VERSION_PATCH}") +endif () # For custom modules -set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) +set (CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake + ${PROJECT_SOURCE_DIR}/liberty/cmake) # Dependencies find_package (LibEV REQUIRED) find_package (Ncursesw REQUIRED) +find_package (Termo QUIET NO_MODULE) +option (USE_SYSTEM_TERMO + "Don't compile our own termo, use the system one" ${Termo_FOUND}) if (USE_SYSTEM_TERMO) - find_package (Termo REQUIRED) -else (USE_SYSTEM_TERMO) + if (NOT Termo_FOUND) + message (FATAL_ERROR "System termo library not found") + endif () +else () + # We don't want the library to install, but EXCLUDE_FROM_ALL ignores tests add_subdirectory (termo EXCLUDE_FROM_ALL) - # We don't have many good choices when we don't want to install it and want - # to support older versions of CMake; this is a relatively clean approach - # (other possibilities: setting a variable in the parent scope, using a - # cache variable, writing a special config file with build paths in it and - # including it here, or setting a custom property on the targets). + file (WRITE ${PROJECT_BINARY_DIR}/CTestCustom.cmake + "execute_process (COMMAND ${CMAKE_COMMAND} --build termo)") + + # We don't have many good choices; this is a relatively clean approach + # (other possibilities: setting a variable in the parent scope, using + # a cache variable, writing a special config file with build paths in it + # and including it here, or setting a custom property on the targets) get_directory_property (Termo_INCLUDE_DIRS DIRECTORY termo INCLUDE_DIRECTORIES) set (Termo_LIBRARIES termo-static) -endif (USE_SYSTEM_TERMO) +endif () -set (project_libraries ${LIBEV_LIBRARIES} ${Termo_LIBRARIES} - ${NCURSESW_LIBRARIES}) -include_directories (${LIBEV_INCLUDE_DIRS} ${Termo_INCLUDE_DIRS} - ${NCURSESW_INCLUDE_DIRS}) +# Configuration +if ("${CMAKE_SYSTEM_NAME}" MATCHES "BSD") + # Need this for SIGWINCH in FreeBSD and OpenBSD respectively; + # our POSIX version macros make it undefined + add_definitions (-D__BSD_VISIBLE=1 -D_BSD_SOURCE=1) +endif () + +set (project_libraries ${LibEV_LIBRARIES} ${Termo_LIBRARIES} + ${Ncursesw_LIBRARIES}) +include_directories (${LibEV_INCLUDE_DIRS} ${Termo_INCLUDE_DIRS} + ${Ncursesw_INCLUDE_DIRS}) + +include (CheckFunctionExists) +set (CMAKE_REQUIRED_LIBRARIES ${project_libraries}) +CHECK_FUNCTION_EXISTS ("resizeterm" HAVE_RESIZETERM) # -liconv may or may not be a part of libc foreach (extra iconv) find_library (extra_lib_${extra} ${extra}) if (extra_lib_${extra}) list (APPEND project_libraries ${extra}) - endif (extra_lib_${extra}) -endforeach (extra) - -# Configuration -include (CheckFunctionExists) -set (CMAKE_REQUIRED_LIBRARIES ${project_libraries}) -CHECK_FUNCTION_EXISTS ("resizeterm" HAVE_RESIZETERM) + endif () +endforeach () # Project source files set (project_sources ${PROJECT_NAME}.c) set (project_headers ${PROJECT_BINARY_DIR}/config.h) # Generate a configuration file -configure_file (${PROJECT_SOURCE_DIR}/config.h.in ${PROJECT_BINARY_DIR}/config.h) +configure_file (${PROJECT_SOURCE_DIR}/config.h.in + ${PROJECT_BINARY_DIR}/config.h) include_directories (${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR}) # Build the main executable and link it @@ -89,16 +84,12 @@ set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Terminal drawing application") set (CPACK_PACKAGE_VENDOR "Premysl Eric Janouch") set (CPACK_PACKAGE_CONTACT "Přemysl Eric Janouch ") set (CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE") -set (CPACK_PACKAGE_VERSION_MAJOR ${project_VERSION_MAJOR}) -set (CPACK_PACKAGE_VERSION_MINOR ${project_VERSION_MINOR}) -set (CPACK_PACKAGE_VERSION_PATCH ${project_VERSION_PATCH}) set (CPACK_GENERATOR "TGZ;ZIP") set (CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${project_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}") -set (CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}-${project_VERSION}") +set (CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}-${PROJECT_VERSION}") set (CPACK_SOURCE_GENERATOR "TGZ;ZIP") set (CPACK_SOURCE_IGNORE_FILES "/\\\\.git;/build;/CMakeLists.txt.user") -set (CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${project_VERSION}") +set (CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}") include (CPack) - -- cgit v1.2.3