aboutsummaryrefslogtreecommitdiff
path: root/cmake/FindSameBoyBootRom.cmake
blob: 52f2e5a4522e2aab94b4787e3fd29c3f00b4f3e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#
# SAMEBOY_BOOTROM_SOURCES

find_package(SameBoy REQUIRED)
set(SAMEBOY_BOOTROM_PATH ${SAMEBOY_PATH}/BootROMs)

set(SAMEBOY_BOOTROM_VERSION "cgb_boot" CACHE STRING "")
set(SAMEBOY_BOOTROM_SIZE "2304" CACHE STRING "")
mark_as_advanced(SAMEBOY_BOOTROM_VERSION SAMEBOY_BOOTROM_SIZE)

add_executable(pb12 ${SAMEBOY_BOOTROM_PATH}/pb12.c)

find_program(RGBASM rgbasm REQUIRED)
find_program(RGBLINK rgblink REQUIRED)
find_program(RGBGFX rgbgfx REQUIRED)
find_program(DD dd REQUIRED)
mark_as_advanced(RGBASM RGBLINK RGBGFX DD)

# custom build step
add_custom_command(
    OUTPUT SameBoyLogo.pb12
    COMMAND
        ${RGBGFX} -Z -u -c embedded -o SameBoyLogo.2bpp ${SAMEBOY_BOOTROM_PATH}/SameBoyLogo.png
    COMMAND
        pb12 < SameBoyLogo.2bpp > SameBoyLogo.pb12
    MAIN_DEPENDENCY ${SAMEBOY_BOOTROM_PATH}/SameBoyLogo.png
    DEPENDS pb12
    VERBATIM
)

add_custom_command(
    OUTPUT ${SAMEBOY_BOOTROM_VERSION}.bin
    COMMAND
        ${RGBASM} -i ${SAMEBOY_BOOTROM_PATH} -o ${SAMEBOY_BOOTROM_VERSION}.tmp ${SAMEBOY_BOOTROM_PATH}/${SAMEBOY_BOOTROM_VERSION}.asm
    COMMAND
        ${RGBLINK} -o ${SAMEBOY_BOOTROM_VERSION}.tmp2 ${SAMEBOY_BOOTROM_VERSION}.tmp
    COMMAND
        ${DD} if=${SAMEBOY_BOOTROM_VERSION}.tmp2 of=${SAMEBOY_BOOTROM_VERSION}.bin count=1 bs=${SAMEBOY_BOOTROM_SIZE}
    DEPENDS SameBoyLogo.pb12
    VERBATIM
)

add_custom_target(sameboy_bootrom DEPENDS ${SAMEBOY_BOOTROM_VERSION}.bin)

add_custom_command(
    OUTPUT ${SAMEBOY_BOOTROM_VERSION}_bin.c
    COMMAND ${CMAKE_COMMAND}
    "-Dbin_in=${SAMEBOY_BOOTROM_VERSION}.bin"
    -P ${CMAKE_SOURCE_DIR}/cmake/FileEmbed.cmake
    DEPENDS ${SAMEBOY_BOOTROM_VERSION}.bin
    VERBATIM
)

list(APPEND
    SAMEBOY_BOOTROM_SOURCES
    ${SAMEBOY_BOOTROM_VERSION}_bin.c
)