Skip to content

Commit 34fed9e

Browse files
committed
Add support for JUCE 8
Signed-off-by: falkTX <[email protected]>
1 parent 336238e commit 34fed9e

File tree

8 files changed

+128
-0
lines changed

8 files changed

+128
-0
lines changed

bootstrap.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ elif [ "${BUILDTARGET}" = "juce" ]; then
249249
${BR2_MAKE} juce-6.0
250250
${BR2_MAKE} juce-6.1
251251
${BR2_MAKE} juce-7.0
252+
${BR2_MAKE} juce-8.0
252253
${BR2_MAKE} mod-plugin-builder
253254
elif [ "${BUILDTARGET}" = "dev" ]; then
254255
${BR2_MAKE} host-python3

local.env

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ export HOST_DIR
7575
export JUCE_6_0_TOOLCHAIN_FILE="${STAGING_DIR}/usr/lib/cmake/JUCE-6.0.8/toolchainfile.cmake"
7676
export JUCE_6_1_TOOLCHAIN_FILE="${STAGING_DIR}/usr/lib/cmake/JUCE-6.1.6/toolchainfile.cmake"
7777
export JUCE_7_0_TOOLCHAIN_FILE="${STAGING_DIR}/usr/lib/cmake/JUCE-7.0.9/toolchainfile.cmake"
78+
export JUCE_8_0_TOOLCHAIN_FILE="${STAGING_DIR}/usr/lib/cmake/JUCE-8.0.4/toolchainfile.cmake"
7879

