# Hanafuda toolchain set(CMAKE_SYSTEM_NAME Hanafuda) # Set toolchain programs set(CMAKE_C_COMPILER hanafuda) set(CMAKE_CXX_COMPILER hanafuda++) set(CMAKE_C_LINK_EXECUTABLE ${CMAKE_C_COMPILER}) set(CMAKE_CXX_LINK_EXECUTABLE ${CMAKE_CXX_COMPILER}) # Set triple for CMake's identification set(triple powerpc-unknown-hanafuda-eabi) set(CMAKE_C_COMPILER_TARGET ${triple}) set(CMAKE_CXX_COMPILER_TARGET ${triple}) # Skip test compile (hanafuda has a somewhat unorthodox compiler workflow) set(CMAKE_C_COMPILER_FORCED TRUE) set(CMAKE_CXX_COMPILER_FORCED TRUE) # Compile a C file into an object file set(CMAKE_C_COMPILE_OBJECT "<CMAKE_C_COMPILER> -c <INCLUDES> <FLAGS> -o <OBJECT> <SOURCE>") set(CMAKE_CXX_COMPILE_OBJECT "<CMAKE_CXX_COMPILER> -c <INCLUDES> <FLAGS> -o <OBJECT> <SOURCE>") # Link object files to an executable set(CMAKE_C_LINK_EXECUTABLE "<CMAKE_C_COMPILER> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> -o <TARGET> <OBJECTS>") set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> -o <TARGET> <OBJECTS>") # Thing that doesn't work set(CMAKE_C_OUTPUT_EXTENSION ".o") set(CMAKE_CXX_OUTPUT_EXTENSION ".o") # Macro to get the required link arguments in place macro(add_hanafuda_executable name base_dol list_file) add_executable(${name} ${ARGN}) set_target_properties(${name} PROPERTIES LINK_FLAGS "--hanafuda-base-dol=${CMAKE_SOURCE_DIR}/${base_dol} \ --hanafuda-dol-symbol-list=${CMAKE_SOURCE_DIR}/${list_file}" SUFFIX ".dol") endmacro()