Skip to content

Commit

Permalink
working example on all features
Browse files Browse the repository at this point in the history
  • Loading branch information
Xavrax committed Dec 20, 2023
1 parent 0a566f4 commit a4e7159
Showing 1 changed file with 46 additions and 19 deletions.
65 changes: 46 additions & 19 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,30 @@ project(c-core VERSION 4.8.0)

message(STATUS Preparing\ ${PROJECT_NAME}\ version\ ${PROJECT_VERSION})

# Function to convert between "ON"/"OFF" and 1/0
function(num_option name description default)
option(${name} ${description} ${default})
if(${name})
set(${name} 1 PARENT_SCOPE)
else()
set(${name} 0 PARENT_SCOPE)
endif()
endfunction()

# All the options that can be set on the command line to control

option(ONLY_PUBSUB_API "Only pubsub API" OFF)
option(USE_PROXY "Use proxy" ON)
option(USE_GZIP_COMPRESSION "Use gzip compression" ON)
option(RECEIVE_GZIP_RESPONSE "Use gzip decompression" ON)
option(USE_SUBSCRIBE_V2 "Use subscribe v2" ON)
option(USE_ADVANCED_HISTORY "Use advanced history" ON)
option(USE_OBJECTS_API "Use objects API" ON)
option(USE_AUTO_HEARTBEAT "Use auto heartbeat" ON)
option(USE_ACTIONS_API "Use actions API" ON)
option(USE_REVOKE_TOKEN_API "Use revoke token API" OFF)
option(USE_GRANT_TOKEN_API "Use grant token API" OFF)
option(USE_FETCH_HISTORY "Use fetch history" ON)
num_option(ONLY_PUBSUB_API "Only pubsub API" OFF)
num_option(USE_PROXY "Use proxy" ON)
num_option(USE_GZIP_COMPRESSION "Use gzip compression" ON)
num_option(RECEIVE_GZIP_RESPONSE "Use gzip decompression" ON)
num_option(USE_SUBSCRIBE_V2 "Use subscribe v2" ON)
num_option(USE_ADVANCED_HISTORY "Use advanced history" ON)
num_option(USE_OBJECTS_API "Use objects API" ON)
num_option(USE_AUTO_HEARTBEAT "Use auto heartbeat" ON)
num_option(USE_ACTIONS_API "Use actions API" ON)
num_option(USE_REVOKE_TOKEN_API "Use revoke token API" ON)
num_option(USE_GRANT_TOKEN_API "Use grant token API" ON)
num_option(USE_FETCH_HISTORY "Use fetch history" ON)

option(EXAMPLES "Build all examples" OFF)
option(UNIT_TEST "Build and run unit tests" OFF)
Expand All @@ -30,25 +40,32 @@ option(SHARED_LIB "Library type. [SHARED=ON STATIC=OFF]" OFF)

# Flags configuration

set(LDLIBS "-lpthread")

set(CMAKE_CXX_FLAGS
"-g -Wall -D PUBNUB_THREADSAFE -D PUBNUB_LOG_LEVEL=PUBNUB_LOG_LEVEL_WARNING -D PUBNUB_ONLY_PUBSUB_API=${ONLY_PUBSUB_API} -D PUBNUB_PROXY_API=${USE_PROXY} -D PUBNUB_USE_GZIP_COMPRESSION=${USE_GZIP_COMPRESSION} -D PUBNUB_RECEIVE_GZIP_RESPONSE=${RECEIVE_GZIP_RESPONSE} -D PUBNUB_USE_SUBSCRIBE_V2=${USE_SUBSCRIBE_V2} -D PUBNUB_USE_OBJECTS_API=${USE_OBJECTS_API} -D PUBNUB_USE_ACTIONS_API=${USE_ACTIONS_API} -D PUBNUB_USE_AUTO_HEARTBEAT=${USE_AUTO_HEARTBEAT} -D PUBNUB_USE_GRANT_TOKEN_API=${USE_GRANT_TOKEN} -D PUBNUB_USE_REVOKE_TOKEN_API=${USE_REVOKE_TOKEN} -D PUBNUB_USE_FETCH_HISTORY=${USE_FETCH_HISTORY} ${CMAKE_CXX_FLAGS}")
"-g -Wall -D PUBNUB_THREADSAFE -D PUBNUB_LOG_LEVEL=PUBNUB_LOG_LEVEL_WARNING -D PUBNUB_ONLY_PUBSUB_API=${ONLY_PUBSUB_API} -D PUBNUB_PROXY_API=${USE_PROXY} -D PUBNUB_USE_GZIP_COMPRESSION=${USE_GZIP_COMPRESSION} -D PUBNUB_RECEIVE_GZIP_RESPONSE=${RECEIVE_GZIP_RESPONSE} -D PUBNUB_USE_SUBSCRIBE_V2=${USE_SUBSCRIBE_V2} -D PUBNUB_USE_OBJECTS_API=${USE_OBJECTS_API} -D PUBNUB_USE_ACTIONS_API=${USE_ACTIONS_API} -D PUBNUB_USE_AUTO_HEARTBEAT=${USE_AUTO_HEARTBEAT} -D PUBNUB_USE_GRANT_TOKEN_API=${USE_GRANT_TOKEN_API} -D PUBNUB_USE_REVOKE_TOKEN_API=${USE_REVOKE_TOKEN_API} -D PUBNUB_USE_FETCH_HISTORY=${USE_FETCH_HISTORY} ${CMAKE_CXX_FLAGS}")

