set(GBDK_HOME "$ENV{GBDK_HOME}") if(NOT GBDK_HOME) set(GBDK_HOME "/opt/gbdk") message(STATUS "GBDK_HOME not set, using default: ${GBDK_HOME}") endif() # Use Linux to omit any unwanted file extension in the created ROM file set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_C_COMPILER lcc) set(CMAKE_C_COMPILER_FORCED TRUE) set(GBDK_INCLUDE_DIR ${GBDK_HOME}/include) set(GBDK_LIB_DIR ${GBDK_HOME}/lib) set(CMAKE_PROGRAM_PATH ${GBDK_HOME}/bin) set(CMAKE_INCLUDE_PATH ${GBDK_INCLUDE_DIR}) set(CMAKE_LIBRARY_PATH ${GBDK_LIB_DIR}) set(CMAKE_SYSTEM_INCLUDE_PATH ${GBDK_INCLUDE_DIR}) set(CMAKE_SYSTEM_LIBRARY_PATH ${GBDK_LIB_DIR}) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE) function(add_gb_rom target) set(GB_MBC_TYPE 0) if(ARGC GREATER_EQUAL 2) set(GB_MBC_TYPE ${ARGV1}) endif() set(GB_ROM_BANKS 2) if(ARGC GREATER_EQUAL 3) set(GB_ROM_BANKS ${ARGV2}) endif() set(GB_RAM_BANKS 0) if(ARGC GREATER_EQUAL 4) set(GB_RAM_BANKS ${ARGV3}) endif() set_target_properties(${target} PROPERTIES OUTPUT_NAME ${target} SUFFIX ".gb") target_compile_options(${target} PRIVATE -Wa-l -Wl-m -Wl-j -DUSE_SFR_FOR_REG) target_link_options(${target} PRIVATE "-Wl-yt${GB_MBC_TYPE}" "-Wl-yo${GB_ROM_BANKS}" "-Wl-ya${GB_RAM_BANKS}") endfunction()