apps: add studio sources
This commit is contained in:
160
apps/studio/CMakeLists.txt
Normal file
160
apps/studio/CMakeLists.txt
Normal file
@@ -0,0 +1,160 @@
|
||||
cmake_minimum_required(VERSION 3.15)
|
||||
project(afs_studio LANGUAGES CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
include(FetchContent)
|
||||
|
||||
# M1/ARM64 optimizations
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm64")
|
||||
add_compile_options(-march=armv8-a+simd+dotprod -O3 -ffast-math)
|
||||
add_compile_definitions(AFS_ARM64=1)
|
||||
endif()
|
||||
|
||||
# =============================================================================
|
||||
# Dependencies
|
||||
# =============================================================================
|
||||
|
||||
option(AFS_FETCH_GLFW "Fetch GLFW automatically if missing" ON)
|
||||
|
||||
# Fetch Dear ImGui
|
||||
FetchContent_Declare(
|
||||
imgui
|
||||
GIT_REPOSITORY https://github.com/ocornut/imgui.git
|
||||
GIT_TAG docking
|
||||
)
|
||||
FetchContent_MakeAvailable(imgui)
|
||||
|
||||
# Fetch ImPlot
|
||||
FetchContent_Declare(
|
||||
implot
|
||||
GIT_REPOSITORY https://github.com/epezent/implot.git
|
||||
GIT_TAG master
|
||||
)
|
||||
FetchContent_MakeAvailable(implot)
|
||||
|
||||
# Fetch nlohmann/json (header-only)
|
||||
FetchContent_Declare(
|
||||
json
|
||||
GIT_REPOSITORY https://github.com/nlohmann/json.git
|
||||
GIT_TAG v3.11.3
|
||||
)
|
||||
FetchContent_MakeAvailable(json)
|
||||
|
||||
# Find GLFW
|
||||
find_package(glfw3 3.3 QUIET)
|
||||
if(NOT glfw3_FOUND AND AFS_FETCH_GLFW)
|
||||
message(STATUS "glfw3 not found - fetching with FetchContent")
|
||||
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
||||
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
||||
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
|
||||
set(GLFW_INSTALL OFF CACHE BOOL "" FORCE)
|
||||
FetchContent_Declare(
|
||||
glfw
|
||||
GIT_REPOSITORY https://github.com/glfw/glfw.git
|
||||
GIT_TAG 3.4
|
||||
)
|
||||
FetchContent_MakeAvailable(glfw)
|
||||
set(glfw3_FOUND TRUE)
|
||||
endif()
|
||||
if(NOT glfw3_FOUND)
|
||||
message(FATAL_ERROR "glfw3 not found. Install it or set AFS_FETCH_GLFW=ON.")
|
||||
endif()
|
||||
|
||||
find_package(OpenGL REQUIRED)
|
||||
|
||||
# =============================================================================
|
||||
# Build afs_studio
|
||||
# =============================================================================
|
||||
|
||||
# ImGui sources
|
||||
set(IMGUI_SOURCES
|
||||
${imgui_SOURCE_DIR}/imgui.cpp
|
||||
${imgui_SOURCE_DIR}/imgui_draw.cpp
|
||||
${imgui_SOURCE_DIR}/imgui_tables.cpp
|
||||
${imgui_SOURCE_DIR}/imgui_widgets.cpp
|
||||
${imgui_SOURCE_DIR}/imgui_demo.cpp
|
||||
${imgui_SOURCE_DIR}/backends/imgui_impl_glfw.cpp
|
||||
${imgui_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp
|
||||
)
|
||||
|
||||
# ImPlot sources
|
||||
set(IMPLOT_SOURCES
|
||||
${implot_SOURCE_DIR}/implot.cpp
|
||||
${implot_SOURCE_DIR}/implot_items.cpp
|
||||
${implot_SOURCE_DIR}/implot_demo.cpp
|
||||
)
|
||||
|
||||
# afs_studio application
|
||||
add_executable(afs_studio
|
||||
src/main.cc
|
||||
src/app.cc
|
||||
src/data_loader.cc
|
||||
src/core/registry_reader.cc
|
||||
src/core/training_monitor.cc
|
||||
src/core/deployment_actions.cc
|
||||
src/core/filesystem.cc
|
||||
src/core/logger.cc
|
||||
src/core/context.cc
|
||||
src/core/assets.cc
|
||||
src/core/llama_client.cc
|
||||
src/ui/core.cc
|
||||
src/ui/components/metrics.cc
|
||||
src/ui/components/charts.cc
|
||||
src/ui/components/tabs.cc
|
||||
src/ui/components/panels.cc
|
||||
src/ui/components/model_registry.cc
|
||||
src/ui/components/training_dashboard.cc
|
||||
src/ui/components/deployment_panel.cc
|
||||
src/ui/components/comparison_view.cc
|
||||
src/ui/components/graph_browser.cc
|
||||
src/ui/components/graph_navigator.cc
|
||||
src/ui/components/companion_panels.cc
|
||||
src/ui/charts/quality_trends.cc
|
||||
src/ui/charts/generator_efficiency.cc
|
||||
src/ui/charts/coverage_density.cc
|
||||
src/ui/panels/chat_panel.cc
|
||||
src/ui/shortcuts.cc
|
||||
src/widgets/text_editor.cc
|
||||
src/widgets/sample_review.cc
|
||||
${IMGUI_SOURCES}
|
||||
${IMPLOT_SOURCES}
|
||||
)
|
||||
|
||||
target_include_directories(afs_studio PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||
${imgui_SOURCE_DIR}
|
||||
${imgui_SOURCE_DIR}/backends
|
||||
${implot_SOURCE_DIR}
|
||||
)
|
||||
|
||||
target_compile_definitions(afs_studio PRIVATE
|
||||
IMGUI_IMPL_OPENGL_LOADER_GLAD=0
|
||||
)
|
||||
|
||||
if(TARGET OpenGL::OpenGL)
|
||||
set(AFS_OPENGL_TARGET OpenGL::OpenGL)
|
||||
else()
|
||||
set(AFS_OPENGL_TARGET OpenGL::GL)
|
||||
endif()
|
||||
|
||||
target_link_libraries(afs_studio PRIVATE
|
||||
glfw
|
||||
${AFS_OPENGL_TARGET}
|
||||
nlohmann_json::nlohmann_json
|
||||
)
|
||||
|
||||
# macOS specific
|
||||
if(APPLE)
|
||||
target_link_libraries(afs_studio PRIVATE
|
||||
"-framework Cocoa"
|
||||
"-framework IOKit"
|
||||
"-framework CoreVideo"
|
||||
)
|
||||
endif()
|
||||
|
||||
# Install
|
||||
install(TARGETS afs_studio RUNTIME DESTINATION bin)
|
||||
|
||||
message(STATUS "afs_studio will be built")
|
||||
Reference in New Issue
Block a user