message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")



set(CORE_SOURCEFILES ${CMAKE_CURRENT_LIST_DIR}/core/pbcc_set_state.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_pubsubapi.c core/pubnub_coreapi.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_coreapi_ex.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_ccore_pubsub.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_ccore.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_netcore.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_alloc_std.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_assert_std.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_generate_uuid.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_blocking_io.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_timers.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_json_parse.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_helper.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_generate_uuid_v3_md5.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_free_with_timeout_std.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_url_encode.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_memory_block.c )

set(LIB_SOURCEFILES${CMAKE_CURRENT_LIST_DIR}/lib/sockets/pbpal_sockets.c ${CMAKE_CURRENT_LIST_DIR}/lib/sockets/pbpal_resolv_and_connect_sockets.c ${CMAKE_CURRENT_LIST_DIR}/lib/sockets/pbpal_handle_socket_error.c ${CMAKE_CURRENT_LIST_DIR}/lib/md5/md5.c ${CMAKE_CURRENT_LIST_DIR}/lib/base64/pbbase64.c ${CMAKE_CURRENT_LIST_DIR}/lib/pb_strnlen_s.c ${CMAKE_CURRENT_LIST_DIR}/lib/pb_strncasecmp.c )
set(LIB_SOURCEFILES ${CMAKE_CURRENT_LIST_DIR}/lib/sockets/pbpal_sockets.c ${CMAKE_CURRENT_LIST_DIR}/lib/sockets/pbpal_resolv_and_connect_sockets.c ${CMAKE_CURRENT_LIST_DIR}/lib/sockets/pbpal_handle_socket_error.c ${CMAKE_CURRENT_LIST_DIR}/lib/md5/md5.c ${CMAKE_CURRENT_LIST_DIR}/lib/base64/pbbase64.c ${CMAKE_CURRENT_LIST_DIR}/lib/pb_strnlen_s.c ${CMAKE_CURRENT_LIST_DIR}/lib/pb_strncasecmp.c )

set(POSIX_SOURCEFILES ${CMAKE_CURRENT_LIST_DIR}/posix/posix_socket_blocking_io.c ${CMAKE_CURRENT_LIST_DIR}/posix/pubnub_version_posix.c ${CMAKE_CURRENT_LIST_DIR}/posix/pubnub_generate_uuid_posix.c ${CMAKE_CURRENT_LIST_DIR}/posix/pbpal_posix_blocking_io.c ${CMAKE_CURRENT_LIST_DIR}/posix/msstopwatch_monotonic_clock.c ${CMAKE_CURRENT_LIST_DIR}/posix/pbtimespec_elapsed_ms.c ${CMAKE_CURRENT_LIST_DIR}/posix/pb_sleep_ms.c)

