-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
124 lines (100 loc) · 3.34 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
cmake_minimum_required(VERSION 3.29)
include(FetchContent)
project(BlockheadsServer)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
FetchContent_Declare(
enet
GIT_REPOSITORY https://github.com/lsalzman/enet.git
GIT_TAG v1.3.18
)
FetchContent_MakeAvailable(enet)
if(WIN32)
set(GNUSTEP_ROOT "C:/GNUstep") # Bad hard code!!11
elseif(APPLE)
message(STATUS "Building for macOS with native Objective-C runtime.")
elseif(UNIX)
message(FATAL "Building on Linux is currently not supported. Add it in a PR if you manage to get it working :)")
endif()
if(WIN32)
include_directories(
${GNUSTEP_ROOT}/x64/Debug/include
${GNUSTEP_ROOT}/x64/Release/include
)
link_directories(
${GNUSTEP_ROOT}/x64/Debug/lib
${GNUSTEP_ROOT}/x64/Release/lib
)
endif()
set(SOURCE_FILES
src/Mac/BlockheadsServer/blockheads_server/main.mm
src/SharedSource/BHNetNode.mm
src/SharedSource/BHMatch.mm
)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
include_directories(
src/Linux/GLKit
src/Linux/blockheads
src/Mac/BlockheadsServer/blockheads_server
src/Mac/blockheadsServer/BlockheadsServer
src/SharedSource)
if(WIN32)
target_compile_options(${PROJECT_NAME} PRIVATE
-fobjc-runtime=gnustep-2.0
-Xclang -fexceptions
-Xclang -fobjc-exceptions
-fblocks
-Xclang -fobjc-arc
-DGNUSTEP
-DGNUSTEP_WITH_DLL
-DGNUSTEP_RUNTIME=1
-D_NONFRAGILE_ABI=1
-D_NATIVE_OBJC_EXCEPTIONS
)
target_link_libraries(${PROJECT_NAME}
gnustep-base
objc
dispatch
enet
)
set(CMAKE_CXX_COMPILER "clang++")
set(CMAKE_C_COMPILER "clang")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fobjc-runtime=gnustep-2.0")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-runtime=gnustep-2.0")
# FUCING HATE WORKING WITH WINDOWS SOMETIMES LOL
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${GNUSTEP_ROOT}/x64/Debug/bin/objc.dll
${CMAKE_BINARY_DIR}/objc.dll
)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${GNUSTEP_ROOT}/x64/Debug/bin/gnustep-base-1_31.dll
${CMAKE_BINARY_DIR}/gnustep-base-1_31.dll
)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${GNUSTEP_ROOT}/x64/Debug/bin/dispatch.dll
${CMAKE_BINARY_DIR}/dispatch.dll
)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${GNUSTEP_ROOT}/x64/Debug/bin/libiconv.dll
${CMAKE_BINARY_DIR}/libiconv.dll
)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${GNUSTEP_ROOT}/x64/Debug/bin/libcurl-d.dll
${CMAKE_BINARY_DIR}/libcurl-d.dll
)
elseif(APPLE)
message(STATUS "Using native macOS Objective-C runtime.")
target_link_libraries(${PROJECT_NAME}
"-framework Foundation"
"-framework Cocoa"
)
set(CMAKE_CXX_COMPILER "clang++")
set(CMAKE_C_COMPILER "clang")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fobjc-runtime=macosx")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-runtime=macosx")
endif()
include_directories(${enet_SOURCE_DIR}/include)