-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathCMakeLists.txt
129 lines (107 loc) · 3.66 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
125
126
127
128
129
cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)
set(LIBS GL)
if (WIN32)
set(CMAKE_SYSTEM_NAME Windows)
set(TOOLCHAIN_PREFIX x86_64-w64-mingw32)
# set(CMAKE_C_COMPILER /usr/bin/${TOOLCHAIN_PREFIX}-gcc)
# set(CMAKE_CXX_COMPILER /usr/bin/${TOOLCHAIN_PREFIX}-g++)
SET(CMAKE_C_COMPILER "x86_64-w64-mingw32-gcc")
SET(CMAKE_CXX_COMPILER "x86_64-w64-mingw32-g++")
SET(CMAKE_RC_COMPILER "x86_64-w64-mingw32-windres")
SET(CMAKE_RANLIB "x86_64-w64-mingw32-ranlib")
# set(MINGW ON)
message("Compiling for Windows")
SET(CMAKE_FIND_ROOT_PATH "/usr/x86_64-w64-mingw32")
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(LIBS mingw32 opengl32 gdi32 winmm -mwindows)
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mwindows")
endif(WIN32)
project(tico VERSION 0.3.0 LANGUAGES CXX C)
include_directories(include)
include_directories(external)
include_directories(external/glfw/include)
set(cimgui external/cimgui)
set(imgui_impl ${cimgui}/imgui/examples)
set(gl3w external/GL/)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g")
include_directories(${cimgui} ${cimgui}/imgui ${imgui_impl})
file(GLOB cimgui_files
"${cimgui}/*.cpp"
"${cimgui}/imgui/*.cpp"
"${imgui_impl}/imgui_impl_glfw.cpp"
"${imgui_impl}/imgui_impl_opengl3.cpp")
add_library(cimgui STATIC ${cimgui_files})
target_compile_definitions(cimgui PRIVATE
IMGUI_IMPL_API=extern\ \"C\"
IMGUI_IMPL_OPENGL_LOADER_GL3W)
if (WIN32)
target_link_libraries(cimgui -static)
endif(WIN32)
# set(GLFW_BUILD_EXAMPLES OFF)
# set(GLFW_BUILD_TESTS OFF)
# set(GLFW_INSTALL OFF)
# add_subdirectory(external/glfw)
set(GLFW_FOLDER external/glfw)
set(GLFW_DEFS _GLFW_X11)
set(GLFW_SOURCES
${GLFW_FOLDER}/src/init.c
${GLFW_FOLDER}/src/context.c
${GLFW_FOLDER}/src/input.c
${GLFW_FOLDER}/src/monitor.c
${GLFW_FOLDER}/src/window.c
${GLFW_FOLDER}/src/egl_context.c
${GLFW_FOLDER}/src/osmesa_context.c
${GLFW_FOLDER}/src/vulkan.c)
set(GLFW_LIBS)
if (WIN32)
set(GLFW_SOURCES
${GLFW_SOURCES}
${GLFW_FOLDER}/src/win32_init.c
${GLFW_FOLDER}/src/win32_monitor.c
${GLFW_FOLDER}/src/win32_window.c
${GLFW_FOLDER}/src/win32_thread.c
${GLFW_FOLDER}/src/win32_time.c
${GLFW_FOLDER}/src/win32_joystick.c
${GLFW_FOLDER}/src/wgl_context.c)
set(GLFW_DEFS _GLFW_WIN32)
set(GLFW_LIBS ${GLFW_LIBS} ${LIBS} m pthread)
else()
set(GLFW_SOURCES
${GLFW_SOURCES}
${GLFW_FOLDER}/src/x11_init.c
${GLFW_FOLDER}/src/x11_monitor.c
${GLFW_FOLDER}/src/x11_window.c
${GLFW_FOLDER}/src/xkb_unicode.c
${GLFW_FOLDER}/src/posix_thread.c
${GLFW_FOLDER}/src/posix_time.c
${GLFW_FOLDER}/src/linux_joystick.c
${GLFW_FOLDER}/src/glx_context.c)
set(GLFW_LIBS ${GLFW_LIBS} m dl X11 pthread)
endif()
add_library(glfw STATIC ${GLFW_SOURCES})
target_compile_definitions(glfw PRIVATE ${GLFW_DEFS})
target_link_libraries(glfw ${GLFW_LIBS})
# target_compile_options(glfw PRIVATE -static)
# set(LIBS )
file(GLOB tico_sources src/*.c)
file(GLOB lua_sources external/lua/src/*.c)
add_library(lua STATIC ${lua_sources})
add_library(gl3w STATIC ${gl3w}/gl3w.c)
target_link_libraries(gl3w ${LIBS})
add_library(tico_lib STATIC
${tico_sources}
external/map.c
external/vec.c
external/zip/src/zip.c
external/cjson/cJSON.c)
target_link_libraries(tico_lib ${LIBS} glfw gl3w lua cimgui)
# target_compile_options(tico_lib PRIVATE -static)
# target_compile_definitions(tico_lib PRIVATE TICO_NO_RENDER_MODULE)
add_executable(tico main.c)
target_link_libraries(tico tico_lib ${LIBS})
target_compile_definitions(tico PRIVATE IMGUI_IMPL_API=\ )
# add_executable(glfw_out glfw.c)
# target_link_libraries(glfw_out tico_lib gl3w ${LIBS})