7980
alias ar=${AR}
8081
alias cc=${CC}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git a/libstdc++-v3/include/std/utility b/libstdc++-v3/include/std/utility
2+
index c687c1d..d651b92 100644
3+
--- a/libstdc++-v3/include/std/utility
4+
+++ b/libstdc++-v3/include/std/utility
5+
@@ -293,7 +293,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
6+
7+
#ifdef __has_builtin
8+
# if __has_builtin(__make_integer_seq)
9+
-# define _GLIBCXX_USE_MAKE_INTEGER_SEQ 1
10+
+# define _GLIBCXX_USE_MAKE_INTEGER_SEQ 0
11+
# endif
12+
#endif
13+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 019aa86..b057f81 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -177,7 +177,7 @@ install(FILES "${JUCE_BINARY_DIR}/JUCEConfigVersion.cmake"
6+
"${JUCE_CMAKE_UTILS_DIR}/juce_LinuxSubprocessHelper.cpp"
7+
DESTINATION "${JUCE_INSTALL_DESTINATION}")
8+
9+
-if(("${CMAKE_SOURCE_DIR}" STREQUAL "${JUCE_SOURCE_DIR}") AND (NOT JUCE_BUILD_HELPER_TOOLS))
10+
+if("${CMAKE_SOURCE_DIR}" STREQUAL "${JUCE_SOURCE_DIR}")
11+
_juce_add_lv2_manifest_helper_target()
12+
13+
if(TARGET juce_lv2_helper)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git a/modules/juce_core/native/juce_SharedCode_posix.h b/modules/juce_core/native/juce_SharedCode_posix.h
2+
index c53ef0f..1590662 100644
3+
--- a/modules/juce_core/native/juce_SharedCode_posix.h
4+
+++ b/modules/juce_core/native/juce_SharedCode_posix.h
5+
@@ -40,7 +40,7 @@ CriticalSection::CriticalSection() noexcept
6+
pthread_mutexattr_t atts;
7+
pthread_mutexattr_init (&atts);
8+
pthread_mutexattr_settype (&atts, PTHREAD_MUTEX_RECURSIVE);
9+
- #if ! JUCE_ANDROID
10+
+ #if ! JUCE_ANDROID && ! JUCE_ARM
11+
pthread_mutexattr_setprotocol (&atts, PTHREAD_PRIO_INHERIT);
12+
#endif
13+
pthread_mutex_init (&lock, &atts);
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
config BR2_PACKAGE_JUCE_8_0
2+
bool "juce-8.0"
3+
select BR2_PACKAGE_FREETYPE
4+
select BR2_PACKAGE_XLIB_LIBX11
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
######################################
2+
#
3+
# juce-8.0
4+
#
5+
######################################
6+
7+
JUCE_8_0_VERSION = 51d11a2be6d5c97ccf12b4e5e827006e19f0555a
8+
JUCE_8_0_VERSION_PROJECT = JUCE-8.0.4
9+
JUCE_8_0_SITE = $(call github,juce-framework,juce,$(JUCE_8_0_VERSION))
10+
JUCE_8_0_DEPENDENCIES = host-juce-8.0 freetype xlib_libX11
11+
JUCE_8_0_INSTALL_STAGING = YES
12+
JUCE_8_0_TOOLCHAIN_FILE = $(STAGING_DIR)/usr/lib/cmake/$(JUCE_8_0_VERSION_PROJECT)/toolchainfile.cmake
13+
HOST_JUCE_8_0_DEPENDENCIES = host-cmake host-freetype host-xlib_libX11
14+
15+
# this custom configure follows the same rules as buildroot, with these exceptions:
16+
# - CMAKE_FIND_ROOT_PATH_MODE_PROGRAM="ONLY" (buildroot uses "NEVER")
17+
# - CMAKE_MAKE_PROGRAM="/usr/bin/make" (not needed in buildroot, only for juce)
18+
# - PKG_CONFIG related env vars (buildroot unsets them for the build)
19+
define HOST_JUCE_8_0_CONFIGURE_CMDS
20+
(mkdir -p $(@D) && cd $(@D) && rm -f CMakeCache.txt && \
21+
env PKG_CONFIG_SYSROOT_DIR="$(HOST_DIR)" PKG_CONFIG_PATH="$(HOST_DIR)/usr/lib/pkgconfig" \
22+
$(HOST_DIR)/usr/bin/cmake $(@D) \
23+
-DCMAKE_INSTALL_PREFIX=$(HOST_DIR)/usr \
24+
-DCMAKE_INSTALL_SO_NO_EXE=0 \
25+
-DCMAKE_FIND_ROOT_PATH="$(HOST_DIR)" \
26+
-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM="ONLY" \
27+
-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE="ONLY" \
28+
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE="ONLY" \
29+
-DCMAKE_MAKE_PROGRAM="/usr/bin/make" \
30+
-DCMAKE_C_COMPILER="$(HOSTCC)" \
31+
-DCMAKE_CXX_COMPILER="$(HOSTCXX)" \
32+
-DCMAKE_CXX_FLAGS="$(HOST_CXXFLAGS) -DJUCE_USE_CURL=0 -DJUCE_USE_XCURSOR=0 -DJUCE_USE_XINERAMA=0 -DJUCE_USE_XRANDR=0 -DJUCE_USE_XSHM=0" \
33+
-DJUCE_BUILD_HELPER_TOOLS=ON \
34+
-DJUCE_INSTALL_DESTINATION=lib/cmake/$(JUCE_8_0_VERSION_PROJECT) \
35+
)
36+
endef
37+
38+
define HOST_JUCE_8_0_POST_INSTALL_JUCEAIDE
39+
$(INSTALL) -d $(HOST_DIR)/usr/bin/$(JUCE_8_0_VERSION_PROJECT)
40+
$(INSTALL) -m 755 $(@D)/extras/Build/juceaide/juceaide_artefacts/juceaide $(HOST_DIR)/usr/bin/$(JUCE_8_0_VERSION_PROJECT)
41+
$(INSTALL) -m 644 $($(PKG)_PKGDIR)/toolchainfile.cmake $(HOST_DIR)/usr/lib/cmake/$(JUCE_8_0_VERSION_PROJECT)/
42+
endef
43+
44+
HOST_JUCE_8_0_POST_INSTALL_HOOKS += HOST_JUCE_8_0_POST_INSTALL_JUCEAIDE
45+
46+
define JUCE_8_0_INSTALL_STAGING_CMDS
47+
$(INSTALL) -d $(STAGING_DIR)/usr/bin/$(JUCE_8_0_VERSION_PROJECT)
48+
$(INSTALL) -d $(STAGING_DIR)/usr/include
49+
$(INSTALL) -d $(STAGING_DIR)/usr/lib/cmake
50+
cp $(HOST_DIR)/usr/bin/$(JUCE_8_0_VERSION_PROJECT)/juceaide $(STAGING_DIR)/usr/bin/$(JUCE_8_0_VERSION_PROJECT)/
51+
cp $(HOST_DIR)/usr/bin/$(JUCE_8_0_VERSION_PROJECT)/juce_lv2_helper $(STAGING_DIR)/usr/bin/$(JUCE_8_0_VERSION_PROJECT)/
52+
cp $(HOST_DIR)/usr/bin/$(JUCE_8_0_VERSION_PROJECT)/juce_vst3_helper $(STAGING_DIR)/usr/bin/$(JUCE_8_0_VERSION_PROJECT)/
53+
cp -r $(HOST_DIR)/usr/include/$(JUCE_8_0_VERSION_PROJECT) $(STAGING_DIR)/usr/include/
54+
cp -r $(HOST_DIR)/usr/lib/cmake/$(JUCE_8_0_VERSION_PROJECT) $(STAGING_DIR)/usr/lib/cmake/
55+
ln -sf JUCEConfig.cmake $(STAGING_DIR)/usr/lib/cmake/$(JUCE_8_0_VERSION_PROJECT)/$(JUCE_8_0_VERSION_PROJECT)Config.cmake
56+
endef
57+
58+
$(eval $(generic-package))
59+
$(eval $(host-cmake-package))
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Aide juceaide in MOD builds
2+
3+
set(HOST_DIR "$ENV{HOST_DIR}")
4+
get_filename_component(TARGET_DIR "${HOST_DIR}/../target" REALPATH)
5+
6+
include("${HOST_DIR}/usr/share/buildroot/toolchainfile.cmake")
7+
8+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DJUCE_USE_CURL=0")
9+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DJUCE_USE_XCURSOR=0")
10+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DJUCE_USE_XINERAMA=0")
11+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DJUCE_USE_XRANDR=0")
12+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DJUCE_USE_XSHM=0")
13+
14+
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
15+
set(CROSSCOMPILING TRUE)
16+
set(CROSSCOMPILING_EMULATOR qemu-aarch64-static -L "${TARGET_DIR}")
17+
separate_arguments(CMAKE_CROSSCOMPILING_EMULATOR)
18+
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
19+
set(CROSSCOMPILING TRUE)
20+
set(CROSSCOMPILING_EMULATOR qemu-arm-static -L "${TARGET_DIR}")
21+
separate_arguments(CMAKE_CROSSCOMPILING_EMULATOR)
22+
endif()
23+
24+
set(JUCE_MOD_BUILD TRUE)

0 commit comments

Comments
 (0)