cmake: IMPORT, EXPORT and RPATH improvements
[awesomized/libmemcached] / src / bin / CMakeLists.txt
1
2 add_library(libclient_utilities STATIC utilities.cc generator.cc execute.cc)
3 add_library(client_utilities ALIAS libclient_utilities)
4 target_link_libraries(libclient_utilities PRIVATE libmemcachedinternal)
5 target_include_directories(libclient_utilities PUBLIC
6 ${CMAKE_SOURCE_DIR}/include
7 ${CMAKE_BINARY_DIR}/include
8 ${CMAKE_SOURCE_DIR}/src
9 ${CMAKE_BINARY_DIR}/src
10 ${CMAKE_BINARY_DIR})
11
12
13 foreach(CLIENT IN LISTS CLIENTS)
14 add_executable(${CLIENT} ${CLIENT}.cc)
15 target_include_directories(${CLIENT} PRIVATE ..)
16 target_link_libraries(${CLIENT} PRIVATE libclient_utilities)
17 if(CMAKE_INSTALL_RPATH)
18 set_target_properties(${CLIENT} PROPERTIES
19 INSTALL_RPATH ${CMAKE_INSTALL_RPATH}/../${CMAKE_INSTALL_LIBDIR})
20 endif()
21 install(TARGETS ${CLIENT}
22 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
23 endforeach()
24
25 # extra sources
26
27 target_sources(memcapable PRIVATE ../libmemcached/byteorder.cc)
28
29 # extra libs
30
31 target_link_libraries(memcapable PRIVATE Threads::Threads)
32 target_link_libraries(memping PRIVATE libmemcachedutil)
33 target_link_libraries(memslap PRIVATE Threads::Threads)
34
35 # memaslap is special
36
37 if(ENABLE_MEMASLAP)
38 if(LIBEVENT AND HAVE_C_STDATOMIC)
39 add_executable(memaslap memaslap.c
40 ms_conn.c ms_setting.c ms_sigsegv.c ms_stats.c ms_task.c ms_thread.c)
41 target_include_directories(memaslap PRIVATE ${LIBEVENT_INCLUDEDIR})
42 target_link_libraries(memaslap PRIVATE libclient_utilities ${LIBEVENT_LIBRARIES} Threads::Threads)
43 if(CMAKE_INSTALL_RPATH)
44 set_target_properties(${CLIENT} PROPERTIES
45 INSTALL_RPATH ${CMAKE_INSTALL_RPATH}/../${CMAKE_INSTALL_LIBDIR})
46 endif()
47 install(TARGETS memaslap
48 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
49 endif()
50 endif()