Try CMake as an alternative to autotools user/dbs/cmake
authorDan Scott <dscott@laurentian.ca>
Thu, 27 Oct 2011 22:32:49 +0000 (18:32 -0400)
committerDan Scott <dscott@laurentian.ca>
Thu, 27 Oct 2011 22:32:49 +0000 (18:32 -0400)
A strong recommendation coming out of GSOC was to investigate CMake as a
friendlier replacement for autoconf / automake. Thus...

Signed-off-by: Dan Scott <dscott@laurentian.ca>
CMakeLists.txt [new file with mode: 0644]
src/c-apps/CMakeLists.txt [new file with mode: 0644]
src/jserver/CMakeLists.txt [new file with mode: 0644]
src/libopensrf/CMakeLists.txt [new file with mode: 0644]

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644 (file)
index 0000000..790f914
--- /dev/null
@@ -0,0 +1,53 @@
+project (OpenSRF)
+
+cmake_minimum_required(VERSION 2.8)
+
+INCLUDE(FindLibXml2)
+INCLUDE(FindPerl)
+INCLUDE(FindPythonInterp)
+
+include_directories (include)
+add_subdirectory (src/c-apps)
+add_subdirectory (src/libopensrf)
+add_subdirectory (src/jserver)
+
+set(prefix      ${CMAKE_INSTALL_PREFIX})
+set(exec_prefix ${CMAKE_INSTALL_PREFIX})
+set(libdir      ${CMAKE_INSTALL_PREFIX}/lib)
+set(includedir  ${CMAKE_INSTALL_PREFIX}/include)
+set(CONF_DIR ${CMAKE_INSTALL_PREFIX}/conf)
+set(PID_DIR ${CMAKE_INSTALL_PREFIX}/var)
+
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/bin/opensrf-perl.pl.in
+    ${CMAKE_CURRENT_SOURCE_DIR}/bin/opensrf-perl
+    @ONLY
+)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/bin/osrf_config.in
+    ${CMAKE_CURRENT_SOURCE_DIR}/bin/opensrf-config
+)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/bin/osrf_ctl.sh.in
+    ${CMAKE_CURRENT_SOURCE_DIR}/bin/opensrf-ctl
+)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doc/dokuwiki-doc-stubber.pl.in
+    ${CMAKE_CURRENT_SOURCE_DIR}/doc/dokuwiki-doc-stubber.pl
+    @ONLY
+)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/examples/simple_text.py.in
+    ${CMAKE_CURRENT_SOURCE_DIR}/examples/simple_text.py
+)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/examples/multisession-test.pl.in
+    ${CMAKE_CURRENT_SOURCE_DIR}/examples/multisession-test.pl
+)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/examples/math_client.py.in
+    ${CMAKE_CURRENT_SOURCE_DIR}/examples/math_client.py
+)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/examples/math_xul_client/Makefile.in
+    ${CMAKE_CURRENT_SOURCE_DIR}/examples/math_xul_client/Makefile
+)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/examples/math_bench.pl.in
+    ${CMAKE_CURRENT_SOURCE_DIR}/examples/math_bench.pl
+    @ONLY
+)
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/python/opensrf.py.in
+    ${CMAKE_CURRENT_SOURCE_DIR}/src/python/opensrf-python
+)
diff --git a/src/c-apps/CMakeLists.txt b/src/c-apps/CMakeLists.txt
new file mode 100644 (file)
index 0000000..53e61b7
--- /dev/null
@@ -0,0 +1,17 @@
+include_directories(${LIBXML2_INCLUDE_DIR})
+
+add_executable (timejson timejson.c)
+add_dependencies (timejson opensrf)
+target_link_libraries (timejson opensrf)
+
+add_library (osrf_dbmath MODULE osrf_dbmath.c)
+add_dependencies (osrf_dbmath opensrf)
+target_link_libraries (osrf_dbmath ${LIBXML2_LIBRARIES})
+
+add_library (osrf_math MODULE osrf_math.c)
+add_dependencies (osrf_math opensrf)
+target_link_libraries (osrf_math ${LIBXML2_LIBRARIES})
+
+add_library (osrf_version MODULE osrf_version.c)
+add_dependencies (osrf_version opensrf)
+target_link_libraries (osrf_version ${LIBXML2_LIBRARIES})
diff --git a/src/jserver/CMakeLists.txt b/src/jserver/CMakeLists.txt
new file mode 100644 (file)
index 0000000..95fc78a
--- /dev/null
@@ -0,0 +1,8 @@
+add_executable(chopchop osrf_chat.c osrf_chat.h osrf_chat_main.c)
+add_dependencies (chopchop opensrf)
+target_link_libraries (chopchop opensrf ${LIBXML2_LIBRARIES})
+include_directories(${LIBXML2_INCLUDE_DIR})
+
+set_target_properties (chopchop PROPERTIES
+    COMPILE_DEFINITIONS _GNU_SOURCE
+)
diff --git a/src/libopensrf/CMakeLists.txt b/src/libopensrf/CMakeLists.txt
new file mode 100644 (file)
index 0000000..4aea0d1
--- /dev/null
@@ -0,0 +1,58 @@
+
+find_library (MEMCACHED memcached)
+
+add_executable (osrf_json_test
+    osrf_json_test.c
+    osrf_json_object.c
+    osrf_parse_json.c
+    osrf_json_tools.c
+    osrf_legacy_json.c
+    osrf_json_xml.c
+    osrf_list.c
+    osrf_hash.c
+    osrf_utf8.c
+    utils.c
+    log.c
+    md5.c
+    string_array.c
+)
+
+add_library (opensrf SHARED 
+    log.c
+    md5.c
+    osrf_application.c
+    osrf_app_session.c
+    osrf_cache.c
+    osrfConfig.c
+    osrf_hash.c
+    osrf_json_object.c
+    osrf_json_tools.c
+    osrf_json_xml.c
+    osrf_legacy_json.c
+    osrf_list.c
+    osrf_message.c
+    osrf_parse_json.c
+    osrf_prefork.c
+    osrf_settings.c
+    osrf_stack.c
+    osrf_system.c
+    osrf_transgroup.c
+    osrf_utf8.c
+    sha.c
+    socket_bundle.c
+    string_array.c
+    transport_client.c
+    transport_message.c
+    transport_session.c
+    utils.c
+    xml_utils.c
+)
+
+target_link_libraries (opensrf memcached ${LIBXML2_LIBRARIES})
+
+set_target_properties (opensrf PROPERTIES
+    COMPILE_DEFINITIONS ASSUME_STATELESS;OSRF_STRICT_PARAMS;OSRF_JSON_ENABLE_XML_UTILS
+)
+
+include_directories(${LIBXML2_INCLUDE_DIR})
+