Page MenuHomePhorge

No OneTemporary

Authored By
Unknown
Size
10 KB
Referenced Files
None
Subscribers
None
diff --git a/c++/CMakeLists.txt b/c++/CMakeLists.txt
index 83ceb27..a2ac011 100644
--- a/c++/CMakeLists.txt
+++ b/c++/CMakeLists.txt
@@ -1,109 +1,120 @@
project(kolabxmlbindings)
-cmake_minimum_required(VERSION 2.8)
-cmake_policy(SET CMP0017 NEW)
+cmake_minimum_required(VERSION 2.6)
+
+# only available from cmake-2.8.0
+if(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} GREATER 7)
+ cmake_policy(SET CMP0012 NEW)
+endif()
+
+# only available from cmake-2.8.4
+if(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} GREATER 7 AND
+ ${CMAKE_PATCH_VERSION} GREATER 3)
+ cmake_policy(SET CMP0017 NEW)
+endif()
+
+find_package(Boost COMPONENTS thread REQUIRED)
-find_package(Boost REQUIRED)
find_package(Qt4)
find_program( XSDCXX xsdcxx /usr/bin/)
if(XSDCXX)
message("xsd code generator found")
else (XSDCXX)
message(FATAL_ERROR
"xsd code generator NOT found!")
endif(XSDCXX)
find_library(XERCES_C NAMES xerces-c xerces-c_2)
if(XERCES_C)
message("xerces found")
else (XERCES_C)
message(FATAL_ERROR
"xerces NOT found!")
endif(XERCES_C)
find_program(SWIG swig /usr/bin/)
if(SWIG)
set(SWIG_FOUND ON)
message("SWIG found")
endif(SWIG)
#We search for the needed libraries manually because FindKDE.cmake sets a miriad of linker options which we don't want.
find_library(KDECORE NAMES kdecore)
if(KDECORE)
set(KDECORE_FOUND ON)
message("KDElibs found")
endif(KDECORE)
find_library(KCALCORE NAMES kcalcore)
if(KCALCORE)
set(KCALCORE_FOUND ON)
message("KCalCore found")
endif(KCALCORE)
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall" )
# set( CMAKE_VERBOSE_MAKEFILE on )
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_BUILD_DIR ${CMAKE_SOURCE_DIR}/build)
file(MAKE_DIRECTORY ${CMAKE_BUILD_DIR}/bindings)
set( SCHEMA_DIR ${CMAKE_SOURCE_DIR}/../schemas )
# Generate bindings
file(GLOB XCAL_SCHEMAS ${SCHEMA_DIR}/ical/*.xsd)
file(GLOB SCHEMAS ${SCHEMA_DIR}/*.xsd)
set( SCHEMAS ${SCHEMAS} ${XCAL_SCHEMAS})
set( SCHEMA_SOURCEFILES
${CMAKE_BUILD_DIR}/bindings/xCard.cxx
${CMAKE_BUILD_DIR}/bindings/kolabformat-xcal.cxx
${CMAKE_BUILD_DIR}/bindings/kolabformat-xcard.cxx
${CMAKE_BUILD_DIR}/bindings/iCalendar-params.cxx
${CMAKE_BUILD_DIR}/bindings/iCalendar-props.cxx
${CMAKE_BUILD_DIR}/bindings/iCalendar-valtypes.cxx
# bindings/iCalendar-link-extension.cxx
# bindings/iCalendar-bw-extensions.cxx
# bindings/iCalendar-ms-extensions.cxx
)
#xsdcxx cxx-tree --generate-xml-schema --generate-serialization --custom-type date_time --hxx-epilogue '#include "bindings/customtypes/xml-schema-custom.hxx"' xml-schema.xsd
# --generate-inline --extern-xml-schema xml-schema.xsd
# --cxx-suffix .cpp --hxx-suffix .h
add_custom_command(OUTPUT ${SCHEMA_SOURCEFILES}
COMMAND ${XSDCXX} cxx-tree --generate-polymorphic --generate-serialization --namespace-map http://kolab.org=KolabXSD --root-element icalendar --root-element vcards --output-dir ${CMAKE_BUILD_DIR}/bindings ${SCHEMAS}
COMMENT "Generating XSD bindings"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
DEPENDS ${SCHEMAS}
VERBATIM
)
# Compile Schemas
add_executable(xsdbin compiled/xsdbin.cxx)
target_link_libraries(xsdbin ${XERCES_C})
add_custom_command(OUTPUT kolabformat-xcal-schema.cxx
COMMAND ${CMAKE_BUILD_DIR}/xsdbin --verbose --array-name iCalendar_schema --output-dir ${CMAKE_BUILD_DIR} ${SCHEMA_DIR}/ical/kolabformat-xcal.xsd ${SCHEMA_DIR}/ical/iCalendar-params.xsd ${SCHEMA_DIR}/ical/iCalendar-props.xsd ${SCHEMA_DIR}/ical/iCalendar-valtypes.xsd ${SCHEMA_DIR}/xCard.xsd ${SCHEMA_DIR}/kolabformat-xcard.xsd
COMMENT "Compiling Kolab XSD schema"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
DEPENDS ${XCAL_SCHEMAS} xsdbin
VERBATIM
)
set( SCHEMA_SOURCEFILES ${SCHEMA_SOURCEFILES} ${CMAKE_BUILD_DIR}/kolabformat-xcal-schema.cxx)
# ---------
SET_SOURCE_FILES_PROPERTIES(${SCHEMA_SOURCEFILES} PROPERTIES GENERATED 1)
ADD_CUSTOM_TARGET(generate_bindings ALL DEPENDS ${SCHEMA_SOURCEFILES})
include_directories( ./ )
include_directories( compiled )
include_directories( ${CMAKE_CURRENT_BINARY_DIR} )
add_subdirectory(lib)
if (${QT_FOUND})
add_subdirectory(tests)
endif()
diff --git a/c++/lib/CMakeLists.txt b/c++/lib/CMakeLists.txt
index dfd4921..12c2133 100644
--- a/c++/lib/CMakeLists.txt
+++ b/c++/lib/CMakeLists.txt
@@ -1,68 +1,68 @@
include_directories( ./ )
include_directories( ../ )
include_directories( ../build/ )
include(${Boost_INCLUDE_DIRS})
SET_SOURCE_FILES_PROPERTIES(${SCHEMA_SOURCEFILES} PROPERTIES GENERATED 1)
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC " ) #always generate shared libraries with -fPIC
#Library with serialization/deserialization code and kolab-containers
add_library(kolabxml SHARED kolabformat.cpp kolabcontainers.cpp kolabevent.cpp kolabtodo.cpp kolabjournal.cpp kolabcontact.cpp utils.cpp base64.cpp ../compiled/XMLParserWrapper.cpp ../compiled/grammar-input-stream.cxx ${SCHEMA_SOURCEFILES})
-target_link_libraries(kolabxml ${XERCES_C} boost_thread)
+target_link_libraries(kolabxml ${XERCES_C} ${Boost_LIBRARIES})
#For the core library we can be stricter when compiling. This doesn't work with the auto generated code though.
set_target_properties(kolabxml PROPERTIES COMPILE_FLAGS "-Wl,--no-undefined -Werror ")
set_target_properties(kolabxml PROPERTIES VERSION 3.0.0 SOVERSION 0)
install(TARGETS kolabxml LIBRARY DESTINATION lib)
install( FILES
kolabformat.h
kolabevent.h
kolabtodo.h
kolabcontainers.h
DESTINATION include/kolab COMPONENT Devel)
#----- The following makes sure libkolabxml is found in the install directory for installed files and not in the build directory (for libraries which link to libkolabxml)
# use, i.e. don't skip the full RPATH for the build tree
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
# when building, don't use the install RPATH already(but later on when installing)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
# add the automatically determined parts of the RPATH
# which point to directories outside the build tree to the install RPATH
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
# the RPATH to be used when installing, but only if it's not a system directory
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
ENDIF("${isSystemDir}" STREQUAL "-1")
#----- KCalCore libs
if(KDECORE_FOUND AND KCALCORE_FOUND)
message("Building KCalCore dependend libraries.")
#Library with converters to/from kcalcore and code to provide advanced functionality (such as expanding recurrences) from kcalcore.
add_library(kolabkcal SHARED kolabkcalconversion.cpp)
target_link_libraries(kolabkcal kolabxml ${KCALCORE} ${KDECORE})
#Library with serialization/deserialization code for KCalCore containers (deprecated)
# add_library(kolabxmlkcal SHARED kcalkolabformat.cpp ../compiled/XMLParserWrapper.cpp ../compiled/grammar-input-stream.cxx ${SCHEMA_SOURCEFILES})
# target_link_libraries(kolabxmlkcal xerces-c ${KCALCORE} ${KDECORE})
else()
message(WARNING "Could not build KCalCore/KDElibs dependend libraries, because kdepimlibs/kdelibs is missing.")
endif()
#-----------------------SWIG--------------------
if (SWIG_FOUND)
set(KOLAB_CONTAINER_HEADERS ../kolabcontainers.h ../kolabevent.h ../kolabtodo.h)
add_subdirectory(python)
add_subdirectory(php)
else()
message(WARNING "Could not build SWIG bindings, because SWIG is missing.")
endif()
diff --git a/c++/lib/php/CMakeLists.txt b/c++/lib/php/CMakeLists.txt
index f578646..70f4427 100644
--- a/c++/lib/php/CMakeLists.txt
+++ b/c++/lib/php/CMakeLists.txt
@@ -1,36 +1,36 @@
#Generate PHP wrapper
include_directories(../)
set(KOLAB_SWIG_PHP_SOURCE_FILE php_kolabformat_wrapper.cpp)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${KOLAB_SWIG_PHP_SOURCE_FILE}
COMMAND ${SWIG} -v -c++ -php -o ${CMAKE_CURRENT_BINARY_DIR}/${KOLAB_SWIG_PHP_SOURCE_FILE} ../kolabformat.i
COMMENT "Generating php bindings"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS ../kolabformat.i ${KOLAB_CONTAINER_HEADERS}
VERBATIM
)
SET_SOURCE_FILES_PROPERTIES(${KOLAB_SWIG_PHP_SOURCE_FILE} PROPERTIES GENERATED 1)
ADD_CUSTOM_TARGET(generate_php_bindings ALL DEPENDS ${KOLAB_SWIG_PHP_SOURCE_FILE})
#Compile PHP Bindings
# Since there is no php library we can't compile with -Wl,--no-undefined
if (APPLE)
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flat_namespace -undefined suppress" )
endif()
find_package(PHP4)
include_directories(${PHP4_INCLUDE_PATH})
add_library(phpbindings SHARED ${KOLAB_SWIG_PHP_SOURCE_FILE})
target_link_libraries(phpbindings kolabxml ${PHP_LIBRARIES})
SET_TARGET_PROPERTIES(phpbindings PROPERTIES OUTPUT_NAME "kolabformat")
SET_TARGET_PROPERTIES(phpbindings PROPERTIES PREFIX "")
-file(COPY test.php DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+configure_file(test.php ${CMAKE_CURRENT_BINARY_DIR}/DESTINATION COPYONLY)
install(TARGETS phpbindings LIBRARY DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/phpbindings)
install( FILES
${CMAKE_CURRENT_BINARY_DIR}/kolabformat.php
test.php
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/phpbindings)
\ No newline at end of file
diff --git a/c++/lib/python/CMakeLists.txt b/c++/lib/python/CMakeLists.txt
index a0a99c6..95790e2 100644
--- a/c++/lib/python/CMakeLists.txt
+++ b/c++/lib/python/CMakeLists.txt
@@ -1,34 +1,34 @@
#Generate Python wrapper
include_directories(../)
set(KOLAB_SWIG_PYTHON_SOURCE_FILE python_kolabformat_wrapper.cpp)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${KOLAB_SWIG_PYTHON_SOURCE_FILE}
COMMAND ${SWIG} -v -c++ -python -o ${CMAKE_CURRENT_BINARY_DIR}/${KOLAB_SWIG_PYTHON_SOURCE_FILE} ../kolabformat.i
COMMENT "Generating python bindings"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS ../kolabformat.i ${KOLAB_CONTAINER_HEADERS}
VERBATIM
)
SET_SOURCE_FILES_PROPERTIES(${KOLAB_SWIG_PYTHON_SOURCE_FILE} PROPERTIES GENERATED 1)
ADD_CUSTOM_TARGET(generate_python_bindings ALL DEPENDS ${KOLAB_SWIG_PYTHON_SOURCE_FILE})
#Compile Python Bindings
find_package(PythonLibs)
include_directories(${PYTHON_INCLUDE_DIRS})
# python_add_module(kolabformat ${KOLAB_SWIG_PYTHON_SOURCE_FILE})
add_library(pythonbindings SHARED ${KOLAB_SWIG_PYTHON_SOURCE_FILE})
target_link_libraries(pythonbindings kolabxml ${PYTHON_LIBRARY})
SET_TARGET_PROPERTIES(pythonbindings PROPERTIES OUTPUT_NAME "_kolabformat")
SET_TARGET_PROPERTIES(pythonbindings PROPERTIES PREFIX "")
-file(COPY test.py DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+configure_file(test.py ${CMAKE_CURRENT_BINARY_DIR}/DESTINATION COPYONLY)
install(TARGETS pythonbindings LIBRARY DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/pythonbindings)
install( FILES
${CMAKE_CURRENT_BINARY_DIR}/kolabformat.py
test.py
DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/pythonbindings)
\ No newline at end of file

File Metadata

Mime Type
text/x-diff
Expires
Sun, Apr 5, 10:26 PM (2 w, 5 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18831424
Default Alt Text
(10 KB)

Event Timeline