added SDL_ttf and FreeType libs
This commit is contained in:
parent
dca38c986d
commit
0f415b6ed6
@ -41,3 +41,9 @@ check_and_download("https://gitlab.com/libeigen/eigen/-/archive/5.0.0/eigen-5.0.
|
|||||||
|
|
||||||
# 6) Boost
|
# 6) Boost
|
||||||
check_and_download("https://archives.boost.io/release/1.90.0/source/boost_1_90_0.zip" "boost_1_90_0.zip" "boost_1_90_0" "boost")
|
check_and_download("https://archives.boost.io/release/1.90.0/source/boost_1_90_0.zip" "boost_1_90_0.zip" "boost_1_90_0" "boost")
|
||||||
|
|
||||||
|
# 7) FreeType
|
||||||
|
check_and_download("https://download.savannah.gnu.org/releases/freetype/freetype-2.14.1.tar.gz" "freetype-2.14.1.tar.gz" "freetype-2.14.1" "CMakeLists.txt")
|
||||||
|
|
||||||
|
# 8) SDL_ttf
|
||||||
|
check_and_download("https://github.com/libsdl-org/SDL_ttf/archive/refs/tags/release-2.24.0.zip" "release-2.24.0.zip" "SDL_ttf-release-2.24.0" "CMakeLists.txt")
|
||||||
|
|||||||
@ -314,7 +314,215 @@ set_target_properties(libzip_external_lib PROPERTIES
|
|||||||
)
|
)
|
||||||
|
|
||||||
# ===========================================
|
# ===========================================
|
||||||
# 5) Eigen (5.0.0.zip → eigen-5.0.0) - HEADER-ONLY
|
# 5) FreeType (2.14.1) - dependency for SDL_ttf
|
||||||
|
# ===========================================
|
||||||
|
set(FREETYPE_SRC_DIR "${THIRDPARTY_DIR}/freetype-2.14.1")
|
||||||
|
set(FREETYPE_BASE_DIR "${FREETYPE_SRC_DIR}/install")
|
||||||
|
|
||||||
|
set(_have_freetype TRUE)
|
||||||
|
foreach(cfg IN LISTS BUILD_CONFIGS)
|
||||||
|
if(NOT EXISTS "${FREETYPE_BASE_DIR}-${cfg}/lib/freetype.lib" AND
|
||||||
|
NOT EXISTS "${FREETYPE_BASE_DIR}-${cfg}/lib/freetyped.lib")
|
||||||
|
set(_have_freetype FALSE)
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
if(NOT _have_freetype)
|
||||||
|
foreach(cfg IN LISTS BUILD_CONFIGS)
|
||||||
|
log("Configuring FreeType (${cfg}) ...")
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
|
-G "${CMAKE_GENERATOR}"
|
||||||
|
-S "${FREETYPE_SRC_DIR}"
|
||||||
|
-B "${FREETYPE_SRC_DIR}/build-${cfg}"
|
||||||
|
-DCMAKE_INSTALL_PREFIX=${FREETYPE_BASE_DIR}-${cfg}
|
||||||
|
-DCMAKE_PREFIX_PATH="${ZLIB_INSTALL_DIR};${LIBPNG_INSTALL_DIR}"
|
||||||
|
-DCMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=TRUE
|
||||||
|
-DCMAKE_DISABLE_FIND_PACKAGE_BZip2=TRUE
|
||||||
|
-DFT_DISABLE_BROTLI=ON
|
||||||
|
-DBUILD_SHARED_LIBS=OFF
|
||||||
|
RESULT_VARIABLE _ft_cfg_res
|
||||||
|
)
|
||||||
|
if(NOT _ft_cfg_res EQUAL 0)
|
||||||
|
message(FATAL_ERROR "FreeType configure failed for ${cfg}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
log("Building FreeType (${cfg}) ...")
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
|
--build "${FREETYPE_SRC_DIR}/build-${cfg}" --config ${cfg}
|
||||||
|
RESULT_VARIABLE _ft_build_res
|
||||||
|
)
|
||||||
|
if(NOT _ft_build_res EQUAL 0)
|
||||||
|
message(FATAL_ERROR "FreeType build failed for ${cfg}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
log("Installing FreeType (${cfg}) ...")
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
|
--install "${FREETYPE_SRC_DIR}/build-${cfg}" --config ${cfg}
|
||||||
|
RESULT_VARIABLE _ft_inst_res
|
||||||
|
)
|
||||||
|
if(NOT _ft_inst_res EQUAL 0)
|
||||||
|
message(FATAL_ERROR "FreeType install failed for ${cfg}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(_ft_debug_lib "")
|
||||||
|
foreach(cand
|
||||||
|
"${FREETYPE_BASE_DIR}-Debug/lib/freetyped.lib"
|
||||||
|
"${FREETYPE_BASE_DIR}-Debug/lib/freetype.lib"
|
||||||
|
)
|
||||||
|
if(EXISTS "${cand}")
|
||||||
|
set(_ft_debug_lib "${cand}")
|
||||||
|
break()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
set(_ft_release_lib "")
|
||||||
|
foreach(cand
|
||||||
|
"${FREETYPE_BASE_DIR}-Release/lib/freetype.lib"
|
||||||
|
)
|
||||||
|
if(EXISTS "${cand}")
|
||||||
|
set(_ft_release_lib "${cand}")
|
||||||
|
break()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
if(_ft_debug_lib STREQUAL "" OR _ft_release_lib STREQUAL "")
|
||||||
|
message(FATAL_ERROR "FreeType libs not found in ${FREETYPE_BASE_DIR}-Debug/Release")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(freetype_external_lib UNKNOWN IMPORTED GLOBAL)
|
||||||
|
set_target_properties(freetype_external_lib PROPERTIES
|
||||||
|
IMPORTED_LOCATION_DEBUG "${_ft_debug_lib}"
|
||||||
|
IMPORTED_LOCATION_RELEASE "${_ft_release_lib}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES
|
||||||
|
"$<IF:$<CONFIG:Debug>,${FREETYPE_BASE_DIR}-Debug/include,${FREETYPE_BASE_DIR}-Release/include>"
|
||||||
|
)
|
||||||
|
|
||||||
|
# ===========================================
|
||||||
|
# 6) SDL_ttf (2.24.0)
|
||||||
|
# ===========================================
|
||||||
|
set(SDL2TTF_SRC_DIR "${THIRDPARTY_DIR}/SDL_ttf-release-2.24.0")
|
||||||
|
set(SDL2TTF_BASE_DIR "${SDL2TTF_SRC_DIR}/install")
|
||||||
|
|
||||||
|
set(_have_sdl2ttf TRUE)
|
||||||
|
foreach(cfg IN LISTS BUILD_CONFIGS)
|
||||||
|
if(NOT EXISTS "${SDL2TTF_BASE_DIR}-${cfg}/lib/SDL2_ttf.lib" AND
|
||||||
|
NOT EXISTS "${SDL2TTF_BASE_DIR}-${cfg}/lib/SDL2_ttfd.lib")
|
||||||
|
set(_have_sdl2ttf FALSE)
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
if(NOT _have_sdl2ttf)
|
||||||
|
foreach(cfg IN LISTS BUILD_CONFIGS)
|
||||||
|
|
||||||
|
if(cfg STREQUAL "Debug")
|
||||||
|
set(_SDL2_LIB "${SDL2_INSTALL_DIR}/lib/SDL2d.lib")
|
||||||
|
else()
|
||||||
|
set(_SDL2_LIB "${SDL2_INSTALL_DIR}/lib/SDL2.lib")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(_FT_PREFIX "${FREETYPE_BASE_DIR}-${cfg}")
|
||||||
|
|
||||||
|
set(_FT_LIB "")
|
||||||
|
foreach(cand
|
||||||
|
"${_FT_PREFIX}/lib/freetyped.lib"
|
||||||
|
"${_FT_PREFIX}/lib/freetype.lib"
|
||||||
|
)
|
||||||
|
if(EXISTS "${cand}")
|
||||||
|
set(_FT_LIB "${cand}")
|
||||||
|
break()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
if(_FT_LIB STREQUAL "")
|
||||||
|
message(FATAL_ERROR "FreeType library not found for ${cfg}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
log("Configuring SDL_ttf (${cfg}) ...")
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
|
-G "${CMAKE_GENERATOR}"
|
||||||
|
-S "${SDL2TTF_SRC_DIR}"
|
||||||
|
-B "${SDL2TTF_SRC_DIR}/build-${cfg}"
|
||||||
|
-DCMAKE_INSTALL_PREFIX=${SDL2TTF_BASE_DIR}-${cfg}
|
||||||
|
-DCMAKE_PREFIX_PATH=${_FT_PREFIX};${SDL2_INSTALL_DIR}
|
||||||
|
-DSDL2_LIBRARY=${_SDL2_LIB}
|
||||||
|
-DSDL2_INCLUDE_DIR=${SDL2_INSTALL_DIR}/include/SDL2
|
||||||
|
-DFREETYPE_LIBRARY=${_FT_LIB}
|
||||||
|
-DFREETYPE_INCLUDE_DIR=${_FT_PREFIX}/include
|
||||||
|
-DFREETYPE_INCLUDE_DIRS=${_FT_PREFIX}/include
|
||||||
|
-DSDL2TTF_VENDORED=OFF
|
||||||
|
-DSDL2TTF_SAMPLES=OFF
|
||||||
|
RESULT_VARIABLE _ttf_cfg_res
|
||||||
|
)
|
||||||
|
if(NOT _ttf_cfg_res EQUAL 0)
|
||||||
|
message(FATAL_ERROR "SDL_ttf configure failed for ${cfg}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
log("Building SDL_ttf (${cfg}) ...")
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
|
--build "${SDL2TTF_SRC_DIR}/build-${cfg}" --config ${cfg}
|
||||||
|
RESULT_VARIABLE _ttf_build_res
|
||||||
|
)
|
||||||
|
if(NOT _ttf_build_res EQUAL 0)
|
||||||
|
message(FATAL_ERROR "SDL_ttf build failed for ${cfg}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
log("Installing SDL_ttf (${cfg}) ...")
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${CMAKE_COMMAND}
|
||||||
|
--install "${SDL2TTF_SRC_DIR}/build-${cfg}" --config ${cfg}
|
||||||
|
RESULT_VARIABLE _ttf_inst_res
|
||||||
|
)
|
||||||
|
if(NOT _ttf_inst_res EQUAL 0)
|
||||||
|
message(FATAL_ERROR "SDL_ttf install failed for ${cfg}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(_ttf_debug_lib "")
|
||||||
|
foreach(cand
|
||||||
|
"${SDL2TTF_BASE_DIR}-Debug/lib/SDL2_ttfd.lib"
|
||||||
|
"${SDL2TTF_BASE_DIR}-Debug/lib/SDL2_ttf.lib"
|
||||||
|
)
|
||||||
|
if(EXISTS "${cand}")
|
||||||
|
set(_ttf_debug_lib "${cand}")
|
||||||
|
break()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
set(_ttf_release_lib "")
|
||||||
|
foreach(cand
|
||||||
|
"${SDL2TTF_BASE_DIR}-Release/lib/SDL2_ttf.lib"
|
||||||
|
)
|
||||||
|
if(EXISTS "${cand}")
|
||||||
|
set(_ttf_release_lib "${cand}")
|
||||||
|
break()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
if(_ttf_debug_lib STREQUAL "" OR _ttf_release_lib STREQUAL "")
|
||||||
|
message(FATAL_ERROR "SDL_ttf libs not found in install-Debug / install-Release")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_library(SDL2_ttf_external_lib UNKNOWN IMPORTED GLOBAL)
|
||||||
|
set_target_properties(SDL2_ttf_external_lib PROPERTIES
|
||||||
|
IMPORTED_LOCATION_DEBUG "${_ttf_debug_lib}"
|
||||||
|
IMPORTED_LOCATION_RELEASE "${_ttf_release_lib}"
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES
|
||||||
|
"$<IF:$<CONFIG:Debug>,${SDL2TTF_BASE_DIR}-Debug/include,${SDL2TTF_BASE_DIR}-Release/include>;$<IF:$<CONFIG:Debug>,${SDL2TTF_BASE_DIR}-Debug/include/SDL2,${SDL2TTF_BASE_DIR}-Release/include/SDL2>"
|
||||||
|
INTERFACE_LINK_LIBRARIES
|
||||||
|
"SDL2_external_lib;freetype_external_lib"
|
||||||
|
)
|
||||||
|
|
||||||
|
# ===========================================
|
||||||
|
# 7) Eigen (5.0.0.zip → eigen-5.0.0) - HEADER-ONLY
|
||||||
# ===========================================
|
# ===========================================
|
||||||
set(EIGEN_SRC_DIR "${THIRDPARTY_DIR}/eigen-5.0.0")
|
set(EIGEN_SRC_DIR "${THIRDPARTY_DIR}/eigen-5.0.0")
|
||||||
|
|
||||||
@ -324,7 +532,7 @@ if(NOT TARGET eigen_external_lib)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# ===========================================
|
# ===========================================
|
||||||
# 6) Boost (1.90.0) - HEADER-ONLY
|
# 8) Boost (1.90.0) - HEADER-ONLY
|
||||||
# ===========================================
|
# ===========================================
|
||||||
set(BOOST_VERSION "1.90.0")
|
set(BOOST_VERSION "1.90.0")
|
||||||
set(BOOST_ARCHIVE_NAME "boost_1_90_0.zip")
|
set(BOOST_ARCHIVE_NAME "boost_1_90_0.zip")
|
||||||
|
|||||||
@ -83,6 +83,8 @@ target_link_libraries(space-game001 PRIVATE
|
|||||||
libpng_external_lib
|
libpng_external_lib
|
||||||
zlib_external_lib
|
zlib_external_lib
|
||||||
libzip_external_lib
|
libzip_external_lib
|
||||||
|
freetype_external_lib
|
||||||
|
SDL2_ttf_external_lib
|
||||||
eigen_external_lib
|
eigen_external_lib
|
||||||
boost_external_lib
|
boost_external_lib
|
||||||
)
|
)
|
||||||
@ -107,6 +109,8 @@ if (WIN32)
|
|||||||
set(ZLIB_DLL_SRC "$<IF:$<CONFIG:Debug>,${ZLIB_INSTALL_DIR}/bin/zlibd.dll,${ZLIB_INSTALL_DIR}/bin/zlib.dll>")
|
set(ZLIB_DLL_SRC "$<IF:$<CONFIG:Debug>,${ZLIB_INSTALL_DIR}/bin/zlibd.dll,${ZLIB_INSTALL_DIR}/bin/zlib.dll>")
|
||||||
set(ZLIB_DLL_DST "$<IF:$<CONFIG:Debug>,$<TARGET_FILE_DIR:space-game001>/zlibd.dll,$<TARGET_FILE_DIR:space-game001>/zlib.dll>")
|
set(ZLIB_DLL_DST "$<IF:$<CONFIG:Debug>,$<TARGET_FILE_DIR:space-game001>/zlibd.dll,$<TARGET_FILE_DIR:space-game001>/zlib.dll>")
|
||||||
|
|
||||||
|
set(SDL2TTF_DLL_SRC "$<IF:$<CONFIG:Debug>,${SDL2TTF_BASE_DIR}-Debug/bin/SDL2_ttfd.dll,${SDL2TTF_BASE_DIR}-Release/bin/SDL2_ttf.dll>")
|
||||||
|
|
||||||
|
|
||||||
add_custom_command(TARGET space-game001 POST_BUILD
|
add_custom_command(TARGET space-game001 POST_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND} -E echo "Copying DLLs to output folder..."
|
COMMAND ${CMAKE_COMMAND} -E echo "Copying DLLs to output folder..."
|
||||||
@ -124,6 +128,10 @@ if (WIN32)
|
|||||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||||
"${ZLIB_DLL_SRC}"
|
"${ZLIB_DLL_SRC}"
|
||||||
"${ZLIB_DLL_DST}"
|
"${ZLIB_DLL_DST}"
|
||||||
|
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||||
|
"${SDL2TTF_DLL_SRC}"
|
||||||
|
"$<TARGET_FILE_DIR:space-game001>"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user