nats.zig/deps/nats.c/examples/CMakeLists.txt

90 lines
2.6 KiB
CMake
Raw Normal View History

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