1cmake_minimum_required(VERSION 2.6)
2project(otclient)
3
4if(CMAKE_BASE_NAME STREQUAL "em++")
5 set(WASM ON)
6endif()
7
8set(CMAKE_CXX_STANDARD 17)
9
10# default build type
11if(NOT CMAKE_BUILD_TYPE)
12 set(CMAKE_BUILD_TYPE "Release")
13endif()
14
15option(FRAMEWORK_SOUND "Use SOUND " OFF)
16option(FRAMEWORK_GRAPHICS "Use GRAPHICS " ON)
17option(FRAMEWORK_XML "Use XML " ON)
18option(FRAMEWORK_NET "Use NET " ON)
19
20include(src/framework/CMakeLists.txt)
21include(src/client/CMakeLists.txt)
22
23# functions map for reading backtraces
24if(NOT APPLE AND NOT WASM)
25 set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -no-pie -Wl,-Map=${PROJECT_NAME}.map")
26endif()
27
28set(executable_SOURCES
29 src/main.cpp
30)
31
32# add executable icon for win32 platforms
33if(WIN32)
34 add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/otcicon.o
35 COMMAND ${CMAKE_RC_COMPILER}
36 -I${CMAKE_CURRENT_SOURCE_DIR}/src
37 -i${CMAKE_CURRENT_SOURCE_DIR}/src/otcicon.rc
38 -o ${CMAKE_CURRENT_BINARY_DIR}/otcicon.o
39 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/otcicon.rc
40 ${CMAKE_CURRENT_SOURCE_DIR}/src/resource.h
41 ${CMAKE_CURRENT_SOURCE_DIR}/vc16/RD_Core_Client_Icon.ico)
42 set(executable_SOURCES ${executable_SOURCES} otcicon.o)
43endif()
44
45if(VERSION)
46 add_definitions(-D"VERSION=\\"${VERSION}\\"")
47endif()
48
49# add client executable
50add_executable(${PROJECT_NAME} ${framework_SOURCES} ${client_SOURCES} ${executable_SOURCES})
51target_link_libraries(${PROJECT_NAME} ${framework_LIBRARIES})
52
53if(APPLE AND USE_STATIC_LIBS)
54 target_link_libraries(${PROJECT_NAME} "-framework Foundation" "-framework IOKit")
55endif()
56