add cmake option to enable or disable using of msdf library
This commit is contained in:
162
3rdParty/msdf/CMakeLists.txt
vendored
162
3rdParty/msdf/CMakeLists.txt
vendored
@@ -1,92 +1,96 @@
|
||||
include(FetchContent)
|
||||
if (ENABLE_MSDF)
|
||||
include(FetchContent)
|
||||
|
||||
if(NOT DEFINED MSDFGEN_REPO)
|
||||
set(MSDFGEN_REPO https://github.com/Chlumsky/msdfgen.git)
|
||||
endif ()
|
||||
if(NOT DEFINED MSDFGEN_REPO)
|
||||
set(MSDFGEN_REPO https://github.com/Chlumsky/msdfgen.git)
|
||||
endif ()
|
||||
|
||||
if(NOT DEFINED MSDFGEN_ATRLAS_REPO)
|
||||
set(MSDFGEN_ATRLAS_REPO https://github.com/Chlumsky/msdf-atlas-gen.git)
|
||||
endif()
|
||||
if(NOT DEFINED MSDFGEN_ATRLAS_REPO)
|
||||
set(MSDFGEN_ATRLAS_REPO https://github.com/Chlumsky/msdf-atlas-gen.git)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED FREETYPE_REPO)
|
||||
set(FREETYPE_REPO https://github.com/freetype/freetype.git)
|
||||
endif()
|
||||
if(NOT DEFINED FREETYPE_REPO)
|
||||
set(FREETYPE_REPO https://github.com/freetype/freetype.git)
|
||||
endif()
|
||||
|
||||
unset(Freetype_FOUND)
|
||||
find_package(Freetype QUIET)
|
||||
if (NOT Freetype_FOUND OR NOT EXISTS "${CMAKE_BINARY_DIR}/_deps/freetype-src/build")
|
||||
message("Installing freetype from sources")
|
||||
FetchContent_Declare(
|
||||
freetype
|
||||
EXCLUDE_FROM_ALL
|
||||
GIT_REPOSITORY ${FREETYPE_REPO}
|
||||
GIT_TAG master
|
||||
GIT_SHALLOW TRUE
|
||||
)
|
||||
set(FT_DISABLE_ZLIB ON CACHE BOOL "" FORCE)
|
||||
set(FT_DISABLE_BZIP2 ON CACHE BOOL "" FORCE)
|
||||
set(FT_DISABLE_PNG ON CACHE BOOL "" FORCE)
|
||||
set(FT_DISABLE_HARFBUZZ ON CACHE BOOL "" FORCE)
|
||||
set(FT_DISABLE_BROTLI ON CACHE BOOL "" FORCE)
|
||||
FetchContent_MakeAvailable(freetype)
|
||||
|
||||
set(FT_SRC_DIR "${CMAKE_BINARY_DIR}/_deps/freetype-src")
|
||||
set(FT_BUILD_DIR "${FT_SRC_DIR}/build")
|
||||
file(MAKE_DIRECTORY ${FT_BUILD_DIR})
|
||||
set(PLATFORM_ARG "")
|
||||
if (IOS)
|
||||
set(PLATFORM_ARG "-DPLATFORM=OS64")
|
||||
endif()
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} -DTOOLCHAIN_FILE=${TOOLCHAIN_FILE} -S ${FT_SRC_DIR} -B ${FT_BUILD_DIR}
|
||||
-DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=${FT_SRC_DIR}/freetype-install ${PLATFORM_ARG}
|
||||
WORKING_DIRECTORY ${FT_BUILD_DIR}
|
||||
)
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} --build ${FT_BUILD_DIR} --config Release --target install
|
||||
WORKING_DIRECTORY ${FT_BUILD_DIR} RESULT_VARIABLE build_result
|
||||
)
|
||||
if (NOT ${build_result} EQUAL "0")
|
||||
message(FATAL_ERROR "Failed to build freetype!")
|
||||
endif()
|
||||
set(FREETYPE_INCLUDE_DIR "${FT_SRC_DIR}/freetype-install/include/freetype2" CACHE INTERNAL "ft include dir")
|
||||
set(FREETYPE_BUILT_FROM_SOURCES ON CACHE BOOL "ft built from sources")
|
||||
list(APPEND CMAKE_PREFIX_PATH "${FT_SRC_DIR}/freetype-install")
|
||||
endif()
|
||||
|
||||
set(MSDFGEN_DISABLE_SVG TRUE CACHE INTERNAL "disable msdfgen svg")
|
||||
set(MSDFGEN_USE_SKIA OFF CACHE BOOL "use skia" FORCE)
|
||||
set(MSDF_ATLAS_USE_SKIA OFF CACHE BOOL "use skia" FORCE)
|
||||
set(MSDF_ATLAS_MSDFGEN_EXTERNAL ON CACHE BOOL "do not build msdfgen submodule" FORCE)
|
||||
set(MSDFGEN_DYNAMIC_RUNTIME ON CACHE BOOL "msvc dynamic runtime" FORCE)
|
||||
set(MSDF_ATLAS_DYNAMIC_RUNTIME ON CACHE BOOL "msvc dynamic runtime" FORCE)
|
||||
set(MSDFGEN_DISABLE_PNG ON CACHE BOOL "disable png" FORCE)
|
||||
set(MSDFGEN_USE_VCPKG OFF CACHE BOOL "do not use vcpkg" FORCE)
|
||||
set(MSDF_ATLAS_USE_VCPKG OFF CACHE BOOL "do not use vcpkg" FORCE)
|
||||
|
||||
unset(Freetype_FOUND)
|
||||
find_package(Freetype QUIET)
|
||||
if (NOT Freetype_FOUND OR NOT EXISTS "${CMAKE_BINARY_DIR}/_deps/freetype-src/build")
|
||||
message("Installing freetype from sources")
|
||||
FetchContent_Declare(
|
||||
freetype
|
||||
EXCLUDE_FROM_ALL
|
||||
GIT_REPOSITORY ${FREETYPE_REPO}
|
||||
GIT_TAG master
|
||||
GIT_SHALLOW TRUE
|
||||
msdfgen
|
||||
EXCLUDE_FROM_ALL
|
||||
GIT_REPOSITORY ${MSDFGEN_REPO}
|
||||
GIT_TAG v1.12
|
||||
GIT_SHALLOW TRUE
|
||||
)
|
||||
set(FT_DISABLE_ZLIB ON CACHE BOOL "" FORCE)
|
||||
set(FT_DISABLE_BZIP2 ON CACHE BOOL "" FORCE)
|
||||
set(FT_DISABLE_PNG ON CACHE BOOL "" FORCE)
|
||||
set(FT_DISABLE_HARFBUZZ ON CACHE BOOL "" FORCE)
|
||||
set(FT_DISABLE_BROTLI ON CACHE BOOL "" FORCE)
|
||||
FetchContent_MakeAvailable(freetype)
|
||||
FetchContent_MakeAvailable(msdfgen)
|
||||
|
||||
set(FT_SRC_DIR "${CMAKE_BINARY_DIR}/_deps/freetype-src")
|
||||
set(FT_BUILD_DIR "${FT_SRC_DIR}/build")
|
||||
file(MAKE_DIRECTORY ${FT_BUILD_DIR})
|
||||
set(PLATFORM_ARG "")
|
||||
if (IOS)
|
||||
set(PLATFORM_ARG "-DPLATFORM=OS64")
|
||||
endif()
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} -DTOOLCHAIN_FILE=${TOOLCHAIN_FILE} -S ${FT_SRC_DIR} -B ${FT_BUILD_DIR}
|
||||
-DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=${FT_SRC_DIR}/freetype-install ${PLATFORM_ARG}
|
||||
WORKING_DIRECTORY ${FT_BUILD_DIR}
|
||||
FetchContent_Declare(
|
||||
msdfgen_atlas
|
||||
EXCLUDE_FROM_ALL
|
||||
GIT_REPOSITORY ${MSDFGEN_ATRLAS_REPO}
|
||||
GIT_TAG master
|
||||
GIT_SHALLOW TRUE
|
||||
)
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} --build ${FT_BUILD_DIR} --config Release --target install
|
||||
WORKING_DIRECTORY ${FT_BUILD_DIR} RESULT_VARIABLE build_result
|
||||
)
|
||||
if (NOT ${build_result} EQUAL "0")
|
||||
message(FATAL_ERROR "Failed to build freetype!")
|
||||
endif()
|
||||
set(FREETYPE_INCLUDE_DIR "${FT_SRC_DIR}/freetype-install/include/freetype2" CACHE INTERNAL "ft include dir")
|
||||
set(FREETYPE_BUILT_FROM_SOURCES ON CACHE BOOL "ft built from sources")
|
||||
list(APPEND CMAKE_PREFIX_PATH "${FT_SRC_DIR}/freetype-install")
|
||||
FetchContent_MakeAvailable(msdfgen_atlas)
|
||||
endif()
|
||||
|
||||
set(MSDFGEN_DISABLE_SVG TRUE CACHE INTERNAL "disable msdfgen svg")
|
||||
set(MSDFGEN_USE_SKIA OFF CACHE BOOL "use skia" FORCE)
|
||||
set(MSDF_ATLAS_USE_SKIA OFF CACHE BOOL "use skia" FORCE)
|
||||
set(MSDF_ATLAS_MSDFGEN_EXTERNAL ON CACHE BOOL "do not build msdfgen submodule" FORCE)
|
||||
set(MSDFGEN_DYNAMIC_RUNTIME ON CACHE BOOL "msvc dynamic runtime" FORCE)
|
||||
set(MSDF_ATLAS_DYNAMIC_RUNTIME ON CACHE BOOL "msvc dynamic runtime" FORCE)
|
||||
set(MSDFGEN_DISABLE_PNG ON CACHE BOOL "disable png" FORCE)
|
||||
set(MSDFGEN_USE_VCPKG OFF CACHE BOOL "do not use vcpkg" FORCE)
|
||||
set(MSDF_ATLAS_USE_VCPKG OFF CACHE BOOL "do not use vcpkg" FORCE)
|
||||
|
||||
FetchContent_Declare(
|
||||
msdfgen
|
||||
EXCLUDE_FROM_ALL
|
||||
GIT_REPOSITORY ${MSDFGEN_REPO}
|
||||
GIT_TAG v1.12
|
||||
GIT_SHALLOW TRUE
|
||||
)
|
||||
FetchContent_MakeAvailable(msdfgen)
|
||||
|
||||
FetchContent_Declare(
|
||||
msdfgen_atlas
|
||||
EXCLUDE_FROM_ALL
|
||||
GIT_REPOSITORY ${MSDFGEN_ATRLAS_REPO}
|
||||
GIT_TAG master
|
||||
GIT_SHALLOW TRUE
|
||||
)
|
||||
FetchContent_MakeAvailable(msdfgen_atlas)
|
||||
|
||||
function(LinkMsdf TARGET)
|
||||
target_link_libraries(${TARGET} PRIVATE msdfgen::msdfgen msdfgen::msdfgen-ext msdf-atlas-gen)
|
||||
if (FREETYPE_BUILT_FROM_SOURCES)
|
||||
target_include_directories(${TARGET} PUBLIC ${FREETYPE_INCLUDE_DIR})
|
||||
else()
|
||||
target_include_directories(${TARGET} PUBLIC ${FREETYPE_INCLUDE_DIRS})
|
||||
if (ENABLE_MSDF)
|
||||
target_link_libraries(${TARGET} PRIVATE msdfgen::msdfgen msdfgen::msdfgen-ext msdf-atlas-gen)
|
||||
if (FREETYPE_BUILT_FROM_SOURCES)
|
||||
target_include_directories(${TARGET} PUBLIC ${FREETYPE_INCLUDE_DIR})
|
||||
else()
|
||||
target_include_directories(${TARGET} PUBLIC ${FREETYPE_INCLUDE_DIRS})
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
@@ -22,7 +22,7 @@ endif()
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
|
||||
|
||||
option(TRACY_ENABLE "Enable Tracy Profiler" OFF)
|
||||
|
||||
option(ENABLE_MSDF "Enable msdf library" ON)
|
||||
add_subdirectory(3rdParty)
|
||||
|
||||
project (openVulkanoCpp VERSION 1.0 LANGUAGES C CXX)
|
||||
|
||||
Reference in New Issue
Block a user