mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-06-09 10:53:44 -04:00
Checks latest release and opens a dialog containing the changelog, and allow the user to select a specific build to download. After downloading, it prompts the user to open it. On Windows, this just opens up the zip in File Explorer. In the future setup files will be available. On macOS this opens up the DMG in Finder so the user can drag it to the Applications folder. Android retains the auto-update functionality from before, but updated to the new scheme. Body/View on Forgejo are not implemented, that should be in a future PR. Additionally, moved some common httplib incantations to `Common::Net`. This will serve as the common network accessor and JSON parser from here on out. TODO: - [x] android :( - [x] Search for builds based on keywords, with weights towards certain builds (e.g. macOS will search for dmg then tar.gz, windows msvc then mingw/exe then zip, etc.) - [x] remove linux leftovers - [x] don't allow asset selection on platforms w/o assets - [x] nightly changelog should be in the real FUTURE IMPLEMENTATION: - [ ] Body/View on Forgejo for Android - [ ] Setup files for Windows (Eden/nightly are separate) -- maybe portable/setup selector? - [ ] Something else I'm forgetting Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3845
263 lines
6.4 KiB
CMake
263 lines
6.4 KiB
CMake
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project SPDX-License-Identifier:
|
|
# GPL-2.0-or-later
|
|
|
|
if(DEFINED ENV{AZURECIREPO})
|
|
set(BUILD_REPOSITORY $ENV{AZURECIREPO})
|
|
endif()
|
|
if(DEFINED ENV{TITLEBARFORMATIDLE})
|
|
set(TITLE_BAR_FORMAT_IDLE $ENV{TITLEBARFORMATIDLE})
|
|
endif()
|
|
if(DEFINED ENV{TITLEBARFORMATRUNNING})
|
|
set(TITLE_BAR_FORMAT_RUNNING $ENV{TITLEBARFORMATRUNNING})
|
|
endif()
|
|
if(DEFINED ENV{DISPLAYVERSION})
|
|
set(DISPLAY_VERSION $ENV{DISPLAYVERSION})
|
|
endif()
|
|
|
|
include(GenerateSCMRev)
|
|
|
|
add_library(
|
|
common STATIC
|
|
address_space.cpp
|
|
address_space.h
|
|
algorithm.h
|
|
alignment.h
|
|
announce_multiplayer_room.h
|
|
assert.cpp
|
|
assert.h
|
|
atomic_ops.h
|
|
bit_field.h
|
|
bit_util.h
|
|
bounded_threadsafe_queue.h
|
|
cityhash.cpp
|
|
cityhash.h
|
|
common_funcs.h
|
|
common_types.h
|
|
concepts.h
|
|
container_hash.h
|
|
demangle.cpp
|
|
demangle.h
|
|
detached_tasks.cpp
|
|
detached_tasks.h
|
|
device_power_state.cpp
|
|
device_power_state.h
|
|
div_ceil.h
|
|
dynamic_library.cpp
|
|
dynamic_library.h
|
|
elf.h
|
|
error.cpp
|
|
error.h
|
|
expected.h
|
|
fiber.cpp
|
|
fiber.h
|
|
fixed_point.h
|
|
free_region_manager.h
|
|
fs/file.cpp
|
|
fs/file.h
|
|
fs/fs.cpp
|
|
fs/fs.h
|
|
fs/fs_paths.h
|
|
fs/fs_types.h
|
|
fs/fs_util.cpp
|
|
fs/fs_util.h
|
|
fs/path_util.cpp
|
|
fs/path_util.h
|
|
hash.h
|
|
heap_tracker.cpp
|
|
heap_tracker.h
|
|
hex_util.cpp
|
|
hex_util.h
|
|
host_memory.cpp
|
|
host_memory.h
|
|
input.h
|
|
intrusive_red_black_tree.h
|
|
literals.h
|
|
logging.cpp
|
|
logging.h
|
|
lz4_compression.cpp
|
|
lz4_compression.h
|
|
make_unique_for_overwrite.h
|
|
math_util.h
|
|
memory_detect.cpp
|
|
memory_detect.h
|
|
multi_level_page_table.cpp
|
|
multi_level_page_table.h
|
|
overflow.h
|
|
page_table.cpp
|
|
page_table.h
|
|
param_package.cpp
|
|
param_package.h
|
|
parent_of_member.h
|
|
point.h
|
|
quaternion.h
|
|
range_map.h
|
|
range_mutex.h
|
|
range_sets.h
|
|
range_sets.inc
|
|
ring_buffer.h
|
|
${CMAKE_CURRENT_BINARY_DIR}/scm_rev.cpp
|
|
scm_rev.h
|
|
scope_exit.h
|
|
scratch_buffer.h
|
|
settings.cpp
|
|
settings.h
|
|
settings_common.cpp
|
|
settings_common.h
|
|
settings_enums.h
|
|
settings_input.cpp
|
|
settings_input.h
|
|
settings_setting.h
|
|
slot_vector.h
|
|
socket_types.h
|
|
spin_lock.h
|
|
stb.cpp
|
|
stb.h
|
|
steady_clock.cpp
|
|
steady_clock.h
|
|
stream.cpp
|
|
stream.h
|
|
string_util.cpp
|
|
string_util.h
|
|
swap.h
|
|
thread.cpp
|
|
thread.h
|
|
thread_queue_list.h
|
|
thread_worker.h
|
|
threadsafe_queue.h
|
|
time_zone.cpp
|
|
time_zone.h
|
|
tiny_mt.h
|
|
tree.h
|
|
typed_address.h
|
|
uint128.h
|
|
unique_function.h
|
|
random.cpp
|
|
random.h
|
|
uuid.cpp
|
|
uuid.h
|
|
vector_math.h
|
|
virtual_buffer.cpp
|
|
virtual_buffer.h
|
|
wall_clock.cpp
|
|
wall_clock.h
|
|
zstd_compression.cpp
|
|
zstd_compression.h
|
|
fs/ryujinx_compat.h fs/ryujinx_compat.cpp
|
|
fs/symlink.h fs/symlink.cpp
|
|
httplib.h
|
|
net/net.h net/net.cpp)
|
|
|
|
if(WIN32)
|
|
target_sources(common PRIVATE windows/timer_resolution.cpp
|
|
windows/timer_resolution.h)
|
|
target_link_libraries(common PRIVATE ntdll)
|
|
endif()
|
|
|
|
if(NOT WIN32)
|
|
target_sources(common PRIVATE signal_chain.cpp signal_chain.h)
|
|
endif()
|
|
|
|
if(ANDROID)
|
|
target_sources(
|
|
common
|
|
PUBLIC fs/fs_android.cpp
|
|
fs/fs_android.h
|
|
android/android_common.cpp
|
|
android/android_common.h
|
|
android/id_cache.cpp
|
|
android/id_cache.h
|
|
android/multiplayer/multiplayer.cpp
|
|
android/multiplayer/multiplayer.h
|
|
android/applets/software_keyboard.cpp
|
|
android/applets/software_keyboard.h
|
|
android/applets/web_browser.cpp
|
|
android/applets/web_browser.h)
|
|
endif()
|
|
|
|
if(ARCHITECTURE_x86_64)
|
|
target_sources(
|
|
common
|
|
PRIVATE x64/cpu_detect.cpp
|
|
x64/cpu_detect.h
|
|
x64/cpu_wait.cpp
|
|
x64/cpu_wait.h
|
|
x64/native_clock.cpp
|
|
x64/native_clock.h
|
|
x64/rdtsc.cpp
|
|
x64/rdtsc.h
|
|
x64/xbyak_abi.h
|
|
x64/xbyak_util.h)
|
|
target_link_libraries(common PRIVATE xbyak::xbyak)
|
|
endif()
|
|
|
|
if(HAS_NCE)
|
|
target_sources(common PRIVATE arm64/native_clock.cpp arm64/native_clock.h)
|
|
endif()
|
|
|
|
if(MSVC)
|
|
target_compile_definitions(
|
|
common
|
|
PRIVATE # The standard library doesn't provide any replacement for codecvt
|
|
# yet so we can disable this deprecation warning for the time being.
|
|
_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING)
|
|
target_compile_options(
|
|
common
|
|
PRIVATE /we4242 # 'identifier': conversion from 'type1' to 'type2', possible
|
|
# loss of data
|
|
/we4254 # 'operator': conversion from 'type1:field_bits' to
|
|
# 'type2:field_bits', possible loss of data
|
|
/we4800 # Implicit conversion from 'type' to bool. Possible
|
|
# information loss
|
|
)
|
|
else()
|
|
set_source_files_properties(
|
|
stb.cpp
|
|
PROPERTIES
|
|
COMPILE_OPTIONS
|
|
"-Wno-implicit-fallthrough;-Wno-missing-declarations;-Wno-missing-field-initializers")
|
|
|
|
# Get around GCC failing with intrinsics in Debug
|
|
if(CXX_GCC AND CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
set_property(
|
|
SOURCE stb.cpp
|
|
APPEND
|
|
PROPERTY COMPILE_OPTIONS ";-O2")
|
|
endif()
|
|
endif()
|
|
|
|
if(CXX_CLANG)
|
|
target_compile_options(common PRIVATE
|
|
$<$<COMPILE_LANGUAGE:C,CXX>:-fsized-deallocation>
|
|
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=unreachable-code-aggressive>)
|
|
target_compile_definitions(
|
|
common
|
|
PRIVATE
|
|
# Clang 14 and earlier have errors when explicitly instantiating
|
|
# Settings::Setting
|
|
$<$<VERSION_LESS:$<CXX_COMPILER_VERSION>,15>:CANNOT_EXPLICITLY_INSTANTIATE>)
|
|
endif()
|
|
|
|
if (BOOST_NO_HEADERS)
|
|
target_link_libraries(common PUBLIC Boost::algorithm Boost::icl Boost::pool)
|
|
else()
|
|
target_link_libraries(common PUBLIC Boost::headers)
|
|
endif()
|
|
|
|
target_link_libraries(common PUBLIC Boost::filesystem Boost::context httplib::httplib nlohmann_json::nlohmann_json)
|
|
|
|
if (lz4_ADDED)
|
|
target_include_directories(common PRIVATE ${lz4_SOURCE_DIR}/lib)
|
|
endif()
|
|
|
|
target_link_libraries(common PUBLIC fmt::fmt stb::headers Threads::Threads unordered_dense::unordered_dense)
|
|
target_link_libraries(common PRIVATE lz4::lz4 LLVM::Demangle zstd::zstd)
|
|
|
|
if(ANDROID)
|
|
# For ASharedMemory_create
|
|
target_link_libraries(common PRIVATE android)
|
|
endif()
|
|
|
|
create_target_directory_groups(common)
|