summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt134
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)
+