From a67288f62e5466987acb7d29c39aec981965655a Mon Sep 17 00:00:00 2001 From: Matt Penny Date: Tue, 24 Sep 2024 01:01:57 -0400 Subject: [PATCH] Add barebones N64 CMake toolchain files Just focus on compilation for now --- cmake/toolchain_libultra.cmake | 9 +++++++++ cmake/toolchain_n64.cmake | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 cmake/toolchain_libultra.cmake create mode 100644 cmake/toolchain_n64.cmake diff --git a/cmake/toolchain_libultra.cmake b/cmake/toolchain_libultra.cmake new file mode 100644 index 0000000..a7ff50f --- /dev/null +++ b/cmake/toolchain_libultra.cmake @@ -0,0 +1,9 @@ +include("${CMAKE_CURRENT_LIST_DIR}/toolchain_n64.cmake") +set(LIBULTRA TRUE) + +set(LIBULTRA_INCLUDE_DIRS + "${N64_TOOLCHAIN_PREFIX}/usr/include/n64" + "${N64_TOOLCHAIN_PREFIX}/usr/include/n64/PR" +) + +# TODO: libs diff --git a/cmake/toolchain_n64.cmake b/cmake/toolchain_n64.cmake new file mode 100644 index 0000000..237f1fa --- /dev/null +++ b/cmake/toolchain_n64.cmake @@ -0,0 +1,21 @@ +set(CMAKE_SYSTEM_NAME Generic) + +set(N64_TOOLCHAIN_PREFIX "" CACHE PATH "Root directory of N64 toolchain") +set(N64_BIN_DIR "${N64_TOOLCHAIN_PREFIX}/bin") + +# Search for programs in the host environment +# Search for headers and libraries in the target environment +set(CMAKE_FIND_ROOT_PATH "${N64_TOOLCHAIN_PREFIX}") +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +# Ensure CMake can find toolchain during compiler tests +list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES N64_TOOLCHAIN_PREFIX) + +# Don't try to dynamically link during compiler tests +set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) + +# TODO: find assembler, linker, etc. +# TODO: set flags +find_program(CMAKE_C_COMPILER mips64-elf-gcc PATHS ${N64_BIN_DIR} REQUIRED)