From 5e65414263bf3ee6d73d119e67fa7831853088ce Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Thu, 10 Mar 2016 14:21:39 -0500 Subject: [PATCH] build: Generate albums through cmake This is much more straightforward than having scons call a bash script. Signed-off-by: Anna Schumaker --- tests/CMakeLists.txt | 2 + tests/Music/CMakeLists.txt | 97 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 tests/Music/CMakeLists.txt diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index bcd91352..a0acea41 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -8,5 +8,7 @@ endif() list(REMOVE_ITEM core ${PROJECT_SOURCE_DIR}/core/file.c) list(APPEND corefiles ${PROJECT_SOURCE_DIR}/core/file.c) +add_subdirectory(Music/) + add_library(corelib OBJECT EXCLUDE_FROM_ALL ${core}) add_subdirectory(core/) diff --git a/tests/Music/CMakeLists.txt b/tests/Music/CMakeLists.txt new file mode 100644 index 00000000..d201d69e --- /dev/null +++ b/tests/Music/CMakeLists.txt @@ -0,0 +1,97 @@ + +find_program(FFMPEG_EXECUTABLE ffmpeg) +if ("${FFMPEG_EXECUTABLE}" STREQUAL "FFMPEG_EXECUTABLE-NOTFOUND") + message(FATAL_ERROR "ffmpeg not found!") +else() + message(STATUS "Found ffmpeg: ${FFMPEG_EXECUTABLE}") +endif() + +add_custom_target(generate) +add_dependencies(tests generate) + +set(loglevel quiet) +if (CONFIG_TESTING_VERBOSE) + set(loglevel warning) +endif() + +set(FFMPEG_ARGS -hide_banner -nostdin -f s16le -i /dev/zero -codec libvorbis -loglevel ${loglevel}) + +function(gen_track num len title) + set(track "${ALBUM}/${num} - ${title}.ogg") + add_custom_command(TARGET generate PRE_BUILD COMMAND + ${FFMPEG_EXECUTABLE} ${FFMPEG_ARGS} -t ${len} + -metadata TITLE=${title} + -metadata ARTIST=${ARTIST} + -metadata ALBUM=${ALBUM} + -metadata GENRE=${GENRE} + -metadata DATE=${YEAR} + -metadata TRACKNUMBER=${num} + "${track}" || true VERBATIM) +endfunction() + + +# +# Generate Hyrule Symphony album +# +add_custom_command(TARGET generate PRE_BUILD COMMAND mkdir -p Hyrule\ Symphony/) +set(ARTIST "Koji Kondo") +set(ALBUM "Hyrule Symphony") +set(YEAR 1998) +set(GENRE "Game") +gen_track(01 243 "Title Theme") +gen_track(02 130 "Kokiri Forest") +gen_track(03 227 "Hyrule Field") +gen_track(04 130 "Hyrule Castle") +gen_track(05 206 "Lon Lon Ranch") +gen_track(06 186 "Kakariko Village") +gen_track(07 178 "Death Mountain") +gen_track(08 221 "Zora's Domain") +gen_track(09 273 "Gerudo Valley") +gen_track(10 66 "Ganondorf") +gen_track(11 185 "Princess Zelda") +gen_track(12 232 "Ocarina Medley") +gen_track(13 288 "The Legend of Zelda Medley") + + +# +# Generate Ocarina of Time album +# +add_custom_command(TARGET generate PRE_BUILD COMMAND mkdir -p Ocarina\ of\ Time/) +set(ALBUM "Ocarina of Time") +set(YEAR 1998) +set(GENRE "Video Game") +gen_track(01 170 "Title Theme") +gen_track(02 80 "Deku Tree") +gen_track(03 46 "Fairy Flying") +gen_track(04 71 "House") +gen_track(05 112 "Kokiri Forest") +gen_track(06 133 "Shop") +gen_track(07 134 "Battle") +gen_track(08 164 "Inside the Deku Tree") +gen_track(09 153 "Boss Battle") +gen_track(10 327 "Hyrule Field Main Theme") +gen_track(11 103 "Market") +gen_track(12 90 "Hyrule Castle Courtyard") +gen_track(13 62 "Ocarina Songs") +gen_track(14 101 "Ocarina of Time") +gen_track(15 271 "LonLon Ranch") +gen_track(16 204 "Kakariko Village") +gen_track(17 75 "Lost Woods") +gen_track(18 171 "Zora's Domain") +gen_track(19 72 "Great Fairy's Fountain") +gen_track(20 159 "Temple of Time") +gen_track(21 124 "Chamber of the Sages") +gen_track(22 98 "Horse Race") +gen_track(23 193 "Kakariko Village Orchestra") +gen_track(24 99 "Windmill Hut") +gen_track(25 172 "Gerudo Valley") +gen_track(26 147 "Ganondorf Battle") +gen_track(27 191 "Last Battle") +gen_track(28 34 "Zelda's Ocarina") +gen_track(29 433 "Staff Credits Theme") +gen_track(30 18 "Minuet of Forest") +gen_track(31 24 "Bolero of Fire") +gen_track(32 24 "Serenade of Water") +gen_track(33 25 "Nocturne of Shadow") +gen_track(34 23 "Prelude of Light") +gen_track(35 27 "Requiem of Spirit")