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>)
|
2022-10-06 21:49:39 +07:00
|
|
|
|
2022-09-21 20:19:35 +07:00
|
|
|
if(WIN32)
|
2024-07-14 19:13:36 +07:00
|
|
|
set(LIBCORE ${HOST_OUTPUTS}/core.lib)
|
2022-09-21 20:19:35 +07:00
|
|
|
else()
|
2024-07-14 19:13:36 +07:00
|
|
|
set(LIBCORE ${HOST_OUTPUTS}/libcore.a)
|
2022-09-21 20:19:35 +07:00
|
|
|
endif()
|
|
|
|
|
2024-01-28 16:55:36 +07:00
|
|
|
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
|
2023-02-06 23:36:05 +07:00
|
|
|
ansi_escape.cpp
|
2022-10-16 21:07:56 +07:00
|
|
|
app_data.cpp
|
2023-10-09 17:50:29 +07:00
|
|
|
core.cpp
|
2024-01-27 18:08:00 +07:00
|
|
|
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
|
2023-02-17 01:47:18 +07:00
|
|
|
initialize_wizard.cpp
|
2024-07-15 02:52:33 +07:00
|
|
|
launch_settings.cpp
|
2023-02-06 23:36:05 +07:00
|
|
|
log_formatter.cpp
|
2022-09-16 09:12:25 +07:00
|
|
|
main.cpp
|
|
|
|
main_window.cpp
|
2022-10-23 19:43:35 +07:00
|
|
|
path.cpp
|
2024-03-30 22:27:55 +07:00
|
|
|
pkg_extractor.cpp
|
|
|
|
pkg_installer.cpp
|
2022-10-03 04:26:37 +07:00
|
|
|
progress_dialog.cpp
|
2022-09-19 14:08:26 +07:00
|
|
|
resources.qrc
|
2022-09-20 21:50:30 +07:00
|
|
|
settings.cpp
|
2022-10-23 19:43:35 +07:00
|
|
|
system.cpp
|
2023-02-22 23:27:31 +07:00
|
|
|
system_downloader.cpp
|
2023-07-31 20:12:47 +07:00
|
|
|
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)
|
2023-08-05 19:04:58 +07:00
|
|
|
elseif(APPLE)
|
|
|
|
target_sources(obliteration PRIVATE resources/obliteration.icns)
|
2022-10-02 01:33:26 +07:00
|
|
|
endif()
|
|
|
|
|
2022-10-06 21:49:39 +07:00
|
|
|
add_dependencies(obliteration core)
|
2022-09-18 09:57:50 +07:00
|
|
|
|
2022-10-06 00:02:47 +07:00
|
|
|
set_target_properties(obliteration PROPERTIES AUTOMOC ON AUTORCC ON)
|
|
|
|
|
2023-08-05 19:04:58 +07:00
|
|
|
if(WIN32)
|
2022-10-06 00:02:47 +07:00
|
|
|
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)
|
2023-08-05 19:04:58 +07:00
|
|
|
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
|
2024-01-28 16:55:36 +07:00
|
|
|
MACOSX_BUNDLE_COPYRIGHT "Copyright © Obliteration Contributors"
|
2023-08-05 19:04:58 +07:00
|
|
|
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)
|
2023-06-10 16:24:26 +07:00
|
|
|
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()
|
2022-09-24 17:20:29 +07:00
|
|
|
|
|
|
|
# Setup installation.
|
|
|
|
if(WIN32)
|
|
|
|
install(TARGETS obliteration DESTINATION .)
|
|
|
|
else()
|
2023-08-05 19:04:58 +07:00
|
|
|
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})
|
2022-09-24 17:20:29 +07:00
|
|
|
endif()
|
|
|
|
|
2023-08-05 19:04:58 +07:00
|
|
|
if(APPLE)
|
2024-07-14 19:13:36 +07:00
|
|
|
install(FILES ${KERNEL} DESTINATION obliteration.app/Contents/Resources)
|
2023-08-05 19:04:58 +07:00
|
|
|
else()
|
2024-07-14 19:13:36 +07:00
|
|
|
install(FILES ${KERNEL} TYPE DATA)
|
2023-08-05 19:04:58 +07:00
|
|
|
endif()
|