mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-05-17 17:16:34 +00:00
Some checks are pending
CI / clang-format (push) Waiting to run
CI / ${{ matrix.name }} (false, --toolchain $GITHUB_WORKSPACE/CMake/i586-pc-msdosdjgpp.cmake, false, true, false, Ninja, DOS, ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, --toolchain /usr/local/vitasdk/share/vita.toolchain.cmake, false, false, Ninja, Vita, ubuntu-latest, true, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0.26100.0, false, false, Visual Studio 17 2022, true, Xbox One, windows-latest, amd64, false, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake, false, devkitpro/devkitarm:latest, false, Ninja, true, Nintendo 3DS, ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake, false, devkitpro/devkita64:latest, false, Ninja, Nintendo Switch, true, ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, emcmake, false, false, true, Ninja, Emscripten, ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (false, false, false, Ninja, true, MSVC (arm64), windows-latest, amd64_arm64, false) (push) Waiting to run
CI / ${{ matrix.name }} (false, false, true, Ninja, true, MSVC (x86), windows-latest, amd64_x86, false) (push) Waiting to run
CI / ${{ matrix.name }} (false, true, false, Ninja, true, MSVC (x64), windows-latest, amd64, false) (push) Waiting to run
CI / ${{ matrix.name }} (false, true, true, false, Ninja, true, MSVC (x64 Debug), windows-latest, amd64, false) (push) Waiting to run
CI / ${{ matrix.name }} (true, false, -DCMAKE_SYSTEM_NAME=iOS, false, false, Xcode, true, iOS, macos-15, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, false, false, false, Ninja, Android, ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, false, true, false, Ninja, macOS, macos-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, true, false, Ninja, true, mingw-w64-x86_64, mingw64, msys2 mingw64, windows-latest, msys2 {0}, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, true, true, false, Ninja, true, Linux (Debug), ubuntu-latest, true) (push) Waiting to run
CI / ${{ matrix.name }} (true, true, true, false, Ninja, true, Linux, ubuntu-latest, true) (push) Waiting to run
CI / FreeBSD (push) Waiting to run
CI / Flatpak (${{ matrix.arch }}) (aarch64, ubuntu-22.04-arm) (push) Waiting to run
CI / Flatpak (${{ matrix.arch }}) (x86_64, ubuntu-latest) (push) Waiting to run
CI / C++ (push) Waiting to run
CI / Release (push) Blocked by required conditions
Docker / Publish web port (push) Waiting to run
Co-authored-by: Anonymous Maarten <anonymous.maarten@gmail.com>
143 lines
5.2 KiB
CMake
143 lines
5.2 KiB
CMake
set(CMAKE_C_CLANG_TIDY)
|
|
set(CMAKE_CXX_CLANG_TIDY)
|
|
|
|
if(DOWNLOAD_DEPENDENCIES)
|
|
include(FetchContent)
|
|
FetchContent_Declare(
|
|
miniaudio
|
|
URL https://github.com/mackron/miniaudio/archive/refs/tags/0.11.25.tar.gz
|
|
URL_HASH MD5=6fae6da8f30afb3ddcba26fcaa64f540
|
|
)
|
|
block()
|
|
set(BUILD_SHARED_LIBS OFF)
|
|
FetchContent_MakeAvailable(miniaudio)
|
|
endblock()
|
|
else()
|
|
add_library(miniaudio STATIC
|
|
miniaudio/extras/miniaudio_split/miniaudio.c
|
|
)
|
|
target_include_directories(miniaudio PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/miniaudio/extras/miniaudio_split")
|
|
endif()
|
|
|
|
# Disable most features since we don't need them.
|
|
target_compile_definitions(miniaudio PUBLIC
|
|
MA_ENABLE_ONLY_SPECIFIC_BACKENDS
|
|
MA_NO_DECODING
|
|
MA_NO_ENCODING
|
|
MA_NO_WAV
|
|
MA_NO_FLAC
|
|
MA_NO_MP3
|
|
MA_NO_DEVICE_IO
|
|
MA_NO_RESOURCE_MANAGER
|
|
MA_NO_GENERATION
|
|
MA_NO_THREADING
|
|
MA_NO_RUNTIME_LINKING
|
|
)
|
|
|
|
if(DJGPP)
|
|
# DOS is single-threaded so we provide non-atomic __atomic_*_8 stubs
|
|
# (see CMakeLists.txt top-level comment about -march=i486).
|
|
target_sources(miniaudio PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/djgpp_atomic64.c")
|
|
endif()
|
|
|
|
if(DOWNLOAD_DEPENDENCIES)
|
|
include(FetchContent)
|
|
FetchContent_Declare(
|
|
libsmacker
|
|
URL https://github.com/foxtacles/libsmacker/archive/b3d4e97e0c95d5259d858495a5addd2d93bce5f4.tar.gz
|
|
URL_MD5 7f822319c489ec1a8e41c9f1e2629195
|
|
)
|
|
FetchContent_MakeAvailable(libsmacker)
|
|
else()
|
|
set(libsmacker_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libsmacker")
|
|
endif()
|
|
|
|
add_library(libsmacker STATIC
|
|
${libsmacker_SOURCE_DIR}/smacker.c
|
|
)
|
|
target_include_directories(libsmacker PUBLIC ${libsmacker_SOURCE_DIR})
|
|
|
|
if(DOWNLOAD_DEPENDENCIES)
|
|
include(FetchContent)
|
|
FetchContent_Populate(
|
|
libweaver
|
|
URL https://github.com/isledecomp/SIEdit/archive/17c7736a6ff31413f1e74ab4e989011b545b6926.tar.gz
|
|
URL_MD5 04edbc974df8884f283d920ded10f1f6
|
|
)
|
|
add_library(libweaver STATIC
|
|
${libweaver_SOURCE_DIR}/lib/core.cpp
|
|
${libweaver_SOURCE_DIR}/lib/file.cpp
|
|
${libweaver_SOURCE_DIR}/lib/interleaf.cpp
|
|
${libweaver_SOURCE_DIR}/lib/object.cpp
|
|
${libweaver_SOURCE_DIR}/lib/sitypes.cpp
|
|
)
|
|
add_library(libweaver::libweaver ALIAS libweaver)
|
|
target_compile_definitions(libweaver PRIVATE $<$<BOOL:${WIN32}>:NOMINMAX>)
|
|
target_include_directories(libweaver PUBLIC ${libweaver_SOURCE_DIR}/include/libweaver)
|
|
set_property(TARGET libweaver PROPERTY CXX_STANDARD 98)
|
|
set_property(TARGET libweaver PROPERTY CXX_STANDARD_REQUIRED ON)
|
|
endif()
|
|
|
|
if(ISLE_USE_LWS)
|
|
if(DOWNLOAD_DEPENDENCIES)
|
|
include(FetchContent)
|
|
|
|
# Fetch mbedTLS for TLS/WSS support in libwebsockets
|
|
FetchContent_Declare(
|
|
mbedtls
|
|
URL https://github.com/Mbed-TLS/mbedtls/releases/download/mbedtls-3.6.5/mbedtls-3.6.5.tar.bz2
|
|
URL_MD5 bc79602daf85f1cf35a686b53056de58
|
|
# Patch cmake_minimum_required to avoid deprecation error with -Werror=dev
|
|
PATCH_COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/patch_mbedtls_cmake.cmake
|
|
)
|
|
block()
|
|
set(ENABLE_TESTING OFF CACHE BOOL "" FORCE)
|
|
set(ENABLE_PROGRAMS OFF CACHE BOOL "" FORCE)
|
|
set(MBEDTLS_FATAL_WARNINGS OFF CACHE BOOL "" FORCE)
|
|
set(BUILD_SHARED_LIBS OFF)
|
|
FetchContent_MakeAvailable(mbedtls)
|
|
|
|
# Point lws at the mbedTLS targets so it skips its own find logic
|
|
# Must be inside block() to access mbedtls_SOURCE_DIR/mbedtls_BINARY_DIR
|
|
set(LWS_MBEDTLS_INCLUDE_DIRS
|
|
"${mbedtls_SOURCE_DIR}/include;${mbedtls_BINARY_DIR}/include"
|
|
CACHE STRING "" FORCE
|
|
)
|
|
set(LWS_MBEDTLS_LIBRARIES
|
|
"mbedtls;mbedx509;mbedcrypto"
|
|
CACHE STRING "" FORCE
|
|
)
|
|
endblock()
|
|
|
|
FetchContent_Declare(
|
|
libwebsockets
|
|
GIT_REPOSITORY "https://github.com/warmcat/libwebsockets.git"
|
|
GIT_TAG "v4.5-stable"
|
|
EXCLUDE_FROM_ALL
|
|
)
|
|
block()
|
|
set(LWS_WITH_SSL ON CACHE BOOL "" FORCE)
|
|
set(LWS_WITH_MBEDTLS ON CACHE BOOL "" FORCE)
|
|
set(LWS_WITH_EXPORT_LWSTARGETS OFF CACHE BOOL "" FORCE)
|
|
# mbedTLS isn't built yet at configure time, so lws's check_function_exists
|
|
# calls fail. Pre-set the results for APIs that exist in mbedTLS 3.x.
|
|
set(LWS_HAVE_mbedtls_md_setup 1 CACHE INTERNAL "" FORCE)
|
|
set(LWS_HAVE_mbedtls_rsa_complete 1 CACHE INTERNAL "" FORCE)
|
|
set(LWS_WITH_SHARED OFF CACHE BOOL "" FORCE)
|
|
set(LWS_WITH_STATIC ON CACHE BOOL "" FORCE)
|
|
set(LWS_WITHOUT_TESTAPPS ON CACHE BOOL "" FORCE)
|
|
set(LWS_WITH_MINIMAL_EXAMPLES OFF CACHE BOOL "" FORCE)
|
|
# Disable treating warnings as errors in libwebsockets (GCC/Clang)
|
|
set(DISABLE_WERROR ON CACHE BOOL "" FORCE)
|
|
FetchContent_MakeAvailable(libwebsockets)
|
|
endblock()
|
|
# Disable MSVC /WX (warnings as errors) that lws sets unconditionally
|
|
if(TARGET websockets AND MSVC)
|
|
target_compile_options(websockets PRIVATE /WX-)
|
|
endif()
|
|
else()
|
|
find_package(Libwebsockets REQUIRED)
|
|
endif()
|
|
endif()
|
|
|