diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..2c484bc --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,76 @@ +############################################ +# # +# Improvements and feedbacks are welcome # +# # +# This file is released under GPL >= 3 # +# # +############################################ + + +cmake_minimum_required( VERSION 2.8 ) + + +#### general package setup + +project( libcarddav ) +set( VERSION R14.1.0 ) +set( PACKAGE_VERSION 0.6.1 ) + + +#### include essential cmake modules + +include( FindPkgConfig ) +include( CheckFunctionExists ) +include( CheckSymbolExists ) +include( CheckIncludeFile ) +include( CheckLibraryExists ) +include( CheckCSourceCompiles ) + + +#### include our cmake modules + +set( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules" ) +include( TDEMacros ) + + +##### setup install paths + +include( TDESetupPaths ) +tde_setup_paths( ) + + +##### optional stuff + +option( WITH_ALL_OPTIONS "Enable all optional support" OFF ) +option( WITH_GCC_VISIBILITY "Enable fvisibility and fvisibility-inlines-hidden" ${WITH_ALL_OPTIONS} ) + + +##### user requested modules + +option( BUILD_ALL "Build all" OFF ) +option( BUILD_DOC "Build documentation" ${BUILD_ALL} ) + + +##### configure checks + +include( ConfigureChecks.cmake ) + + +###### global compiler settings + +add_definitions( -DHAVE_CONFIG_H ) + +set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TQT_CXX_FLAGS}" ) +set( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" ) +set( CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-undefined" ) + + +##### directories + +add_subdirectory( src ) +tde_conditional_add_subdirectory( BUILD_DOC doc ) + + +##### write configure files + +configure_file( config.h.cmake config.h @ONLY ) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake new file mode 100644 index 0000000..ead6ab6 --- /dev/null +++ b/ConfigureChecks.cmake @@ -0,0 +1,41 @@ +########################################### +# # +# Improvements and feedback are welcome # +# # +# This file is released under GPL >= 3 # +# # +########################################### + + +# required stuff + +tde_setup_architecture_flags( ) + +include(TestBigEndian) +test_big_endian(WORDS_BIGENDIAN) + +tde_setup_largefiles( ) + + +##### check for gcc visibility support + +if( WITH_GCC_VISIBILITY ) + tde_setup_gcc_visibility( ) +endif( WITH_GCC_VISIBILITY ) + + +##### check for glib-2.0 - gthread-2.0 + +pkg_search_module( GTHREAD gthread-2.0 ) +if( NOT GTHREAD_FOUND ) + tde_message_fatal( "glib-2.0 with thread support is required, but was not found on your system" ) +endif() + + +##### check for curl + +set( CURL_MIN_VERSION "7.15.5" ) +find_package( CURL ${CURL_MIN_VERSION} REQUIRED ) +if( NOT CURL_FOUND ) + tde_message_fatal( "curl >= 7.15.5 is required, but was not found on your system" ) +endif() diff --git a/config.h.cmake b/config.h.cmake new file mode 100644 index 0000000..61ede3a --- /dev/null +++ b/config.h.cmake @@ -0,0 +1,8 @@ +#define VERSION "@VERSION@" + +// Defined if you have fvisibility and fvisibility-inlines-hidden support. +#cmakedefine __KDE_HAVE_GCC_VISIBILITY 1 + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#cmakedefine WORDS_BIGENDIAN @WORDS_BIGENDIAN@ diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 0000000..2552068 --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,4 @@ +install( + FILES rfc4791.pdf + DESTINATION ${SHARE_INSTALL_PREFIX}/doc/${PROJECT_NAME} +) diff --git a/rfc4791.pdf b/doc/rfc4791.pdf similarity index 100% rename from rfc4791.pdf rename to doc/rfc4791.pdf diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..23fbeb9 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,55 @@ +include_directories( + ${CMAKE_BINARY_DIR} + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} + ${GTHREAD_INCLUDE_DIRS} + ${CURL_INCLUDE_DIRS} +) + + +##### carddav (shared) + +tde_add_library( carddav SHARED + + SOURCES + carddav.c + add-carddav-object.c + delete-carddav-object.c + modify-carddav-object.c + get-carddav-report.c + get-display-name.c + carddav-utils.c + md5.c + options-carddav-server.c + lock-carddav-object.c + LINK + ${GTHREAD_LIBRARIES} + ${CURL_LIBRARIES} + + VERSION 0.0.6 + + DESTINATION ${LIB_INSTALL_DIR} +) + + +#### pkg-config + +set( prefix ${CMAKE_INSTALL_PREFIX} ) +string( REGEX REPLACE "^${CMAKE_INSTALL_PREFIX}" "\${prefix}" PC_EXEC_PREFIX ${EXEC_INSTALL_PREFIX} ) +string( REGEX REPLACE "^${CMAKE_INSTALL_PREFIX}" "\${prefix}" PC_INCLUDE_DIR ${INCLUDE_INSTALL_DIR} ) +string( REGEX REPLACE "^${CMAKE_INSTALL_PREFIX}" "\${prefix}" PC_LIB_DIR ${LIB_INSTALL_DIR} ) + +configure_file( ${CMAKE_PROJECT_NAME}.pc.cmake ${CMAKE_PROJECT_NAME}.pc @ONLY ) + +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}.pc + DESTINATION ${PKGCONFIG_INSTALL_DIR} +) + + +##### header + +install( + FILES carddav.h + DESTINATION ${INCLUDE_INSTALL_DIR}/${CMAKE_PROJECT_NAME} +) diff --git a/src/libcarddav.pc.cmake b/src/libcarddav.pc.cmake new file mode 100644 index 0000000..b9be1c7 --- /dev/null +++ b/src/libcarddav.pc.cmake @@ -0,0 +1,15 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=@PC_EXEC_PREFIX@ +libdir=@PC_LIB_DIR@ +includedir=@PC_INCLUDE_DIR@ + +pkglibdir=${libdir} +pkgincludedir=${includedir}/@PROJECT_NAME@ + +Name: @PROJECT_NAME@ +Version: @PACKAGE_VERSION@ +Description: @PROJECT_NAME@ is a client library for CardDAV + +Requires.private: gthread-2.0 libcurl +Cflags: -I${includedir} +Libs: -L${libdir} -lcarddav