summaryrefslogtreecommitdiff
path: root/src/wiiu/CMakeLists.txt
diff options
context:
space:
mode:
authorCrementif <26669564+Crementif@users.noreply.github.com>2026-05-20 19:58:23 +0200
committerCrementif <26669564+Crementif@users.noreply.github.com>2026-05-21 23:18:21 +0200
commit5190527369bd879a7182eaa39171780b38313c15 (patch)
tree59a6297e0c23cdb57658bd6b56f9119101f729b5 /src/wiiu/CMakeLists.txt
parentf293e2d46492ed9221a3864fdd6613f263cf5bef (diff)
Update Wii U IDA loader to IDA 9.3
Diffstat (limited to 'src/wiiu/CMakeLists.txt')
-rw-r--r--src/wiiu/CMakeLists.txt71
1 files changed, 53 insertions, 18 deletions
diff --git a/src/wiiu/CMakeLists.txt b/src/wiiu/CMakeLists.txt
index 1f472ff..0d723cc 100644
--- a/src/wiiu/CMakeLists.txt
+++ b/src/wiiu/CMakeLists.txt
@@ -1,28 +1,63 @@
-cmake_minimum_required(VERSION 2.8)
-project(wiiuldr)
+cmake_minimum_required(VERSION 3.27)
+project(wiiuldr LANGUAGES CXX)
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/../../cmake)
-set(ELF_COMMON_PATH ${CMAKE_SOURCE_DIR}/../elf_common)
-set(THIRD_PARTY_PATH ${CMAKE_SOURCE_DIR}../../third_party)
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+set(REPO_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../..")
+set(ELF_COMMON_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../elf_common")
+set(IDA_SDK_ROOT "${REPO_ROOT}/third_party/ida-sdk/src")
+set(IDA_INCLUDE_DIR "${IDA_SDK_ROOT}/include")
+set(IDA_LOADER_DIR "${IDA_SDK_ROOT}/ldr")
+set(IDA_LIBRARY "${IDA_SDK_ROOT}/lib/x64_win_64/ida.lib")
+
+if(NOT EXISTS "${IDA_INCLUDE_DIR}/ida.hpp")
+ message(FATAL_ERROR
+ "The ida-sdk submodule was not found at ${IDA_SDK_ROOT}. "
+ "Initialize submodules before configuring this project.")
+endif()
+
+if(NOT EXISTS "${IDA_LIBRARY}")
+ message(FATAL_ERROR
+ "The 64-bit Windows IDA import library was not found at ${IDA_LIBRARY}.")
+endif()
+
+if(NOT MSVC)
+ message(FATAL_ERROR "The Wii U loader is configured for Visual Studio/MSVC builds.")
+endif()
+
+if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
+ message(FATAL_ERROR "Build the Wii U loader with a 64-bit generator (-A x64).")
+endif()
set(SOURCES
- ${ELF_COMMON_PATH}/elf_reader.h
- ${ELF_COMMON_PATH}/elf.h
- tinfl.c
- cafe_loader.cpp
+ "${ELF_COMMON_PATH}/elf_reader.h"
+ "${ELF_COMMON_PATH}/elf.h"
+ cafe.h
cafe_loader.h
+ cafe_loader.cpp
wiiu.cpp
- cafe.h
)
-find_package(IDA)
+add_library(wiiuldr SHARED ${SOURCES})
-include_directories(${IDA_INCLUDE_DIR})
-include_directories(${IDA_SDK_PATH}/ldr)
-include_directories(${ELF_COMMON_PATH})
+target_include_directories(wiiuldr PRIVATE
+ "${IDA_INCLUDE_DIR}"
+ "${IDA_LOADER_DIR}"
+ "${ELF_COMMON_PATH}"
+)
-add_definitions(${IDA_DEFINITIONS})
+target_compile_definitions(wiiuldr PRIVATE
+ __IDP__
+ __EA64__
+)
-add_library(wiiuldr SHARED ${SOURCES})
-target_link_libraries(wiiuldr ${IDA_LIBRARIES})
-set_target_properties(wiiuldr PROPERTIES OUTPUT_NAME "wiiu" PREFIX "" SUFFIX "${IDA_PLUGIN_EXT}") \ No newline at end of file
+target_link_libraries(wiiuldr PRIVATE "${IDA_LIBRARY}")
+
+set_target_properties(wiiuldr PROPERTIES
+ MSVC_RUNTIME_LIBRARY "MultiThreadedDLL"
+ OUTPUT_NAME "wiiu"
+ PREFIX ""
+ SUFFIX ".dll"
+)