diff options
-rw-r--r-- | CMakeLists.txt | 5 | ||||
-rw-r--r-- | examples/CMakeLists.txt | 18 | ||||
-rw-r--r-- | src/libical/CMakeLists.txt | 19 | ||||
-rw-r--r-- | src/libical/icalerror.c | 3 | ||||
-rw-r--r-- | src/libical/icalerror.h.cmake | 18 | ||||
-rw-r--r-- | src/libical/icalparameter_cxx.cpp | 5 | ||||
-rw-r--r-- | src/libical/icalproperty_cxx.cpp | 8 | ||||
-rw-r--r-- | src/libical/icalvalue_cxx.cpp | 2 | ||||
-rwxr-xr-x | src/libical/libical_ical_export.h | 30 | ||||
-rw-r--r-- | src/libical/vcomponent.cpp | 15 | ||||
-rwxr-xr-x | src/libical/vcomponent.h | 2 | ||||
-rw-r--r-- | src/libicalss/CMakeLists.txt | 2 | ||||
-rwxr-xr-x | src/libicalss/libical_icalss_export.h | 29 | ||||
-rw-r--r-- | src/test/CMakeLists.txt | 83 |
14 files changed, 122 insertions, 117 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 11efbe20..bec7fd8d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,21 +90,16 @@ if(WITH_BDB) endif() # library build types -set(LIBICAL_STATIC 0) set(LIBRARY_TYPE SHARED) option(STATIC_ONLY "Build static libraries only.") if(STATIC_ONLY) - set(LIBICAL_STATIC 1) - add_definitions(-DLIBICAL_STATIC) set(LIBRARY_TYPE STATIC) endif() option(SHARED_ONLY "Build shared (dynamic) libraries only. Takes precedence over STATIC_ONLY") if(SHARED_ONLY) set(STATIC_ONLY False) - set(LIBICAL_STATIC 0) - remove_definitions(-DLIBICAL_STATIC) set(LIBRARY_TYPE SHARED) endif() diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index f91241fe..d5d3d0e1 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -17,11 +17,19 @@ add_executable(doesnothing ${doesnothing_SRCS}) if(NOT STATIC_ONLY) target_link_libraries(doesnothing ical icalss icalvcal) else() - target_link_libraries(doesnothing - ${CMAKE_BINARY_DIR}/lib/libical.a - ${CMAKE_BINARY_DIR}/lib/libicalss.a - ${CMAKE_BINARY_DIR}/lib/libicalvcal.a - ) + if(NOT WIN32) + target_link_libraries(doesnothing + ${CMAKE_BINARY_DIR}/lib/libical.a + ${CMAKE_BINARY_DIR}/lib/libicalss.a + ${CMAKE_BINARY_DIR}/lib/libicalvcal.a + ) + else() + target_link_libraries(doesnothing + ${CMAKE_BINARY_DIR}/bin/libical-static.lib + ${CMAKE_BINARY_DIR}/bin/libicalss-static.lib + ${CMAKE_BINARY_DIR}/bin/libicalvcal-static.lib + ) + endif() target_link_libraries(doesnothing ${CMAKE_THREAD_LIBS_INIT}) if(ICU_FOUND) target_link_libraries(doesnothing ${ICU_LIBRARY}) diff --git a/src/libical/CMakeLists.txt b/src/libical/CMakeLists.txt index f93555b7..856bff75 100644 --- a/src/libical/CMakeLists.txt +++ b/src/libical/CMakeLists.txt @@ -1,3 +1,5 @@ +add_definitions(-Dlibical_ical_EXPORTS) + configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/icalversion.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/icalversion.h @@ -15,12 +17,6 @@ if(ICU_FOUND) include_directories(${ICU_INCLUDE_DIR}) endif() -if(WIN32) - if(MSVC) - add_definitions(-DBUILD_LIBICALDLL) - endif() -endif() - configure_file(icalerror.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/icalerror.h) set(PACKAGE_DATA_DIR "\\\"${CMAKE_INSTALL_PREFIX}/share/libical\\\"") @@ -326,8 +322,9 @@ if(WITH_CXX_BINDINGS) vcomponent.h ) + add_definitions(-DBUILD_LIBICALDLL) + if(NOT STATIC_ONLY) - add_definitions(-DBUILD_LIBICAL_SHARED) add_library(ical_cxx SHARED ${icalcxx_LIB_SRCS}) target_link_libraries(ical_cxx ical ${CMAKE_THREAD_LIBS_INIT}) if(WINCE) @@ -341,7 +338,6 @@ if(WITH_CXX_BINDINGS) SOVERSION ${LIBICAL_LIB_MAJOR_VERSION} ) set_target_properties(ical_cxx PROPERTIES CLEAN_DIRECT_OUTPUT 1) - remove_definitions(-DBUILD_LIBICAL_SHARED) install( TARGETS ical_cxx @@ -351,7 +347,6 @@ if(WITH_CXX_BINDINGS) endif() if(NOT SHARED_ONLY) - add_definitions(-DBUILD_LIBICAL_STATIC) add_library(ical_cxx-static STATIC ${icalcxx_LIB_SRCS}) if(MSVC) set_target_properties(ical_cxx-static PROPERTIES OUTPUT_NAME "libical_cxx-static") @@ -359,7 +354,6 @@ if(WITH_CXX_BINDINGS) set_target_properties(ical_cxx-static PROPERTIES OUTPUT_NAME "ical_cxx") endif() set_target_properties(ical_cxx-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) - remove_definitions(-DBUILD_LIBICAL_STATIC) install( TARGETS ical_cxx-static @@ -367,6 +361,11 @@ if(WITH_CXX_BINDINGS) DESTINATION ${INSTALL_TARGETS_DEFAULT_ARGS} ) endif() + + if(MSVC) + remove_definitions(-DBUILD_LIBICALDLL) + endif() + endif() ########### install files ############### diff --git a/src/libical/icalerror.c b/src/libical/icalerror.c index f2697188..355009b8 100644 --- a/src/libical/icalerror.c +++ b/src/libical/icalerror.c @@ -36,6 +36,9 @@ #include <stdlib.h> /* for malloc() */ #include <string.h> /* for strcmp */ +#if defined(_MSC_VER) +#define LIBICAL_EXPORT __declspec(dllexport) +#endif #include "icalerror.h" #ifdef HAVE_PTHREAD diff --git a/src/libical/icalerror.h.cmake b/src/libical/icalerror.h.cmake index 88021f5f..05c402a1 100644 --- a/src/libical/icalerror.h.cmake +++ b/src/libical/icalerror.h.cmake @@ -64,15 +64,9 @@ typedef enum icalerrorenum { icalerrorenum * icalerrno_return(void); #define icalerrno (*(icalerrno_return())) -#cmakedefine LIBICAL_STATIC 1 - -/** If true, libicl aborts after a call to icalerror_set_error - * - * @warning NOT THREAD SAFE -- recommended that you do not change - * this in a multithreaded program. - */ +#if !defined(LIBICAL_EXPORT) #ifdef _MSC_VER - #if defined(LIBICAL_STATIC) + #if defined(BUILD_LIBICALSTATIC) #define LIBICAL_EXPORT extern #elif defined(BUILD_LIBICALDLL) #define LIBICAL_EXPORT __declspec(dllexport) @@ -82,6 +76,13 @@ icalerrorenum * icalerrno_return(void); #else #define LIBICAL_EXPORT extern #endif +#endif + +/** If true, libicu aborts after a call to icalerror_set_error + * + * @warning NOT THREAD SAFE -- recommended that you do not change + * this in a multithreaded program. + */ LIBICAL_EXPORT int icalerror_errors_are_fatal; @@ -93,7 +94,6 @@ LIBICAL_EXPORT int icalerror_errors_are_fatal; #define icalerror_warn(message) {fprintf(stderr,"%s:%d: %s\n",__FILE__,__LINE__,message);} #endif /* __GNU_C__ */ - void icalerror_clear_errno(void); void _icalerror_set_errno(icalerrorenum); diff --git a/src/libical/icalparameter_cxx.cpp b/src/libical/icalparameter_cxx.cpp index f8f0fc32..7a981f57 100644 --- a/src/libical/icalparameter_cxx.cpp +++ b/src/libical/icalparameter_cxx.cpp @@ -17,13 +17,8 @@ the License at http://www.mozilla.org/MPL/ */ -#ifndef ICALPARAMETER_CXX_H #include "icalparameter_cxx.h" -#endif - -#ifndef ICALVALUE_CXX_H #include "icalvalue_cxx.h" -#endif typedef char *string; // Will use the string library from STL diff --git a/src/libical/icalproperty_cxx.cpp b/src/libical/icalproperty_cxx.cpp index 5a8181d2..7af570e4 100644 --- a/src/libical/icalproperty_cxx.cpp +++ b/src/libical/icalproperty_cxx.cpp @@ -17,17 +17,9 @@ the License at http://www.mozilla.org/MPL/ */ -#ifndef ICALPROPERTY_CXX_H #include "icalproperty_cxx.h" -#endif - -#ifndef ICALPARAMETER_CXX_H #include "icalparameter_cxx.h" -#endif - -#ifndef ICALVALUE_CXX_H #include "icalvalue_cxx.h" -#endif ICalProperty::ICalProperty() : imp(icalproperty_new(ICAL_ANY_PROPERTY)) { diff --git a/src/libical/icalvalue_cxx.cpp b/src/libical/icalvalue_cxx.cpp index 708d0905..57ad342c 100644 --- a/src/libical/icalvalue_cxx.cpp +++ b/src/libical/icalvalue_cxx.cpp @@ -19,9 +19,7 @@ #include <config.h> #endif -#ifndef ICALVALUE_CXX_H #include "icalvalue_cxx.h" -#endif typedef char *string; // Will use the string library from STL diff --git a/src/libical/libical_ical_export.h b/src/libical/libical_ical_export.h index 5ba3bd40..4568fd83 100755 --- a/src/libical/libical_ical_export.h +++ b/src/libical/libical_ical_export.h @@ -1,21 +1,23 @@ #ifndef LIBICAL_ICAL_EXPORT_H #define LIBICAL_ICAL_EXPORT_H -#ifdef _MSC_VER - #if defined(BUILD_LIBICAL_STATIC) - #define LIBICAL_ICAL_EXPORT - #elif defined(BUILD_LIBICAL_SHARED) -#pragma message("HERE") - #define LIBICAL_ICAL_EXPORT __declspec(dllexport) - #else - #define LIBICAL_ICAL_EXPORT __declspec(dllimport) - #endif +#ifdef LIBICAL_ICAL_STATIC_DEFINE +# define LIBICAL_ICAL_EXPORT +# define LIBICAL_ICAL_NO_EXPORT #else - #if defined(BUILD_LIBICAL_STATIC) - #define LIBICAL_ICAL_EXPORT - #else - #define LIBICAL_ICAL_EXPORT __attribute__((visibility("default"))) - #endif +# if defined(_MSC_VER) +# if defined(libical_ical_EXPORTS) + /* We are building this library */ +# define LIBICAL_ICAL_EXPORT __declspec(dllexport) +# else + /* We are using this library */ +# define LIBICAL_ICAL_EXPORT __declspec(dllimport) +# endif +# define LIBICAL_ICAL_NO_EXPORT +# else +# define LIBICAL_ICAL_EXPORT __attribute__((visibility("default"))) +# define LIBICAL_ICAL_NO_EXPORT __attribute__((visibility("hidden"))) +# endif #endif #endif diff --git a/src/libical/vcomponent.cpp b/src/libical/vcomponent.cpp index 39904863..cd14482a 100644 --- a/src/libical/vcomponent.cpp +++ b/src/libical/vcomponent.cpp @@ -21,24 +21,13 @@ #include <config.h> #endif -#ifndef VCOMPONENT_H #include "vcomponent.h" -#endif - -#ifndef ICALVALUE_CXX_H #include "icalvalue_cxx.h" -#endif - -#ifndef ICALPROPERTY_CXX_H #include "icalproperty_cxx.h" -#endif - -#ifndef ICALPARAMETER_CXX_H #include "icalparameter_cxx.h" -#endif -#include <stdlib.h> -#include <string.h> +#include <cstdlib> +#include <cstring> #include <exception> VComponent::VComponent() throw(icalerrorenum) : imp(icalcomponent_new(ICAL_ANY_COMPONENT)) diff --git a/src/libical/vcomponent.h b/src/libical/vcomponent.h index 0cffa87e..9beb732f 100755 --- a/src/libical/vcomponent.h +++ b/src/libical/vcomponent.h @@ -22,7 +22,9 @@ #include "libical_ical_export.h" +extern "C" { #include <libical/ical.h> +}; #include "icptrholder.h" typedef char *string; // Will use the string library from STL diff --git a/src/libicalss/CMakeLists.txt b/src/libicalss/CMakeLists.txt index 7f8df0a4..d970df18 100644 --- a/src/libicalss/CMakeLists.txt +++ b/src/libicalss/CMakeLists.txt @@ -1,3 +1,5 @@ +add_definitions(-Dlibical_icalss_EXPORTS) + include_directories( ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/src diff --git a/src/libicalss/libical_icalss_export.h b/src/libicalss/libical_icalss_export.h index 462166f5..8b20668f 100755 --- a/src/libicalss/libical_icalss_export.h +++ b/src/libicalss/libical_icalss_export.h @@ -1,20 +1,23 @@ #ifndef LIBICAL_ICALSS_EXPORT_H #define LIBICAL_ICALSS_EXPORT_H -#ifdef _MSC_VER - #if defined(BUILD_LIBICAL_STATIC) - #define LIBICAL_ICALSS_EXPORT extern - #elif defined(BUILD_LIBICAL_SHARED) - #define LIBICAL_ICALSS_EXPORT __declspec(dllexport) - #else - #define LIBICAL_ICALSS_EXPORT __declspec(dllimport) - #endif +#ifdef LIBICAL_ICALSS_STATIC_DEFINE +# define LIBICAL_ICALSS_EXPORT +# define LIBICAL_ICALSS_NO_EXPORT #else - #if defined(BUILD_LIBICAL_STATIC) - #define LIBICAL_ICALSS_EXPORT - #else - #define LIBICAL_ICALSS_EXPORT __attribute__((visibility("default"))) - #endif +# if defined(_MSC_VER) +# if defined(libical_icalss_EXPORTS) + /* We are building this library */ +# define LIBICAL_ICALSS_EXPORT __declspec(dllexport) +# else + /* We are using this library */ +# define LIBICAL_ICALSS_EXPORT __declspec(dllimport) +# endif +# define LIBICAL_ICALSS_NO_EXPORT +# else +# define LIBICAL_ICALSS_EXPORT __attribute__((visibility("default"))) +# define LIBICAL_ICALSS_NO_EXPORT __attribute__((visibility("hidden"))) +# endif #endif #endif diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt index 3238c816..05dc3552 100644 --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -1,3 +1,5 @@ +add_definitions(-DBUILD_LIBICALDLL) + include_directories( ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/src @@ -42,11 +44,19 @@ macro(buildme _name _srcs) target_link_libraries(${_name} ical_cxx icalss_cxx) endif() else() - target_link_libraries(${_name} - ${CMAKE_BINARY_DIR}/lib/libical.a - ${CMAKE_BINARY_DIR}/lib/libicalss.a - ${CMAKE_BINARY_DIR}/lib/libicalvcal.a - ) + if(NOT WIN32) + target_link_libraries(${_name} + ${CMAKE_BINARY_DIR}/lib/libical.a + ${CMAKE_BINARY_DIR}/lib/libicalss.a + ${CMAKE_BINARY_DIR}/lib/libicalvcal.a + ) + else() + target_link_libraries(${_name} + ${CMAKE_BINARY_DIR}/bin/libical-static.lib + ${CMAKE_BINARY_DIR}/bin/libicalss-static.lib + ${CMAKE_BINARY_DIR}/bin/libicalvcal-static.lib + ) + endif() target_link_libraries(${_name} ${CMAKE_THREAD_LIBS_INIT}) if(ICU_FOUND) target_link_libraries(${_name} ${ICU_LIBRARY}) @@ -58,10 +68,17 @@ macro(buildme _name _srcs) target_link_libraries(${_name} ${BDB_LIBRARY}) endif() if(WITH_CXX_BINDINGS) - target_link_libraries(${_name} - ${CMAKE_BINARY_DIR}/lib/libical_cxx.a - ${CMAKE_BINARY_DIR}/lib/libicalss_cxx.a - ) + if(NOT WIN32) + target_link_libraries(${_name} + ${CMAKE_BINARY_DIR}/lib/libical_cxx.a + ${CMAKE_BINARY_DIR}/lib/libicalss_cxx.a + ) + else() + target_link_libraries(${_name} + ${CMAKE_BINARY_DIR}/bin/libical_cxx-static.lib + ${CMAKE_BINARY_DIR}/bin/libicalss_cxx-static.lib + ) + endif() endif() endif() endmacro() @@ -113,6 +130,30 @@ testme(recur "${recur_SRCS}") ########### next target ############### +if(HAVE_UNISTD_H) #getopt is required + set(testmime_SRCS testmime.c) + testme(testmime "${testmime_SRCS}") +endif() + +########### next target ############### + +set(testvcal_SRCS testvcal.c) +testme(testvcal "${testvcal_SRCS}") + +########### next target ############### + +set(process_SRCS process.c) +testme(process "${process_SRCS}") + +########### next target ############### + +if(NOT USE_BUILTIN_TZDATA) + set(timezones_SRCS timezones.c) + testme(timezones "${timezones_SRCS}") +endif() + +########### next target ############### + if(NOT WIN32) #since we currently do not have a Windows reference file if(HAVE_UNISTD_H) #getopt is required if(NOT USE_32BIT_TIME_T) #tests for years greater than 2037 will fail @@ -156,29 +197,5 @@ if(NOT WIN32) #since we currently do not have a Windows reference file endif() endif() -########### next target ############### - -if(HAVE_UNISTD_H) #getopt is required - set(testmime_SRCS testmime.c) - testme(testmime "${testmime_SRCS}") -endif() - -########### next target ############### - -set(testvcal_SRCS testvcal.c) -testme(testvcal "${testvcal_SRCS}") - -########### next target ############### - -set(process_SRCS process.c) -testme(process "${process_SRCS}") - -########### next target ############### - -if(NOT USE_BUILTIN_TZDATA) - set(timezones_SRCS timezones.c) - testme(timezones "${timezones_SRCS}") -endif() - ########### install files ############### |