discord-rpc/src/CMakeLists.txt

130 lines
3.8 KiB
CMake
Raw Normal View History

include_directories(${PROJECT_SOURCE_DIR}/include)
2017-06-30 23:18:54 +00:00
2017-07-25 20:40:30 +00:00
option(ENABLE_IO_THREAD "Start up a separate I/O thread, otherwise I'd need to call an update function" ON)
2017-11-13 17:22:45 +00:00
option(USE_STATIC_CRT "Use /MT[d] for dynamic library" OFF)
2017-07-25 20:40:30 +00:00
set(BASE_RPC_SRC
${PROJECT_SOURCE_DIR}/include/discord-rpc.h
discord-rpc.cpp
2017-09-14 15:59:32 +00:00
discord_register.h
rpc_connection.h
rpc_connection.cpp
serialization.h
serialization.cpp
connection.h
backoff.h
msg_queue.h
)
2017-07-25 20:40:30 +00:00
if (${BUILD_SHARED_LIBS})
2017-09-14 15:59:32 +00:00
if(WIN32)
set(BASE_RPC_SRC ${BASE_RPC_SRC} dllmain.cpp)
endif(WIN32)
endif(${BUILD_SHARED_LIBS})
2017-06-30 23:18:54 +00:00
if(WIN32)
2017-09-14 15:59:32 +00:00
add_definitions(-DDISCORD_WINDOWS)
set(BASE_RPC_SRC ${BASE_RPC_SRC} connection_win.cpp discord_register_win.cpp)
add_library(discord-rpc ${BASE_RPC_SRC})
2017-11-14 15:03:07 +00:00
if (MSVC)
2017-11-15 23:19:30 +00:00
set(CRT_FLAGS)
if(USE_STATIC_CRT)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CRT_FLAGS /MTd)
else()
set(CRT_FLAGS /MT)
endif()
endif(USE_STATIC_CRT)
target_compile_options(discord-rpc PRIVATE /EHsc
${CRT_FLAGS}
/Wall
/wd4100 # unreferenced formal parameter
/wd4514 # unreferenced inline
/wd4625 # copy constructor deleted
/wd5026 # move constructor deleted
/wd4626 # move assignment operator deleted
/wd4668 # not defined preprocessor macro
/wd4710 # function not inlined
/wd4711 # function was inlined
/wd4820 # structure padding
/wd4946 # reinterpret_cast used between related classes
/wd5027 # move assignment operator was implicitly defined as deleted
)
2017-11-14 15:03:07 +00:00
endif(MSVC)
target_link_libraries(discord-rpc PRIVATE psapi)
2017-06-30 23:18:54 +00:00
endif(WIN32)
2017-07-13 15:32:08 +00:00
2017-07-13 17:08:14 +00:00
if(UNIX)
2017-09-14 15:59:32 +00:00
set(BASE_RPC_SRC ${BASE_RPC_SRC} connection_unix.cpp)
2017-10-12 23:08:08 +00:00
2017-09-14 15:59:32 +00:00
if (APPLE)
add_definitions(-DDISCORD_OSX)
set(BASE_RPC_SRC ${BASE_RPC_SRC} discord_register_osx.m)
else (APPLE)
add_definitions(-DDISCORD_LINUX)
set(BASE_RPC_SRC ${BASE_RPC_SRC} discord_register_linux.cpp)
endif(APPLE)
add_library(discord-rpc ${BASE_RPC_SRC})
2017-07-27 22:09:05 +00:00
target_link_libraries(discord-rpc PUBLIC pthread)
2017-10-12 23:08:08 +00:00
target_compile_options(discord-rpc PRIVATE
-g
-Wall
2017-11-09 21:00:33 +00:00
-Wextra
-Wpedantic
-Werror
2017-10-12 23:08:08 +00:00
-Wno-unknown-pragmas # pragma push thing doesn't work on clang
-Wno-old-style-cast # it's fine
-Wno-c++98-compat # that was almost 2 decades ago
-Wno-c++98-compat-pedantic
-Wno-missing-noreturn
-Wno-padded # structure padding
-Wno-covered-switch-default
-Wno-exit-time-destructors # not sure about these
-Wno-global-constructors
)
2017-09-14 15:59:32 +00:00
target_compile_options(discord-rpc PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-std=c++14>)
if (${BUILD_SHARED_LIBS})
target_compile_options(discord-rpc PRIVATE -fPIC)
endif (${BUILD_SHARED_LIBS})
2017-09-14 15:59:32 +00:00
if (APPLE)
target_link_libraries(discord-rpc PRIVATE "-framework AppKit")
endif (APPLE)
2017-07-13 17:08:14 +00:00
endif(UNIX)
2017-07-17 16:28:54 +00:00
2017-07-18 21:29:54 +00:00
target_include_directories(discord-rpc PRIVATE ${RAPIDJSON}/include)
if (NOT ${ENABLE_IO_THREAD})
target_compile_definitions(discord-rpc PUBLIC -DDISCORD_DISABLE_IO_THREAD)
endif (NOT ${ENABLE_IO_THREAD})
if (${BUILD_SHARED_LIBS})
2017-07-31 22:58:39 +00:00
target_compile_definitions(discord-rpc PUBLIC -DDISCORD_DYNAMIC_LIB)
target_compile_definitions(discord-rpc PRIVATE -DDISCORD_BUILDING_SDK)
endif(${BUILD_SHARED_LIBS})
2017-07-31 22:58:39 +00:00
add_dependencies(discord-rpc clangformat)
2017-07-25 23:00:12 +00:00
# install
install(
TARGETS discord-rpc
EXPORT "discord-rpc"
RUNTIME
DESTINATION "${CMAKE_INSTALL_BINDIR}"
LIBRARY
DESTINATION "${CMAKE_INSTALL_LIBDIR}"
ARCHIVE
DESTINATION "${CMAKE_INSTALL_LIBDIR}"
INCLUDES
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
2017-07-25 23:00:12 +00:00
)
install(
FILES
"../include/discord-rpc.h"
DESTINATION "include"
)