X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Flibmemcached%2FCMakeLists.txt;h=a029ac58f235a9f3f12c0ce50456cf63313f5d11;hb=5c408a353db507e7c3fa4694dd2548a4a29215bc;hp=4e8e0401d0565e40acf82edcaf10ec581f968178;hpb=47a71801cb4e7b926321771765f35707783d2e30;p=m6w6%2Flibmemcached diff --git a/src/libmemcached/CMakeLists.txt b/src/libmemcached/CMakeLists.txt index 4e8e0401..a029ac58 100644 --- a/src/libmemcached/CMakeLists.txt +++ b/src/libmemcached/CMakeLists.txt @@ -11,15 +11,34 @@ bison_target(CSL_PARSER csl/parser.yy ${CMAKE_CURRENT_BINARY_DIR}/csl/parser.cc DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/csl/parser.h COMPILE_FLAGS ${BISON_WARNINGS} ) +set_source_files_properties(${BISON_CSL_PARSER_OUTPUTS} PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON) flex_target(CSL_SCANNER csl/scanner.l ${CMAKE_CURRENT_BINARY_DIR}/csl/scanner.cc DEFINES_FILE ${CMAKE_CURRENT_BINARY_DIR}/csl/scanner.h ) +set_source_files_properties(${FLEX_CSL_SCANNER_OUTPUTS} PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON) add_flex_bison_dependency(CSL_SCANNER CSL_PARSER) +if(HAVE_DTRACE) + add_custom_command( + OUTPUT dtrace_probes.h + COMMAND ${DTRACE_EXECUTABLE} + ARGS -h -o dtrace_probes.h -s ${CMAKE_CURRENT_SOURCE_DIR}/libmemcached_probes.d + MAIN_DEPENDENCY libmemcached_probes.d + ) + add_custom_command( + OUTPUT libmemcached_probes.o + COMMAND ${DTRACE_EXECUTABLE} + ARGS -o libmemcached_probes.o -G -s ${CMAKE_CURRENT_SOURCE_DIR}/libmemcached_probes.d + MAIN_DEPENDENCY dtrace_probes.h + ) + set(DTRACE_GENERATED_OUTPUT libmemcached_probes.o) +endif() + set(LIBMEMCACHED_SOURCES csl/context.cc ${BISON_CSL_PARSER_OUTPUTS} ${FLEX_CSL_SCANNER_OUTPUTS} + ${DTRACE_GENERATED_OUTPUT} allocators.cc analyze.cc array.c @@ -28,6 +47,7 @@ set(LIBMEMCACHED_SOURCES behavior.cc byteorder.cc callback.cc + common.h connect.cc delete.cc do.cc @@ -71,16 +91,27 @@ set(LIBMEMCACHED_SOURCES 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}) +set_target_properties(libmemcached PROPERTIES + LIBRARY_OUTPUT_NAME memcached + LIBRARY_OUTPUT_NAME_DEBUG memcached-dbg + SOVERSION ${LIBMEMCACHED_SO_VERSION} + VERSION v${LIBMEMCACHED_VERSION}) target_compile_definitions(libmemcached PRIVATE -DBUILDING_LIBMEMCACHED) +target_link_libraries(libmemcached PUBLIC libhashkit Threads::Threads ${LIBSASL_LIBRARIES} ${CMAKE_DL_LIBS}) +target_include_directories(libmemcached PRIVATE ${LIBSASL_INCLUDEDIR}) +target_include_directories(libmemcached PRIVATE + ${CMAKE_SOURCE_DIR}/src + ${CMAKE_BINARY_DIR}/src + ${CMAKE_BINARY_DIR}) +target_include_directories(libmemcached PUBLIC + $ + $ + $) -set_target_properties(libmemcached PROPERTIES SOVERSION ${LIBMEMCACHED_SO_VERSION}) -install(TARGETS libmemcached EXPORT libmemcached +install(TARGETS libmemcached EXPORT libmemcached-targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) -export(EXPORT libmemcached) -install(EXPORT libmemcached DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/cmake) +export(EXPORT libmemcached-targets NAMESPACE libmemcached::) +install(EXPORT libmemcached-targets NAMESPACE libmemcached:: DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/cmake) install_public_headers( libmemcached @@ -90,12 +121,22 @@ install_public_headers( util.h ) -# FIXME: dtrace - 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) +target_link_libraries(libmemcachedinternal PUBLIC libhashkit Threads::Threads ${LIBSASL_LIBRARIES} ${CMAKE_DL_LIBS}) +target_include_directories(libmemcachedinternal PRIVATE ${LIBSASL_INCLUDEDIR}) +target_include_directories(libmemcachedinternal PRIVATE + ${CMAKE_SOURCE_DIR}/src + ${CMAKE_BINARY_DIR}/src + ${CMAKE_BINARY_DIR}) +target_include_directories(libmemcachedinternal PUBLIC + $ + $ + $) + +# let libmemcached depend on libmemcachedinternal to ensure that they do not +# compete for the same generated dependencies +add_dependencies(libmemcached libmemcachedinternal)