cmake: compat
[m6w6/libmemcached] / libmemcached / CMakeLists.txt
index a28aeb8dd6785cd57756fbd083b9af5c99ad1aef..2f8b0183cd6051178c7a5098740d6d778e543c4f 100644 (file)
@@ -1,9 +1,20 @@
 
-add_subdirectory(csl)
+find_package(FLEX)
+find_package(BISON)
 
-include_directories(..)
+file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/csl)
+bison_target(CSL_PARSER csl/parser.yy ${CMAKE_CURRENT_BINARY_DIR}/csl/parser.cc
+        DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/csl/parser.h
+        )
+flex_target(CSL_SCANNER csl/scanner.l ${CMAKE_CURRENT_BINARY_DIR}/csl/scanner.cc
+        DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/csl/scanner.h
+        )
+add_flex_bison_dependency(CSL_SCANNER CSL_PARSER)
 
-add_library(memcached
+set(LIBMEMCACHED_SOURCES
+        csl/context.cc
+        ${BISON_CSL_PARSER_OUTPUTS}
+        ${FLEX_CSL_SCANNER_OUTPUTS}
         allocators.cc
         analyze.cc
         array.c
@@ -50,9 +61,36 @@ add_library(memcached
         udp.cc
         verbosity.cc
         version.cc
-        virtual_bucket.c
+        virtual_bucket.c)
+
+add_library(libmemcached SHARED
+        ${LIBMEMCACHED_SOURCES})
+add_library(memcached ALIAS libmemcached)
+set_target_properties(libmemcached PROPERTIES LIBRARY_OUTPUT_NAME memcached)
+target_link_libraries(libmemcached libhashkit Threads::Threads ${LIBSASL_LIBRARIES} ${CMAKE_DL_LIBS})
+target_include_directories(libmemcached PRIVATE .. ${LIBSASL_INCLUDEDIR})
+target_compile_definitions(libmemcached PRIVATE -DBUILDING_LIBMEMCACHED)
+
+set_target_properties(libmemcached PROPERTIES SOVERSION ${LIBMEMCACHED_SO_VERSION})
+install(TARGETS libmemcached EXPORT libmemcached
+        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+export(EXPORT libmemcached)
+install(EXPORT libmemcached DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/cmake)
+
+install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+        DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+        FILES_MATCHING REGEX "(memcached|util)\\.h(pp)?"
+        PATTERN csl EXCLUDE
+        PATTERN memcached EXCLUDE
+        PATTERN util EXCLUDE
         )
 
-target_link_libraries(memcached csl hashkit ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS})
+# FIXME: dtrace
 
-target_compile_definitions(memcached PRIVATE -DBUILDING_LIBMEMCACHED)
+add_library(libmemcachedinternal STATIC
+        ${LIBMEMCACHED_SOURCES})
+add_library(memcachedinternal ALIAS libmemcachedinternal)
+set_target_properties(libmemcachedinternal PROPERTIES LIBRARY_OUTPUT_NAME memcachedinternal)
+target_link_libraries(libmemcachedinternal libhashkit Threads::Threads ${LIBSASL_LIBRARIES} ${CMAKE_DL_LIBS})
+target_include_directories(libmemcachedinternal PRIVATE .. ${LIBSASL_INCLUDEDIR})
+target_compile_definitions(libmemcachedinternal PRIVATE -DBUILDING_LIBMEMCACHEDINTERNAL)