diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..63529e4 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,134 @@ +project (logdiag) +cmake_minimum_required (VERSION 2.6.2) + +# Default to 2.6.3 behaviour +cmake_policy (VERSION 2.6.3) + +# Options +option (OPTION_NOINSTALL "Only for developers; work without installing" OFF) + +if (OPTION_NOINSTALL) + set (OPTION_NOINSTALL 1) +else (OPTION_NOINSTALL) + set (OPTION_NOINSTALL 0) +endif (OPTION_NOINSTALL) + + +# Version +set (project_VERSION_MAJOR "0") +set (project_VERSION_MINOR "0") +set (project_VERSION_PATCH "1") +set (project_VERSION "0.0.1") + +# For custom modules +set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + +# Gather package information +find_package (GTK2 2.8 REQUIRED gtk) + +# Test this machine +include (CheckCSourceCompiles) + +CHECK_C_SOURCE_COMPILES ( +"typedef struct abc *d; +int test (d __restrict x); +int main (void) {return 0;}" +HAVE_SANE___RESTRICT) + +CHECK_C_SOURCE_COMPILES ( +"int test (void *restrict x); +int main (void) {return 0;}" +HAVE_RESTRICT) + +include (CheckFunctionExists) + +CHECK_FUNCTION_EXISTS ("snprintf" HAVE_SNPRINTF) +CHECK_FUNCTION_EXISTS ("sprintf_s" HAVE_SPRINTF_S) + +CHECK_FUNCTION_EXISTS ("strdup" HAVE_STRDUP) +CHECK_FUNCTION_EXISTS ("_strdup" HAVE__STRDUP) + +CHECK_FUNCTION_EXISTS ("strtok_r" HAVE_STRTOK_R) +CHECK_FUNCTION_EXISTS ("strtok_s" HAVE_STRTOK_S) + +if (WIN32) + set (HAVE_THREADSAFE_STRTOK true) +endif (WIN32) + +# Localization +find_package (Gettext) +if (GETTEXT_FOUND) + set (HAVE_GETTEXT true) + file (GLOB project_TRANSLATIONS ${CMAKE_CURRENT_SOURCE_DIR}/po/*.po) + GETTEXT_CREATE_TRANSLATIONS ( + ${CMAKE_CURRENT_SOURCE_DIR}/po/${PROJECT_NAME}.pot + ALL ${project_TRANSLATIONS}) +endif (GETTEXT_FOUND) + +# Documentation +# TODO: Pregenerated docs + +#set (GTK_DOC_ENABLE OFF CACHE BOOL +# "Use gtk-doc to build documentation") +#set (GTK_DOC_ENABLE_HTML ON CACHE BOOL +# "Build documentation in HTML format") + +find_package (GtkDoc REQUIRED) +set (project_DOC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/docs/reference") +GTK_DOC_RUN (WORKING_DIR ${project_DOC_DIR} + SOURCE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/src + XML ${project_DOC_DIR}/xml --sgml-mode + HTML ${project_DOC_DIR}/html) + +# Project source files +set (logdiag_SOURCES + src/main.c + src/window-main.c + src/document.c + src/canvas.c + src/symbol-library.c) +set (logdiag_HEADERS + ${CMAKE_CURRENT_BINARY_DIR}/config.h + src/window-main.h + src/document.h + src/canvas.h + src/symbol.h + src/symbol-category.h + src/symbol-library.h) + +# Generate a configure file +configure_file (${CMAKE_CURRENT_SOURCE_DIR}/config.h.in + ${CMAKE_CURRENT_BINARY_DIR}/config.h) +include_directories (${CMAKE_CURRENT_BINARY_DIR}) + +# Build the executable +include_directories (${GTK2_INCLUDE_DIRS}) +add_executable (logdiag ${logdiag_SOURCES} ${logdiag_HEADERS}) +target_link_libraries (logdiag ${GTK2_LIBRARIES}) + +# Installation +install (TARGETS logdiag DESTINATION bin) +install (FILES share/logdiag.desktop DESTINATION share/applications) +install (DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/docs/html/" + DESTINATION usr/gtk-doc/${CMAKE_PROJECT_NAME}) + +# CPack +set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Electric diagram designer.") +set (CPACK_PACKAGE_VENDOR "Přemysl Janouch") +set (CPACK_PACKAGE_CONTACT "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 + "${PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}") +set (CPACK_PACKAGE_INSTALL_DIRECTORY + "${PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}") +set (CPACK_SOURCE_GENERATOR "TGZ;ZIP") +set (CPACK_SOURCE_IGNORE_FILES "/build;/.svn;/.git") +set (CPACK_SOURCE_PACKAGE_FILE_NAME + "${PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}") + +include (CPack) + |