nats.zig/deps/nats.c/examples/CMakeLists.txt
torque 79a45fd2e3
git subrepo clone (merge) --branch=v3.6.1 https://github.com/nats-io/nats.c.git deps/nats.c
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"
2023-08-15 00:21:33 -07:00

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