diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f83d9079503a2eb00b07e3b137ebe001a5a60b4..7ae58936f4c6ce49703c70d2b5fc0e0898e0fffd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,4 @@ cmake_minimum_required(VERSION 3.17) -include(TestBigEndian) # Needed for endianness tests set(LKT_VERSION 2.4) @@ -7,15 +6,20 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release") set(CMAKE_BUILD_TYPE RelWithDebInfo) endif() -# Alpho Vivy, CXX only project(lektor VERSION ${LKT_VERSION} LANGUAGES C) + cmake_policy(SET CMP0100 NEW) cmake_policy(SET CMP0009 NEW) + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/utils/cmake/") set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(THREADS_PREFER_PTHREAD_FLAG ON) -SET(CMAKE_COLOR_MAKEFILE ON) +set(CMAKE_COLOR_MAKEFILE ON) + +include(TestBigEndian) # Needed for endianness tests +include(GNUInstallDirs) # Needed for installation things +set(${CMAKE_C_COMPILER_ID}_C_FLAGS) set(COMMON_C_FLAGS -Wall -Wextra -Werror -Wshadow @@ -28,11 +32,9 @@ set(COMMON_C_FLAGS -Wdouble-promotion -Wformat=2 -Wignored-qualifiers - -fopenmp ) - -set(clang_C_FLAGS +set(Clang_C_FLAGS -Weverything -Wpedantic -Wno-extra-semi-stmt @@ -49,11 +51,16 @@ set(clang_C_FLAGS -Wno-format-nonliteral -Wno-missing-variable-declarations -Wno-unknown-warning-option + -fcolor-diagnostics +) +set(GNU_C_FLAGS + -fdiagnostics-color=always ) -set(gnu_C_FLAGS) +### ### +# FIND DEPENDENCIES # +### ### -# Find dependencies find_library(MPV_LIBRARY mpv REQUIRED) # tested with 0.32.0 find_library(SQLITE3_LIBRARY sqlite3 REQUIRED version>=3.31.0) # tested with 3.34.1 @@ -64,6 +71,8 @@ find_package(CURL REQUIRED HTTP HTTPS) # tested find_program(MKVPROPEDIT mkvpropedit REQUIRED) # To DL karas and apply metadata find_program(XXD xxd REQUIRED) # To embed the sqlite db schemas into the binary +message(STATUS "The installation prefix is ${CMAKE_INSTALL_PREFIX}") + TEST_BIG_ENDIAN(IS_BIG_ENDIAN) if(IS_BIG_ENDIAN) set(LKT_ENDIANES_BIG 1) @@ -93,9 +102,9 @@ if(UNIX AND NOT APPLE) set(GENERATE_MANPAGES 1) endif() -################## -# Grab all files # -################## +### ### +# GRAB ALL FILES # +### ### set(lektor_db_SOURCES src/database/queue.c @@ -216,9 +225,9 @@ set(SQL_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/database/memory.sql ) -####################### -# Set all the targets # -####################### +### ### +# THE COMPILATION DIRECTIVES # +### ### add_custom_command(OUTPUT ${SQL_GENERATED_FILE} COMMAND ${CMAKE_COMMAND} -E touch ${SQL_GENERATED_FILE} @@ -238,13 +247,17 @@ add_executable(lektord ${lektord_SOURCES} ${SQL_GENERATED_FILE}) add_executable(lkt ${lkt_SOURCES}) add_executable(luka ${luka_SOURCES} ${SQL_GENERATED_FILE}) +set(MANPAGES_COMMANDS) if(GENERATE_MANPAGES) message(STATUS "Generating manpages") set(MANPAGE_COMMANDS lkt lektord lektor luka) foreach(CMD IN LISTS MANPAGE_COMMANDS) add_custom_target(manpage_cmd_${CMD} ALL - COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/utils/scripts/manpage.bash ${CMAKE_CURRENT_SOURCE_DIR}/man/${CMD}.template ${CMAKE_CURRENT_BINARY_DIR}/${CMD}.1 ${CMAKE_CURRENT_SOURCE_DIR}/man/footer + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/utils/scripts/manpage.bash + ${CMAKE_CURRENT_SOURCE_DIR}/man/${CMD}.template + ${CMAKE_CURRENT_BINARY_DIR}/${CMD}.1 + ${CMAKE_CURRENT_SOURCE_DIR}/man/footer DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/man/${CMD}.template ${CMAKE_CURRENT_SOURCE_DIR}/man/footer COMMENT "Generating manpage for command ${CMD}" ) @@ -282,10 +295,6 @@ target_include_directories(lektord PRIVATE ${CURL_INCLUDE_DIRS} ) -target_compile_options(lektord PRIVATE ${COMMON_C_FLAGS}) -target_compile_options(lkt PRIVATE ${COMMON_C_FLAGS}) -target_compile_options(luka PRIVATE ${COMMON_C_FLAGS}) - target_link_libraries(lektord PRIVATE -fopenmp) target_link_libraries(luka PRIVATE -fopenmp) @@ -297,18 +306,23 @@ target_precompile_headers(lektord PRIVATE ${common_HEADERS}) target_precompile_headers(lkt PRIVATE ${common_HEADERS}) target_precompile_headers(luka PRIVATE ${common_HEADERS}) -if (${CMAKE_C_COMPILER_ID} STREQUAL "Clang") - target_compile_options(lektord PRIVATE ${clang_C_FLAGS}) - target_compile_options(lkt PRIVATE ${clang_C_FLAGS}) - target_compile_options(luka PRIVATE ${clang_C_FLAGS}) +target_compile_options(lektord PRIVATE ${COMMON_C_FLAGS} ${${CMAKE_C_COMPILER_ID}_C_FLAGS}) +target_compile_options(lkt PRIVATE ${COMMON_C_FLAGS} ${${CMAKE_C_COMPILER_ID}_C_FLAGS}) +target_compile_options(luka PRIVATE ${COMMON_C_FLAGS} ${${CMAKE_C_COMPILER_ID}_C_FLAGS}) - # Force the color output - add_compile_options(-fcolor-diagnostics) -elseif (${CMAKE_C_COMPILER_ID} STREQUAL "GNU") - target_compile_options(lektord PRIVATE ${gnu_C_FLAGS}) - target_compile_options(lkt PRIVATE ${gnu_C_FLAGS}) - target_compile_options(luka PRIVATE ${gnu_C_FLAGS}) +### ### +# THE INSTALL DIRECTIVES # +### ### - # Force the color output - add_compile_options(-fdiagnostics-color=always) -endif() +install(TARGETS lektord lkt luka + RUNTIME # For lektord + RUNTIME # For lkt + RUNTIME # For luka +) + +foreach(CMD IN LISTS MANPAGE_COMMANDS) + install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/${CMD}.1 # The manpage to install + DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 # A cat 1 manpage + ) +endforeach()