Skip to content

Commit 7546277

Browse files
authored
Merge pull request #3081 from SunderB/patch/2022-05-09-cmake-copy-binaries
Build system - Replace `*_build_externals` and `*-pre-copy-binaries` bash scripts with CMake
2 parents cb63753 + ba54c97 commit 7546277

17 files changed

+53
-131
lines changed

app/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ include(cmake/common.cmake)
4444

4545
configure_file(${APP_ROOT}/cmake/config.h.cmake ${CMAKE_BINARY_DIR}/config.h)
4646

47+
add_subdirectory(external)
4748
add_subdirectory(api)
4849
add_subdirectory(api-tests)
4950
add_subdirectory(gui)

app/external/CMakeLists.txt

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,21 @@ cmake_minimum_required(VERSION 3.13)
33

44
message(STATUS " Aubio Builder")
55

6+
if(WIN32)
7+
set(ERLANG_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../prebuilt/windows/headers/erlang CACHE STRING "Path to the Erlang header files")
8+
elseif(${CMAKE_SYSTEM_NAME} MATCHES Darwin) # macOS
9+
set(ERLANG_INCLUDE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../prebuilt/macos/headers/erlang CACHE STRING "Path to the Erlang header files")
10+
else()
11+
execute_process(
12+
COMMAND erl -noshell -eval "io:format(\"~s~n\", [filename:join([lists:concat([code:root_dir(), \"/erts-\", erlang:system_info(version)]), \"include\"])]), init:stop(0)."
13+
OUTPUT_VARIABLE FOUND_ERLANG_INCLUDE_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
14+
set(ERLANG_INCLUDE_PATH ${FOUND_ERLANG_INCLUDE_PATH} CACHE STRING "Path to the Erlang header files")
15+
endif()
16+
option(USE_SYSTEM_LIBS "Use system libraries instead of bundled libraries when building" OFF)
17+
18+
message(STATUS "ERLANG_INCLUDE_PATH: ${ERLANG_INCLUDE_PATH}")
19+
message(STATUS "USE_SYSTEM_LIBS: ${USE_SYSTEM_LIBS}")
20+
621
project(AubioBuilder
722
LANGUAGES CXX C
823
VERSION 1.0.0
@@ -17,8 +32,9 @@ project(AubioBuilder
1732
ExternalProject_Add(sp_midi
1833
PREFIX sp_midi-prefix
1934
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/sp_midi
20-
INSTALL_COMMAND ""
35+
INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../server/beam/tau/priv
2136
CMAKE_ARGS
37+
-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_SOURCE_DIR}/../server/beam/tau/priv
2238
-DERLANG_INCLUDE_PATH=${ERLANG_INCLUDE_PATH}
2339
-DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}
2440
-DUSE_SYSTEM_RTMIDI=${USE_SYSTEM_LIBS}
@@ -28,8 +44,9 @@ ExternalProject_Add(sp_midi
2844
ExternalProject_Add(sp_link
2945
PREFIX sp_link-prefix
3046
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/sp_link
31-
INSTALL_COMMAND ""
47+
INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../server/beam/tau/priv
3248
CMAKE_ARGS
49+
-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_SOURCE_DIR}/../server/beam/tau/priv
3350
-DERLANG_INCLUDE_PATH=${ERLANG_INCLUDE_PATH}
3451
-DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}
3552
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release
@@ -142,11 +159,35 @@ ExternalProject_Add(aubio
142159
-DPC_VORBISENC_INCLUDE_DIRS=${CMAKE_BINARY_DIR}/vorbis-package/include
143160
-DPC_OPUS_INCLUDE_DIRS=${CMAKE_BINARY_DIR}/opus-package/include
144161
-DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}
145-
INSTALL_COMMAND ""
162+
INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../server/native
163+
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_SOURCE_DIR}/../server/native
146164
)
147165

148166
# Kick off a generation by making a dummy/empty project
149167
add_library(AubioBuilder STATIC externals.cpp)
150168

151169
# Dependency ensures the externals are built
152170
add_dependencies(AubioBuilder aubio)
171+
172+
# Copy prebuilt files
173+
if(WIN32)
174+
if(CMAKE_SIZEOF_VOID_P EQUAL 8) # 64-bit
175+
add_custom_command(
176+
TARGET AubioBuilder PRE_BUILD
177+
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/../../prebuilt/windows/x64/ ${CMAKE_CURRENT_SOURCE_DIR}/../server/native/
178+
)
179+
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) # 32-bit
180+
add_custom_command(
181+
TARGET AubioBuilder PRE_BUILD
182+
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/../../prebuilt/windows/x86/ ${CMAKE_CURRENT_SOURCE_DIR}/../server/native/
183+
)
184+
endif()
185+
elseif(${CMAKE_SYSTEM_NAME} MATCHES Darwin) # macOS
186+
add_custom_command(
187+
TARGET AubioBuilder PRE_BUILD
188+
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/../../prebuilt/macos/x64/ ${CMAKE_CURRENT_SOURCE_DIR}/../server/native/
189+
COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_SOURCE_DIR}/../server/native/supercollider/scsynth ${CMAKE_CURRENT_SOURCE_DIR}/../server/native/scsynth
190+
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/../server/native/supercollider/extra-plugins/ ${CMAKE_CURRENT_SOURCE_DIR}/../server/native/supercollider/plugins/
191+
COMMAND ${CMAKE_COMMAND} -E rm -rf ${CMAKE_CURRENT_SOURCE_DIR}/../server/native/supercollider/extra-plugins
192+
)
193+
endif()

app/external/aubio/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,3 +250,8 @@ elseif(${CMAKE_SYSTEM_NAME} MATCHES Darwin) # macOS
250250
else()
251251
message(FATAL_ERROR "Aubio is not supported on this platform.")
252252
endif()
253+
254+
install(TARGETS ${PROJECT_NAME}
255+
LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
256+
install(TARGETS aubio_onset
257+
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX})

app/external/linux_build_externals.sh

Lines changed: 0 additions & 16 deletions
This file was deleted.

app/external/mac_build_externals.sh

Lines changed: 0 additions & 16 deletions
This file was deleted.

app/external/sp_link/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,5 @@ elseif(UNIX)
7575
include_directories(${ERLANG_INCLUDE_PATH})
7676
target_link_libraries(libsp_link Ableton::Link)
7777
endif(MSVC)
78+
79+
install(TARGETS libsp_link LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX})

app/external/sp_midi/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,4 @@ elseif(UNIX)
9292
endif(USE_SYSTEM_RTMIDI)
9393
endif(MSVC)
9494

95+
install(TARGETS libsp_midi LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX})

app/external/win_x64_build_externals.bat

Lines changed: 0 additions & 9 deletions
This file was deleted.

app/external/win_x86_build_externals.bat

Lines changed: 0 additions & 6 deletions
This file was deleted.

app/linux-clean.sh

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@ cd "${SCRIPT_DIR}"
77
echo "Cleaning out build dir...."
88
rm -rf build
99

10-
echo "Cleaning out external/build dir...."
11-
rm -rf external/build
12-
1310
echo "Cleaning out BEAM distribution..."
1411
rm -rf server/beam/tau/_build
1512
rm -rf server/beam/tau/priv/*.{so,dylib,dll}

0 commit comments

Comments
 (0)