Skip to content

Commit 3e564ab

Browse files
authored
Merge pull request #2174 from timothyschoen/cmake-build
2 parents d5826f5 + e2ce7b7 commit 3e564ab

File tree

5 files changed

+67
-17
lines changed

5 files changed

+67
-17
lines changed

.github/workflows/c-cpp.yml

+43-9
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ jobs:
3838
cmake --build Build
3939
4040
- name: Upload Zip
41-
uses: actions/upload-artifact@v3
41+
uses: actions/upload-artifact@v4
4242
with:
43-
name: else
43+
name: else-linux
4444
path: ./Build/else
4545

4646
# ===============================================================
@@ -69,9 +69,9 @@ jobs:
6969
cmake --build Build
7070
7171
- name: Upload Zip
72-
uses: actions/upload-artifact@v3
72+
uses: actions/upload-artifact@v4
7373
with:
74-
name: else
74+
name: else-macos
7575
path: ./Build/else
7676

7777
# ===============================================================
@@ -88,8 +88,17 @@ jobs:
8888
name: "Install mingw deps"
8989
uses: msys2/setup-msys2@v2
9090
with:
91-
install: make mingw-w64-x86_64-gcc mingw64/mingw-w64-x86_64-cmake
92-
update: false
91+
install: make mingw-w64-x86_64-gcc mingw64/mingw-w64-x86_64-cmake mingw64/mingw-w64-x86_64-ccache
92+
cache: true
93+
94+
- name: Restore build cache
95+
uses: actions/cache/restore@v4
96+
with:
97+
path: D:/ccache
98+
key: ccache-windows-${{ github.run_id }}
99+
restore-keys: |
100+
ccache-windows-${{ github.sha }}
101+
ccache-windows-
93102
94103
- name: Get Pd
95104
shell: bash
@@ -102,16 +111,41 @@ jobs:
102111
- name: Configure pd-else
103112
shell: msys2 {0}
104113
run: |
105-
cmake -G"MSYS Makefiles" -BBuild -DPD_PATH=./pd
114+
cmake -GNinja -BBuild -DPD_PATH=./pd -DCMAKE_C_COMPILER_LAUNCHER="ccache" -DCMAKE_CXX_COMPILER_LAUNCHER="ccache"
106115
107116
- name: Build pd-else
108117
shell: msys2 {0}
109118
run: |
119+
export CCACHE_COMPRESS=1
120+
export CCACHE_COMPRESSLEVEL=6
121+
export CCACHE_MAXSIZE=1G
122+
export CCACHE_DIR=D:/ccache
110123
cmake --build Build
124+
ccache -s
111125
rm -rf ./Build/else/*.a
126+
env:
127+
CCACHE_COMPRESS: "1"
128+
CCACHE_COMPRESSLEVEL: "6"
129+
CCACHE_MAXSIZE: "1G"
130+
CCACHE_DIR: D:/ccache
131+
132+
- name: Save build cache
133+
uses: actions/cache/save@v4
134+
with:
135+
path: D:/ccache
136+
key: ccache-windows-${{ github.run_id }}
112137

113138
- name: Upload Zip
114-
uses: actions/upload-artifact@v3
139+
uses: actions/upload-artifact@v4
115140
with:
116-
name: else
141+
name: else-windows
117142
path: ./Build/else
143+
144+
merge:
145+
runs-on: ubuntu-latest
146+
needs: [Windows-Build, macOS-Build, Linux-Build]
147+
steps:
148+
- name: Merge Artifacts
149+
uses: actions/upload-artifact/merge@v4
150+
with:
151+
name: else

CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ file(GLOB tcl_files "${CMAKE_CURRENT_SOURCE_DIR}/Source/Extra/*.tcl")
8787
file(GLOB abstractions ${CMAKE_CURRENT_SOURCE_DIR}/Abstractions/Audio/*.pd ${CMAKE_CURRENT_SOURCE_DIR}/Abstractions/Control/*.pd ${CMAKE_CURRENT_SOURCE_DIR}/Abstractions/Extra/*)
8888
file(COPY ${pdf_help} ${extra_files} ${help_files} ${abstractions} ${tcl_files} ${lua_resources} DESTINATION ${PD_OUTPUT_PATH})
8989
file(COPY ${merda_files} DESTINATION ${PD_OUTPUT_PATH})
90-
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/Source/Audio/sfz~/sfz" DESTINATION ${PD_OUTPUT_PATH}/sfz)
90+
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/Source/Audio/sfz~/sfz" DESTINATION ${PD_OUTPUT_PATH})
9191
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/Documentation/Live-Electronics-Tutorial" DESTINATION ${PD_OUTPUT_PATH}/Live-Electronics-Tutorial)
9292
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE" DESTINATION ${PD_OUTPUT_PATH}/LICENSE)
9393
file(REMOVE_RECURSE ${PD_OUTPUT_PATH}/audio)

Source/Audio/play.file~/CMakeLists.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,15 @@ set(FFMPEG_LIBS
1818
"${FFMPEG_OUT_DIR}/libswresample/libswresample.a"
1919
)
2020

21+
message(STATUS "Configuring ffmpeg")
2122
execute_process(
2223
COMMAND tar xjf ./ffmpeg-7.0.1.tar.bz2 -C ${CMAKE_CURRENT_BINARY_DIR}
2324
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
2425
)
2526

2627
add_custom_command(
2728
OUTPUT ${FFMPEG_LIBS}
28-
COMMAND bash -c "${CMAKE_CURRENT_SOURCE_DIR}/build_ffmpeg.sh ${CMAKE_CURRENT_SOURCE_DIR}"
29+
COMMAND bash -c "${CMAKE_CURRENT_SOURCE_DIR}/build_ffmpeg.sh ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_C_COMPILER_LAUNCHER}"
2930
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
3031
COMMENT "Building FFmpeg libraries..."
3132
VERBATIM

Source/Audio/play.file~/build_ffmpeg.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,4 @@ cd "$FFMPEG_DIR"
3838
--enable-demuxer=mp3,wav,aiff,flac,aac,ogg,pcm* --enable-filter=aresample --enable-protocol=file \
3939
$ffmpeg_config
4040

41-
make CC="$ffmpeg_cc"
41+
make CC="$2 $ffmpeg_cc"

Source/Audio/sfz~/CMakeLists.txt

+20-5
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ set(BASEFLAGS
3535
"-DSFIZZ_PROFILE_BUILD=OFF"
3636
"-DSFIZZ_RELEASE_ASSERTS=OFF"
3737
"-DCMAKE_BUILD_TYPE=Release"
38+
"-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}"
39+
"-DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}"
3840
)
3941

4042
message(STATUS "Configuring sfizz")
@@ -43,10 +45,6 @@ execute_process(COMMAND ${CMAKE_COMMAND} .. -G${CMAKE_GENERATOR} ${BASEFLAGS} ${
4345
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/sfizz/library/build
4446
)
4547

46-
add_custom_target(sfizz_build
47-
COMMAND ${CMAKE_COMMAND} --build .
48-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/sfizz/library/build
49-
)
5048

5149
set(SFIZZ_LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/sfizz/library/build/library/lib)
5250

@@ -106,11 +104,28 @@ set(SFIZZ_LIBS
106104
${SFIZZ_LIB_DIR}/libaiff.a
107105
)
108106

107+
add_custom_target(
108+
sfizz
109+
ALL
110+
DEPENDS ${SFIZZ_LIBS}
111+
)
112+
113+
add_custom_command(
114+
OUTPUT ${SFIZZ_LIBS}
115+
COMMAND ${CMAKE_COMMAND} --build .
116+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/sfizz/library/build
117+
VERBATIM
118+
)
119+
120+
add_custom_target(sfizz_build
121+
DEPENDS ${SFIZZ_LIBS}
122+
)
123+
109124
add_pd_external(sfz_tilde sfz~ sfz~.c)
110125
target_link_libraries(sfz_tilde PRIVATE ${SFIZZ_LIBS} else_shared stdc++)
111126
target_include_directories(sfz_tilde PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/sfizz/library/src)
112127
target_compile_definitions(sfz_tilde PRIVATE MIDI_CC_COUNT=127 SFIZZ_VERSION="1.2.2")
113-
add_dependencies(sfz_tilde sfizz_build)
128+
add_dependencies(sfz_tilde sfizz)
114129

115130
if(UNIX AND NOT APPLE)
116131
target_link_libraries(sfz_tilde PUBLIC m)

0 commit comments

Comments
 (0)