polserver/cmake/Fmt.cmake
turleypol e7fdfdf795
CMake target cleanup, removed configure options (#614)
* every 3rd party lib is now excluded from "all" build, meaning it gets
only build when actually used.
removed the cmake option to partially build, due to the above changes
this is no more needed, just build the target
streamlined 3rdparty target names, they all start with lib now

* renamed escriptgrammar target to escriptgrammar_codegen for
clarification
fixed dependency name

* corrected sources name

* readded missing include
2024-02-01 08:07:37 +01:00

53 lines
1.7 KiB
CMake

# https://github.com/fmtlib/fmt
message("* libfmt")
set(FMT_SOURCE_DIR "${POL_EXT_LIB_DIR}/fmt-10.2.0")
set(FMT_INSTALL_DIR "${FMT_SOURCE_DIR}/install")
set(FMT_ARGS -DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=${FMT_INSTALL_DIR}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DBUILD_SHARED_LIBS=Off
-DFMT_MASTER_PROJECT=Off # no docs/tests
-DCMAKE_USER_MAKE_RULES_OVERRIDE_CXX=${CMAKE_CURRENT_LIST_DIR}/cxx_flag_overrides.cmake
-DCMAKE_USER_MAKE_RULES_OVERRIDE_C=${CMAKE_CURRENT_LIST_DIR}/c_flag_overrides.cmake
-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded # /Mt instead lf /Md
-DCMAKE_OSX_ARCHITECTURES=${PIPED_OSX_ARCHITECTURES}
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
)
if (${linux})
include(GNUInstallDirs)
set(FMT_LIB "${FMT_INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libfmt.a")
else()
set(FMT_LIB "${FMT_INSTALL_DIR}/lib/fmt.lib")
endif()
ExternalProject_Add(libfmt_ext
SOURCE_DIR ${FMT_SOURCE_DIR}
PREFIX fmt
LIST_SEPARATOR |
CMAKE_ARGS ${FMT_ARGS}
BINARY_DIR ${FMT_SOURCE_DIR}/build
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --config Release --target install
BUILD_BYPRODUCTS ${FMT_LIB}
LOG_DOWNLOAD 1
LOG_CONFIGURE 1
LOG_BUILD 1
LOG_INSTALL 1
LOG_OUTPUT_ON_FAILURE 1
EXCLUDE_FROM_ALL 1
)
# imported target to add include/lib dir and additional dependencies
add_library(libfmt STATIC IMPORTED)
set_target_properties(libfmt PROPERTIES
IMPORTED_LOCATION ${FMT_LIB}
IMPORTED_IMPLIB ${FMT_LIB}
INTERFACE_INCLUDE_DIRECTORIES ${FMT_INSTALL_DIR}/include
FOLDER 3rdParty
)
file(MAKE_DIRECTORY ${FMT_INSTALL_DIR}/include) #directory has to exist during configure
add_dependencies(libfmt libfmt_ext)