From 4ef74c4c7032ffab37514587c87f8d98b5a6d998 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Fri, 21 Mar 2025 14:56:27 +0800 Subject: [PATCH] add native CMakeLists --- thermion_dart/native/CMakeLists.txt | 128 ++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 thermion_dart/native/CMakeLists.txt diff --git a/thermion_dart/native/CMakeLists.txt b/thermion_dart/native/CMakeLists.txt new file mode 100644 index 00000000..e7db0f40 --- /dev/null +++ b/thermion_dart/native/CMakeLists.txt @@ -0,0 +1,128 @@ +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" +) + +# 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/unlit.c" + "${CMAKE_CURRENT_SOURCE_DIR}/include/material/gizmo.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" +) \ No newline at end of file