Static linking support for non windows systems (#23)
Add support for statically linking the APR and APR-Util libraries on non-Windows systems.
diff --git a/src/cmake/FindAPR-Util.cmake b/src/cmake/FindAPR-Util.cmake
index 4f07c93..bb4e951 100644
--- a/src/cmake/FindAPR-Util.cmake
+++ b/src/cmake/FindAPR-Util.cmake
@@ -34,7 +34,15 @@
mark_as_advanced(APR_UTIL_CONFIG_EXECUTABLE)
if(EXISTS ${APR_UTIL_CONFIG_EXECUTABLE})
_apu_invoke(APR_UTIL_INCLUDE_DIR --includedir)
- _apu_invoke(APR_UTIL_LIBRARIES --link-ld)
+ if (APU_STATIC OR NOT BUILD_SHARED_LIBS)
+ _apu_invoke(_apu_util_link_args --link-ld)
+ string(REGEX MATCH "-L([^ ]+)" _apu_util_L_flag ${_apu_util_link_args})
+ find_library(APR_UTIL_LIBRARIES NAMES libaprutil-1.a PATHS "${CMAKE_MATCH_1}")
+ _apu_invoke(XMLLIB_LIBRARIES --libs)
+ set(APR_UTIL_COMPILE_DEFINITIONS APU_DECLARE_STATIC)
+ else()
+ _apu_invoke(APR_UTIL_LIBRARIES --link-ld)
+ endif()
else()
find_path(APR_UTIL_INCLUDE_DIR apu.h PATH_SUFFIXES apr-1)
if (APU_STATIC OR NOT BUILD_SHARED_LIBS)
@@ -48,5 +56,5 @@
endif()
endif()
-find_package_handle_standard_args(APR-Util DEFAULT_MSG
+find_package_handle_standard_args(APR-Util
APR_UTIL_INCLUDE_DIR APR_UTIL_LIBRARIES)
diff --git a/src/cmake/FindAPR.cmake b/src/cmake/FindAPR.cmake
index 92eaa98..a204ece 100644
--- a/src/cmake/FindAPR.cmake
+++ b/src/cmake/FindAPR.cmake
@@ -33,7 +33,15 @@
mark_as_advanced(APR_CONFIG_EXECUTABLE)
if(EXISTS ${APR_CONFIG_EXECUTABLE})
_apr_invoke(APR_INCLUDE_DIR --includedir)
- _apr_invoke(APR_LIBRARIES --link-ld)
+ if (APR_STATIC OR NOT BUILD_SHARED_LIBS)
+ _apr_invoke(_apr_link_args --link-ld)
+ string(REGEX MATCH "-L([^ ]+)" _apr_L_flag ${_apr_link_args})
+ find_library(APR_LIBRARIES NAMES libapr-1.a PATHS "${CMAKE_MATCH_1}")
+ set(APR_SYSTEM_LIBS pthread)
+ set(APR_COMPILE_DEFINITIONS APR_DECLARE_STATIC)
+ else()
+ _apr_invoke(APR_LIBRARIES --link-ld)
+ endif()
else()
find_path(APR_INCLUDE_DIR apr.h PATH_SUFFIXES apr-1)
if (APR_STATIC OR NOT BUILD_SHARED_LIBS)