open-license-manager
2014-10-15 3f33fb09237f19f5f1c64bf124dabef3d202a1c5
CMakeLists.txt
@@ -2,7 +2,8 @@
#make it compatible with find_boost (exchange lowercase to camelcase)
#fix shared libraries activation
cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)
#cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)
cmake_minimum_required(VERSION 2.8.7 FATAL_ERROR)
#version variables, major and minor must be 1 character only
SET(LICENSECC_MAJOR_VERSION 1)
@@ -12,25 +13,34 @@
SET(LICENSECC_VERSION "${LICENSECC_MAJOR_VERSION}.${LICENSECC_MINOR_VERSION}.${LICENSECC_PATCH_VERSION}")
SET(LICENSECC_SHORT_LICENSE "BSD Software License")
# add this options before PROJECT keyword
SET(CMAKE_DISABLE_SOURCE_CHANGES OFF)
SET(CMAKE_DISABLE_SOURCE_CHANGES ON)
SET(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
SET(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "CMake verbose" FORCE)
project (license++ C CXX)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/build/modules/")
include(utilities)
string(TOLOWER ${CMAKE_BUILD_TYPE} _CMAKE_BUILD_TYPE)
EVAL_CONDITION(RELEASE_BUILD ${_CMAKE_BUILD_TYPE} STREQUAL "release")
if(CMAKE_BUILD_TYPE)
   string(TOLOWER ${CMAKE_BUILD_TYPE} _CMAKE_BUILD_TYPE)
   EVAL_CONDITION(RELEASE_BUILD ${_CMAKE_BUILD_TYPE} STREQUAL "release")
else(CMAKE_BUILD_TYPE)
   set(RELEASE_BUILD 0)
endif(CMAKE_BUILD_TYPE)
if(WIN32)
   SET(PLATFORM_LIBS "")
   if(CMAKE_CL_64)
      SET(CMAKE_EXE_LINKER_FLAGS "/machine:X64 /INCREMENTAL:NO" CACHE STRING "Linker flags")
   endif(CMAKE_CL_64)
   include(target_arch)
   target_architecture( TARGET_ARCHITECTURE )
   message(STATUS "architecture detected: ${TARGET_ARCHITECTURE}")
   #force to patch an error in cmake
   if(TARGET_ARCHITECTURE STREQUAL "x86_64")
      SET(CMAKE_EXE_LINKER_FLAGS "/machine:X64" CACHE STRING "Linker flags" FORCE)
      SET(CMAKE_MODULE_LINKER_FLAGS "/machine:X64" CACHE STRING "Module Linker flags" FORCE)
      SET(CMAKE_SHARED_LINKER_FLAGS "/machine:X64" CACHE STRING "Shared Linker flags" FORCE)
   endif()
   SET(CMAKE_FIND_LIBRARY_SUFFIXES .lib ) #${CMAKE_FIND_LIBRARY_SUFFIXES}
   add_definitions("/D_CRT_SECURE_NO_WARNINGS")
else(WIN32)
@@ -38,8 +48,7 @@
    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pipe -fmessage-length=0 -Wall -Wuninitialized -fPIC") 
    #use static libraries in release to make it easier to distribute it
    #SET(Boost_USE_STATIC_RUNTIME ${RELEASE_BUILD})
    SET(Boost_USE_STATIC_LIBS ${RELEASE_BUILD})
    if(${RELEASE_BUILD})
    if(RELEASE_BUILD)
        SET(CMAKE_FIND_LIBRARY_SUFFIXES .a) #.so for dynamic libraries
    else()
        SET(CMAKE_FIND_LIBRARY_SUFFIXES .a .so) 
@@ -51,9 +60,7 @@
      SET(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Install path prefix" FORCE)
   ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
endif(WIN32)
#TODO uncomment: source temporarily broken
#set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:_DEBUG>)
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:BOOST_TEST_DYN_LINK>)
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:_DEBUG>)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
@@ -62,15 +69,12 @@
  SET(HAVE_64BIT_SIZE_T 0)
endif(CMAKE_SIZEOF_VOID_P EQUAL 8)
#TODO: determine target arch.
SET( TargetArchitecture "X86_64")
include(add_boost)
# static runtime requires /MT
#SET(Boost_USE_MULTITHREADED ON) #SET(Boost_USE_STATIC_RUNTIME OFF)
#find_package(Boost COMPONENTS thread date_time program_options filesystem system regex unit_test_framework)
#find_package(Boost COMPONENTS date_time program_options filesystem system unit_test_framework)
add_boost(STATIC MODULES date_time test program_options system filesystem)
#set below in case of dynamic linking in debug.
#set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$<CONFIG:Debug>:BOOST_TEST_DYN_LINK>)
add_definitions(-DBOOST_ALL_NO_LIB) #Disable Boost Microsoft magic, all dependencies are handled by cmake
add_definitions(-DBOOST_LIB_DIAGNOSTIC) #Check it is really disabled
if(NOT WIN32)   
   #find a static version of openssl crypto library