summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-06-20 19:53:21 (GMT)
committerStefan Radomski <radomski@tk.informatik.tu-darmstadt.de>2013-06-20 19:53:21 (GMT)
commit794575f01ce5a6bf7e377eb815f3def5aded74f5 (patch)
tree9c59df64ee290f68b7b6c8698bfac4169684485e /CMakeLists.txt
parentd304f85417e3175c5f2ca159dd303309c24e7b81 (diff)
downloaduscxml-794575f01ce5a6bf7e377eb815f3def5aded74f5.zip
uscxml-794575f01ce5a6bf7e377eb815f3def5aded74f5.tar.gz
uscxml-794575f01ce5a6bf7e377eb815f3def5aded74f5.tar.bz2
New version with XHTML invoker
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt90
1 files changed, 78 insertions, 12 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bc48b2e..a4104fd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8.4)
# specify USCXML version
SET(USCXML_VERSION_MAJOR "0")
SET(USCXML_VERSION_MINOR "0")
-SET(USCXML_VERSION_PATCH "4")
+SET(USCXML_VERSION_PATCH "5")
SET(USCXML_VERSION ${USCXML_VERSION_MAJOR}.${USCXML_VERSION_MINOR}.${USCXML_VERSION_PATCH})
# build type has to be set before the project definition
@@ -15,6 +15,12 @@ ELSE()
ENDIF()
project(uscxml)
+
+# CMake 2.8.11 reports AMD64 for Windows 64Bit, where earlier versions reported x86
+if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "AMD64")
+ set(CMAKE_SYSTEM_PROCESSOR "x86")
+endif()
+
# use folders in the IDEs for the various targets (e.g. Library, Testing, Tools ..)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
@@ -63,6 +69,7 @@ if(CMAKE_CROSSCOMPILING)
if (IOS)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY "ONLY")
SET(USCXML_PREBUILT_LIBRARY_PATH "${PROJECT_SOURCE_DIR}/contrib/prebuilt/ios/${CMAKE_SYSTEM_VERSION}")
+ SET(USCXML_PREBUILT_LIBRARY_PATH "${PROJECT_SOURCE_DIR}/contrib/prebuilt/ios/")
elseif (ANDROID)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY "ONLY") # we need both to find jni - we don't?
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM "BOTH")
@@ -84,17 +91,26 @@ endif()
SET(USCXML_LIBRARY_HOST_URL_PREFIX "http://uscxml.tk.informatik.tu-darmstadt.de/prebuilt" CACHE STRING "The root path of an URL where to look for prebuilt libraries.")
-if (WIN32 AND 64BIT_HOST)
- SET(USCXML_LIBRARY_ARCHIVE_NAME uscxml-prebuilt-${CMAKE_SYSTEM_NAME_LC}-${CMAKE_SYSTEM_PROCESSOR}_64.tgz)
+if (CMAKE_CROSSCOMPILING)
+ if (IOS)
+ SET(USCXML_LIBRARY_ARCHIVE_NAME uscxml-prebuilt-ios.tgz)
+ elseif(ANDROID)
+ SET(USCXML_LIBRARY_ARCHIVE_NAME uscxml-prebuilt-android.tgz)
+ else()
+ endif()
else()
- SET(USCXML_LIBRARY_ARCHIVE_NAME uscxml-prebuilt-${CMAKE_SYSTEM_NAME_LC}-${CMAKE_SYSTEM_PROCESSOR}.tgz)
+ if (WIN32 AND 64BIT_HOST)
+ SET(USCXML_LIBRARY_ARCHIVE_NAME uscxml-prebuilt-${CMAKE_SYSTEM_NAME_LC}-${CMAKE_SYSTEM_PROCESSOR}_64.tgz)
+ else()
+ SET(USCXML_LIBRARY_ARCHIVE_NAME uscxml-prebuilt-${CMAKE_SYSTEM_NAME_LC}-${CMAKE_SYSTEM_PROCESSOR}.tgz)
+ endif()
endif()
if (NOT EXISTS ${USCXML_PREBUILT_LIBRARY_PATH})
message(STATUS "Downloading prebuilt libraries: ${USCXML_LIBRARY_HOST_URL_PREFIX}/${USCXML_VERSION}/${USCXML_LIBRARY_ARCHIVE_NAME}")
file(DOWNLOAD ${USCXML_LIBRARY_HOST_URL_PREFIX}/${USCXML_VERSION}/${USCXML_LIBRARY_ARCHIVE_NAME}
${PROJECT_SOURCE_DIR}/contrib/prebuilt/${USCXML_LIBRARY_ARCHIVE_NAME}
- INACTIVITY_TIMEOUT 60 STATUS DOWNLOAD_STATUS SHOW_PROGRESS)
+ INACTIVITY_TIMEOUT 60 STATUS DOWNLOAD_STATUS SHOW_PROGRESS)
list(GET DOWNLOAD_STATUS 0 STATUS_CODE)
list(GET DOWNLOAD_STATUS 1 STATUS_STRING)
if(STATUS_CODE EQUAL 0)
@@ -111,6 +127,12 @@ if (NOT EXISTS ${USCXML_PREBUILT_LIBRARY_PATH})
endif()
endif()
+if (WIN32 OR CMAKE_CROSSCOMPILING)
+ OPTION(BUILD_SHARED_LIBS "Build shared libraries" OFF)
+else()
+ OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON)
+endif()
+
#
# BUILD_PREFER_PREBUILT_LIBS:
# Do we want to search system paths or contrib/prebuilt first?
@@ -131,8 +153,6 @@ else()
endif()
include_directories(${USCXML_PREBUILT_LIBRARY_PATH}/include)
-#message("CMAKE_FIND_ROOT_PATH: ${CMAKE_FIND_ROOT_PATH}")
-
if (WIN32)
include_directories(${PROJECT_SOURCE_DIR}/contrib/src/getopt)
endif()
@@ -171,6 +191,7 @@ set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/contrib/cmake)
include("${CMAKE_MODULE_PATH}/USCXMLMacros.cmake")
include("${CMAKE_MODULE_PATH}/FunctionExists.cmake")
include("${CMAKE_MODULE_PATH}/HeaderExists.cmake")
+include("${CMAKE_MODULE_PATH}/BinaryExists.cmake")
# we need USCXML_CORE_LIBS here for -lgcov
set(USCXML_CORE_LIBS)
@@ -181,7 +202,7 @@ set(USCXML_INCLUDE_DIRS)
# some compiler flags
#message("CMAKE_CXX_COMPILER_ID: ${CMAKE_CXX_COMPILER_ID}")
-if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
# best practices from scott meyers
@@ -229,7 +250,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
else()
add_definitions(-rdynamic)
endif()
-elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
+elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
add_definitions("-DZMQ_STATIC")
add_definitions("-DPCRE_STATIC")
add_definitions("-DUMUNDO_STATIC")
@@ -239,7 +260,7 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
# SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /NODEFAULTLIB")
# SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:MSVCRTD.lib")
-elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-parentheses-equality")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-string-plus-int")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-non-literal-null-conversion")
@@ -254,6 +275,24 @@ endif()
set(CMAKE_COMPILER_STRING "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
+# see http://www.mail-archive.com/cmake@cmake.org/msg23240.html
+if (APPLE)
+# add_definitions("-D_DARWIN_UNLIMITED_SELECT")
+ set(CMAKE_OSX_ARCHITECTURES "x86_64;i386")
+ # support leopard and above
+ set(CMAKE_OSX_DEPLOYMENT_TARGET 10.6)
+ foreach(FLAGS CMAKE_C_FLAGS CMAKE_CXX_FLAGS CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS)
+ set(${FLAGS} "${${FLAGS}} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
+ endforeach()
+endif()
+
+if (IOS)
+ set(CMAKE_OSX_DEPLOYMENT_TARGET 4.3)
+ foreach(FLAGS CMAKE_C_FLAGS CMAKE_CXX_FLAGS CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS CMAKE_MODULE_LINKER_FLAGS)
+ set(${FLAGS} "${${FLAGS}} -miphoneos-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
+ endforeach()
+endif()
+
############################################################
# postfixes for all built targets depending on build type
############################################################
@@ -280,7 +319,10 @@ else()
add_definitions("-DUSCXML_STATIC")
endif()
-# prefer static libraries for linking
+# library suffix order
+if (IOS)
+ LIST(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".dylib")
+endif()
set(CMAKE_FIND_LIBRARY_SUFFIXES_SHARED ${CMAKE_FIND_LIBRARY_SUFFIXES})
set(CMAKE_FIND_LIBRARY_SUFFIXES_STATIC .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
@@ -330,12 +372,36 @@ include_directories(src)
if (NOT WIN32)
# libxml2
set(CMAKE_FIND_FRAMEWORK "LAST")
+
+ # message("CMAKE_FIND_LIBRARY_SUFFIXES: ${CMAKE_FIND_LIBRARY_SUFFIXES}")
+ # message("CMAKE_SYSTEM_PREFIX_PATH: ${CMAKE_SYSTEM_PREFIX_PATH}")
+ # message("CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}")
+ # message("CMAKE_SYSTEM_INCLUDE_PATH: ${CMAKE_SYSTEM_INCLUDE_PATH}")
+ # message("CMAKE_SYSTEM_LIBRARY_PATH: ${CMAKE_SYSTEM_LIBRARY_PATH}")
+ # message("CMAKE_SYSTEM_PROGRAM_PATH: ${CMAKE_SYSTEM_PROGRAM_PATH}")
+ # message("CMAKE_FIND_ROOT_PATH: ${CMAKE_FIND_ROOT_PATH}")
+
find_package(LibXml2 REQUIRED)
include_directories(${LIBXML2_INCLUDE_DIR})
list (APPEND USCXML_CORE_LIBS ${LIBXML2_LIBRARIES})
set(XML_LIBRARIES ${LIBXML2_LIBRARIES})
list (APPEND USCXML_CORE_LIBS "dl")
list (APPEND USCXML_CORE_LIBS "pthread")
+ if (APPLE)
+ find_library(APP_SERVICES_LIBRARY ApplicationServices)
+ find_library(COREFOUNDATION_LIBRARY CoreFoundation)
+ message(FATAL_ERROR "COREFOUNDATION_LIBRARY: ${COREFOUNDATION_LIBRARY}")
+ list (APPEND USCXML_CORE_LIBS ${APP_SERVICES_LIBRARY})
+ list (APPEND USCXML_CORE_LIBS ${COREFOUNDATION_LIBRARY})
+ endif()
+ if (IOS)
+ find_library(COREFOUNDATION_LIBRARY CoreFoundation)
+ list (APPEND USCXML_CORE_LIBS ${COREFOUNDATION_LIBRARY}/CoreFoundation)
+ find_library(SECURITY_LIBRARY Security)
+ list (APPEND USCXML_CORE_LIBS ${SECURITY_LIBRARY}/Security)
+ list (APPEND USCXML_CORE_LIBS "z")
+
+ endif()
elseif(WIN32)
list (APPEND XML_LIBRARIES "Ws2_32")
list (APPEND XML_LIBRARIES "Winmm")
@@ -619,7 +685,7 @@ message(STATUS " Available language bindings .... : ${AVAILABLE_LANGUAGE_BINDIN
if (BUILD_SHARED_LIBS AND BUILD_BINDINGS)
message(STATUS "")
message(STATUS " Warning: Building language bindings BUILD_SHARED_LIBS=ON")
- message(STATUS " introduces runtime dependency to libumundocore")
+ message(STATUS " introduces runtime dependency to libuscxml")
message(STATUS "")
endif()