# if MACOS
set(POSIX_SOURCEFILES ${POSIX_SOURCEFILES} ${CMAKE_CURRENT_LIST_DIR}/posix/monotonic_clock_get_time_darwin.c)
# else
#set(POSIX_SOURCEFILES ${POSIX_SOURCEFILES} ${CMAKE_CURRENT_LIST_DIR}/posix/monotonic_clock_get_time_posix.c)

set(INTF_SOURCEFILES)

if(${CALLBACK_API})
message(STATUS "Using callback API")
set(INTF_SOURCEFILES ${INTF_SOURCEFILES} ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_timer_list.c ${CMAKE_CURRENT_LIST_DIR}/lib/sockets/pbpal_ntf_callback_poller_poll.c ${CMAKE_CURRENT_LIST_DIR}/lib/sockets/pbpal_adns_sockets.c ${CMAKE_CURRENT_LIST_DIR}/lib/pubnub_dns_codec.c ${CMAKE_CURRENT_LIST_DIR}/core/pbpal_ntf_callback_queue.c ${CMAKE_CURRENT_LIST_DIR}/core/pbpal_ntf_callback_admin.c ${CMAKE_CURRENT_LIST_DIR}/core/pbpal_ntf_callback_handle_timer_list.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_callback_subscribe_loop.c)
set(INTF_SOURCEFILES ${INTF_SOURCEFILES} ${CMAKE_CURRENT_LIST_DIR}/posix/pubnub_ntf_callback_posix.c ${CMAKE_CURRENT_LIST_DIR}/posix/pubnub_get_native_socket.c)
else()
message(STATUS "Using sync API")
set(INTF_SOURCEFILES ${INTF_SOURCEFILES} ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_ntf_sync.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_sync_subscribe_loop.c ${CMAKE_CURRENT_LIST_DIR}/core/srand_from_pubnub_time.c)
endif()

Expand Down Expand Up @@ -90,7 +107,15 @@ if(${USE_FETCH_HISTORY})
set(FEATURE_SOURCEFILES ${FEATURE_SOURCEFILES} ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_fetch_history.c ${CMAKE_CURRENT_LIST_DIR}/core/pbcc_fetch_history.c)
endif()

set(SOURCEFILES ${CORE_SOURCEFILES} ${LIB_SOURCEFILES} ${POSIX_SOURCEFILES} ${FEATURE_SOURCEFILES})
if(${USE_GRANT_TOKEN_API})
set(FEATURE_SOURCEFILES ${FEATURE_SOURCEFILES} ${CMAKE_CURRENT_LIST_DIR}/core/pbcc_grant_token_api.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_grant_token_api.c)
endif()

if(${USE_REVOKE_TOKEN_API})
set(FEATURE_SOURCEFILES ${FEATURE_SOURCEFILES} ${CMAKE_CURRENT_LIST_DIR}/core/pbcc_revoke_token_api.c ${CMAKE_CURRENT_LIST_DIR}/core/pubnub_revoke_token_api.c)
endif()

set(SOURCEFILES ${CORE_SOURCEFILES} ${LIB_SOURCEFILES} ${POSIX_SOURCEFILES} ${FEATURE_SOURCEFILES} ${INTF_SOURCEFILES})

include_directories(${CMAKE_CURRENT_LIST_DIR} ${CMAKE_CURRENT_LIST_DIR}/core ${CMAKE_CURRENT_LIST_DIR}/lib ${CMAKE_CURRENT_LIST_DIR}/posix)

Expand All @@ -100,15 +125,17 @@ include_directories(${CMAKE_CURRENT_LIST_DIR} ${CMAKE_CURRENT_LIST_DIR}/core ${C
#add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/core)

if(${SHARED_LIB})
message(STATUS "Building shared library")
set(LIBTYPE SHARED)
else()
message(STATUS "Building static library")
set(LIBYTPE STATIC)
endif()

add_library(pubnub ${LIBTYPE} ${SOURCEFILES})

target_link_libraries(pubnub)
target_link_libraries(pubnub ${LDLIBS})

add_executable(pubnub_sync_sample ${CMAKE_CURRENT_LIST_DIR}/core/samples/pubnub_sync_sample.c)

target_link_libraries(pubnub_sync_sample pubnub)
target_link_libraries(pubnub_sync_sample pubnub ${LDLIBS})

0 comments on commit a4e7159

Please sign in to comment.