1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
PROJECT(XTrkCAD)
enable_testing()
cmake_minimum_required(VERSION 2.8)
# where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked
# additional CMake modules can be found here
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
# Setup high-level build options ...
if(UNIX)
include(FindPkgConfig)
set(XTRKCAD_USE_GTK_DEFAULT ON)
if(APPLE)
SET(XTRKCAD_USE_GETTEXT_DEFAULT OFF)
else()
set(XTRKCAD_USE_GETTEXT_DEFAULT ON)
add_compile_options("-std=gnu99")
PKG_CHECK_MODULES(GTK_WEBKIT "webkit-1.0")
if(GTK_WEBKIT_FOUND)
set(XTRKCAD_USE_BROWSER_DEFAULT OFF)
else()
set(XTRKCAD_USE_BROWSER_DEFAULT ON)
endif()
endif(APPLE)
endif(UNIX)
IF(WIN32)
SET(XTRKCAD_USE_GTK_DEFAULT OFF)
SET(XTRKCAD_USE_GETTEXT_DEFAULT ON)
SET(CMAKE_C_FLAGS_DEBUG "/D_DEBUG /MTd /Zi /Ob0 /Od /RTC1" CACHE STRING "Flags used by the compiler during debug builds" FORCE)
SET(CMAKE_C_FLAGS_MINSIZEREL "/MT /O1 /Ob1 /D NDEBUG" CACHE STRING "Flags used by the compiler during release minumum size builds" FORCE)
SET(CMAKE_C_FLAGS_RELEASE "/MT /O2 /Ob2 /D NDEBUG" CACHE STRING "Flags used by the compiler during release builds" FORCE)
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/MT /Zi /O2 /Ob1 /D NDEBUG" CACHE STRING "Flags used by the compiler during release with debug info builds" FORCE)
ADD_DEFINITIONS(-DWINDOWS)
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
ENDIF(WIN32)
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
if( POLICY CMP0026 )
cmake_policy(SET CMP0026 OLD)
endif( POLICY CMP0026 )
endif(COMMAND cmake_policy)
SET(XTRKCAD_USE_DOXYGEN_DEFAULT OFF)
OPTION(XTRKCAD_USE_GTK "Use GTK for the graphical user interface back-end" ${XTRKCAD_USE_GTK_DEFAULT})
OPTION(XTRKCAD_USE_GETTEXT "Use gettext for internationalization" ${XTRKCAD_USE_GETTEXT_DEFAULT})
OPTION(XTRKCAD_USE_DOXYGEN "Generate internals documentation using doxygen" ${XTRKCAD_USE_DOXYGEN_DEFAULT})
if(UNIX AND NOT APPLE)
option(XTRKCAD_USE_BROWSER "Show help in default browser" ${XTRKCAD_USE_BROWSER_DEFAULT})
endif()
IF(UNIX)
PKG_CHECK_MODULES(GTK REQUIRED "gtk+-2.0")
ENDIF()
IF(APPLE)
OPTION(XTRKCAD_USE_PACKAGEMAKER "Generate an OSX PackageMaker package for distribution." OFF)
ENDIF(APPLE)
# Hide the advanced stuff ...
MARK_AS_ADVANCED(CMAKE_BACKWARDS_COMPATIBILITY)
MARK_AS_ADVANCED(CMAKE_EXECUTABLE_FORMAT)
MARK_AS_ADVANCED(CMAKE_OSX_ARCHITECTURES)
MARK_AS_ADVANCED(CMAKE_OSX_SYSROOT)
MARK_AS_ADVANCED(CMAKE_USE_CHRPATH)
MARK_AS_ADVANCED(EXECUTABLE_OUTPUT_PATH)
MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH)
# Test for dependencies ...
IF(WIN32 AND NOT XTRKCAD_USE_GTK)
FIND_PACKAGE(HTMLHelp REQUIRED)
ENDIF(WIN32 AND NOT XTRKCAD_USE_GTK)
IF(XTRKCAD_USE_PACKAGEMAKER)
IF(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr")
MESSAGE(SEND_ERROR "XTRKCAD_USE_PACKAGEMAKER requires CMAKE_INSTALL_PREFIX set to /usr.")
ENDIF(NOT CMAKE_INSTALL_PREFIX STREQUAL "/usr")
ENDIF(XTRKCAD_USE_PACKAGEMAKER)
# Find unit testing framework
find_package(CMocka)
if(CMOCKA_FOUND)
include_directories(${CMOCKA_INCLUDE_DIR})
set(LIBS ${LIBS} ${CMOCKA_LIBRARIES})
option( XTRKCAD_TESTING "Build unittests" ON)
endif()
# Find document conversion tool
find_package(Pandoc)
# Test for headers and libraries for portability ...
INCLUDE (CheckIncludeFiles)
CHECK_INCLUDE_FILES (malloc.h HAVE_MALLOC_H)
# Setup some global options for installation ...
SET(XTRKCAD_MAJOR_VERSION "5")
SET(XTRKCAD_MINOR_VERSION "1")
SET(XTRKCAD_RELEASE_VERSION "1")
SET(XTRKCAD_VERSION_MODIFIER "")
SET(XTRKCAD_VERSION "${XTRKCAD_MAJOR_VERSION}.${XTRKCAD_MINOR_VERSION}.${XTRKCAD_RELEASE_VERSION}${XTRKCAD_VERSION_MODIFIER}")
IF(WIN32)
SET( CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX} ${XTRKCAD_VERSION}" )
ENDIF(WIN32)
SET(XTRKCAD_BIN_INSTALL_DIR "bin")
SET(XTRKCAD_LOCALE_INSTALL_DIR "share/locale")
SET(XTRKCAD_PACKAGE "xtrkcad")
SET(XTRKCAD_SHARE_INSTALL_DIR "share/xtrkcad")
# Enable use of a configuration file ...
ADD_DEFINITIONS(-DXTRKCAD_CMAKE_BUILD)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/xtrkcad-config.h.in ${CMAKE_CURRENT_BINARY_DIR}/xtrkcad-config.h)
IF(XTRKCAD_USE_GETTEXT)
SET(GENHELP_OPTS "-bhi")
#
# Find the GnuWin32 installation directory, the gettext include should be located in subdir include
#
IF(WIN32)
if(MSVC)
# use supplied gettext library for Visual Studio
message( STATUS "Use simple_gettext module included with XTrackCAD" )
ADD_DEFINITIONS(-DUSE_SIMPLE_GETTEXT )
else()
# for mingw & co. find libintl.h and use it
find_path ( INTL_PATH libintl.h )
if(INTL_PATH)
message( STATUS "Use installed gettext module" )
INCLUDE_DIRECTORIES(${INTL_PATH})
endif(INTL_PATH)
endif()
ENDIF(WIN32)
ELSE(XTRKCAD_USE_GETTEXT)
SET(GENHELP_OPTS "-bh")
ENDIF(XTRKCAD_USE_GETTEXT)
# Setup the rest of the build ...
ADD_SUBDIRECTORY(app)
ADD_SUBDIRECTORY(distribution)
ADD_SUBDIRECTORY(docs)
|