subrepo: subdir: "deps/nats.c" merged: "66cec7f" upstream: origin: "https://github.com/nats-io/nats.c.git" branch: "v3.6.1" commit: "66cec7f" git-subrepo: version: "0.4.6" commit: "b8b46501e"
90 lines
2.6 KiB
CMake
90 lines
2.6 KiB
CMake
if(NOT NATS_BUILD_EXAMPLES)
|
|
return()
|
|
endif()
|
|
if(NOT NATS_BUILD_STATIC_EXAMPLES AND NOT NATS_BUILD_LIB_SHARED)
|
|
MESSAGE(FATAL_ERROR
|
|
"Building examples require shared library, or run CMake with -DNATS_BUILD_STATIC_EXAMPLES=ON")
|
|
endif()
|
|
|
|
# We need this directory to build the examples
|
|
include_directories(${PROJECT_SOURCE_DIR}/src)
|
|
include_directories(${PROJECT_SOURCE_DIR}/examples)
|
|
|
|
if(NATS_BUILD_LIBUV_EXAMPLE AND LIBUV_DIR)
|
|
include_directories(${LIBUV_DIR}/include)
|
|
endif()
|
|
|
|
if(NATS_BUILD_LIBEVENT_EXAMPLE AND LIBEVENT_DIR)
|
|
include_directories(${LIBEVENT_DIR}/include)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
set(LIB_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
|
|
else()
|
|
if(NATS_BUILD_STATIC_EXAMPLES)
|
|
set(LIB_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
|
|
else()
|
|
set(LIB_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
|
|
endif()
|
|
endif()
|
|
|
|
# Get all the .c files in the examples directory
|
|
file(GLOB EXAMPLES_SOURCES RELATIVE ${PROJECT_SOURCE_DIR}/examples *.c)
|
|
|
|
if(NOT NATS_BUILD_STATIC_EXAMPLES)
|
|
add_definitions(-Dnats_IMPORTS)
|
|
endif()
|
|
|
|
# For each file...
|
|
foreach(examples_src ${EXAMPLES_SOURCES})
|
|
|
|
# Remove the suffix so that it becomes the executable name
|
|
string(REPLACE ".c" "" examplename ${examples_src})
|
|
set(exampleexe "nats-${examplename}")
|
|
|
|
set(buildExample OFF)
|
|
set(NATS_ASYNC_IO_LIB "")
|
|
|
|
if(examplename MATCHES "libuv")
|
|
if(NATS_BUILD_LIBUV_EXAMPLE)
|
|
set(buildExample ON)
|
|
if(LIBUV_DIR)
|
|
set(NATS_ASYNC_IO_LIB ${LIBUV_DIR}/lib/libuv${LIB_SUFFIX})
|
|
else()
|
|
set(NATS_ASYNC_IO_LIB uv)
|
|
endif()
|
|
endif()
|
|
elseif(examplename MATCHES "libevent")
|
|
if(NATS_BUILD_LIBEVENT_EXAMPLE)
|
|
set(buildExample ON)
|
|
if(LIBEVENT_DIR)
|
|
if(WIN32)
|
|
set(NATS_ASYNC_IO_LIB ${LIBEVENT_DIR}/lib/event${LIB_SUFFIX})
|
|
else()
|
|
set(NATS_ASYNC_IO_LIB ${LIBEVENT_DIR}/lib/libevent${LIB_SUFFIX} ${LIBEVENT_DIR}/lib/libevent_pthreads${LIB_SUFFIX})
|
|
endif()
|
|
else()
|
|
set(NATS_ASYNC_IO_LIB event)
|
|
if(UNIX)
|
|
list(APPEND NATS_ASYNC_IO_LIB event_pthreads)
|
|
endif()
|
|
endif()
|
|
endif()
|
|
else()
|
|
set(buildExample ON)
|
|
endif()
|
|
|
|
if(buildExample)
|
|
# Build the executable
|
|
add_executable(${exampleexe} ${PROJECT_SOURCE_DIR}/examples/${examples_src})
|
|
|
|
# Link
|
|
if(NATS_BUILD_STATIC_EXAMPLES)
|
|
target_link_libraries(${exampleexe} nats_static ${NATS_EXTRA_LIB} ${NATS_ASYNC_IO_LIB})
|
|
else()
|
|
target_link_libraries(${exampleexe} nats ${NATS_EXTRA_LIB} ${NATS_ASYNC_IO_LIB})
|
|
endif()
|
|
endif()
|
|
|
|
endforeach()
|