Initial commit
This commit is contained in:
134
CMakeLists.txt
Normal file
134
CMakeLists.txt
Normal file
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user