mirror of
https://github.com/N64Recomp/N64ModernRuntime.git
synced 2025-12-19 06:22:29 +00:00
* Added miniz and implemented mod manifest loading from zip * Add more mod loading error enums * Added ability to load mods from directories instead of zip files * Added validation for mod contents and mod load error strings * Add checks for required fields existing in manifest * Renamed load_mod to open_mod and ModLoadError to ModOpenError * Made rdram size an argument in recomp::start, reorganized some PI address constants * Add N64Recomp as submodule and initial mod loading (temporarily using a DLL instead of Lua recompilation) * Created ModContext and exposed functionality for searching mod folders, activating mods, and loading active mods * Implemented per-game mod contexts * Add duplicate mod detection * Added function conflict detection, recovery from failed mod loading and message box with load errors * Update N64Recomp for new modding infrastructure, begin adding support for offline compiled mods * Reorganized mod loading, added mod dependency validation * Reorganized mod code handle code * Implement importing functions from other mods * Implement mod events and callbacks * Add support for creating events in patches * Add support for exporting functions from native libraries in mods * Removed per-game mod subdirectories and added the mod's corresponding game id to the manifest * Added version parsing with version number as argument to recomp initialization and minimum recomp versions for mods * Changed mod binary and mod symbol files to use fixed paths, removed them from the manifest * Expose function for getting the details for currently opened mods * Add dependencies and authors to manifest and update N64Recomp submodule * Implement mod loading on posix systems * Implement mip32 relocs for mod loading and add mod functions to function lookup table * Add CPU architecture detection and gate current mod function hooking behind x86_64 define * Fix build on compilers that don't properly support aggregate initialization * Fix compilation on ARM64 and Apple * Fix compilation on MacOS x86_64 * Update N64Recomp commit after merge * Fix whitespace in game.hpp
56 lines
2 KiB
CMake
56 lines
2 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
|
|
project(librecomp)
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
# Define the library
|
|
add_library(librecomp STATIC
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/ai.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/cont.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/dp.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/eep.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/euc-jp.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/files.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/flash.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/math_routines.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/mods.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/mod_events.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/mod_manifest.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/overlays.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/pak.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/pi.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/print.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/recomp.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/rsp.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/sp.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/ultra_stubs.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/ultra_translation.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/src/vi.cpp")
|
|
|
|
target_include_directories(librecomp PUBLIC
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/include"
|
|
"${PROJECT_SOURCE_DIR}/../ultramodern/include"
|
|
"${PROJECT_SOURCE_DIR}/../thirdparty"
|
|
"${PROJECT_SOURCE_DIR}/../thirdparty/concurrentqueue"
|
|
)
|
|
target_include_directories(librecomp PRIVATE
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/include/librecomp"
|
|
)
|
|
|
|
target_compile_options(librecomp PRIVATE
|
|
# -Wall
|
|
# -Wextra
|
|
-Wno-unused-parameter
|
|
)
|
|
|
|
if (WIN32)
|
|
add_compile_definitions(NOMINMAX)
|
|
endif()
|
|
|
|
add_subdirectory(${PROJECT_SOURCE_DIR}/../thirdparty/miniz ${CMAKE_CURRENT_BINARY_DIR}/miniz)
|
|
add_subdirectory(${PROJECT_SOURCE_DIR}/../N64Recomp ${CMAKE_CURRENT_BINARY_DIR}/N64Recomp EXCLUDE_FROM_ALL)
|
|
|
|
target_link_libraries(librecomp PRIVATE ultramodern N64Recomp)
|
|
target_link_libraries(librecomp PUBLIC miniz)
|