mirror of
https://github.com/AlexAltea/orbital.git
synced 2024-06-16 03:07:58 -04:00
76 lines
3.2 KiB
CMake
76 lines
3.2 KiB
CMake
# Copyright 2020-2021. Alexandro Sanchez Bach.
|
|
|
|
cmake_minimum_required(VERSION 3.12)
|
|
|
|
# Version
|
|
set(ORBITAL_VERSION_MAJOR 0)
|
|
set(ORBITAL_VERSION_MINOR 1)
|
|
set(ORBITAL_VERSION_PATCH 0)
|
|
|
|
# Directories
|
|
set(ORBITAL_DIR_ROOT ${CMAKE_CURRENT_LIST_DIR})
|
|
set(ORBITAL_DIR_CMAKE "${ORBITAL_DIR_ROOT}/cmake")
|
|
set(ORBITAL_DIR_EXTERNALS "${ORBITAL_DIR_ROOT}/externals")
|
|
set(ORBITAL_DIR_SOURCES "${ORBITAL_DIR_ROOT}/src")
|
|
|
|
# Project
|
|
project(orbital CXX)
|
|
|
|
# Dependencies
|
|
find_package(SDL2 REQUIRED)
|
|
find_package(imgui REQUIRED)
|
|
find_package(fmt CONFIG REQUIRED)
|
|
find_package(RapidJSON CONFIG REQUIRED)
|
|
find_package(Vulkan REQUIRED)
|
|
find_package(ZLIB REQUIRED)
|
|
find_library(BOTAN_LIBRARIES NAMES BOTAN2 botan2 BOTAN botan)
|
|
find_library(CAPSTONE_LIBRARIES NAMES capstone_dll capstone)
|
|
|
|
# Sources
|
|
macro(ORBITAL_FILES_APPEND)
|
|
file(GLOB FILES_APPEND CONFIGURE_DEPENDS ${ARGV})
|
|
list(APPEND ORBITAL_SOURCES ${FILES_APPEND})
|
|
endmacro()
|
|
macro(ORBITAL_SOURCES_APPEND)
|
|
ORBITAL_FILES_APPEND(${ARGV0}/*.h)
|
|
ORBITAL_FILES_APPEND(${ARGV0}/*.cpp)
|
|
endmacro()
|
|
|
|
ORBITAL_SOURCES_APPEND(${ORBITAL_DIR_SOURCES}/orbital)
|
|
ORBITAL_SOURCES_APPEND(${ORBITAL_DIR_SOURCES}/orbital/analysis)
|
|
ORBITAL_SOURCES_APPEND(${ORBITAL_DIR_SOURCES}/orbital/analysis/orbis)
|
|
ORBITAL_SOURCES_APPEND(${ORBITAL_DIR_SOURCES}/orbital/host)
|
|
ORBITAL_SOURCES_APPEND(${ORBITAL_DIR_SOURCES}/orbital/host/graphics)
|
|
ORBITAL_SOURCES_APPEND(${ORBITAL_DIR_SOURCES}/orbital/hardware)
|
|
ORBITAL_SOURCES_APPEND(${ORBITAL_DIR_SOURCES}/orbital/hardware/aeolia)
|
|
ORBITAL_SOURCES_APPEND(${ORBITAL_DIR_SOURCES}/orbital/hardware/aeolia/uart)
|
|
ORBITAL_SOURCES_APPEND(${ORBITAL_DIR_SOURCES}/orbital/hardware/liverpool)
|
|
ORBITAL_SOURCES_APPEND(${ORBITAL_DIR_SOURCES}/orbital/hardware/liverpool/gmc)
|
|
ORBITAL_SOURCES_APPEND(${ORBITAL_DIR_SOURCES}/orbital/software)
|
|
ORBITAL_SOURCES_APPEND(${ORBITAL_DIR_SOURCES}/orbital/software/sbl)
|
|
ORBITAL_SOURCES_APPEND(${ORBITAL_DIR_SOURCES}/orbital/ui)
|
|
ORBITAL_SOURCES_APPEND(${ORBITAL_DIR_SOURCES}/orbital/ui/imgui)
|
|
|
|
# Target
|
|
add_executable(orbital ${ORBITAL_SOURCES})
|
|
target_include_directories(orbital PUBLIC ${ORBITAL_DIR_EXTERNALS})
|
|
target_include_directories(orbital PUBLIC ${ORBITAL_DIR_SOURCES})
|
|
target_include_directories(orbital PUBLIC ${RAPIDJSON_INCLUDE_DIRS})
|
|
target_include_directories(orbital PUBLIC ${Vulkan_INCLUDE_DIRS})
|
|
target_link_libraries(orbital PRIVATE fmt::fmt SDL2::SDL2 imgui::imgui ZLIB::ZLIB
|
|
${Vulkan_LIBRARIES} ${BOTAN_LIBRARIES} ${CAPSTONE_LIBRARIES})
|
|
if (EXISTS ${ORBITAL_DIR_EXTERNALS}/core.cmake)
|
|
include(${ORBITAL_DIR_EXTERNALS}/core.cmake)
|
|
else()
|
|
message(FATAL_ERROR "
|
|
Orbital depends on an unreleased third-party library and cannot be built without the required `core.cmake` script.
|
|
Functionality related to PS4 emulation/introspection is open-sourced *only* as documentation for fellow developers and hackers.
|
|
To build Orbital, wait for the upcoming release of `core.cmake` or reimplement one yourself that includes/links QEMU instead.
|
|
Please do NOT ask for help/support related to `core.cmake` issues.")
|
|
endif()
|
|
|
|
# Properties
|
|
set_target_properties(orbital PROPERTIES CXX_STANDARD 20)
|
|
set_target_properties(orbital PROPERTIES CXX_STANDARD_REQUIRED ON)
|
|
set_target_properties(orbital PROPERTIES POSITION_INDEPENDENT_CODE 1)
|