all repos — mgba @ 50402c830729f2ba5a6fc3e6facfd8b258f7f97d

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)
14
15include_directories(${CMAKE_CURRENT_BINARY_DIR})
16list(APPEND OS_LIB ctru)
17file(GLOB OS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/3ds-*.c)
18set(OS_SRC ${OS_SRC} PARENT_SCOPE)
19source_group("3DS-specific code" FILES ${OS_SRC})
20
21if(USE_VFS_3DS)
22	list(APPEND OS_DEFINES USE_VFS_3DS)
23else()
24	list(APPEND OS_DEFINES USE_VFS_FILE)
25	list(APPEND VFS_SRC ${CMAKE_SOURCE_DIR}/src/util/vfs/vfs-file.c ${CMAKE_SOURCE_DIR}/src/util/vfs/vfs-dirent.c)
26endif()
27set(VFS_SRC ${VFS_SRC} PARENT_SCOPE)
28set(OS_DEFINES ${OS_DEFINES} PARENT_SCOPE)
29
30list(APPEND GUI_SRC
31	${CMAKE_CURRENT_BINARY_DIR}/font.c
32	${CMAKE_CURRENT_BINARY_DIR}/uishader.c
33	${CMAKE_CURRENT_BINARY_DIR}/uishader.h
34	${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin.h
35
36	${CMAKE_CURRENT_SOURCE_DIR}/gui-font.c
37	${CMAKE_CURRENT_SOURCE_DIR}/ctr-gpu.c
38	${CMAKE_CURRENT_SOURCE_DIR}/ctr-gpu.h)
39
40set_source_files_properties(
41	${CMAKE_CURRENT_BINARY_DIR}/font.c
42	${CMAKE_CURRENT_BINARY_DIR}/uishader.c
43	${CMAKE_CURRENT_BINARY_DIR}/uishader.h
44	${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin.h
45	PROPERTIES GENERATED ON)
46add_executable(${BINARY_NAME}.elf ${GUI_SRC} main.c ctru-heap.c)
47set_target_properties(${BINARY_NAME}.elf PROPERTIES COMPILE_DEFINITIONS "${OS_DEFINES};${FEATURE_DEFINES};${FUNCTION_DEFINES}")
48target_link_libraries(${BINARY_NAME}.elf ${BINARY_NAME} ${M_LIBRARY} ${OS_LIB})
49
50add_custom_command(OUTPUT ${BINARY_NAME}.smdh
51                   COMMAND ${BANNERTOOL} makesmdh -s "${PROJECT_NAME}" -l "${SUMMARY}" -p "endrift" -i ${CMAKE_SOURCE_DIR}/res/mgba-48.png -o ${BINARY_NAME}.smdh
52                   DEPENDS ${CMAKE_SOURCE_DIR}/res/mgba-48.png)
53
54add_custom_command(OUTPUT ${BINARY_NAME}.bnr
55                   COMMAND ${BANNERTOOL} makebanner -i ${CMAKE_CURRENT_SOURCE_DIR}/logo.png -a ${CMAKE_CURRENT_SOURCE_DIR}/bios.wav -o ${BINARY_NAME}.bnr
56                   DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/logo.png ${CMAKE_CURRENT_SOURCE_DIR}/bios.wav)
57
58add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/font.c
59                   COMMAND ${RAW2C} ${CMAKE_SOURCE_DIR}/src/platform/3ds/font.raw
60                   DEPENDS ${CMAKE_SOURCE_DIR}/src/platform/3ds/font.raw)
61
62add_custom_command(
63	OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin ${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin.h
64	MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/uishader.vsh
65	COMMAND ${PICASSO}
66		-o ${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin
67		-h ${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin.h
68		${CMAKE_CURRENT_SOURCE_DIR}/uishader.vsh
69	COMMENT "picasso uishader.vsh")
70
71add_custom_command(
72	OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/uishader.c ${CMAKE_CURRENT_BINARY_DIR}/uishader.h
73	MAIN_DEPENDENCY ${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin
74	COMMAND ${RAW2C} ${CMAKE_CURRENT_BINARY_DIR}/uishader.shbin
75	WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
76	COMMENT "raw2c uishader.shbin")
77
78add_custom_target(${BINARY_NAME}.3dsx ALL
79                  ${3DSXTOOL} ${BINARY_NAME}.elf ${BINARY_NAME}.3dsx --smdh=${BINARY_NAME}.smdh
80                  DEPENDS ${BINARY_NAME}.elf ${BINARY_NAME}.smdh)
81
82add_custom_target(${BINARY_NAME}.cia ALL
83                  ${STRIP} -o ${BINARY_NAME}-stripped.elf ${BINARY_NAME}.elf
84                  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
85                  DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/cia.rsf ${BINARY_NAME}.elf ${BINARY_NAME}.smdh ${BINARY_NAME}.bnr)
86
87add_custom_target(run ${3DSLINK} ${CMAKE_CURRENT_BINARY_DIR}/${BINARY_NAME}.3dsx
88                  DEPENDS ${BINARY_NAME}.3dsx)
89
90configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cia.rsf.in ${CMAKE_CURRENT_BINARY_DIR}/cia.rsf)
91install(FILES
92	    ${CMAKE_CURRENT_BINARY_DIR}/${BINARY_NAME}.3dsx
93	    ${CMAKE_CURRENT_BINARY_DIR}/${BINARY_NAME}.smdh
94	    ${CMAKE_CURRENT_BINARY_DIR}/${BINARY_NAME}.cia
95	    DESTINATION . COMPONENT ${BINARY_NAME}-3ds)