first build attempt

This commit is contained in:
2026-04-23 08:05:03 -07:00
parent a75186cab6
commit f68524a6ae
125 changed files with 23271 additions and 463 deletions

107
CMakeLists.txt Normal file
View File

@@ -0,0 +1,107 @@
# MIT License
# Author: Mark Allyn
#
# CMakeLists.txt — Museum Vintage Radar Exhibit
#
# Build:
# cd build && cmake .. && make -j$(nproc)
#
# Run (from project root):
# ./build/radar
cmake_minimum_required(VERSION 3.16)
project(radar LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# ----------------------------------------------------------------
# Find packages
# ----------------------------------------------------------------
find_package(OpenGL REQUIRED)
find_package(Freetype REQUIRED)
find_package(Threads REQUIRED)
# GLFW — prefer system package; fall back to find_library
find_package(PkgConfig QUIET)
if(PkgConfig_FOUND)
pkg_check_modules(GLFW glfw3)
endif()
if(NOT GLFW_FOUND)
find_library(GLFW_LIBRARIES NAMES glfw glfw3 REQUIRED)
find_path(GLFW_INCLUDE_DIRS GLFW/glfw3.h REQUIRED)
endif()
# ----------------------------------------------------------------
# GLAD (compiled directly from source)
# ----------------------------------------------------------------
set(GLAD_SRC ${CMAKE_SOURCE_DIR}/glad/src/glad.c)
set(GLAD_INC ${CMAKE_SOURCE_DIR}/include)
# ----------------------------------------------------------------
# Source files — main radar binary
# ----------------------------------------------------------------
set(SOURCES
src/main.cpp
src/shared_render_state.cpp
src/target_buffer.cpp
src/phosphor.cpp
src/graticule.cpp
src/left_panel.cpp
src/scope.cpp
src/scope_manager.cpp
src/scope_intro.cpp
src/scope_ppi.cpp
src/scope_marine_ppi.cpp
src/simulator.cpp
src/traffic_cop.cpp
src/knob_panel.cpp
src/rpi_receiver.cpp
${GLAD_SRC}
)
add_executable(radar ${SOURCES})
target_include_directories(radar PRIVATE
src/
${GLAD_INC}
${FREETYPE_INCLUDE_DIRS}
${GLFW_INCLUDE_DIRS}
)
target_link_libraries(radar PRIVATE
OpenGL::GL
Freetype::Freetype
Threads::Threads
${GLFW_LIBRARIES}
)
# Compiler warnings
target_compile_options(radar PRIVATE
-Wall -Wextra -Wpedantic
-Wno-unused-parameter
)
# ----------------------------------------------------------------
# terrain_preprocess — offline tool, links GDAL, NOT part of radar
# Uncomment and install libgdal-dev to build this target.
# ----------------------------------------------------------------
# find_package(GDAL)
# if(GDAL_FOUND)
# add_executable(terrain_preprocess src/terrain_preprocess.cpp ${GLAD_SRC})
# target_include_directories(terrain_preprocess PRIVATE src/ ${GLAD_INC} ${GDAL_INCLUDE_DIRS})
# target_link_libraries(terrain_preprocess PRIVATE ${GDAL_LIBRARIES} Threads::Threads)
# endif()
# ----------------------------------------------------------------
# Copy shaders and data to build directory for in-build-dir running
# ----------------------------------------------------------------
add_custom_target(copy_assets ALL
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/shaders ${CMAKE_BINARY_DIR}/shaders
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/data ${CMAKE_BINARY_DIR}/data
COMMENT "Copying shaders and data to build directory"
)
add_dependencies(radar copy_assets)