if(DEFINED ENV{DEVKITPRO}) set(DEVKITPRO $ENV{DEVKITPRO}) else() message(FATAL_ERROR "Could not find DEVKITPRO in environment") endif() if(DEFINED ENV{DEVKITA64}) set(DEVKITA64 $ENV{DEVKITA64}) else() set(DEVKITA64 ${DEVKITPRO}/devkitA64) endif() if(DEFINED ENV{LIBNX}) set(LIBNX $ENV{LIBNX}) else() set(LIBNX ${DEVKITPRO}/libnx) endif() set(extension) if (CMAKE_HOST_WIN32) set(extension .exe) endif() set(CMAKE_PROGRAM_PATH ${DEVKITA64}/bin) set(cross_prefix aarch64-none-elf-) set(arch_flags "-mtune=cortex-a57 -ffunction-sections -march=armv8-a -mtp=soft -fPIC -ftls-model=local-exec") set(inc_flags "-I${LIBNX}/include ${arch_flags}") set(link_flags "-L${LIBNX}/lib -lnx -specs=${LIBNX}/switch.specs ${arch_flags}") set(CMAKE_SYSTEM_NAME Generic CACHE INTERNAL "system name") set(CMAKE_SYSTEM_PROCESSOR aarch64 CACHE INTERNAL "processor") set(CMAKE_LIBRARY_ARCHITECTURE aarch64-none-elf CACHE INTERNAL "abi") find_program(CMAKE_AR ${cross_prefix}gcc-ar${extension}) find_program(CMAKE_RANLIB ${cross_prefix}gcc-ranlib${extension}) find_program(CMAKE_C_COMPILER ${cross_prefix}gcc${extension}) find_program(CMAKE_CXX_COMPILER ${cross_prefix}g++${extension}) find_program(CMAKE_ASM_COMPILER ${cross_prefix}gcc${extension}) find_program(CMAKE_LINKER ${cross_prefix}ld${extension}) set(CMAKE_C_FLAGS ${inc_flags} CACHE INTERNAL "c compiler flags") set(CMAKE_ASM_FLAGS ${inc_flags} CACHE INTERNAL "assembler flags") set(CMAKE_CXX_FLAGS ${inc_flags} CACHE INTERNAL "cxx compiler flags") SET(CMAKE_ASM_COMPILE_OBJECT " -o -c ") set(CMAKE_EXE_LINKER_FLAGS ${link_flags} CACHE INTERNAL "exe link flags") set(CMAKE_MODULE_LINKER_FLAGS ${link_flags} CACHE INTERNAL "module link flags") set(CMAKE_SHARED_LINKER_FLAGS ${link_flags} CACHE INTERNAL "shared link flags") set(CMAKE_FIND_ROOT_PATH ${DEVKITARM}/aarch64-none-elf ${DEVKITPRO}/portlibs/switch) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER CACHE INTERNAL "") set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY CACHE INTERNAL "") set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY CACHE INTERNAL "") set(PKG_CONFIG_EXECUTABLE "/dev/null" CACHE INTERNAL "" FORCE) set(SWITCH ON) add_definitions(-D__SWITCH__)