diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..fe93d77 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,111 @@ +project (sdtui C) +cmake_minimum_required (VERSION 2.8.0) + +# Moar warnings +if ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUC) + set (CMAKE_C_FLAGS "-std=gnu99") + set (CMAKE_C_FLAGS_DEBUG + "${CMAKE_C_FLAGS_DEBUG} -Wall -Wextra -Wno-missing-field-initializers") +endif ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUC) + +# 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}") + +# Dependecies +find_package (PkgConfig REQUIRED) +pkg_check_modules (dependencies REQUIRED ncursesw glib-2.0 gio-2.0 pango) + +include_directories (${dependencies_INCLUDE_DIRS}) + +# Project source files +set (project_common_sources + src/generator.c + src/stardict.c) +set (project_common_headers + ${CMAKE_CURRENT_BINARY_DIR}/config.h + src/stardict.h + src/stardict-private.h + src/generator.h) + +# Project libraries +set (project_common_libraries ${dependencies_LIBRARIES}) + +# Create a common project library so that source files are only compiled once +if (${CMAKE_VERSION} VERSION_GREATER "2.8.7") + add_library (stardict OBJECT + ${project_common_sources} + ${project_common_headers}) + set (project_common_sources $<TARGET_OBJECTS:stardict>) +else (${CMAKE_VERSION} VERSION_GREATER "2.8.7") + add_library (stardict STATIC + ${project_common_sources} + ${project_common_headers}) + target_link_libraries (stardict ${project_common_libraries}) + list (APPEND project_common_libraries stardict) + set (project_common_sources) +endif (${CMAKE_VERSION} VERSION_GREATER "2.8.7") + +# Generate a configuration file +configure_file (${CMAKE_CURRENT_SOURCE_DIR}/config.h.in + ${CMAKE_CURRENT_BINARY_DIR}/config.h) +include_directories (${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) + +# Primary target source files +set (project_sources + src/${CMAKE_PROJECT_NAME}.c) +set (project_headers + ${project_common_headers}) + +# Build the main executable and link it +add_executable (${CMAKE_PROJECT_NAME} + ${project_sources} ${project_headers} ${project_common_sources}) +target_link_libraries (${CMAKE_PROJECT_NAME} ${project_common_libraries}) + +# Tools +add_executable (add-pronunciation + src/add-pronunciation.c ${project_common_sources}) +target_link_libraries (add-pronunciation ${project_common_libraries}) + +# The files to be installed +install (TARGETS ${CMAKE_PROJECT_NAME} DESTINATION bin) +install (FILES LICENSE DESTINATION share/doc/${CMAKE_PROJECT_NAME}) + +# Do some unit tests +option (BUILD_TESTING "Build tests" OFF) +set (project_tests stardict) + +if (BUILD_TESTING) + enable_testing () + + foreach (name ${project_tests}) + add_executable (test-${name} + src/test-${name}.c ${project_common_sources}) + target_link_libraries (test-${name} ${project_common_libraries}) + add_test (test-${name} test-${name}) + endforeach (name) +endif (BUILD_TESTING) + +# CPack +set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "StarDict terminal UI") +set (CPACK_PACKAGE_VENDOR "Premysl Janouch") +set (CPACK_PACKAGE_CONTACT "Přemysl Janouch <p.janouch@gmail.com>") +set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_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 + "${CMAKE_PROJECT_NAME}-${project_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}") +set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CMAKE_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 "${CMAKE_PROJECT_NAME}-${project_VERSION}") + +include (CPack) + |