all repos — mgba @ 9f6837da422c9f7b1a83e6ace63b23a2a8f1e393

mGBA Game Boy Advance Emulator

src/platform/3ds/CMakeLists.txt (view raw)

  1set(USE_VFS_3DS ON CACNE BOOL "Use 3DS-specific file support")
  2mark_as_advanced(USE_VFS_3DS)
  3
  4find_program(3DSLINK 3dslink)
  5find_program(3DSXTOOL 3dsxtool)
  6find_program(BANNERTOOL bannertool)
  7find_program(MAKEROM makerom)
  8find_program(PICASSO picasso)
  9find_program(RAW2C raw2c)
 10find_program(STRIP ${cross_prefix}strip)
 11
 12set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-format" PARENT_SCOPE)
 13set(OS_DEFINES COLOR_16_BIT COLOR_5_6_5 IOAPI_NO_64)
 14
 15include_directories(${CMAKE_CURRENT_BINARY_DIR})
 16list(APPEND OS_LIB ctru)
 17file(GLOB OS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/3ds-*.c ${CMAKE_CURRENT_SOURCE_DIR}/ctru-heap.c)
 18set(OS_SRC ${OS_SRC} PARENT_SCOPE)
 19set(OS_LIB ${OS_LIB} PARENT_SCOPE)
 20source_group("3DS-specific code" FILES ${OS_SRC})
 21
 22if(USE_VFS_3DS)
 23	list(APPEND OS_DEFINES USE_VFS_3DS)
 24else()
 25	list(APPEND OS_DEFINES USE_VFS_FILE)
 26	list(APPEND CORE_VFS_SRC ${CMAKE_SOURCE_DIR}/src/util/vfs/vfs-file.c ${CMAKE_SOURCE_DIR}/src/util/vfs/vfs-dirent.c)
 27endif()
 28set(CORE_VFS_SRC ${CORE_VFS_SRC} PARENT_SCOPE)
 29set(OS_DEFINES ${OS_DEFINES} PARENT_SCOPE)
 30
 31list(APPEND GUI_SRC
 32	${CMAKE_CURRENT_BINARY_DIR}/icons.c
 33	${CMAKE_CURRENT_BINARY_DIR}/font.c
 34	${CMAKE_CURRENT_BINARY_DIR}/uishader.c
 35	${CMAKE_CURRENT_BINARY_DIR}/uishader.h
 36	${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin.h
 37
 38	${CMAKE_CURRENT_SOURCE_DIR}/gui-font.c
 39	${CMAKE_CURRENT_SOURCE_DIR}/ctr-gpu.c
 40	${CMAKE_CURRENT_SOURCE_DIR}/ctr-gpu.h)
 41
 42set_source_files_properties(
 43	${CMAKE_CURRENT_BINARY_DIR}/icons.c
 44	${CMAKE_CURRENT_BINARY_DIR}/font.c
 45	${CMAKE_CURRENT_BINARY_DIR}/uishader.c
 46	${CMAKE_CURRENT_BINARY_DIR}/uishader.h
 47	${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin.h
 48	PROPERTIES GENERATED ON)
 49add_executable(${BINARY_NAME}.elf ${GUI_SRC} main.c)
 50set_target_properties(${BINARY_NAME}.elf PROPERTIES COMPILE_DEFINITIONS "${OS_DEFINES};${FEATURE_DEFINES};${FUNCTION_DEFINES}")
 51target_link_libraries(${BINARY_NAME}.elf ${BINARY_NAME} ${M_LIBRARY} ${OS_LIB})
 52
 53add_custom_command(OUTPUT ${BINARY_NAME}.smdh
 54                   COMMAND ${BANNERTOOL} makesmdh -s "${PROJECT_NAME}" -l "${SUMMARY}" -p "endrift" -i ${CMAKE_SOURCE_DIR}/res/mgba-48.png -o ${BINARY_NAME}.smdh
 55                   DEPENDS ${CMAKE_SOURCE_DIR}/res/mgba-48.png)
 56
 57add_custom_command(OUTPUT ${BINARY_NAME}.bnr
 58                   COMMAND ${BANNERTOOL} makebanner -i ${CMAKE_CURRENT_SOURCE_DIR}/logo.png -a ${CMAKE_CURRENT_SOURCE_DIR}/bios.wav -o ${BINARY_NAME}.bnr
 59                   DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/logo.png ${CMAKE_CURRENT_SOURCE_DIR}/bios.wav)
 60
 61add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/font.c
 62                   COMMAND ${RAW2C} ${CMAKE_SOURCE_DIR}/src/platform/3ds/font.raw
 63                   DEPENDS ${CMAKE_SOURCE_DIR}/src/platform/3ds/font.raw)
 64
 65add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/icons.c
 66                   COMMAND ${RAW2C} ${CMAKE_SOURCE_DIR}/src/platform/3ds/icons.raw
 67                   DEPENDS ${CMAKE_SOURCE_DIR}/src/platform/3ds/icons.raw)
 68
 69add_custom_command(
 70	OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin ${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin.h
 71	MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/uishader.vsh
 72	COMMAND ${PICASSO}
 73		-o ${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin
 74		-h ${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin.h
 75		${CMAKE_CURRENT_SOURCE_DIR}/uishader.vsh
 76	COMMENT "picasso uishader.vsh")
 77
 78add_custom_command(
 79	OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/uishader.c ${CMAKE_CURRENT_BINARY_DIR}/uishader.h
 80	MAIN_DEPENDENCY ${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin
 81	COMMAND ${RAW2C} ${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin
 82	WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
 83	COMMENT "raw2c uishader.shbin")
 84
 85add_custom_target(${BINARY_NAME}.3dsx ALL
 86                  ${3DSXTOOL} ${BINARY_NAME}.elf ${BINARY_NAME}.3dsx --smdh=${BINARY_NAME}.smdh
 87                  DEPENDS ${BINARY_NAME}.elf ${BINARY_NAME}.smdh)
 88
 89add_custom_target(${BINARY_NAME}.cia ALL
 90                  ${STRIP} -o ${BINARY_NAME}-stripped.elf ${BINARY_NAME}.elf
 91                  COMMAND ${MAKEROM} -f cia -o ${BINARY_NAME}.cia -rsf cia.rsf -target t -exefslogo -elf ${BINARY_NAME}-stripped.elf -icon ${BINARY_NAME}.smdh -banner ${BINARY_NAME}.bnr
 92                  DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/cia.rsf ${BINARY_NAME}.elf ${BINARY_NAME}.smdh ${BINARY_NAME}.bnr)
 93
 94add_custom_target(run ${3DSLINK} ${CMAKE_CURRENT_BINARY_DIR}/${BINARY_NAME}.3dsx
 95                  DEPENDS ${BINARY_NAME}.3dsx)
 96
 97if(BUILD_PERF)
 98	add_custom_target(${BINARY_NAME}-perf.3dsx ALL
 99	                  ${3DSXTOOL} ../${BINARY_NAME}-perf ${BINARY_NAME}-perf.3dsx --smdh=${BINARY_NAME}.smdh
100	                  DEPENDS ${BINARY_NAME}-perf ${BINARY_NAME}.smdh)
101endif()
102
103configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cia.rsf.in ${CMAKE_CURRENT_BINARY_DIR}/cia.rsf)
104install(FILES
105	    ${CMAKE_CURRENT_BINARY_DIR}/${BINARY_NAME}.3dsx
106	    ${CMAKE_CURRENT_BINARY_DIR}/${BINARY_NAME}.smdh
107	    ${CMAKE_CURRENT_BINARY_DIR}/${BINARY_NAME}.cia
108	    DESTINATION . COMPONENT ${BINARY_NAME}-3ds)