aboutsummaryrefslogtreecommitdiff
path: root/client/libacron/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'client/libacron/CMakeLists.txt')
-rw-r--r--client/libacron/CMakeLists.txt68
1 files changed, 55 insertions, 13 deletions
diff --git a/client/libacron/CMakeLists.txt b/client/libacron/CMakeLists.txt
index ca9960e..db37671 100644
--- a/client/libacron/CMakeLists.txt
+++ b/client/libacron/CMakeLists.txt
@@ -3,41 +3,83 @@ project(libac C)
set(CMAKE_C_STANDARD 11)
-set(CMAKE_C_FLAGS_DEBUG
- "${CMAKE_C_FLAGS_DEBUG} -g3 -O0 -fsanitize=address -DDEBUG")
-set(CMAKE_EXE_LINKER_FLAGS_DEBUG
- "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fsanitize=address")
+if(NOT CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE Debug)
+endif()
+
add_definitions(-D_POSIX_C_SOURCE=200809L)
+IF(CMAKE_BUILD_TYPE MATCHES Debug)
+ add_definitions(-DDEBUG)
+ENDIF(CMAKE_BUILD_TYPE MATCHES Debug)
-set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} "-Wl,--version-script='${CMAKE_SOURCE_DIR}/export.map'")
+if ("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
+ set(CMAKE_C_FLAGS_DEBUG
+ "${CMAKE_C_FLAGS_DEBUG} -g3 -O0 -fsanitize=address")
+ set(CMAKE_EXE_LINKER_FLAGS_DEBUG
+ "${CMAKE_EXE_LINKER_FLAGS_DEBUG} -fsanitize=address")
+ set(CMAKE_C_FLAGS
+ "${CMAKE_C_FLAGS} -fvisibility=hidden")
+elseif ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")
+ # TODO: MSVC ASAN
+ set(CMAKE_C_FLAGS_DEBUG
+ "${CMAKE_C_FLAGS_DEBUG} /DEBUG /Z7 /Od")
+ set(CMAKE_EXE_LINKER_FLAGS_DEBUG
+ "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
+endif()
-find_package(PkgConfig)
-pkg_check_modules(json-c REQUIRED json-c)
-add_library(ac SHARED
+set(LIBAC_PUBLIC_HEADERS
+ include/incl.h
include/libac.h
include/events.h
include/requests.h
include/common.h
include/net.h
include/ids.h
+ )
+
+set(LIBAC_PRIVATE
+ private/win32.h
private/config.h
- private/serializer.c
- private/helpers.h
+ private/serializer.h
private/helpers.c
private/serializer.h
- private/log.c
private/log.h
private/connection.h
wic/include/http_parser.h
wic/include/wic.h
+ private/serializer.c
+ private/helpers.c
+ private/log.c
wic/src/http_parser.c
wic/src/wic.c
net.c
ids.c
library.c
)
-target_include_directories(ac PUBLIC "${PROJECT_BINARY_DIR}" include/ private/ wic/include/)
-target_link_libraries(ac json-c)
+
+add_library(ac SHARED
+ ${LIBAC_PUBLIC_HEADERS}
+ ${LIBAC_PRIVATE}
+ )
+
+set(LIBAC_INCLUDES "${PROJECT_BINARY_DIR}" include/ private/ wic/include/)
+
+if (EXISTS ${CMAKE_SOURCE_DIR}/json-c/build/install)
+ message("Using in-tree JSON-C")
+ list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/json-c/build/install/lib/cmake/")
+else()
+ message("Using system-wide JSON-C")
+endif()
+
+if(WIN32)
+ set(LIBAC_DEPS ws2_32)
+endif()
+
+find_package(json-c CONFIG)
+set(LIBAC_DEPS ${LIBAC_DEPS} json-c::json-c)
+
+target_include_directories(ac PUBLIC ${LIBAC_INCLUDES})
+target_link_libraries(ac ${LIBAC_DEPS})
add_executable(acronc
acronc/main.c