summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt5
-rw-r--r--examples/CMakeLists.txt18
-rw-r--r--src/libical/CMakeLists.txt19
-rw-r--r--src/libical/icalerror.c3
-rw-r--r--src/libical/icalerror.h.cmake18
-rw-r--r--src/libical/icalparameter_cxx.cpp5
-rw-r--r--src/libical/icalproperty_cxx.cpp8
-rw-r--r--src/libical/icalvalue_cxx.cpp2
-rwxr-xr-xsrc/libical/libical_ical_export.h30
-rw-r--r--src/libical/vcomponent.cpp15
-rwxr-xr-xsrc/libical/vcomponent.h2
-rw-r--r--src/libicalss/CMakeLists.txt2
-rwxr-xr-xsrc/libicalss/libical_icalss_export.h29
-rw-r--r--src/test/CMakeLists.txt83
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 ###############