-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
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)