PROJECT(XTrkCAD) enable_testing() # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/app) # additional CMake modules can be found here set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMake/") # Setup high-level build options ... IF(UNIX AND NOT APPLE) SET(XTRKCAD_USE_GTK_DEFAULT ON) SET(XTRKCAD_USE_GETTEXT_DEFAULT ON) ENDIF(UNIX AND NOT APPLE) IF(APPLE) SET(XTRKCAD_USE_GTK_DEFAULT ON) SET(XTRKCAD_USE_GETTEXT_DEFAULT OFF) ENDIF(APPLE) IF(WIN32) CMAKE_MINIMUM_REQUIRED(VERSION 2.4.7 FATAL_ERROR) SET(XTRKCAD_USE_GTK_DEFAULT OFF) SET(XTRKCAD_USE_GETTEXT_DEFAULT OFF) 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(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_GTK) INCLUDE(FindPkgConfig) PKG_CHECK_MODULES(GTK REQUIRED "gtk+-2.0") PKG_CHECK_MODULES(GTK_WEBKIT REQUIRED "webkit-1.0") ENDIF(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() # 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 "4") SET(XTRKCAD_MINOR_VERSION "3") SET(XTRKCAD_RELEASE_VERSION "0") 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) # Setup the rest of the build ... ADD_SUBDIRECTORY(app) ADD_SUBDIRECTORY(distribution) ADD_SUBDIRECTORY(docs)