obliteration/src/CMakeLists.txt

129 lines
3.7 KiB
CMake
Raw Normal View History

2022-09-16 04:29:53 +07:00
# External dependencies.
2022-09-24 16:01:22 +07:00
find_package(Qt6 COMPONENTS Widgets REQUIRED)
2022-09-18 14:04:02 +07:00
find_package(Threads REQUIRED)
2022-09-15 12:22:22 +07:00
2022-09-18 09:57:50 +07:00
# Setup Rust target.
2024-07-17 03:08:35 +07:00
if(WIN32)
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "AMD64")
set(KERNEL_TARGET x86_64-unknown-none)
else()
message(FATAL_ERROR "Target CPU is not supported")
endif()
else()
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
set(KERNEL_TARGET x86_64-unknown-none)
elseif(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm64")
set(KERNEL_TARGET aarch64-unknown-none-softfloat)
else()
message(FATAL_ERROR "Target CPU is not supported")
endif()
endif()
set(KERNEL_OUTPUTS $<IF:$<CONFIG:Debug>,${CMAKE_CURRENT_SOURCE_DIR}/target/${KERNEL_TARGET}/debug,${CMAKE_CURRENT_SOURCE_DIR}/target/${KERNEL_TARGET}/release>)
set(KERNEL ${KERNEL_OUTPUTS}/obkrnl)
2024-07-14 19:13:36 +07:00
set(HOST_OUTPUTS $<IF:$<CONFIG:Debug>,${CMAKE_CURRENT_SOURCE_DIR}/target/debug,${CMAKE_CURRENT_SOURCE_DIR}/target/release>)
if(WIN32)
2024-07-14 19:13:36 +07:00
set(LIBCORE ${HOST_OUTPUTS}/core.lib)
else()
2024-07-14 19:13:36 +07:00
set(LIBCORE ${HOST_OUTPUTS}/libcore.a)
endif()
add_custom_target(core
COMMAND cargo build $<IF:$<CONFIG:Debug>,--profile=dev,--release>
2024-07-17 03:08:35 +07:00
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/core
2024-07-14 19:13:36 +07:00
BYPRODUCTS ${LIBCORE})
add_custom_target(kernel
2024-07-17 03:08:35 +07:00
COMMAND cargo build $<IF:$<CONFIG:Debug>,--profile=dev,--release> --target ${KERNEL_TARGET}
2024-07-14 19:13:36 +07:00
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/obkrnl
BYPRODUCTS ${KERNEL})
add_dependencies(core kernel)
2022-09-18 09:57:50 +07:00
2022-09-16 04:29:53 +07:00
# Setup application target.
2023-07-31 23:40:29 +07:00
add_executable(obliteration WIN32 MACOSX_BUNDLE
ansi_escape.cpp
2022-10-16 21:07:56 +07:00
app_data.cpp
2023-10-09 17:50:29 +07:00
core.cpp
game_graphic_settings.cpp
2022-09-17 15:03:04 +07:00
game_models.cpp
2022-09-18 17:07:45 +07:00
game_settings.cpp
2022-09-18 16:31:53 +07:00
game_settings_dialog.cpp
initialize_wizard.cpp
2024-07-15 02:52:33 +07:00
launch_settings.cpp
log_formatter.cpp
main.cpp
main_window.cpp
path.cpp
2024-03-30 22:27:55 +07:00
pkg_extractor.cpp
pkg_installer.cpp
progress_dialog.cpp
resources.qrc
2022-09-20 21:50:30 +07:00
settings.cpp
system.cpp
system_downloader.cpp
update_firmware.cpp)
2022-09-16 04:29:53 +07:00
2022-10-02 01:33:26 +07:00
if(WIN32)
target_sources(obliteration PRIVATE resources.rc)
elseif(APPLE)
target_sources(obliteration PRIVATE resources/obliteration.icns)
2022-10-02 01:33:26 +07:00
endif()
add_dependencies(obliteration core)
2022-09-18 09:57:50 +07:00
set_target_properties(obliteration PROPERTIES AUTOMOC ON AUTORCC ON)
if(WIN32)
set_target_properties(obliteration PROPERTIES OUTPUT_NAME Obliteration)
endif()
2022-09-16 04:29:53 +07:00
2023-07-31 23:40:29 +07:00
if(APPLE)
set_target_properties(obliteration PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER io.github.obhq.obliteration
MACOSX_BUNDLE_BUNDLE_NAME Obliteration
MACOSX_BUNDLE_BUNDLE_VERSION 0.1.0
MACOSX_BUNDLE_SHORT_VERSION_STRING 0.1.0
MACOSX_BUNDLE_COPYRIGHT "Copyright © Obliteration Contributors"
MACOSX_BUNDLE_ICON_FILE obliteration
RESOURCE resources/obliteration.icns)
2023-07-31 23:40:29 +07:00
endif()
2022-09-16 04:29:53 +07:00
target_compile_features(obliteration PRIVATE cxx_std_17)
2022-09-24 16:01:22 +07:00
target_link_libraries(obliteration PRIVATE Qt6::Widgets)
2022-09-18 14:04:02 +07:00
target_link_libraries(obliteration PRIVATE Threads::Threads)
2022-09-27 19:48:37 +07:00
target_link_libraries(obliteration PRIVATE ${LIBCORE})
2022-09-15 12:31:45 +07:00
2022-09-18 14:04:02 +07:00
if(WIN32)
target_link_libraries(obliteration PRIVATE bcrypt imm32 ntdll setupapi userenv version winmm ws2_32)
2022-09-18 14:30:25 +07:00
else()
target_link_libraries(obliteration PRIVATE ${CMAKE_DL_LIBS})
2022-09-18 14:04:02 +07:00
endif()
# Setup installation.
if(WIN32)
install(TARGETS obliteration DESTINATION .)
else()
install(TARGETS obliteration BUNDLE DESTINATION . RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()
if(WIN32)
install(SCRIPT deploy-win32.cmake)
elseif(APPLE)
qt_generate_deploy_app_script(
TARGET obliteration
OUTPUT_SCRIPT QT_DEPLOY_SCRIPT
NO_TRANSLATIONS
NO_COMPILER_RUNTIME)
install(SCRIPT ${QT_DEPLOY_SCRIPT})
endif()
if(APPLE)
2024-07-14 19:13:36 +07:00
install(FILES ${KERNEL} DESTINATION obliteration.app/Contents/Resources)
else()
2024-07-14 19:13:36 +07:00
install(FILES ${KERNEL} TYPE DATA)
endif()