diff --git a/cmake/modules/FindEvent.cmake b/cmake/modules/FindEvent.cmake --- a/cmake/modules/FindEvent.cmake +++ b/cmake/modules/FindEvent.cmake @@ -11,7 +11,25 @@ find_path(EVENT_INCLUDE_DIR NAMES event.h) find_library(EVENT_LIBRARY NAMES event libevent) -find_library(EVENT_PTHREAD_LIBRARY event_pthreads) + +if(NOT TARGET Event) + # Create a library to be used + add_library(Event STATIC IMPORTED) + set_target_properties(Event PROPERTIES + IMPORTED_LOCATION ${EVENT_LIBRARY} + INTERFACE_INCLUDE_DIRECTORIES ${EVENT_INCLUDE_DIR}) + + # On windows, libevent depends on ws2_32 + if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") + find_library(WS2_32_LIBRARY NAMES ws2_32) + set_target_properties(Event PROPERTIES + IMPORTED_LINK_INTERFACE_LIBRARIES ${WS2_32_LIBRARY}) + else() + find_library(EVENT_PTHREAD_LIBRARY event_pthreads) + set_target_properties(Event PROPERTIES + IMPORTED_LINK_INTERFACE_LIBRARIES ${EVENT_PTHREAD_LIBRARY}) + endif() +endif() message(STATUS "libevent: " ${EVENT_LIBRARY}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -221,23 +221,15 @@ # This require libevent find_package(Event REQUIRED) -target_include_directories(server - PRIVATE - leveldb/helpers/memenv - ${EVENT_INCLUDE_DIR} -) +target_include_directories(server PRIVATE leveldb/helpers/memenv) target_link_libraries(server - ${EVENT_LIBRARY} + Event bitcoinconsensus leveldb memenv ) -if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Windows") - target_link_libraries(server ${EVENT_PTHREAD_LIBRARY}) -endif() - # Test suite. add_subdirectory(test) @@ -269,8 +261,7 @@ target_sources(bitcoin-cli PRIVATE bitcoin-cli-res.rc) endif() - target_include_directories(bitcoin-cli PRIVATE ${EVENT_INCLUDE_DIR}) - target_link_libraries(bitcoin-cli common rpcclient ${EVENT_LIBRARY}) + target_link_libraries(bitcoin-cli common rpcclient Event) endif() # bitcoin-tx diff --git a/src/wallet/CMakeLists.txt b/src/wallet/CMakeLists.txt --- a/src/wallet/CMakeLists.txt +++ b/src/wallet/CMakeLists.txt @@ -19,11 +19,6 @@ walletdb.cpp ) -target_link_libraries(wallet util univalue ${BDBXX_LIBRARY} ${EVENT_LIBRARY}) +target_link_libraries(wallet util univalue Event ${BDBXX_LIBRARY}) -target_include_directories(wallet - PUBLIC - ${BDBXX_INCLUDE_DIR} - PRIVATE - ${EVENT_INCLUDE_DIR} -) +target_include_directories(wallet PUBLIC ${BDBXX_INCLUDE_DIR})