130 lines
2.9 KiB
CMake
130 lines
2.9 KiB
CMake
cmake_minimum_required(VERSION 3.15)
|
|
project(thermion_dart VERSION 1.0.0 LANGUAGES CXX C)
|
|
|
|
# Configuration variables
|
|
set(FILAMENT_VERSION "v1.58.0")
|
|
set(PACKAGE_NAME "thermion_dart")
|
|
set(PLATFORM "macos")
|
|
|
|
# Set C++ standard
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
# Set macOS specific options
|
|
set(CMAKE_OSX_DEPLOYMENT_TARGET 13.0)
|
|
set(CMAKE_MACOSX_RPATH ON)
|
|
|
|
# Debug build by default
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE Debug)
|
|
endif()
|
|
|
|
# Enable tracing
|
|
add_definitions(-DENABLE_TRACING=1)
|
|
|
|
# Locate source files
|
|
file(GLOB_RECURSE SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/scene/*.cpp"
|
|
)
|
|
|
|
|
|
# Exclude specific files
|
|
list(FILTER SOURCES EXCLUDE REGEX "CMakeLists.txt|main.cpp|windows")
|
|
|
|
# Material and resource sources
|
|
set(MATERIAL_SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/include/material/unlit_fixed_size.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/include/material/image.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/include/material/grid.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/include/material/linear_depth.c"
|
|
)
|
|
|
|
set_source_files_properties(${MATERIAL_SOURCES} PROPERTIES LANGUAGE CXX)
|
|
|
|
set(RESOURCE_SOURCES
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/include/resources/translation_gizmo_glb.c"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/include/resources/rotation_gizmo_glb.c"
|
|
)
|
|
|
|
set_source_files_properties(${RESOURCE_SOURCES} PROPERTIES LANGUAGE CXX)
|
|
|
|
|
|
# Create the shared library
|
|
add_library(thermion_dart SHARED
|
|
${SOURCES}
|
|
${MATERIAL_SOURCES}
|
|
${RESOURCE_SOURCES}
|
|
)
|
|
|
|
# Include directories
|
|
target_include_directories(thermion_dart PRIVATE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/include"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/include/filament"
|
|
)
|
|
|
|
# Set the output name of the library
|
|
set_target_properties(thermion_dart PROPERTIES
|
|
OUTPUT_NAME "thermion_dart"
|
|
PREFIX "lib"
|
|
SUFFIX ".dylib"
|
|
)
|
|
|
|
# Filament libraries path
|
|
set(FILAMENT_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../.dart_tool/thermion_dart/lib/${FILAMENT_VERSION}/macos/debug")
|
|
|
|
# Link libraries
|
|
target_link_directories(thermion_dart PRIVATE ${FILAMENT_LIB_DIR})
|
|
target_link_libraries(thermion_dart PRIVATE
|
|
filament
|
|
backend
|
|
filameshio
|
|
viewer
|
|
filamat
|
|
meshoptimizer
|
|
mikktspace
|
|
geometry
|
|
utils
|
|
filabridge
|
|
gltfio_core
|
|
gltfio
|
|
filament-iblprefilter
|
|
image
|
|
imageio
|
|
tinyexr
|
|
filaflat
|
|
dracodec
|
|
ibl
|
|
ktxreader
|
|
png
|
|
z
|
|
stb
|
|
uberzlib
|
|
smol-v
|
|
uberarchive
|
|
zstd
|
|
basis_transcoder
|
|
matdbg
|
|
fgviewer
|
|
bluegl
|
|
bluevk
|
|
)
|
|
|
|
# macOS frameworks
|
|
find_library(FOUNDATION_FRAMEWORK Foundation)
|
|
find_library(CORE_VIDEO_FRAMEWORK CoreVideo)
|
|
find_library(COCOA_FRAMEWORK Cocoa)
|
|
find_library(METAL_FRAMEWORK Metal)
|
|
|
|
target_link_libraries(thermion_dart PRIVATE
|
|
${FOUNDATION_FRAMEWORK}
|
|
${CORE_VIDEO_FRAMEWORK}
|
|
${COCOA_FRAMEWORK}
|
|
${METAL_FRAMEWORK}
|
|
)
|
|
|
|
# Install rules
|
|
install(TARGETS thermion_dart
|
|
LIBRARY DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/build"
|
|
)
|