diff options
Diffstat (limited to 'src/wiiu/CMakeLists.txt')
| -rw-r--r-- | src/wiiu/CMakeLists.txt | 71 |
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" +) |
