11cmake_minimum_required (VERSION 3.22)
22include (FetchContent)
33
4- project ("vtm" )
4+ project ("vtm" CXX )
55# project("term")
66# project("calc")
77
@@ -13,68 +13,28 @@ if(NOT CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "")
1313 set (CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
1414endif ()
1515
16- if (CMAKE_SYSTEM_NAME STREQUAL "Windows" ) # WIN32 and similar checks are soft-deprecated
17- # Disable manifest embedding for the windows builds.
18- # Reason: Anti-virus program (Windows Defender) may lock and scan `vtm.exe` file before embedding the manifest.
19- # mt.exe: general error c101008d: Failed to write the updated manifest to the resource of file...
20- #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO")
21- # /EHsc Tells the compiler that exceptions can only occur at a throw statement or at a function call.
22- # /bigobj Our event model spawns a large number of objects. By default, an object file can hold up to 65,279 (almost 2^16) addressable sections. This limit applies no matter which target platform is specified. /bigobj increases that address capacity to 4,294,967,296 (2^32).
23- # /utf-8 All literals in our source code are in UTF-8 format.
24- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /O2 /EHsc /bigobj /utf-8 /Zc:preprocessor" )
25- set (WIN32_RESOURCES ".resources/images/vtm.rc" )
26- else ()
16+ if (NOT WIN32 AND "$ENV{LINUX_CXX_FLAGS} " STREQUAL "" ) # If CMakeSettings.json is not used (MS Visual Studio).
2717 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -pthread" )
28- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -DLUA_USE_POSIX" )
29- # Static linkage
30- #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static -O2 -pthread")
31- #set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static -O2 -DLUA_USE_POSIX")
3218endif ()
3319
34- add_executable (vtm "src/vtm.cpp" ${WIN32_RESOURCES} )
20+ add_executable (vtm "src/vtm.cpp" $ENV {WIN32_RESOURCES} )
3521# add_executable(term "src/netxs/apps/term.cpp")
3622# add_executable(calc "src/netxs/apps/calc.cpp")
3723
38- # Set BUILD_SHARED_LIBS to OFF globally for fetched content.
39- set (BUILD_SHARED_LIBS OFF CACHE BOOL "Build static libraries" FORCE)
24+ find_package (Freetype REQUIRED)
25+ find_package (harfbuzz REQUIRED)
26+ find_package (Lua REQUIRED)
4027
41- # FreeType dependency
42- set (FT_DISABLE_BROTLI ON CACHE BOOL "Disable brotli" FORCE)
43- set (FT_DISABLE_ZLIB ON CACHE BOOL "Disable zlib" FORCE)
44- set (FT_DISABLE_BZIP2 ON CACHE BOOL "Disable bzip2" FORCE)
45- set (FT_DISABLE_PNG ON CACHE BOOL "Disable libpng" FORCE)
46- set (FT_DISABLE_HARFBUZZ ON CACHE BOOL "Disable harfbuzz" FORCE)
47- FetchContent_Declare(freetype
48- GIT_REPOSITORY https://github.com/freetype/freetype.git
49- GIT_TAG VER-2-14-1)
50- FetchContent_MakeAvailable(freetype)
28+ add_library (Lua::Lua INTERFACE IMPORTED )
29+ set_target_properties (Lua::Lua PROPERTIES INTERFACE_LINK_LIBRARIES "${LUA_LIBRARIES} " )
5130
52- # HarfBuzz dependency
53- set (HB_NO_MT ON CACHE BOOL "Single threaded" FORCE)
54- set (HB_NO_PRAGMA_GCC_DIAGNOSTIC_ERROR ON CACHE BOOL "Disable pragma warning" FORCE)
55- set (HB_HAVE_FREETYPE OFF CACHE BOOL "Disable freetype" FORCE)
56- set (HB_HAVE_GLIB OFF CACHE BOOL "Disable glib" FORCE)
57- set (HB_HAVE_GOBJECT OFF CACHE BOOL "Disable gobject" FORCE)
58- set (HB_HAVE_ICU OFF CACHE BOOL "Disable icu" FORCE)
59- set (HB_HAVE_CAIRO OFF CACHE BOOL "Disable cairo" FORCE)
60- FetchContent_Declare(harfbuzz
61- URL https://github.com/harfbuzz/harfbuzz/archive/refs/tags/12.1.0.tar.gz
62- URL_HASH SHA256=0238bf7ada6b1fb92984f69f8b9cd66518af83cf24f7db1cfe60c772c42312d3)
63- FetchContent_MakeAvailable(harfbuzz)
31+ target_include_directories (vtm PRIVATE ${FREETYPE_INCLUDE_DIRS}
32+ ${HARFBUZZ_INCLUDE_DIRS}
33+ ${LUA_INCLUDE_DIR} )
6434
65- # Lua dependency
66- FetchContent_Declare(lua
67- URL https://www.lua.org/ftp/lua-5.4.7.tar.gz
68- URL_HASH SHA256=9fbf5e28ef86c69858f6d3d34eccc32e911c1a28b4120ff3e84aaa70cfbf1e30)
69- FetchContent_MakeAvailable(lua)
70- file (GLOB lua_src CONFIGURE_DEPENDS ${lua_SOURCE_DIR} /src/*.c)
71- list (REMOVE_ITEM lua_src ${lua_SOURCE_DIR} /src/lua.c ${lua_SOURCE_DIR} /src/luac.c)
72- add_library (lua EXCLUDE_FROM_ALL ${lua_src} )
73- target_include_directories (vtm PRIVATE ${lua_SOURCE_DIR} /src)
74-
75- target_link_libraries (vtm PRIVATE lua freetype harfbuzz)
76- # target_link_libraries(term PRIVATE lua freetype harfbuzz)
77- # target_link_libraries(calc PRIVATE lua freetype harfbuzz)
35+ target_link_libraries (vtm PRIVATE Lua::Lua Freetype::Freetype harfbuzz::harfbuzz)
36+ # target_link_libraries(term PRIVATE Lua::Lua Freetype::Freetype harfbuzz::harfbuzz)
37+ # target_link_libraries(calc PRIVATE Lua::Lua Freetype::Freetype harfbuzz::harfbuzz)
7838
7939if (NOT WIN32 )
8040 install (TARGETS vtm DESTINATION bin)
0 commit comments