Files
crosslang-gfx/CMakeLists.txt
2025-11-02 18:11:55 -06:00

85 lines
2.6 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(CrossGFX)
option(CROSSGFX_ISPLUGIN "Is this a plugin or a static library for something, if not a plugin it will fetchcontent crosslang and tessesframework-gfx" ON)
option(CROSSGFX_SHARED_CROSSLANG "Is crosslang shared if not plugin" ON)
list(APPEND CROSSGFX_SOURCES
src/reg.cpp
src/size.cpp
src/point.cpp
src/rect.cpp
src/color.cpp
src/format.cpp
src/image.cpp
src/webcam.cpp
)
include(GNUInstallDirs)
if(CROSSGFX_ISPLUGIN)
find_package(TessesCrossLang REQUIRED)
find_package(TessesFrameworkGFX REQUIRED)
add_library(crosslang_gfx SHARED src/plugin.cpp ${CROSSGFX_SOURCES})
target_link_libraries(crosslang_gfx PUBLIC TessesCrossLang::crosslang_shared)
target_link_libraries(crosslang_gfx PUBLIC TessesFrameworkGFX::tessesframework_gfx_shared)
target_include_directories(crosslang_gfx PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
install(TARGETS crosslang_gfx DESTINATION "${CMAKE_INSTALL_LIBDIR}")
else()
include(FetchContent)
FetchContent_Declare(
TessesCrossLang
GIT_REPOSITORY https://onedev.site.tesses.net/crosslang.git
)
FetchContent_Declare(
TessesFrameworkGFX
GIT_REPOSITORY https://onedev.site.tesses.net/tesses-framework/tessesframework-gfx
)
FetchContent_MakeAvailable(TessesFrameworkGFX)
FetchContent_MakeAvailable(TessesCrossLang)
add_library(crosslang_gfx STATIC ${CROSSGFX_SOURCES})
target_link_libraries(crosslang_gfx PUBLIC tessesframework_gfx)
if(CROSSGFX_SHARED_CROSSLANG)
target_link_libraries(crosslang_gfx PUBLIC crosslang_shared)
else()
target_link_libraries(crosslang_gfx PUBLIC crosslang_static)
endif()
target_include_directories(crosslang_gfx
PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
)
install(FILES include/CrossLangGFX.hpp DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(TARGETS ${CrossLangGFXLibs}
EXPORT CrossLangGFXTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
install(EXPORT CrossLangGFXTargets
FILE CrossLangGFXTargets.cmake
NAMESPACE CrossLangGFX::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/CrossLangGFX
)
include(CMakePackageConfigHelpers)
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/CrossLangGFXConfig.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/CrossLangGFX)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}CrossLangGFXConfig.cmake"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/CrossLangGFX)
endif()