| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- # SPDX-FileCopyrightText: 2018 yuzu Emulator Project
- # SPDX-FileCopyrightText: 2024 suyu 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_helpers.h
- atomic_ops.h
- bit_cast.h
- bit_field.h
- bit_set.h
- bit_util.h
- bounded_threadsafe_queue.h
- cityhash.cpp
- cityhash.h
- common_funcs.h
- common_precompiled_headers.h
- common_types.h
- concepts.h
- container_hash.h
- demangle.cpp
- demangle.h
- detached_tasks.cpp
- detached_tasks.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/backend.cpp
- logging/backend.h
- logging/filter.cpp
- logging/filter.h
- logging/formatter.h
- logging/log.h
- logging/log_entry.h
- logging/text_formatter.cpp
- logging/text_formatter.h
- logging/types.h
- lz4_compression.cpp
- lz4_compression.h
- make_unique_for_overwrite.h
- math_util.h
- memory_detect.cpp
- memory_detect.h
- microprofile.cpp
- microprofile.h
- microprofileui.h
- multi_level_page_table.cpp
- multi_level_page_table.h
- nvidia_flags.cpp
- nvidia_flags.h
- overflow.h
- page_table.cpp
- page_table.h
- param_package.cpp
- param_package.h
- parent_of_member.h
- point.h
- precompiled_headers.h
- quaternion.h
- range_map.h
- range_mutex.h
- range_sets.h
- range_sets.inc
- reader_writer_queue.h
- 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.cpp
- 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
- 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
- )
- if (SUYU_ENABLE_PORTABLE)
- add_compile_definitions(SUYU_ENABLE_PORTABLE)
- endif()
- 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/applets/software_keyboard.cpp
- android/applets/software_keyboard.h
- )
- endif()
- if (UNIX AND NOT APPLE)
- target_sources(common PRIVATE
- linux/gamemode.cpp
- linux/gamemode.h
- )
- target_link_libraries(common PRIVATE gamemode::headers)
- 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 (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_BUILD_TYPE MATCHES "Debug")
- set_property(
- SOURCE stb.cpp
- APPEND
- PROPERTY COMPILE_OPTIONS ";-O2"
- )
- endif()
- endif()
- if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
- target_compile_options(common PRIVATE
- -fsized-deallocation
- -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()
- target_link_libraries(common PUBLIC Boost::context Boost::headers fmt::fmt microprofile stb::headers Threads::Threads)
- target_link_libraries(common PRIVATE lz4::lz4 zstd::zstd LLVM::Demangle)
- if (ANDROID)
- # For ASharedMemory_create
- target_link_libraries(common PRIVATE android)
- endif()
- if (SUYU_USE_PRECOMPILED_HEADERS)
- target_precompile_headers(common PRIVATE precompiled_headers.h)
- endif()
- create_target_directory_groups(common)
|