-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
82 lines (69 loc) · 2.62 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
cmake_minimum_required(VERSION 3.15)
project(Briskgit)
add_executable(briskgit
src/main.c
src/app.h
src/app.c
src/console.h
src/console.c
src/grapheme.h
src/grapheme.c
src/hash.h
src/hash.c
src/profiler.h
src/profiler.c
src/rect.h
src/rect.c
src/render.h
src/render.c
src/text.h
src/text.c
src/textfield.h
src/textfield.c
src/ustr.h
src/ustr.c
src/vec2.h
src/vec2.c
src/eva/eva.h)
#target_compile_definitions(briskgit PRIVATE PROFILER_ENABLED)
find_package(harfbuzz CONFIG REQUIRED)
find_package(freetype CONFIG REQUIRED)
find_package(ICU REQUIRED COMPONENTS uc dt in io)
find_library(blend2d blend2d REQUIRED)
find_path(blend2d_INCLUDES blend2d.h)
if(NOT blend2d_INCLUDES)
message(FATAL_ERROR "blend2d library not found")
endif()
target_link_libraries(briskgit PRIVATE
freetype
harfbuzz::harfbuzz
ICU::uc ICU::dt ICU::in ICU::io
${blend2d})
target_include_directories(briskgit PRIVATE ${blend2d_INCLUDES})
if (APPLE)
target_compile_definitions(briskgit PRIVATE BG_MACOS)
enable_language(OBJC)
target_sources(briskgit PRIVATE src/eva/eva_macos.m)
target_link_libraries(briskgit PRIVATE
"-framework Cocoa -framework Metal -framework MetalKit -framework CoreText")
configure_file(Info.plist Info.plist COPYONLY)
elseif(WIN32)
target_compile_definitions(briskgit PRIVATE BG_WINDOWS)
target_sources(briskgit PRIVATE src/eva/eva_windows.c)
endif()
if (MSVC)
# Use statically linked CRT on Windows
set_property(TARGET briskgit PROPERTY
MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
# warning level 4 and all warnings as errors
target_compile_options(briskgit PRIVATE /W4 /WX /wd4201 /wd4204)
# The MSVC generator puts the built exe in build/Debug (or build/Release).
# This post build step copies the latest built exe to the root of the
# build folder in order to make it easy to run via a shortcut.
add_custom_command(TARGET briskgit POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:briskgit> ${CMAKE_BINARY_DIR})
else()
# lots of warnings and all warnings as errors
target_compile_options(briskgit PRIVATE -g -Wall -Wextra -pedantic -Wconversion)
endif()
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)