ソースを参照

HPCC-16522 Added libcouchbase as submodule and packaged alongside plugin

Signed-off-by: Michael Gardner <michael.gardner@lexisnexis.com>
Michael Gardner 8 年 前
コミット
1cdb916e70
3 ファイル変更61 行追加26 行削除
  1. 3 0
      .gitmodules
  2. 57 26
      plugins/couchbase/CMakeLists.txt
  3. 1 0
      plugins/couchbase/libcouchbase

+ 3 - 0
.gitmodules

@@ -40,3 +40,6 @@
 [submodule "plugins/couchbase/libcouchbase-cxx"]
 [submodule "plugins/couchbase/libcouchbase-cxx"]
 	path = plugins/couchbase/libcouchbase-cxx
 	path = plugins/couchbase/libcouchbase-cxx
 	url = https://github.com/hpcc-systems/libcouchbase-cxx.git
 	url = https://github.com/hpcc-systems/libcouchbase-cxx.git
+[submodule "libcouchbase"]
+	path = plugins/couchbase/libcouchbase
+	url = https://github.com/hpcc-systems/libcouchbase.git

+ 57 - 26
plugins/couchbase/CMakeLists.txt

@@ -25,37 +25,68 @@
 project(couchbaseembed)
 project(couchbaseembed)
 
 
 IF ( COUCHBASEEMBED )
 IF ( COUCHBASEEMBED )
-    ADD_PLUGIN(COUCHBASEEMBED PACKAGES COUCHBASE)
-    IF ( MAKE_COUCHBASEEMBED )
-        set(
-            SRCS
-            couchbaseembed.cpp
+
+    if(APPLE)
+        set(LIBCOUCHBASE_LIB ${CMAKE_CURRENT_BINARY_DIR}/libcouchbase-build/lib/libcouchbase.so)
+        set(LIBCOUCHBASE_LIB_SONAME ${CMAKE_CURRENT_BINARY_DIR}/libcouchbase-build/lib/libcouchbase.so.2)
+        set(LIBCOUCHBASE_LIB_REAL ${CMAKE_CURRENT_BINARY_DIR}/libcouchbase-build/lib/libcouchbase.so.2.0.38)
+    else()
+        set(LIBCOUCHBASE_LIB ${CMAKE_CURRENT_BINARY_DIR}/libcouchbase-build/lib/libcouchbase.so)
+        set(LIBCOUCHBASE_LIB_SONAME ${CMAKE_CURRENT_BINARY_DIR}/libcouchbase-build/lib/libcouchbase.so.2)
+        set(LIBCOUCHBASE_LIB_REAL ${CMAKE_CURRENT_BINARY_DIR}/libcouchbase-build/lib/libcouchbase.so.2.0.38)
+    endif()
+    add_custom_command(
+        OUTPUT ${LIBCOUCHBASE_LIB}
+        COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/libcouchbase-build
+        COMMAND cd ${CMAKE_CURRENT_BINARY_DIR}/libcouchbase-build && ${CMAKE_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR}/libcouchbase && ${CMAKE_MAKE_PROGRAM}
+        COMMENT Building libcouchbase for import)
+    add_custom_target(libcouchbase-build ALL DEPENDS ${LIBCOUCHBASE_LIB})
+    add_library(libcouchbase SHARED IMPORTED)
+    set_property(TARGET libcouchbase PROPERTY IMPORTED_LOCATION ${LIBCOUCHBASE_LIB})
+    add_dependencies(libcouchbase libcouchbase-build)
+
+    set(
+        SRCS
+        couchbaseembed.cpp
         )
         )
 
 
-        INCLUDE_DIRECTORIES (
-            ${PROJECT_SOURCE_DIR}/libcouchbase-cxx/include
-            ./../../esp/platform #for token serialize/deserialize
-            ./../../system/include
-            ./../../rtl/eclrtl
-            ./../../rtl/include
-            ./../../rtl/nbcd
-            ./../../common/deftype
-            ./../../system/jlib
-            ./../../roxie/roxiemem
+    INCLUDE_DIRECTORIES (
+        ${PROJECT_SOURCE_DIR}/libcouchbase/include
+        ${PROJECT_BINARY_DIR}/libcouchbase-build/generated
+        ${PROJECT_SOURCE_DIR}/libcouchbase-cxx/include
+        ${HPCC_SOURCE_DIR}/esp/platform #for token serialize/deserialize
+        ${HPCC_SOURCE_DIR}/system/include
+        ${HPCC_SOURCE_DIR}/rtl/eclrtl
+        ${HPCC_SOURCE_DIR}/rtl/include
+        ${HPCC_SOURCE_DIR}/rtl/nbcd
+        ${HPCC_SOURCE_DIR}/common/deftype
+        ${HPCC_SOURCE_DIR}/system/jlib
+        ${HPCC_SOURCE_DIR}/roxie/roxiemem
         )
         )
 
 
-        ADD_DEFINITIONS(-D_USRDLL -DCOUCHBASEEMBED_EXPORTS)
-        HPCC_ADD_LIBRARY(couchbaseembed SHARED ${SRCS})
-        install(
-            TARGETS couchbaseembed
-            DESTINATION plugins)
+    ADD_DEFINITIONS(-D_USRDLL -DCOUCHBASEEMBED_EXPORTS)
+    HPCC_ADD_LIBRARY(couchbaseembed SHARED ${SRCS})
+    install(CODE "set(ENV{LD_LIBRARY_PATH} \"\$ENV{LD_LIBRARY_PATH}:${PROJECT_BINARY_DIR}:${PROJECT_BINARY_DIR}/libcouchbase-build/lib\")")
+    install(
+        TARGETS couchbaseembed
+        DESTINATION plugins)
 
 
-        target_link_libraries(
-            couchbaseembed
-            ${LIBCOUCHBASE_LIBRARIES}
-            eclrtl
-            jlib)
-    endif()
+    install(
+        FILES ${LIBCOUCHBASE_LIB_REAL}
+        DESTINATION ${LIB_DIR}
+        PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+        COMPONENT Runtime)
+
+    install(
+        FILES ${LIBCOUCHBASE_LIB} ${LIBCOUCHBASE_LIB_SONAME}
+        DESTINATION ${LIB_DIR}
+        COMPONENT Runtime)
+
+    target_link_libraries(
+        couchbaseembed
+        libcouchbase
+        eclrtl
+        jlib)
 endif()
 endif()
 
 
 if(PLATFORM OR CLIENTTOOLS_ONLY)
 if(PLATFORM OR CLIENTTOOLS_ONLY)

+ 1 - 0
plugins/couchbase/libcouchbase

@@ -0,0 +1 @@
+Subproject commit 822615ccbeecb9107bc4c02616b41aed6d9938c0