1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-08 23:24:19 +00:00

Whitespace: Fix whitespace and line endings in cmake files

This commit is contained in:
reuk 2024-11-05 17:56:39 +00:00
parent 24ab3cb6a3
commit 8ae3bffe82
No known key found for this signature in database
GPG key ID: FCB43929F012EE5C
28 changed files with 5166 additions and 5168 deletions

View file

@ -1,194 +1,194 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
cmake_minimum_required(VERSION 3.22)
project(JUCE VERSION 8.0.3 LANGUAGES C CXX)
include(CMakeDependentOption)
set_property(GLOBAL PROPERTY USE_FOLDERS YES)
set(JUCE_MODULES_DIR "${JUCE_SOURCE_DIR}/modules" CACHE INTERNAL
"The path to JUCE modules")
# This option will disable most of the JUCE helper functions and tools. This option exists to
# facilitate existing CMake builds which handle things like bundle creation, icons, plists, and
# binary data independently of JUCE. This option is not recommended - use at your own risk!
option(JUCE_MODULES_ONLY "Only configure the JUCE modules" OFF)
include(extras/Build/CMake/JUCEModuleSupport.cmake)
# This option controls whether dummy targets are added to the build, where these targets contain all
# of the source files for each JUCE module. If you're planning to use an IDE and want to be able to
# browse all of JUCE's source files, this may be useful. However, it will increase the size of
# generated IDE projects and might slow down configuration a bit. If you enable this, you should
# probably also add `set_property(GLOBAL PROPERTY USE_FOLDERS YES)` to your top level CMakeLists,
# otherwise the module sources will be added directly to the top level of the project, instead of in
# a nice 'Modules' subfolder.
cmake_dependent_option(JUCE_ENABLE_MODULE_SOURCE_GROUPS
"Show all module sources in IDE projects" OFF
"NOT JUCE_MODULES_ONLY" OFF)
add_subdirectory(modules)
if(JUCE_MODULES_ONLY)
return()
endif()
include(extras/Build/CMake/JUCEUtils.cmake)
set_directory_properties(PROPERTIES
JUCE_COMPANY_NAME "JUCE"
JUCE_COMPANY_WEBSITE "https://juce.com"
JUCE_COMPANY_EMAIL "info@juce.com"
JUCE_COMPANY_COPYRIGHT "Copyright (c) - Raw Material Software Limited")
option(JUCE_COPY_PLUGIN_AFTER_BUILD
"Whether or not plugins should be installed to the system after building" OFF)
set_property(GLOBAL PROPERTY JUCE_COPY_PLUGIN_AFTER_BUILD ${JUCE_COPY_PLUGIN_AFTER_BUILD})
set(CMAKE_CXX_EXTENSIONS FALSE)
juce_disable_default_flags()
add_subdirectory(extras/Build)
# If you want to build the JUCE examples with VST2/AAX/ARA support, you'll need to make the
# VST2/AAX/ARA headers visible to the juce_audio_processors module. You can either set the paths on
# the command line, (e.g. -DJUCE_GLOBAL_AAX_SDK_PATH=/path/to/sdk) if you're just building the JUCE
# examples, or you can call the `juce_set_*_sdk_path` functions in your own CMakeLists after
# importing JUCE.
if(JUCE_GLOBAL_AAX_SDK_PATH)
juce_set_aax_sdk_path("${JUCE_GLOBAL_AAX_SDK_PATH}")
endif()
if(JUCE_GLOBAL_VST2_SDK_PATH)
juce_set_vst2_sdk_path("${JUCE_GLOBAL_VST2_SDK_PATH}")
endif()
# The ARA_SDK path should point to the "Umbrella installer" ARA_SDK directory.
# The directory can be obtained by recursively cloning https://github.com/Celemony/ARA_SDK and
# checking out the tag releases/2.1.0.
if(JUCE_GLOBAL_ARA_SDK_PATH)
juce_set_ara_sdk_path("${JUCE_GLOBAL_ARA_SDK_PATH}")
endif()
# We don't build anything other than the juceaide by default, because we want to keep configuration
# speedy and the number of targets low. If you want to add targets for the extra projects and
# example PIPs (there's a lot of them!), specify -DJUCE_BUILD_EXAMPLES=ON and/or
# -DJUCE_BUILD_EXTRAS=ON when initially generating your build tree.
option(JUCE_BUILD_EXTRAS "Add build targets for the Projucer and other tools" OFF)
if(JUCE_BUILD_EXTRAS)
add_subdirectory(extras)
endif()
option(JUCE_BUILD_EXAMPLES "Add build targets for the DemoRunner and PIPs" OFF)
if(JUCE_BUILD_EXAMPLES)
add_subdirectory(examples)
endif()
string(CONCAT webview2_option_message "Location that overrides the default directory where our "
"FindWebView2 script is looking for the "
"*Microsoft.Web.WebView2* directory")
option(JUCE_WEBVIEW2_PACKAGE_LOCATION ${webview2_option_message} "")
# ==================================================================================================
# Install configuration
include(CMakePackageConfigHelpers)
write_basic_package_version_file("${JUCE_BINARY_DIR}/JUCEConfigVersion.cmake"
VERSION ${JUCE_VERSION}
COMPATIBILITY ExactVersion)
set(JUCE_INSTALL_DESTINATION "lib/cmake/JUCE-${JUCE_VERSION}" CACHE STRING
"The location, relative to the install prefix, where the JUCE config file will be installed")
set(JUCE_MODULE_PATH "include/JUCE-${JUCE_VERSION}/modules")
set(UTILS_INSTALL_DIR "${JUCE_INSTALL_DESTINATION}")
set(JUCEAIDE_PATH "${JUCE_TOOL_INSTALL_DIR}/${JUCE_JUCEAIDE_NAME}")
configure_package_config_file("${JUCE_CMAKE_UTILS_DIR}/JUCEConfig.cmake.in"
"${JUCE_BINARY_DIR}/JUCEConfig.cmake"
PATH_VARS UTILS_INSTALL_DIR JUCEAIDE_PATH JUCE_MODULE_PATH
INSTALL_DESTINATION "${JUCE_INSTALL_DESTINATION}")
set(JUCE_MODULE_PATH "${JUCE_MODULES_DIR}")
set(UTILS_INSTALL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extras/Build/CMake")
get_target_property(JUCEAIDE_PATH juceaide IMPORTED_LOCATION)
configure_package_config_file("${JUCE_CMAKE_UTILS_DIR}/JUCEConfig.cmake.in"
"${JUCE_BINARY_DIR}/JUCEExportConfig.cmake"
PATH_VARS UTILS_INSTALL_DIR JUCEAIDE_PATH JUCE_MODULE_PATH
INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}"
INSTALL_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
install(FILES "${JUCE_BINARY_DIR}/JUCEConfigVersion.cmake"
"${JUCE_BINARY_DIR}/JUCEConfig.cmake"
"${JUCE_CMAKE_UTILS_DIR}/JUCECheckAtomic.cmake"
"${JUCE_CMAKE_UTILS_DIR}/JUCEHelperTargets.cmake"
"${JUCE_CMAKE_UTILS_DIR}/JUCEModuleSupport.cmake"
"${JUCE_CMAKE_UTILS_DIR}/JUCEUtils.cmake"
"${JUCE_CMAKE_UTILS_DIR}/JuceLV2Defines.h.in"
"${JUCE_CMAKE_UTILS_DIR}/LaunchScreen.storyboard"
"${JUCE_CMAKE_UTILS_DIR}/PIPAudioProcessor.cpp.in"
"${JUCE_CMAKE_UTILS_DIR}/PIPAudioProcessorWithARA.cpp.in"
"${JUCE_CMAKE_UTILS_DIR}/PIPComponent.cpp.in"
"${JUCE_CMAKE_UTILS_DIR}/PIPConsole.cpp.in"
"${JUCE_CMAKE_UTILS_DIR}/RecentFilesMenuTemplate.nib"
"${JUCE_CMAKE_UTILS_DIR}/UnityPluginGUIScript.cs.in"
"${JUCE_CMAKE_UTILS_DIR}/checkBundleSigning.cmake"
"${JUCE_CMAKE_UTILS_DIR}/copyDir.cmake"
"${JUCE_CMAKE_UTILS_DIR}/juce_runtime_arch_detection.cpp"
"${JUCE_CMAKE_UTILS_DIR}/juce_LinuxSubprocessHelper.cpp"
DESTINATION "${JUCE_INSTALL_DESTINATION}")
if(("${CMAKE_SOURCE_DIR}" STREQUAL "${JUCE_SOURCE_DIR}") AND (NOT JUCE_BUILD_HELPER_TOOLS))
_juce_add_lv2_manifest_helper_target()
if(TARGET juce_lv2_helper)
install(TARGETS juce_lv2_helper EXPORT LV2_HELPER DESTINATION "bin/JUCE-${JUCE_VERSION}")
install(EXPORT LV2_HELPER NAMESPACE juce:: DESTINATION "${JUCE_INSTALL_DESTINATION}")
endif()
_juce_add_vst3_manifest_helper_target()
if(TARGET juce_vst3_helper)
install(TARGETS juce_vst3_helper EXPORT VST3_HELPER DESTINATION "bin/JUCE-${JUCE_VERSION}")
install(EXPORT VST3_HELPER NAMESPACE juce:: DESTINATION "${JUCE_INSTALL_DESTINATION}")
endif()
endif()
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
cmake_minimum_required(VERSION 3.22)
project(JUCE VERSION 8.0.3 LANGUAGES C CXX)
include(CMakeDependentOption)
set_property(GLOBAL PROPERTY USE_FOLDERS YES)
set(JUCE_MODULES_DIR "${JUCE_SOURCE_DIR}/modules" CACHE INTERNAL
"The path to JUCE modules")
# This option will disable most of the JUCE helper functions and tools. This option exists to
# facilitate existing CMake builds which handle things like bundle creation, icons, plists, and
# binary data independently of JUCE. This option is not recommended - use at your own risk!
option(JUCE_MODULES_ONLY "Only configure the JUCE modules" OFF)
include(extras/Build/CMake/JUCEModuleSupport.cmake)
# This option controls whether dummy targets are added to the build, where these targets contain all
# of the source files for each JUCE module. If you're planning to use an IDE and want to be able to
# browse all of JUCE's source files, this may be useful. However, it will increase the size of
# generated IDE projects and might slow down configuration a bit. If you enable this, you should
# probably also add `set_property(GLOBAL PROPERTY USE_FOLDERS YES)` to your top level CMakeLists,
# otherwise the module sources will be added directly to the top level of the project, instead of in
# a nice 'Modules' subfolder.
cmake_dependent_option(JUCE_ENABLE_MODULE_SOURCE_GROUPS
"Show all module sources in IDE projects" OFF
"NOT JUCE_MODULES_ONLY" OFF)
add_subdirectory(modules)
if(JUCE_MODULES_ONLY)
return()
endif()
include(extras/Build/CMake/JUCEUtils.cmake)
set_directory_properties(PROPERTIES
JUCE_COMPANY_NAME "JUCE"
JUCE_COMPANY_WEBSITE "https://juce.com"
JUCE_COMPANY_EMAIL "info@juce.com"
JUCE_COMPANY_COPYRIGHT "Copyright (c) - Raw Material Software Limited")
option(JUCE_COPY_PLUGIN_AFTER_BUILD
"Whether or not plugins should be installed to the system after building" OFF)
set_property(GLOBAL PROPERTY JUCE_COPY_PLUGIN_AFTER_BUILD ${JUCE_COPY_PLUGIN_AFTER_BUILD})
set(CMAKE_CXX_EXTENSIONS FALSE)
juce_disable_default_flags()
add_subdirectory(extras/Build)
# If you want to build the JUCE examples with VST2/AAX/ARA support, you'll need to make the
# VST2/AAX/ARA headers visible to the juce_audio_processors module. You can either set the paths on
# the command line, (e.g. -DJUCE_GLOBAL_AAX_SDK_PATH=/path/to/sdk) if you're just building the JUCE
# examples, or you can call the `juce_set_*_sdk_path` functions in your own CMakeLists after
# importing JUCE.
if(JUCE_GLOBAL_AAX_SDK_PATH)
juce_set_aax_sdk_path("${JUCE_GLOBAL_AAX_SDK_PATH}")
endif()
if(JUCE_GLOBAL_VST2_SDK_PATH)
juce_set_vst2_sdk_path("${JUCE_GLOBAL_VST2_SDK_PATH}")
endif()
# The ARA_SDK path should point to the "Umbrella installer" ARA_SDK directory.
# The directory can be obtained by recursively cloning https://github.com/Celemony/ARA_SDK and
# checking out the tag releases/2.1.0.
if(JUCE_GLOBAL_ARA_SDK_PATH)
juce_set_ara_sdk_path("${JUCE_GLOBAL_ARA_SDK_PATH}")
endif()
# We don't build anything other than the juceaide by default, because we want to keep configuration
# speedy and the number of targets low. If you want to add targets for the extra projects and
# example PIPs (there's a lot of them!), specify -DJUCE_BUILD_EXAMPLES=ON and/or
# -DJUCE_BUILD_EXTRAS=ON when initially generating your build tree.
option(JUCE_BUILD_EXTRAS "Add build targets for the Projucer and other tools" OFF)
if(JUCE_BUILD_EXTRAS)
add_subdirectory(extras)
endif()
option(JUCE_BUILD_EXAMPLES "Add build targets for the DemoRunner and PIPs" OFF)
if(JUCE_BUILD_EXAMPLES)
add_subdirectory(examples)
endif()
string(CONCAT webview2_option_message "Location that overrides the default directory where our "
"FindWebView2 script is looking for the "
"*Microsoft.Web.WebView2* directory")
option(JUCE_WEBVIEW2_PACKAGE_LOCATION ${webview2_option_message} "")
# ==================================================================================================
# Install configuration
include(CMakePackageConfigHelpers)
write_basic_package_version_file("${JUCE_BINARY_DIR}/JUCEConfigVersion.cmake"
VERSION ${JUCE_VERSION}
COMPATIBILITY ExactVersion)
set(JUCE_INSTALL_DESTINATION "lib/cmake/JUCE-${JUCE_VERSION}" CACHE STRING
"The location, relative to the install prefix, where the JUCE config file will be installed")
set(JUCE_MODULE_PATH "include/JUCE-${JUCE_VERSION}/modules")
set(UTILS_INSTALL_DIR "${JUCE_INSTALL_DESTINATION}")
set(JUCEAIDE_PATH "${JUCE_TOOL_INSTALL_DIR}/${JUCE_JUCEAIDE_NAME}")
configure_package_config_file("${JUCE_CMAKE_UTILS_DIR}/JUCEConfig.cmake.in"
"${JUCE_BINARY_DIR}/JUCEConfig.cmake"
PATH_VARS UTILS_INSTALL_DIR JUCEAIDE_PATH JUCE_MODULE_PATH
INSTALL_DESTINATION "${JUCE_INSTALL_DESTINATION}")
set(JUCE_MODULE_PATH "${JUCE_MODULES_DIR}")
set(UTILS_INSTALL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extras/Build/CMake")
get_target_property(JUCEAIDE_PATH juceaide IMPORTED_LOCATION)
configure_package_config_file("${JUCE_CMAKE_UTILS_DIR}/JUCEConfig.cmake.in"
"${JUCE_BINARY_DIR}/JUCEExportConfig.cmake"
PATH_VARS UTILS_INSTALL_DIR JUCEAIDE_PATH JUCE_MODULE_PATH
INSTALL_PREFIX "${CMAKE_CURRENT_BINARY_DIR}"
INSTALL_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
install(FILES "${JUCE_BINARY_DIR}/JUCEConfigVersion.cmake"
"${JUCE_BINARY_DIR}/JUCEConfig.cmake"
"${JUCE_CMAKE_UTILS_DIR}/JUCECheckAtomic.cmake"
"${JUCE_CMAKE_UTILS_DIR}/JUCEHelperTargets.cmake"
"${JUCE_CMAKE_UTILS_DIR}/JUCEModuleSupport.cmake"
"${JUCE_CMAKE_UTILS_DIR}/JUCEUtils.cmake"
"${JUCE_CMAKE_UTILS_DIR}/JuceLV2Defines.h.in"
"${JUCE_CMAKE_UTILS_DIR}/LaunchScreen.storyboard"
"${JUCE_CMAKE_UTILS_DIR}/PIPAudioProcessor.cpp.in"
"${JUCE_CMAKE_UTILS_DIR}/PIPAudioProcessorWithARA.cpp.in"
"${JUCE_CMAKE_UTILS_DIR}/PIPComponent.cpp.in"
"${JUCE_CMAKE_UTILS_DIR}/PIPConsole.cpp.in"
"${JUCE_CMAKE_UTILS_DIR}/RecentFilesMenuTemplate.nib"
"${JUCE_CMAKE_UTILS_DIR}/UnityPluginGUIScript.cs.in"
"${JUCE_CMAKE_UTILS_DIR}/checkBundleSigning.cmake"
"${JUCE_CMAKE_UTILS_DIR}/copyDir.cmake"
"${JUCE_CMAKE_UTILS_DIR}/juce_runtime_arch_detection.cpp"
"${JUCE_CMAKE_UTILS_DIR}/juce_LinuxSubprocessHelper.cpp"
DESTINATION "${JUCE_INSTALL_DESTINATION}")
if(("${CMAKE_SOURCE_DIR}" STREQUAL "${JUCE_SOURCE_DIR}") AND (NOT JUCE_BUILD_HELPER_TOOLS))
_juce_add_lv2_manifest_helper_target()
if(TARGET juce_lv2_helper)
install(TARGETS juce_lv2_helper EXPORT LV2_HELPER DESTINATION "bin/JUCE-${JUCE_VERSION}")
install(EXPORT LV2_HELPER NAMESPACE juce:: DESTINATION "${JUCE_INSTALL_DESTINATION}")
endif()
_juce_add_vst3_manifest_helper_target()
if(TARGET juce_vst3_helper)
install(TARGETS juce_vst3_helper EXPORT VST3_HELPER DESTINATION "bin/JUCE-${JUCE_VERSION}")
install(EXPORT VST3_HELPER NAMESPACE juce:: DESTINATION "${JUCE_INSTALL_DESTINATION}")
endif()
endif()

View file

@ -1,22 +1,22 @@
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
_juce_add_pips()
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
_juce_add_pips()

View file

@ -1,111 +1,111 @@
# Example Audio Plugin CMakeLists.txt
# To get started on a new plugin, copy this entire folder (containing this file and C++ sources) to
# a convenient location, and then start making modifications.
# The first line of any CMake project should be a call to `cmake_minimum_required`, which checks
# that the installed CMake will be able to understand the following CMakeLists, and ensures that
# CMake's behaviour is compatible with the named version. This is a standard CMake command, so more
# information can be found in the CMake docs.
cmake_minimum_required(VERSION 3.22)
# The top-level CMakeLists.txt file for a project must contain a literal, direct call to the
# `project()` command. `project()` sets up some helpful variables that describe source/binary
# directories, and the current project version. This is a standard CMake command.
project(AUDIO_PLUGIN_EXAMPLE VERSION 0.0.1)
# If you've installed JUCE somehow (via a package manager, or directly using the CMake install
# target), you'll need to tell this project that it depends on the installed copy of JUCE. If you've
# included JUCE directly in your source tree (perhaps as a submodule), you'll need to tell CMake to
# include that subdirectory as part of the build.
# find_package(JUCE CONFIG REQUIRED) # If you've installed JUCE to your system
# or
# add_subdirectory(JUCE) # If you've put JUCE in a subdirectory called JUCE
# If you are building a VST2 or AAX plugin, CMake needs to be told where to find these SDKs on your
# system. This setup should be done before calling `juce_add_plugin`.
# juce_set_vst2_sdk_path(...)
# juce_set_aax_sdk_path(...)
# `juce_add_plugin` adds a static library target with the name passed as the first argument
# (AudioPluginExample here). This target is a normal CMake target, but has a lot of extra properties set
# up by default. As well as this shared code static library, this function adds targets for each of
# the formats specified by the FORMATS arguments. This function accepts many optional arguments.
# Check the readme at `docs/CMake API.md` in the JUCE repo for the full list.
juce_add_plugin(AudioPluginExample
# VERSION ... # Set this if the plugin version is different to the project version
# ICON_BIG ... # ICON_* arguments specify a path to an image file to use as an icon for the Standalone
# ICON_SMALL ...
# COMPANY_NAME ... # Specify the name of the plugin's author
# IS_SYNTH TRUE/FALSE # Is this a synth or an effect?
# NEEDS_MIDI_INPUT TRUE/FALSE # Does the plugin need midi input?
# NEEDS_MIDI_OUTPUT TRUE/FALSE # Does the plugin need midi output?
# IS_MIDI_EFFECT TRUE/FALSE # Is this plugin a MIDI effect?
# EDITOR_WANTS_KEYBOARD_FOCUS TRUE/FALSE # Does the editor need keyboard focus?
# COPY_PLUGIN_AFTER_BUILD TRUE/FALSE # Should the plugin be installed to a default location after building?
PLUGIN_MANUFACTURER_CODE Juce # A four-character manufacturer id with at least one upper-case character
PLUGIN_CODE Dem0 # A unique four-character plugin id with exactly one upper-case character
# GarageBand 10.3 requires the first letter to be upper-case, and the remaining letters to be lower-case
FORMATS AU VST3 Standalone # The formats to build. Other valid formats are: AAX Unity VST AU AUv3
PRODUCT_NAME "Audio Plugin Example") # The name of the final executable, which can differ from the target name
# `juce_generate_juce_header` will create a JuceHeader.h for a given target, which will be generated
# into your build tree. This should be included with `#include <JuceHeader.h>`. The include path for
# this header will be automatically added to the target. The main function of the JuceHeader is to
# include all your JUCE module headers; if you're happy to include module headers directly, you
# probably don't need to call this.
# juce_generate_juce_header(AudioPluginExample)
# `target_sources` adds source files to a target. We pass the target that needs the sources as the
# first argument, then a visibility parameter for the sources which should normally be PRIVATE.
# Finally, we supply a list of source files that will be built into the target. This is a standard
# CMake command.
target_sources(AudioPluginExample
PRIVATE
PluginEditor.cpp
PluginProcessor.cpp)
# `target_compile_definitions` adds some preprocessor definitions to our target. In a Projucer
# project, these might be passed in the 'Preprocessor Definitions' field. JUCE modules also make use
# of compile definitions to switch certain features on/off, so if there's a particular feature you
# need that's not on by default, check the module header for the correct flag to set here. These
# definitions will be visible both to your code, and also the JUCE module code, so for new
# definitions, pick unique names that are unlikely to collide! This is a standard CMake command.
target_compile_definitions(AudioPluginExample
PUBLIC
# JUCE_WEB_BROWSER and JUCE_USE_CURL would be on by default, but you might not need them.
JUCE_WEB_BROWSER=0 # If you remove this, add `NEEDS_WEB_BROWSER TRUE` to the `juce_add_plugin` call
JUCE_USE_CURL=0 # If you remove this, add `NEEDS_CURL TRUE` to the `juce_add_plugin` call
JUCE_VST3_CAN_REPLACE_VST2=0)
# If your target needs extra binary assets, you can add them here. The first argument is the name of
# a new static library target that will include all the binary resources. There is an optional
# `NAMESPACE` argument that can specify the namespace of the generated binary data class. Finally,
# the SOURCES argument should be followed by a list of source files that should be built into the
# static library. These source files can be of any kind (wav data, images, fonts, icons etc.).
# Conversion to binary-data will happen when your target is built.
# juce_add_binary_data(AudioPluginData SOURCES ...)
# `target_link_libraries` links libraries and JUCE modules to other libraries or executables. Here,
# we're linking our executable target to the `juce::juce_audio_utils` module. Inter-module
# dependencies are resolved automatically, so `juce_core`, `juce_events` and so on will also be
# linked automatically. If we'd generated a binary data target above, we would need to link to it
# here too. This is a standard CMake command.
target_link_libraries(AudioPluginExample
PRIVATE
# AudioPluginData # If we'd created a binary data target, we'd link to it here
juce::juce_audio_utils
PUBLIC
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
# Example Audio Plugin CMakeLists.txt
# To get started on a new plugin, copy this entire folder (containing this file and C++ sources) to
# a convenient location, and then start making modifications.
# The first line of any CMake project should be a call to `cmake_minimum_required`, which checks
# that the installed CMake will be able to understand the following CMakeLists, and ensures that
# CMake's behaviour is compatible with the named version. This is a standard CMake command, so more
# information can be found in the CMake docs.
cmake_minimum_required(VERSION 3.22)
# The top-level CMakeLists.txt file for a project must contain a literal, direct call to the
# `project()` command. `project()` sets up some helpful variables that describe source/binary
# directories, and the current project version. This is a standard CMake command.
project(AUDIO_PLUGIN_EXAMPLE VERSION 0.0.1)
# If you've installed JUCE somehow (via a package manager, or directly using the CMake install
# target), you'll need to tell this project that it depends on the installed copy of JUCE. If you've
# included JUCE directly in your source tree (perhaps as a submodule), you'll need to tell CMake to
# include that subdirectory as part of the build.
# find_package(JUCE CONFIG REQUIRED) # If you've installed JUCE to your system
# or
# add_subdirectory(JUCE) # If you've put JUCE in a subdirectory called JUCE
# If you are building a VST2 or AAX plugin, CMake needs to be told where to find these SDKs on your
# system. This setup should be done before calling `juce_add_plugin`.
# juce_set_vst2_sdk_path(...)
# juce_set_aax_sdk_path(...)
# `juce_add_plugin` adds a static library target with the name passed as the first argument
# (AudioPluginExample here). This target is a normal CMake target, but has a lot of extra properties set
# up by default. As well as this shared code static library, this function adds targets for each of
# the formats specified by the FORMATS arguments. This function accepts many optional arguments.
# Check the readme at `docs/CMake API.md` in the JUCE repo for the full list.
juce_add_plugin(AudioPluginExample
# VERSION ... # Set this if the plugin version is different to the project version
# ICON_BIG ... # ICON_* arguments specify a path to an image file to use as an icon for the Standalone
# ICON_SMALL ...
# COMPANY_NAME ... # Specify the name of the plugin's author
# IS_SYNTH TRUE/FALSE # Is this a synth or an effect?
# NEEDS_MIDI_INPUT TRUE/FALSE # Does the plugin need midi input?
# NEEDS_MIDI_OUTPUT TRUE/FALSE # Does the plugin need midi output?
# IS_MIDI_EFFECT TRUE/FALSE # Is this plugin a MIDI effect?
# EDITOR_WANTS_KEYBOARD_FOCUS TRUE/FALSE # Does the editor need keyboard focus?
# COPY_PLUGIN_AFTER_BUILD TRUE/FALSE # Should the plugin be installed to a default location after building?
PLUGIN_MANUFACTURER_CODE Juce # A four-character manufacturer id with at least one upper-case character
PLUGIN_CODE Dem0 # A unique four-character plugin id with exactly one upper-case character
# GarageBand 10.3 requires the first letter to be upper-case, and the remaining letters to be lower-case
FORMATS AU VST3 Standalone # The formats to build. Other valid formats are: AAX Unity VST AU AUv3
PRODUCT_NAME "Audio Plugin Example") # The name of the final executable, which can differ from the target name
# `juce_generate_juce_header` will create a JuceHeader.h for a given target, which will be generated
# into your build tree. This should be included with `#include <JuceHeader.h>`. The include path for
# this header will be automatically added to the target. The main function of the JuceHeader is to
# include all your JUCE module headers; if you're happy to include module headers directly, you
# probably don't need to call this.
# juce_generate_juce_header(AudioPluginExample)
# `target_sources` adds source files to a target. We pass the target that needs the sources as the
# first argument, then a visibility parameter for the sources which should normally be PRIVATE.
# Finally, we supply a list of source files that will be built into the target. This is a standard
# CMake command.
target_sources(AudioPluginExample
PRIVATE
PluginEditor.cpp
PluginProcessor.cpp)
# `target_compile_definitions` adds some preprocessor definitions to our target. In a Projucer
# project, these might be passed in the 'Preprocessor Definitions' field. JUCE modules also make use
# of compile definitions to switch certain features on/off, so if there's a particular feature you
# need that's not on by default, check the module header for the correct flag to set here. These
# definitions will be visible both to your code, and also the JUCE module code, so for new
# definitions, pick unique names that are unlikely to collide! This is a standard CMake command.
target_compile_definitions(AudioPluginExample
PUBLIC
# JUCE_WEB_BROWSER and JUCE_USE_CURL would be on by default, but you might not need them.
JUCE_WEB_BROWSER=0 # If you remove this, add `NEEDS_WEB_BROWSER TRUE` to the `juce_add_plugin` call
JUCE_USE_CURL=0 # If you remove this, add `NEEDS_CURL TRUE` to the `juce_add_plugin` call
JUCE_VST3_CAN_REPLACE_VST2=0)
# If your target needs extra binary assets, you can add them here. The first argument is the name of
# a new static library target that will include all the binary resources. There is an optional
# `NAMESPACE` argument that can specify the namespace of the generated binary data class. Finally,
# the SOURCES argument should be followed by a list of source files that should be built into the
# static library. These source files can be of any kind (wav data, images, fonts, icons etc.).
# Conversion to binary-data will happen when your target is built.
# juce_add_binary_data(AudioPluginData SOURCES ...)
# `target_link_libraries` links libraries and JUCE modules to other libraries or executables. Here,
# we're linking our executable target to the `juce::juce_audio_utils` module. Inter-module
# dependencies are resolved automatically, so `juce_core`, `juce_events` and so on will also be
# linked automatically. If we'd generated a binary data target above, we would need to link to it
# here too. This is a standard CMake command.
target_link_libraries(AudioPluginExample
PRIVATE
# AudioPluginData # If we'd created a binary data target, we'd link to it here
juce::juce_audio_utils
PUBLIC
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)

View file

@ -1,24 +1,24 @@
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
add_subdirectory(AudioPlugin)
add_subdirectory(ConsoleApp)
add_subdirectory(GuiApp)
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
add_subdirectory(AudioPlugin)
add_subdirectory(ConsoleApp)
add_subdirectory(GuiApp)

View file

@ -1,88 +1,88 @@
# Example Console App CMakeLists.txt
# To get started on a new console app, copy this entire folder (containing this file and C++
# sources) to a convenient location, and then start making modifications. For other examples of
# CMakeLists for console apps, check `extras/BinaryBuilder` and `extras/UnitTestRunner` in the JUCE
# repo.
# The first line of any CMake project should be a call to `cmake_minimum_required`, which checks
# that the installed CMake will be able to understand the following CMakeLists, and ensures that
# CMake's behaviour is compatible with the named version. This is a standard CMake command, so more
# information can be found in the CMake docs.
cmake_minimum_required(VERSION 3.22)
# The top-level CMakeLists.txt file for a project must contain a literal, direct call to the
# `project()` command. `project()` sets up some helpful variables that describe source/binary
# directories, and the current project version. This is a standard CMake command.
project(CONSOLE_APP_EXAMPLE VERSION 0.0.1)
# If you've installed JUCE somehow (via a package manager, or directly using the CMake install
# target), you'll need to tell this project that it depends on the installed copy of JUCE. If you've
# included JUCE directly in your source tree (perhaps as a submodule), you'll need to tell CMake to
# include that subdirectory as part of the build.
# find_package(JUCE CONFIG REQUIRED) # If you've installed JUCE to your system
# or
# add_subdirectory(JUCE) # If you've put JUCE in a subdirectory called JUCE
# `juce_add_console_app` adds an executable target with the name passed as the first argument
# (ConsoleAppExample here). This target is a normal CMake target, but has a lot of extra properties
# set up by default. This function accepts many optional arguments. Check the readme at
# `docs/CMake API.md` in the JUCE repo for the full list.
juce_add_console_app(ConsoleAppExample
PRODUCT_NAME "Console App Example") # The name of the final executable, which can differ from the target name
# `juce_generate_juce_header` will create a JuceHeader.h for a given target, which will be generated
# into the build tree. This header should be included with `#include <JuceHeader.h>`. The include
# path for this header will be automatically added to the target. The main function of the
# JuceHeader is to include all the JUCE module headers for a particular target; if you're happy to
# include module headers directly, you probably don't need to call this.
# juce_generate_juce_header(ConsoleAppExample)
# `target_sources` adds source files to a target. We pass the target that needs the sources as the
# first argument, then a visibility parameter for the sources which should normally be PRIVATE.
# Finally, we supply a list of source files that will be built into the target. This is a standard
# CMake command.
target_sources(ConsoleAppExample
PRIVATE
Main.cpp)
# `target_compile_definitions` adds some preprocessor definitions to our target. In a Projucer
# project, these might be passed in the 'Preprocessor Definitions' field. JUCE modules also make use
# of compile definitions to switch certain features on/off, so if there's a particular feature you
# need that's not on by default, check the module header for the correct flag to set here. These
# definitions will be visible both to your code, and also the JUCE module code, so for new
# definitions, pick unique names that are unlikely to collide! This is a standard CMake command.
target_compile_definitions(ConsoleAppExample
PRIVATE
# JUCE_WEB_BROWSER and JUCE_USE_CURL would be on by default, but you might not need them.
JUCE_WEB_BROWSER=0 # If you remove this, add `NEEDS_WEB_BROWSER TRUE` to the `juce_add_console_app` call
JUCE_USE_CURL=0) # If you remove this, add `NEEDS_CURL TRUE` to the `juce_add_console_app` call
# If the target needs extra binary assets, they can be added here. The first argument is the name of
# a new static library target that will include all the binary resources. There is an optional
# `NAMESPACE` argument that can specify the namespace of the generated binary data class. Finally,
# the SOURCES argument should be followed by a list of source files that should be built into the
# static library. These source files can be of any kind (wav data, images, fonts, icons etc.).
# Conversion to binary-data will happen when the target is built.
# juce_add_binary_data(ConsoleAppData SOURCES ...)
# `target_link_libraries` links libraries and JUCE modules to other libraries or executables. Here,
# we're linking our executable target to the `juce::juce_core` module. Inter-module dependencies are
# resolved automatically. If you'd generated a binary data target above, you would need to link to
# it here too. This is a standard CMake command.
target_link_libraries(ConsoleAppExample
PRIVATE
# ConsoleAppData # If you'd created a binary data target, you'd link to it here
juce::juce_core
PUBLIC
juce::juce_recommended_config_flags
juce::juce_recommended_warning_flags)
# Example Console App CMakeLists.txt
# To get started on a new console app, copy this entire folder (containing this file and C++
# sources) to a convenient location, and then start making modifications. For other examples of
# CMakeLists for console apps, check `extras/BinaryBuilder` and `extras/UnitTestRunner` in the JUCE
# repo.
# The first line of any CMake project should be a call to `cmake_minimum_required`, which checks
# that the installed CMake will be able to understand the following CMakeLists, and ensures that
# CMake's behaviour is compatible with the named version. This is a standard CMake command, so more
# information can be found in the CMake docs.
cmake_minimum_required(VERSION 3.22)
# The top-level CMakeLists.txt file for a project must contain a literal, direct call to the
# `project()` command. `project()` sets up some helpful variables that describe source/binary
# directories, and the current project version. This is a standard CMake command.
project(CONSOLE_APP_EXAMPLE VERSION 0.0.1)
# If you've installed JUCE somehow (via a package manager, or directly using the CMake install
# target), you'll need to tell this project that it depends on the installed copy of JUCE. If you've
# included JUCE directly in your source tree (perhaps as a submodule), you'll need to tell CMake to
# include that subdirectory as part of the build.
# find_package(JUCE CONFIG REQUIRED) # If you've installed JUCE to your system
# or
# add_subdirectory(JUCE) # If you've put JUCE in a subdirectory called JUCE
# `juce_add_console_app` adds an executable target with the name passed as the first argument
# (ConsoleAppExample here). This target is a normal CMake target, but has a lot of extra properties
# set up by default. This function accepts many optional arguments. Check the readme at
# `docs/CMake API.md` in the JUCE repo for the full list.
juce_add_console_app(ConsoleAppExample
PRODUCT_NAME "Console App Example") # The name of the final executable, which can differ from the target name
# `juce_generate_juce_header` will create a JuceHeader.h for a given target, which will be generated
# into the build tree. This header should be included with `#include <JuceHeader.h>`. The include
# path for this header will be automatically added to the target. The main function of the
# JuceHeader is to include all the JUCE module headers for a particular target; if you're happy to
# include module headers directly, you probably don't need to call this.
# juce_generate_juce_header(ConsoleAppExample)
# `target_sources` adds source files to a target. We pass the target that needs the sources as the
# first argument, then a visibility parameter for the sources which should normally be PRIVATE.
# Finally, we supply a list of source files that will be built into the target. This is a standard
# CMake command.
target_sources(ConsoleAppExample
PRIVATE
Main.cpp)
# `target_compile_definitions` adds some preprocessor definitions to our target. In a Projucer
# project, these might be passed in the 'Preprocessor Definitions' field. JUCE modules also make use
# of compile definitions to switch certain features on/off, so if there's a particular feature you
# need that's not on by default, check the module header for the correct flag to set here. These
# definitions will be visible both to your code, and also the JUCE module code, so for new
# definitions, pick unique names that are unlikely to collide! This is a standard CMake command.
target_compile_definitions(ConsoleAppExample
PRIVATE
# JUCE_WEB_BROWSER and JUCE_USE_CURL would be on by default, but you might not need them.
JUCE_WEB_BROWSER=0 # If you remove this, add `NEEDS_WEB_BROWSER TRUE` to the `juce_add_console_app` call
JUCE_USE_CURL=0) # If you remove this, add `NEEDS_CURL TRUE` to the `juce_add_console_app` call
# If the target needs extra binary assets, they can be added here. The first argument is the name of
# a new static library target that will include all the binary resources. There is an optional
# `NAMESPACE` argument that can specify the namespace of the generated binary data class. Finally,
# the SOURCES argument should be followed by a list of source files that should be built into the
# static library. These source files can be of any kind (wav data, images, fonts, icons etc.).
# Conversion to binary-data will happen when the target is built.
# juce_add_binary_data(ConsoleAppData SOURCES ...)
# `target_link_libraries` links libraries and JUCE modules to other libraries or executables. Here,
# we're linking our executable target to the `juce::juce_core` module. Inter-module dependencies are
# resolved automatically. If you'd generated a binary data target above, you would need to link to
# it here too. This is a standard CMake command.
target_link_libraries(ConsoleAppExample
PRIVATE
# ConsoleAppData # If you'd created a binary data target, you'd link to it here
juce::juce_core
PUBLIC
juce::juce_recommended_config_flags
juce::juce_recommended_warning_flags)

View file

@ -1,102 +1,102 @@
# Example GUI App CMakeLists.txt
# To get started on a new GUI app, copy this entire folder (containing this file and C++ sources) to
# a convenient location, and then start making modifications. For other examples of CMakeLists for
# GUI apps, check `extras/Projucer` and `examples/DemoRunner` in the JUCE repo.
# The first line of any CMake project should be a call to `cmake_minimum_required`, which checks
# that the installed CMake will be able to understand the following CMakeLists, and ensures that
# CMake's behaviour is compatible with the named version. This is a standard CMake command, so more
# information can be found in the CMake docs.
cmake_minimum_required(VERSION 3.22)
# The top-level CMakeLists.txt file for a project must contain a literal, direct call to the
# `project()` command. `project()` sets up some helpful variables that describe source/binary
# directories, and the current project version. This is a standard CMake command.
project(GUI_APP_EXAMPLE VERSION 0.0.1)
# If you've installed JUCE somehow (via a package manager, or directly using the CMake install
# target), you'll need to tell this project that it depends on the installed copy of JUCE. If you've
# included JUCE directly in your source tree (perhaps as a submodule), you'll need to tell CMake to
# include that subdirectory as part of the build.
# find_package(JUCE CONFIG REQUIRED) # If you've installed JUCE to your system
# or
# add_subdirectory(JUCE) # If you've put JUCE in a subdirectory called JUCE
# If your app depends the VST2 SDK, perhaps to host VST2 plugins, CMake needs to be told where
# to find the SDK on your system. This setup should be done before calling `juce_add_gui_app`.
# juce_set_vst2_sdk_path(...)
# `juce_add_gui_app` adds an executable target with the name passed as the first argument
# (GuiAppExample here). This target is a normal CMake target, but has a lot of extra properties set
# up by default. This function accepts many optional arguments. Check the readme at
# `docs/CMake API.md` in the JUCE repo for the full list.
juce_add_gui_app(GuiAppExample
# VERSION ... # Set this if the app version is different to the project version
# ICON_BIG ... # ICON_* arguments specify a path to an image file to use as an icon
# ICON_SMALL ...
# DOCUMENT_EXTENSIONS ... # Specify file extensions that should be associated with this app
# COMPANY_NAME ... # Specify the name of the app's author
PRODUCT_NAME "Gui App Example") # The name of the final executable, which can differ from the target name
# `juce_generate_juce_header` will create a JuceHeader.h for a given target, which will be generated
# into your build tree. This should be included with `#include <JuceHeader.h>`. The include path for
# this header will be automatically added to the target. The main function of the JuceHeader is to
# include all your JUCE module headers; if you're happy to include module headers directly, you
# probably don't need to call this.
# juce_generate_juce_header(GuiAppExample)
# `target_sources` adds source files to a target. We pass the target that needs the sources as the
# first argument, then a visibility parameter for the sources which should normally be PRIVATE.
# Finally, we supply a list of source files that will be built into the target. This is a standard
# CMake command.
target_sources(GuiAppExample
PRIVATE
Main.cpp
MainComponent.cpp)
# `target_compile_definitions` adds some preprocessor definitions to our target. In a Projucer
# project, these might be passed in the 'Preprocessor Definitions' field. JUCE modules also make use
# of compile definitions to switch certain features on/off, so if there's a particular feature you
# need that's not on by default, check the module header for the correct flag to set here. These
# definitions will be visible both to your code, and also the JUCE module code, so for new
# definitions, pick unique names that are unlikely to collide! This is a standard CMake command.
target_compile_definitions(GuiAppExample
PRIVATE
# JUCE_WEB_BROWSER and JUCE_USE_CURL would be on by default, but you might not need them.
JUCE_WEB_BROWSER=0 # If you remove this, add `NEEDS_WEB_BROWSER TRUE` to the `juce_add_gui_app` call
JUCE_USE_CURL=0 # If you remove this, add `NEEDS_CURL TRUE` to the `juce_add_gui_app` call
JUCE_APPLICATION_NAME_STRING="$<TARGET_PROPERTY:GuiAppExample,JUCE_PRODUCT_NAME>"
JUCE_APPLICATION_VERSION_STRING="$<TARGET_PROPERTY:GuiAppExample,JUCE_VERSION>")
# If your target needs extra binary assets, you can add them here. The first argument is the name of
# a new static library target that will include all the binary resources. There is an optional
# `NAMESPACE` argument that can specify the namespace of the generated binary data class. Finally,
# the SOURCES argument should be followed by a list of source files that should be built into the
# static library. These source files can be of any kind (wav data, images, fonts, icons etc.).
# Conversion to binary-data will happen when your target is built.
# juce_add_binary_data(GuiAppData SOURCES ...)
# `target_link_libraries` links libraries and JUCE modules to other libraries or executables. Here,
# we're linking our executable target to the `juce::juce_gui_extra` module. Inter-module
# dependencies are resolved automatically, so `juce_core`, `juce_events` and so on will also be
# linked automatically. If we'd generated a binary data target above, we would need to link to it
# here too. This is a standard CMake command.
target_link_libraries(GuiAppExample
PRIVATE
# GuiAppData # If we'd created a binary data target, we'd link to it here
juce::juce_gui_extra
PUBLIC
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
# Example GUI App CMakeLists.txt
# To get started on a new GUI app, copy this entire folder (containing this file and C++ sources) to
# a convenient location, and then start making modifications. For other examples of CMakeLists for
# GUI apps, check `extras/Projucer` and `examples/DemoRunner` in the JUCE repo.
# The first line of any CMake project should be a call to `cmake_minimum_required`, which checks
# that the installed CMake will be able to understand the following CMakeLists, and ensures that
# CMake's behaviour is compatible with the named version. This is a standard CMake command, so more
# information can be found in the CMake docs.
cmake_minimum_required(VERSION 3.22)
# The top-level CMakeLists.txt file for a project must contain a literal, direct call to the
# `project()` command. `project()` sets up some helpful variables that describe source/binary
# directories, and the current project version. This is a standard CMake command.
project(GUI_APP_EXAMPLE VERSION 0.0.1)
# If you've installed JUCE somehow (via a package manager, or directly using the CMake install
# target), you'll need to tell this project that it depends on the installed copy of JUCE. If you've
# included JUCE directly in your source tree (perhaps as a submodule), you'll need to tell CMake to
# include that subdirectory as part of the build.
# find_package(JUCE CONFIG REQUIRED) # If you've installed JUCE to your system
# or
# add_subdirectory(JUCE) # If you've put JUCE in a subdirectory called JUCE
# If your app depends the VST2 SDK, perhaps to host VST2 plugins, CMake needs to be told where
# to find the SDK on your system. This setup should be done before calling `juce_add_gui_app`.
# juce_set_vst2_sdk_path(...)
# `juce_add_gui_app` adds an executable target with the name passed as the first argument
# (GuiAppExample here). This target is a normal CMake target, but has a lot of extra properties set
# up by default. This function accepts many optional arguments. Check the readme at
# `docs/CMake API.md` in the JUCE repo for the full list.
juce_add_gui_app(GuiAppExample
# VERSION ... # Set this if the app version is different to the project version
# ICON_BIG ... # ICON_* arguments specify a path to an image file to use as an icon
# ICON_SMALL ...
# DOCUMENT_EXTENSIONS ... # Specify file extensions that should be associated with this app
# COMPANY_NAME ... # Specify the name of the app's author
PRODUCT_NAME "Gui App Example") # The name of the final executable, which can differ from the target name
# `juce_generate_juce_header` will create a JuceHeader.h for a given target, which will be generated
# into your build tree. This should be included with `#include <JuceHeader.h>`. The include path for
# this header will be automatically added to the target. The main function of the JuceHeader is to
# include all your JUCE module headers; if you're happy to include module headers directly, you
# probably don't need to call this.
# juce_generate_juce_header(GuiAppExample)
# `target_sources` adds source files to a target. We pass the target that needs the sources as the
# first argument, then a visibility parameter for the sources which should normally be PRIVATE.
# Finally, we supply a list of source files that will be built into the target. This is a standard
# CMake command.
target_sources(GuiAppExample
PRIVATE
Main.cpp
MainComponent.cpp)
# `target_compile_definitions` adds some preprocessor definitions to our target. In a Projucer
# project, these might be passed in the 'Preprocessor Definitions' field. JUCE modules also make use
# of compile definitions to switch certain features on/off, so if there's a particular feature you
# need that's not on by default, check the module header for the correct flag to set here. These
# definitions will be visible both to your code, and also the JUCE module code, so for new
# definitions, pick unique names that are unlikely to collide! This is a standard CMake command.
target_compile_definitions(GuiAppExample
PRIVATE
# JUCE_WEB_BROWSER and JUCE_USE_CURL would be on by default, but you might not need them.
JUCE_WEB_BROWSER=0 # If you remove this, add `NEEDS_WEB_BROWSER TRUE` to the `juce_add_gui_app` call
JUCE_USE_CURL=0 # If you remove this, add `NEEDS_CURL TRUE` to the `juce_add_gui_app` call
JUCE_APPLICATION_NAME_STRING="$<TARGET_PROPERTY:GuiAppExample,JUCE_PRODUCT_NAME>"
JUCE_APPLICATION_VERSION_STRING="$<TARGET_PROPERTY:GuiAppExample,JUCE_VERSION>")
# If your target needs extra binary assets, you can add them here. The first argument is the name of
# a new static library target that will include all the binary resources. There is an optional
# `NAMESPACE` argument that can specify the namespace of the generated binary data class. Finally,
# the SOURCES argument should be followed by a list of source files that should be built into the
# static library. These source files can be of any kind (wav data, images, fonts, icons etc.).
# Conversion to binary-data will happen when your target is built.
# juce_add_binary_data(GuiAppData SOURCES ...)
# `target_link_libraries` links libraries and JUCE modules to other libraries or executables. Here,
# we're linking our executable target to the `juce::juce_gui_extra` module. Inter-module
# dependencies are resolved automatically, so `juce_core`, `juce_events` and so on will also be
# linked automatically. If we'd generated a binary data target above, we would need to link to it
# here too. This is a standard CMake command.
target_link_libraries(GuiAppExample
PRIVATE
# GuiAppData # If we'd created a binary data target, we'd link to it here
juce::juce_gui_extra
PUBLIC
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)

View file

@ -1,83 +1,83 @@
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
set(CMAKE_FOLDER examples)
add_subdirectory(CMake)
add_subdirectory(DemoRunner)
function(_juce_add_pips)
file(GLOB headers
CONFIGURE_DEPENDS LIST_DIRECTORIES false
"${CMAKE_CURRENT_SOURCE_DIR}/*.h")
if((CMAKE_SYSTEM_NAME STREQUAL "Linux") OR (CMAKE_SYSTEM_NAME MATCHES ".*BSD"))
list(REMOVE_ITEM headers
"${CMAKE_CURRENT_SOURCE_DIR}/CameraDemo.h"
"${CMAKE_CURRENT_SOURCE_DIR}/PushNotificationsDemo.h"
"${CMAKE_CURRENT_SOURCE_DIR}/VideoDemo.h")
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
list(REMOVE_ITEM headers
"${CMAKE_CURRENT_SOURCE_DIR}/PushNotificationsDemo.h")
endif()
if(NOT (TARGET juce_ara_sdk
AND (CMAKE_SYSTEM_NAME STREQUAL "Windows"
OR CMAKE_SYSTEM_NAME STREQUAL "Darwin"
OR CMAKE_SYSTEM_NAME STREQUAL "Linux")))
list(REMOVE_ITEM headers
"${CMAKE_CURRENT_SOURCE_DIR}/ARAPluginDemo.h")
endif()
if(NOT TARGET juce_vst2_sdk)
list(REMOVE_ITEM headers "${CMAKE_CURRENT_SOURCE_DIR}/ReaperEmbeddedViewPluginDemo.h")
endif()
if((CMAKE_SYSTEM_NAME STREQUAL "Windows")
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/WebViewPluginDemo.h")
if(NOT ("${JUCE_CMAKE_UTILS_DIR}" IN_LIST CMAKE_MODULE_PATH))
list(APPEND CMAKE_MODULE_PATH "${JUCE_CMAKE_UTILS_DIR}")
endif()
find_package(WebView2)
if(NOT WebView2_FOUND)
list(REMOVE_ITEM headers "${CMAKE_CURRENT_SOURCE_DIR}/WebViewPluginDemo.h")
message(WARNING "The WebViewPluginDemo was not enabled because the WebView2 package wasn't found.")
endif()
endif()
foreach(header IN ITEMS ${headers})
juce_add_pip(${header} added_target)
target_link_libraries(${added_target} PUBLIC
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
endforeach()
endfunction()
add_subdirectory(Audio)
add_subdirectory(DSP)
add_subdirectory(GUI)
add_subdirectory(Plugins)
add_subdirectory(Utilities)
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
set(CMAKE_FOLDER examples)
add_subdirectory(CMake)
add_subdirectory(DemoRunner)
function(_juce_add_pips)
file(GLOB headers
CONFIGURE_DEPENDS LIST_DIRECTORIES false
"${CMAKE_CURRENT_SOURCE_DIR}/*.h")
if((CMAKE_SYSTEM_NAME STREQUAL "Linux") OR (CMAKE_SYSTEM_NAME MATCHES ".*BSD"))
list(REMOVE_ITEM headers
"${CMAKE_CURRENT_SOURCE_DIR}/CameraDemo.h"
"${CMAKE_CURRENT_SOURCE_DIR}/PushNotificationsDemo.h"
"${CMAKE_CURRENT_SOURCE_DIR}/VideoDemo.h")
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
list(REMOVE_ITEM headers
"${CMAKE_CURRENT_SOURCE_DIR}/PushNotificationsDemo.h")
endif()
if(NOT (TARGET juce_ara_sdk
AND (CMAKE_SYSTEM_NAME STREQUAL "Windows"
OR CMAKE_SYSTEM_NAME STREQUAL "Darwin"
OR CMAKE_SYSTEM_NAME STREQUAL "Linux")))
list(REMOVE_ITEM headers
"${CMAKE_CURRENT_SOURCE_DIR}/ARAPluginDemo.h")
endif()
if(NOT TARGET juce_vst2_sdk)
list(REMOVE_ITEM headers "${CMAKE_CURRENT_SOURCE_DIR}/ReaperEmbeddedViewPluginDemo.h")
endif()
if((CMAKE_SYSTEM_NAME STREQUAL "Windows")
AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/WebViewPluginDemo.h")
if(NOT ("${JUCE_CMAKE_UTILS_DIR}" IN_LIST CMAKE_MODULE_PATH))
list(APPEND CMAKE_MODULE_PATH "${JUCE_CMAKE_UTILS_DIR}")
endif()
find_package(WebView2)
if(NOT WebView2_FOUND)
list(REMOVE_ITEM headers "${CMAKE_CURRENT_SOURCE_DIR}/WebViewPluginDemo.h")
message(WARNING "The WebViewPluginDemo was not enabled because the WebView2 package wasn't found.")
endif()
endif()
foreach(header IN ITEMS ${headers})
juce_add_pip(${header} added_target)
target_link_libraries(${added_target} PUBLIC
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
endforeach()
endfunction()
add_subdirectory(Audio)
add_subdirectory(DSP)
add_subdirectory(GUI)
add_subdirectory(Plugins)
add_subdirectory(Utilities)

View file

@ -1,22 +1,22 @@
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
_juce_add_pips()
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
_juce_add_pips()

View file

@ -1,86 +1,86 @@
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
juce_add_gui_app(DemoRunner
BUNDLE_ID com.juce.demorunner
ICON_BIG ${CMAKE_CURRENT_SOURCE_DIR}/Source/JUCEAppIcon.png
NEEDS_CURL TRUE
NEEDS_WEB_BROWSER TRUE
MICROPHONE_PERMISSION_ENABLED TRUE
CAMERA_PERMISSION_ENABLED TRUE
BLUETOOTH_PERMISSION_ENABLED TRUE
FILE_SHARING_ENABLED TRUE
DOCUMENT_BROWSER_ENABLED TRUE
REQUIRES_FULL_SCREEN FALSE
IPAD_SCREEN_ORIENTATIONS UIInterfaceOrientationPortrait
UIInterfaceOrientationPortraitUpsideDown
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
IPHONE_SCREEN_ORIENTATIONS UIInterfaceOrientationPortrait
UIInterfaceOrientationPortraitUpsideDown
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight)
juce_generate_juce_header(DemoRunner)
target_sources(DemoRunner PRIVATE
Source/Demos/DemoPIPs1.cpp
Source/Demos/DemoPIPs2.cpp
Source/Demos/JUCEDemos.cpp
Source/Main.cpp
Source/UI/DemoContentComponent.cpp
Source/UI/MainComponent.cpp)
target_compile_definitions(DemoRunner PRIVATE
PIP_JUCE_EXAMPLES_DIRECTORY_STRING="${JUCE_SOURCE_DIR}/examples"
JUCE_ALLOW_STATIC_NULL_VARIABLES=0
JUCE_CONTENT_SHARING=1
JUCE_DEMO_RUNNER=1
JUCE_PLUGINHOST_LV2=1
JUCE_PLUGINHOST_VST3=1
JUCE_STRICT_REFCOUNTEDPOINTER=1
JUCE_UNIT_TESTS=1
JUCE_USE_CAMERA=1
JUCE_USE_CURL=1
JUCE_USE_MP3AUDIOFORMAT=1
JUCE_WEB_BROWSER=1
# This is a temporary workaround to allow builds to complete on Xcode 15.
# Add -Wl,-ld_classic to the OTHER_LDFLAGS build setting if you need to
# deploy to older versions of macOS/iOS.
JUCE_SILENCE_XCODE_15_LINKER_WARNING=1)
target_link_libraries(DemoRunner PRIVATE
juce::juce_analytics
juce::juce_animation
juce::juce_audio_utils
juce::juce_box2d
juce::juce_dsp
juce::juce_opengl
juce::juce_osc
juce::juce_product_unlocking
juce::juce_video
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
foreach(folder IN ITEMS ../Assets ../Audio ../DSP ../GUI ../Utilities)
juce_add_bundle_resources_directory(DemoRunner ${folder})
endforeach()
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
juce_add_gui_app(DemoRunner
BUNDLE_ID com.juce.demorunner
ICON_BIG ${CMAKE_CURRENT_SOURCE_DIR}/Source/JUCEAppIcon.png
NEEDS_CURL TRUE
NEEDS_WEB_BROWSER TRUE
MICROPHONE_PERMISSION_ENABLED TRUE
CAMERA_PERMISSION_ENABLED TRUE
BLUETOOTH_PERMISSION_ENABLED TRUE
FILE_SHARING_ENABLED TRUE
DOCUMENT_BROWSER_ENABLED TRUE
REQUIRES_FULL_SCREEN FALSE
IPAD_SCREEN_ORIENTATIONS UIInterfaceOrientationPortrait
UIInterfaceOrientationPortraitUpsideDown
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
IPHONE_SCREEN_ORIENTATIONS UIInterfaceOrientationPortrait
UIInterfaceOrientationPortraitUpsideDown
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight)
juce_generate_juce_header(DemoRunner)
target_sources(DemoRunner PRIVATE
Source/Demos/DemoPIPs1.cpp
Source/Demos/DemoPIPs2.cpp
Source/Demos/JUCEDemos.cpp
Source/Main.cpp
Source/UI/DemoContentComponent.cpp
Source/UI/MainComponent.cpp)
target_compile_definitions(DemoRunner PRIVATE
PIP_JUCE_EXAMPLES_DIRECTORY_STRING="${JUCE_SOURCE_DIR}/examples"
JUCE_ALLOW_STATIC_NULL_VARIABLES=0
JUCE_CONTENT_SHARING=1
JUCE_DEMO_RUNNER=1
JUCE_PLUGINHOST_LV2=1
JUCE_PLUGINHOST_VST3=1
JUCE_STRICT_REFCOUNTEDPOINTER=1
JUCE_UNIT_TESTS=1
JUCE_USE_CAMERA=1
JUCE_USE_CURL=1
JUCE_USE_MP3AUDIOFORMAT=1
JUCE_WEB_BROWSER=1
# This is a temporary workaround to allow builds to complete on Xcode 15.
# Add -Wl,-ld_classic to the OTHER_LDFLAGS build setting if you need to
# deploy to older versions of macOS/iOS.
JUCE_SILENCE_XCODE_15_LINKER_WARNING=1)
target_link_libraries(DemoRunner PRIVATE
juce::juce_analytics
juce::juce_animation
juce::juce_audio_utils
juce::juce_box2d
juce::juce_dsp
juce::juce_opengl
juce::juce_osc
juce::juce_product_unlocking
juce::juce_video
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
foreach(folder IN ITEMS ../Assets ../Audio ../DSP ../GUI ../Utilities)
juce_add_bundle_resources_directory(DemoRunner ${folder})
endforeach()

View file

@ -1,22 +1,22 @@
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
_juce_add_pips()
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
_juce_add_pips()

View file

@ -1,22 +1,22 @@
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
_juce_add_pips()
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
_juce_add_pips()

View file

@ -1,22 +1,22 @@
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
_juce_add_pips()
# ==============================================================================
#
# This file is part of the JUCE framework examples.
# Copyright (c) Raw Material Software Limited
#
# The code included in this file is provided under the terms of the ISC license
# http://www.isc.org/downloads/software-support-policy/isc-license. Permission
# to use, copy, modify, and/or distribute this software for any purpose with or
# without fee is hereby granted provided that the above copyright notice and
# this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.
#
# ==============================================================================
_juce_add_pips()

View file

@ -1,47 +1,47 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
juce_add_gui_app(AudioPerformanceTest BUNDLE_ID com.juce.AudioPerformanceTest)
juce_generate_juce_header(AudioPerformanceTest)
target_sources(AudioPerformanceTest PRIVATE
Source/Main.cpp)
target_compile_definitions(AudioPerformanceTest PRIVATE
JUCE_USE_CURL=0 JUCE_WEB_BROWSER=0)
target_link_libraries(AudioPerformanceTest PRIVATE
juce::juce_audio_utils
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
juce_add_gui_app(AudioPerformanceTest BUNDLE_ID com.juce.AudioPerformanceTest)
juce_generate_juce_header(AudioPerformanceTest)
target_sources(AudioPerformanceTest PRIVATE
Source/Main.cpp)
target_compile_definitions(AudioPerformanceTest PRIVATE
JUCE_USE_CURL=0 JUCE_WEB_BROWSER=0)
target_link_libraries(AudioPerformanceTest PRIVATE
juce::juce_audio_utils
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)

View file

@ -1,93 +1,93 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
juce_add_gui_app(AudioPluginHost
BUNDLE_ID com.juce.pluginhost
ICON_BIG "${CMAKE_CURRENT_SOURCE_DIR}/Source/JUCEAppIcon.png"
MICROPHONE_PERMISSION_ENABLED TRUE
PLUGINHOST_AU TRUE)
juce_generate_juce_header(AudioPluginHost)
target_sources(AudioPluginHost PRIVATE
Source/HostStartup.cpp
Source/Plugins/ARAPlugin.cpp
Source/Plugins/IOConfigurationWindow.cpp
Source/Plugins/InternalPlugins.cpp
Source/Plugins/PluginGraph.cpp
Source/UI/GraphEditorPanel.cpp
Source/UI/MainHostWindow.cpp)
juce_add_binary_data(AudioPluginHostData SOURCES
../../examples/Assets/cassette_recorder.wav
../../examples/Assets/cello.wav
../../examples/Assets/guitar_amp.wav
../../examples/Assets/proaudio.path
../../examples/Assets/reverb_ir.wav
../../examples/Assets/singing.ogg)
target_compile_definitions(AudioPluginHost PRIVATE
JUCE_ALSA=1
JUCE_CONTENT_SHARING=1
JUCE_DIRECTSOUND=1
JUCE_DISABLE_CAUTIOUS_PARAMETER_ID_CHECKING=1
JUCE_PLUGINHOST_LADSPA=1
JUCE_PLUGINHOST_LV2=1
JUCE_PLUGINHOST_VST3=1
JUCE_PLUGINHOST_VST=0
JUCE_PLUGINHOST_ARA=0
JUCE_USE_CAMERA=0
JUCE_USE_CDBURNER=0
JUCE_USE_CDREADER=0
JUCE_USE_CURL=0
JUCE_USE_FLAC=0
JUCE_USE_OGGVORBIS=1
JUCE_VST3_HOST_CROSS_PLATFORM_UID=1
JUCE_WASAPI=1
JUCE_WEB_BROWSER=0
PIP_JUCE_EXAMPLES_DIRECTORY_STRING="${JUCE_SOURCE_DIR}/examples"
# This is a temporary workaround to allow builds to complete on Xcode 15.
# Add -Wl,-ld_classic to the OTHER_LDFLAGS build setting if you need to
# deploy to older versions of macOS/iOS.
JUCE_SILENCE_XCODE_15_LINKER_WARNING=1)
target_link_libraries(AudioPluginHost PRIVATE
AudioPluginHostData
juce::juce_audio_utils
juce::juce_cryptography
juce::juce_dsp
juce::juce_opengl
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
juce_add_bundle_resources_directory(AudioPluginHost ../../examples/Assets)
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
juce_add_gui_app(AudioPluginHost
BUNDLE_ID com.juce.pluginhost
ICON_BIG "${CMAKE_CURRENT_SOURCE_DIR}/Source/JUCEAppIcon.png"
MICROPHONE_PERMISSION_ENABLED TRUE
PLUGINHOST_AU TRUE)
juce_generate_juce_header(AudioPluginHost)
target_sources(AudioPluginHost PRIVATE
Source/HostStartup.cpp
Source/Plugins/ARAPlugin.cpp
Source/Plugins/IOConfigurationWindow.cpp
Source/Plugins/InternalPlugins.cpp
Source/Plugins/PluginGraph.cpp
Source/UI/GraphEditorPanel.cpp
Source/UI/MainHostWindow.cpp)
juce_add_binary_data(AudioPluginHostData SOURCES
../../examples/Assets/cassette_recorder.wav
../../examples/Assets/cello.wav
../../examples/Assets/guitar_amp.wav
../../examples/Assets/proaudio.path
../../examples/Assets/reverb_ir.wav
../../examples/Assets/singing.ogg)
target_compile_definitions(AudioPluginHost PRIVATE
JUCE_ALSA=1
JUCE_CONTENT_SHARING=1
JUCE_DIRECTSOUND=1
JUCE_DISABLE_CAUTIOUS_PARAMETER_ID_CHECKING=1
JUCE_PLUGINHOST_LADSPA=1
JUCE_PLUGINHOST_LV2=1
JUCE_PLUGINHOST_VST3=1
JUCE_PLUGINHOST_VST=0
JUCE_PLUGINHOST_ARA=0
JUCE_USE_CAMERA=0
JUCE_USE_CDBURNER=0
JUCE_USE_CDREADER=0
JUCE_USE_CURL=0
JUCE_USE_FLAC=0
JUCE_USE_OGGVORBIS=1
JUCE_VST3_HOST_CROSS_PLATFORM_UID=1
JUCE_WASAPI=1
JUCE_WEB_BROWSER=0
PIP_JUCE_EXAMPLES_DIRECTORY_STRING="${JUCE_SOURCE_DIR}/examples"
# This is a temporary workaround to allow builds to complete on Xcode 15.
# Add -Wl,-ld_classic to the OTHER_LDFLAGS build setting if you need to
# deploy to older versions of macOS/iOS.
JUCE_SILENCE_XCODE_15_LINKER_WARNING=1)
target_link_libraries(AudioPluginHost PRIVATE
AudioPluginHostData
juce::juce_audio_utils
juce::juce_cryptography
juce::juce_dsp
juce::juce_opengl
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
juce_add_bundle_resources_directory(AudioPluginHost ../../examples/Assets)

View file

@ -1,50 +1,50 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
juce_add_console_app(BinaryBuilder)
juce_generate_juce_header(BinaryBuilder)
target_sources(BinaryBuilder PRIVATE Source/Main.cpp)
target_compile_definitions(BinaryBuilder PRIVATE
JUCE_USE_CURL=0
# This is a temporary workaround to allow builds to complete on Xcode 15.
# Add -Wl,-ld_classic to the OTHER_LDFLAGS build setting if you need to
# deploy to older versions of macOS/iOS.
JUCE_SILENCE_XCODE_15_LINKER_WARNING=1)
target_link_libraries(BinaryBuilder PRIVATE
juce::juce_core
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
juce_add_console_app(BinaryBuilder)
juce_generate_juce_header(BinaryBuilder)
target_sources(BinaryBuilder PRIVATE Source/Main.cpp)
target_compile_definitions(BinaryBuilder PRIVATE
JUCE_USE_CURL=0
# This is a temporary workaround to allow builds to complete on Xcode 15.
# Add -Wl,-ld_classic to the OTHER_LDFLAGS build setting if you need to
# deploy to older versions of macOS/iOS.
JUCE_SILENCE_XCODE_15_LINKER_WARNING=1)
target_link_libraries(BinaryBuilder PRIVATE
juce::juce_core
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)

View file

@ -1,94 +1,94 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
include(FindPackageHandleStandardArgs)
if(JUCE_WEBVIEW2_PACKAGE_LOCATION)
set(initial_search_dir ${JUCE_WEBVIEW2_PACKAGE_LOCATION})
else()
set(initial_search_dir "$ENV{USERPROFILE}/AppData/Local/PackageManagement/NuGet/Packages")
endif()
file(GLOB subdirs "${initial_search_dir}/*Microsoft.Web.WebView2*")
if(subdirs)
list(GET subdirs 0 search_dir)
list(LENGTH subdirs num_webview2_packages)
if(num_webview2_packages GREATER 1)
message(WARNING "Multiple WebView2 packages found in the local NuGet folder. Proceeding with ${search_dir}.")
endif()
find_path(WebView2_root_dir build/native/include/WebView2.h HINTS ${search_dir})
set(WebView2_include_dir "${WebView2_root_dir}/build/native/include")
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm64")
set(WebView2_arch arm64)
else()
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(WebView2_arch x64)
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(WebView2_arch x86)
endif()
endif()
set(WebView2_library "${WebView2_root_dir}/build/native/${WebView2_arch}/WebView2LoaderStatic.lib")
elseif(NOT WebView2_FIND_QUIETLY)
message(WARNING
"WebView2 wasn't found in the the local NuGet folder."
"\n"
"To install NuGet and the WebView2 package containing the statically linked library, "
"open a PowerShell and issue the following commands"
"\n"
"> Register-PackageSource -provider NuGet -name nugetRepository -location https://www.nuget.org/api/v2\n"
"> Install-Package Microsoft.Web.WebView2 -Scope CurrentUser -RequiredVersion 1.0.1901.177 -Source nugetRepository\n"
"\n"
"Alternatively you can use the JUCE_WEBVIEW2_PACKAGE_LOCATION CMake variable to specify the directory "
"where this find script is looking for the *Microsoft.Web.WebView2* package directory.")
endif()
find_package_handle_standard_args(WebView2 DEFAULT_MSG WebView2_include_dir WebView2_library)
if(WebView2_FOUND)
set(WebView2_INCLUDE_DIRS ${WebView2_include_dir})
set(WebView2_LIBRARIES ${WebView2_library})
mark_as_advanced(WebView2_library WebView2_include_dir WebView2_root_dir)
if(NOT TARGET juce_webview2)
add_library(juce_webview2 INTERFACE)
add_library(juce::juce_webview2 ALIAS juce_webview2)
target_include_directories(juce_webview2 INTERFACE ${WebView2_INCLUDE_DIRS})
target_link_libraries(juce_webview2 INTERFACE ${WebView2_LIBRARIES})
endif()
endif()
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
include(FindPackageHandleStandardArgs)
if(JUCE_WEBVIEW2_PACKAGE_LOCATION)
set(initial_search_dir ${JUCE_WEBVIEW2_PACKAGE_LOCATION})
else()
set(initial_search_dir "$ENV{USERPROFILE}/AppData/Local/PackageManagement/NuGet/Packages")
endif()
file(GLOB subdirs "${initial_search_dir}/*Microsoft.Web.WebView2*")
if(subdirs)
list(GET subdirs 0 search_dir)
list(LENGTH subdirs num_webview2_packages)
if(num_webview2_packages GREATER 1)
message(WARNING "Multiple WebView2 packages found in the local NuGet folder. Proceeding with ${search_dir}.")
endif()
find_path(WebView2_root_dir build/native/include/WebView2.h HINTS ${search_dir})
set(WebView2_include_dir "${WebView2_root_dir}/build/native/include")
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm64")
set(WebView2_arch arm64)
else()
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(WebView2_arch x64)
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(WebView2_arch x86)
endif()
endif()
set(WebView2_library "${WebView2_root_dir}/build/native/${WebView2_arch}/WebView2LoaderStatic.lib")
elseif(NOT WebView2_FIND_QUIETLY)
message(WARNING
"WebView2 wasn't found in the the local NuGet folder."
"\n"
"To install NuGet and the WebView2 package containing the statically linked library, "
"open a PowerShell and issue the following commands"
"\n"
"> Register-PackageSource -provider NuGet -name nugetRepository -location https://www.nuget.org/api/v2\n"
"> Install-Package Microsoft.Web.WebView2 -Scope CurrentUser -RequiredVersion 1.0.1901.177 -Source nugetRepository\n"
"\n"
"Alternatively you can use the JUCE_WEBVIEW2_PACKAGE_LOCATION CMake variable to specify the directory "
"where this find script is looking for the *Microsoft.Web.WebView2* package directory.")
endif()
find_package_handle_standard_args(WebView2 DEFAULT_MSG WebView2_include_dir WebView2_library)
if(WebView2_FOUND)
set(WebView2_INCLUDE_DIRS ${WebView2_include_dir})
set(WebView2_LIBRARIES ${WebView2_library})
mark_as_advanced(WebView2_library WebView2_include_dir WebView2_root_dir)
if(NOT TARGET juce_webview2)
add_library(juce_webview2 INTERFACE)
add_library(juce::juce_webview2 ALIAS juce_webview2)
target_include_directories(juce_webview2 INTERFACE ${WebView2_INCLUDE_DIRS})
target_link_libraries(juce_webview2 INTERFACE ${WebView2_LIBRARIES})
endif()
endif()

View file

@ -1,129 +1,128 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
function(_juce_create_atomic_target target_name)
add_library("${target_name}" INTERFACE)
add_library("juce::${target_name}" ALIAS "${target_name}")
if(NOT ((CMAKE_SYSTEM_NAME STREQUAL "Linux") OR (CMAKE_SYSTEM_NAME MATCHES ".*BSD")))
return()
endif()
set(test_atomic_with_is_lock_free_file_contents
[[
#include <atomic>
int main (int argc, char** argv)
{
std::atomic<long long> ll { static_cast<long long> (argc) };
ll ^= static_cast<long long> (ll.is_lock_free());
return static_cast<int> (ll);
}
]])
set(test_simple_atomic_file_contents
[[
#include <atomic>
int main (int argc, char** argv)
{
std::atomic<long long> ll { static_cast<long long> (argc) };
ll ^= 1;
return static_cast<int> (ll);
}
]])
string(RANDOM LENGTH 16 random_file_string)
set(test_file_name "${CMAKE_CURRENT_BINARY_DIR}/check_atomic_${random_file_string}.cpp")
string(RANDOM LENGTH 16 random_dir_string)
set(test_bindir "${CMAKE_CURRENT_BINARY_DIR}/check_atomic_dir_${random_dir_string}")
file(WRITE "${test_file_name}" "${test_atomic_with_is_lock_free_file_contents}")
try_compile(compile_result "${test_bindir}" "${test_file_name}"
OUTPUT_VARIABLE test_build_output_0
CXX_STANDARD 17
CXX_STANDARD_REQUIRED TRUE
CXX_EXTENSIONS FALSE)
if(NOT compile_result)
try_compile(compile_result "${test_bindir}" "${test_file_name}"
OUTPUT_VARIABLE test_build_output_1
LINK_LIBRARIES atomic
CXX_STANDARD 17
CXX_STANDARD_REQUIRED TRUE
CXX_EXTENSIONS FALSE)
if (NOT compile_result)
file(WRITE "${test_file_name}" "${test_simple_atomic_file_contents}")
try_compile(compile_result "${test_bindir}" "${test_file_name}"
OUTPUT_VARIABLE test_build_output_2
LINK_LIBRARIES atomic
CXX_STANDARD 17
CXX_STANDARD_REQUIRED TRUE
CXX_EXTENSIONS FALSE)
if (NOT compile_result)
message(FATAL_ERROR
"First build output:\n"
"${test_build_output_0}"
"\n\nSecond build output:\n"
"${test_build_output_1}"
"\n\nThird build output:\n"
"${test_build_output_2}"
"\n\nJUCE requires support for std::atomic, but this system cannot "
"successfully compile a program which uses std::atomic. "
"You may need to install a dedicated libatomic package using your "
"system's package manager.")
else()
message(WARNING
"First build output:\n"
"${test_build_output_0}"
"\n\nSecond build output:\n"
"${test_build_output_1}"
"\n\nIf you are seeing this warning it means that the libatomic library"
"on this system doesn't support is_lock_free."
"Please let the JUCE team know.")
endif()
endif()
target_link_libraries("${target_name}" INTERFACE atomic)
endif()
file(REMOVE "${test_file_name}")
file(REMOVE_RECURSE "${test_bindir}")
endfunction()
_juce_create_atomic_target(juce_atomic_wrapper)
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
function(_juce_create_atomic_target target_name)
add_library("${target_name}" INTERFACE)
add_library("juce::${target_name}" ALIAS "${target_name}")
if(NOT ((CMAKE_SYSTEM_NAME STREQUAL "Linux") OR (CMAKE_SYSTEM_NAME MATCHES ".*BSD")))
return()
endif()
set(test_atomic_with_is_lock_free_file_contents
[[
#include <atomic>
int main (int argc, char** argv)
{
std::atomic<long long> ll { static_cast<long long> (argc) };
ll ^= static_cast<long long> (ll.is_lock_free());
return static_cast<int> (ll);
}
]])
set(test_simple_atomic_file_contents
[[
#include <atomic>
int main (int argc, char** argv)
{
std::atomic<long long> ll { static_cast<long long> (argc) };
ll ^= 1;
return static_cast<int> (ll);
}
]])
string(RANDOM LENGTH 16 random_file_string)
set(test_file_name "${CMAKE_CURRENT_BINARY_DIR}/check_atomic_${random_file_string}.cpp")
string(RANDOM LENGTH 16 random_dir_string)
set(test_bindir "${CMAKE_CURRENT_BINARY_DIR}/check_atomic_dir_${random_dir_string}")
file(WRITE "${test_file_name}" "${test_atomic_with_is_lock_free_file_contents}")
try_compile(compile_result "${test_bindir}" "${test_file_name}"
OUTPUT_VARIABLE test_build_output_0
CXX_STANDARD 17
CXX_STANDARD_REQUIRED TRUE
CXX_EXTENSIONS FALSE)
if(NOT compile_result)
try_compile(compile_result "${test_bindir}" "${test_file_name}"
OUTPUT_VARIABLE test_build_output_1
LINK_LIBRARIES atomic
CXX_STANDARD 17
CXX_STANDARD_REQUIRED TRUE
CXX_EXTENSIONS FALSE)
if (NOT compile_result)
file(WRITE "${test_file_name}" "${test_simple_atomic_file_contents}")
try_compile(compile_result "${test_bindir}" "${test_file_name}"
OUTPUT_VARIABLE test_build_output_2
LINK_LIBRARIES atomic
CXX_STANDARD 17
CXX_STANDARD_REQUIRED TRUE
CXX_EXTENSIONS FALSE)
if (NOT compile_result)
message(FATAL_ERROR
"First build output:\n"
"${test_build_output_0}"
"\n\nSecond build output:\n"
"${test_build_output_1}"
"\n\nThird build output:\n"
"${test_build_output_2}"
"\n\nJUCE requires support for std::atomic, but this system cannot "
"successfully compile a program which uses std::atomic. "
"You may need to install a dedicated libatomic package using your "
"system's package manager.")
else()
message(WARNING
"First build output:\n"
"${test_build_output_0}"
"\n\nSecond build output:\n"
"${test_build_output_1}"
"\n\nIf you are seeing this warning it means that the libatomic library"
"on this system doesn't support is_lock_free."
"Please let the JUCE team know.")
endif()
endif()
target_link_libraries("${target_name}" INTERFACE atomic)
endif()
file(REMOVE "${test_file_name}")
file(REMOVE_RECURSE "${test_bindir}")
endfunction()
_juce_create_atomic_target(juce_atomic_wrapper)

View file

@ -1,151 +1,151 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
add_library(juce_recommended_warning_flags INTERFACE)
add_library(juce::juce_recommended_warning_flags ALIAS juce_recommended_warning_flags)
function(_juce_get_debug_config_genex result)
get_property(debug_configs GLOBAL PROPERTY DEBUG_CONFIGURATIONS)
if(NOT debug_configs)
set(debug_configs Debug)
endif()
list(TRANSFORM debug_configs REPLACE [[^.+$]] [[$<CONFIG:\0>]])
list(JOIN debug_configs "," debug_configs)
# $<CONFIG> doesn't accept multiple configurations until CMake 3.19
set(${result} "$<OR:${debug_configs}>" PARENT_SCOPE)
endfunction()
# ==================================================================================================
if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
target_compile_options(juce_recommended_warning_flags INTERFACE "/W4")
elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"))
target_compile_options(juce_recommended_warning_flags INTERFACE
-Wall
-Wshadow-all
-Wshorten-64-to-32
-Wstrict-aliasing
-Wuninitialized
-Wunused-parameter
-Wconversion
-Wsign-compare
-Wint-conversion
-Wconditional-uninitialized
-Wconstant-conversion
-Wsign-conversion
-Wbool-conversion
-Wextra-semi
-Wunreachable-code
-Wcast-align
-Wshift-sign-overflow
-Wmissing-prototypes
-Wnullable-to-nonnull-conversion
-Wno-ignored-qualifiers
-Wswitch-enum
-Wpedantic
-Wdeprecated
-Wfloat-equal
-Wmissing-field-initializers
$<$<OR:$<COMPILE_LANGUAGE:CXX>,$<COMPILE_LANGUAGE:OBJCXX>>:
-Wzero-as-null-pointer-constant
-Wunused-private-field
-Woverloaded-virtual
-Wreorder
-Winconsistent-missing-destructor-override>
$<$<OR:$<COMPILE_LANGUAGE:OBJC>,$<COMPILE_LANGUAGE:OBJCXX>>:
-Wunguarded-availability
-Wunguarded-availability-new>)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_compile_options(juce_recommended_warning_flags INTERFACE
-Wall
-Wextra
-Wpedantic
-Wstrict-aliasing
-Wuninitialized
-Wunused-parameter
-Wsign-compare
-Wsign-conversion
-Wunreachable-code
-Wcast-align
-Wno-implicit-fallthrough
-Wno-maybe-uninitialized
-Wno-ignored-qualifiers
-Wno-multichar
-Wswitch-enum
-Wredundant-decls
-Wno-strict-overflow
-Wshadow
-Wfloat-equal
-Wmissing-field-initializers
$<$<COMPILE_LANGUAGE:CXX>:
-Woverloaded-virtual
-Wreorder
-Wzero-as-null-pointer-constant>)
endif()
# ==================================================================================================
add_library(juce_recommended_config_flags INTERFACE)
add_library(juce::juce_recommended_config_flags ALIAS juce_recommended_config_flags)
if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
_juce_get_debug_config_genex(debug_config)
target_compile_options(juce_recommended_config_flags INTERFACE
$<IF:${debug_config},/Od /Zi,/Ox> $<$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","MSVC">:/MP> /EHsc)
elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
_juce_get_debug_config_genex(debug_config)
target_compile_options(juce_recommended_config_flags INTERFACE
$<${debug_config}:-g -O0>
$<$<CONFIG:Release>:-O3>)
endif()
# ==================================================================================================
add_library(juce_recommended_lto_flags INTERFACE)
add_library(juce::juce_recommended_lto_flags ALIAS juce_recommended_lto_flags)
if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
target_compile_options(juce_recommended_lto_flags INTERFACE
$<$<CONFIG:Release>:$<IF:$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","MSVC">,-GL,-flto>>)
target_link_libraries(juce_recommended_lto_flags INTERFACE
$<$<CONFIG:Release>:$<$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","MSVC">:-LTCG>>)
elseif((NOT MINGW) AND ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")))
target_compile_options(juce_recommended_lto_flags INTERFACE $<$<CONFIG:Release>:-flto>)
target_link_libraries(juce_recommended_lto_flags INTERFACE $<$<CONFIG:Release>:-flto>)
# Xcode 15.0 requires this flag to avoid a compiler bug
target_link_libraries(juce_recommended_lto_flags INTERFACE
$<$<CONFIG:Release>:$<$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","AppleClang">:-Wl,-weak_reference_mismatches,weak>>)
endif()
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
add_library(juce_recommended_warning_flags INTERFACE)
add_library(juce::juce_recommended_warning_flags ALIAS juce_recommended_warning_flags)
function(_juce_get_debug_config_genex result)
get_property(debug_configs GLOBAL PROPERTY DEBUG_CONFIGURATIONS)
if(NOT debug_configs)
set(debug_configs Debug)
endif()
list(TRANSFORM debug_configs REPLACE [[^.+$]] [[$<CONFIG:\0>]])
list(JOIN debug_configs "," debug_configs)
# $<CONFIG> doesn't accept multiple configurations until CMake 3.19
set(${result} "$<OR:${debug_configs}>" PARENT_SCOPE)
endfunction()
# ==================================================================================================
if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
target_compile_options(juce_recommended_warning_flags INTERFACE "/W4")
elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"))
target_compile_options(juce_recommended_warning_flags INTERFACE
-Wall
-Wshadow-all
-Wshorten-64-to-32
-Wstrict-aliasing
-Wuninitialized
-Wunused-parameter
-Wconversion
-Wsign-compare
-Wint-conversion
-Wconditional-uninitialized
-Wconstant-conversion
-Wsign-conversion
-Wbool-conversion
-Wextra-semi
-Wunreachable-code
-Wcast-align
-Wshift-sign-overflow
-Wmissing-prototypes
-Wnullable-to-nonnull-conversion
-Wno-ignored-qualifiers
-Wswitch-enum
-Wpedantic
-Wdeprecated
-Wfloat-equal
-Wmissing-field-initializers
$<$<OR:$<COMPILE_LANGUAGE:CXX>,$<COMPILE_LANGUAGE:OBJCXX>>:
-Wzero-as-null-pointer-constant
-Wunused-private-field
-Woverloaded-virtual
-Wreorder
-Winconsistent-missing-destructor-override>
$<$<OR:$<COMPILE_LANGUAGE:OBJC>,$<COMPILE_LANGUAGE:OBJCXX>>:
-Wunguarded-availability
-Wunguarded-availability-new>)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_compile_options(juce_recommended_warning_flags INTERFACE
-Wall
-Wextra
-Wpedantic
-Wstrict-aliasing
-Wuninitialized
-Wunused-parameter
-Wsign-compare
-Wsign-conversion
-Wunreachable-code
-Wcast-align
-Wno-implicit-fallthrough
-Wno-maybe-uninitialized
-Wno-ignored-qualifiers
-Wno-multichar
-Wswitch-enum
-Wredundant-decls
-Wno-strict-overflow
-Wshadow
-Wfloat-equal
-Wmissing-field-initializers
$<$<COMPILE_LANGUAGE:CXX>:
-Woverloaded-virtual
-Wreorder
-Wzero-as-null-pointer-constant>)
endif()
# ==================================================================================================
add_library(juce_recommended_config_flags INTERFACE)
add_library(juce::juce_recommended_config_flags ALIAS juce_recommended_config_flags)
if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
_juce_get_debug_config_genex(debug_config)
target_compile_options(juce_recommended_config_flags INTERFACE
$<IF:${debug_config},/Od /Zi,/Ox> $<$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","MSVC">:/MP> /EHsc)
elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
_juce_get_debug_config_genex(debug_config)
target_compile_options(juce_recommended_config_flags INTERFACE
$<${debug_config}:-g -O0>
$<$<CONFIG:Release>:-O3>)
endif()
# ==================================================================================================
add_library(juce_recommended_lto_flags INTERFACE)
add_library(juce::juce_recommended_lto_flags ALIAS juce_recommended_lto_flags)
if((CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") OR (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
target_compile_options(juce_recommended_lto_flags INTERFACE
$<$<CONFIG:Release>:$<IF:$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","MSVC">,-GL,-flto>>)
target_link_libraries(juce_recommended_lto_flags INTERFACE
$<$<CONFIG:Release>:$<$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","MSVC">:-LTCG>>)
elseif((NOT MINGW) AND ((CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
OR (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")))
target_compile_options(juce_recommended_lto_flags INTERFACE $<$<CONFIG:Release>:-flto>)
target_link_libraries(juce_recommended_lto_flags INTERFACE $<$<CONFIG:Release>:-flto>)
# Xcode 15.0 requires this flag to avoid a compiler bug
target_link_libraries(juce_recommended_lto_flags INTERFACE
$<$<CONFIG:Release>:$<$<STREQUAL:"${CMAKE_CXX_COMPILER_ID}","AppleClang">:-Wl,-weak_reference_mismatches,weak>>)
endif()

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,46 +1,46 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
find_program(JUCE_XCRUN xcrun)
if(NOT JUCE_XCRUN)
return()
endif()
execute_process(
COMMAND "${JUCE_XCRUN}" codesign --verify "${src}"
RESULT_VARIABLE result)
if(result)
message(STATUS "Replacing invalid signature with ad-hoc signature")
execute_process(COMMAND "${JUCE_XCRUN}" codesign -f -s - "${src}")
endif()
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
find_program(JUCE_XCRUN xcrun)
if(NOT JUCE_XCRUN)
return()
endif()
execute_process(
COMMAND "${JUCE_XCRUN}" codesign --verify "${src}"
RESULT_VARIABLE result)
if(result)
message(STATUS "Replacing invalid signature with ad-hoc signature")
execute_process(COMMAND "${JUCE_XCRUN}" codesign -f -s - "${src}")
endif()

View file

@ -1,45 +1,45 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
if(NOT EXISTS "${src}")
message(STATUS "Unable to copy ${src} as it does not exist")
return()
endif()
get_filename_component(name "${src}" NAME)
if(EXISTS "${dest}/${name}")
message(STATUS "Destination ${dest}/${name} exists, overwriting")
file(REMOVE_RECURSE "${dest}/${name}")
endif()
file(INSTALL ${src} DESTINATION ${dest} USE_SOURCE_PERMISSIONS)
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
if(NOT EXISTS "${src}")
message(STATUS "Unable to copy ${src} as it does not exist")
return()
endif()
get_filename_component(name "${src}" NAME)
if(EXISTS "${dest}/${name}")
message(STATUS "Destination ${dest}/${name} exists, overwriting")
file(REMOVE_RECURSE "${dest}/${name}")
endif()
file(INSTALL ${src} DESTINATION ${dest} USE_SOURCE_PERMISSIONS)

View file

@ -1,36 +1,35 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
juce_add_module(juce_build_tools ALIAS_NAMESPACE juce)
add_subdirectory(juceaide)
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
juce_add_module(juce_build_tools ALIAS_NAMESPACE juce)
add_subdirectory(juceaide)

View file

@ -1,176 +1,176 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
# The juceaide program generates intermediate build files including BinaryData sources, icons, and
# plists. To ensure that we always build it for the host system, and not for, say, a device or
# simulator if we're targeting iOS or Android, we reinvoke cmake here and build juceaide during the
# configuration stage of the outer project.
if(JUCE_BUILD_HELPER_TOOLS)
# Build the tool for the current system
juce_add_console_app(juceaide _NO_RESOURCERC)
target_sources(juceaide PRIVATE Main.cpp)
target_compile_definitions(juceaide PRIVATE
JUCE_DISABLE_JUCE_VERSION_PRINTING=1
JUCE_USE_CURL=0
# This is a temporary workaround to allow builds to complete on Xcode 15.
# Add -Wl,-ld_classic to the OTHER_LDFLAGS build setting if you need to
# deploy to older versions of macOS.
JUCE_SILENCE_XCODE_15_LINKER_WARNING=1)
target_link_libraries(juceaide PRIVATE
juce::juce_build_tools
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
set_target_properties(juceaide PROPERTIES
MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
export(TARGETS juceaide
NAMESPACE juce_tools::
FILE "${JUCE_BINARY_DIR}/JUCEToolsExport.cmake")
else()
message(STATUS "Configuring juceaide")
if(CMAKE_CROSSCOMPILING)
unset(ENV{ADDR2LINE})
unset(ENV{AR})
unset(ENV{ASM})
unset(ENV{AS})
unset(ENV{CC})
unset(ENV{CPP})
unset(ENV{CXXFILT})
unset(ENV{CXX})
unset(ENV{DLLTOOL})
unset(ENV{DLLWRAP})
unset(ENV{ELFEDIT})
unset(ENV{GCC})
unset(ENV{GCOV_DUMP})
unset(ENV{GCOV_TOOL})
unset(ENV{GCOV})
unset(ENV{GPROF})
unset(ENV{GXX})
unset(ENV{LDFLAGS})
unset(ENV{LD_BFD})
unset(ENV{LD})
unset(ENV{LTO_DUMP})
unset(ENV{NM})
unset(ENV{OBJCOPY})
unset(ENV{OBJDUMP})
unset(ENV{PKG_CONFIG_LIBDIR})
unset(ENV{PKG_CONFIG})
unset(ENV{RANLIB})
unset(ENV{RC})
unset(ENV{READELF})
unset(ENV{SIZE})
unset(ENV{STRINGS})
unset(ENV{STRIP})
unset(ENV{WIDL})
unset(ENV{WINDMC})
unset(ENV{WINDRES})
if(DEFINED ENV{PATH_ORIG})
set(ENV{PATH} "$ENV{PATH_ORIG}")
endif()
endif()
# Generator platform is only supported on specific generators
if(CMAKE_GENERATOR MATCHES "^Visual Studio.*$")
set(ENV{CMAKE_GENERATOR_PLATFORM} "${CMAKE_HOST_SYSTEM_PROCESSOR}")
endif()
# Looks like we're bootstrapping, reinvoke CMake
execute_process(COMMAND "${CMAKE_COMMAND}"
"."
"-B${JUCE_BINARY_DIR}/tools"
"-G${CMAKE_GENERATOR}"
"-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}"
"-DCMAKE_BUILD_TYPE=Debug"
"-DJUCE_BUILD_HELPER_TOOLS=ON"
"-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}"
WORKING_DIRECTORY "${JUCE_SOURCE_DIR}"
OUTPUT_VARIABLE command_output
ERROR_VARIABLE command_output
RESULT_VARIABLE result_variable)
if(result_variable)
message(FATAL_ERROR "Failed to configure juceaide\n${command_output}")
endif()
message(STATUS "Building juceaide")
execute_process(COMMAND "${CMAKE_COMMAND}"
--build "${JUCE_BINARY_DIR}/tools"
--config Debug
OUTPUT_VARIABLE command_output
ERROR_VARIABLE command_output
RESULT_VARIABLE result_variable)
if(result_variable)
message(FATAL_ERROR "Failed to build juceaide\n${command_output}")
endif()
message(STATUS "Exporting juceaide")
# This will be generated by the recursive invocation of CMake (above)
include("${JUCE_BINARY_DIR}/tools/JUCEToolsExport.cmake")
add_executable(juceaide IMPORTED GLOBAL)
get_target_property(imported_location juce_tools::juceaide IMPORTED_LOCATION_DEBUG)
set_target_properties(juceaide PROPERTIES IMPORTED_LOCATION "${imported_location}")
add_executable(juce::juceaide ALIAS juceaide)
set(JUCE_TOOL_INSTALL_DIR "bin/JUCE-${JUCE_VERSION}" CACHE STRING
"The location, relative to the install prefix, where juceaide will be installed")
install(PROGRAMS "${imported_location}" DESTINATION "${JUCE_TOOL_INSTALL_DIR}")
get_filename_component(binary_name "${imported_location}" NAME)
set(JUCE_JUCEAIDE_NAME "${binary_name}" CACHE INTERNAL "The name of the juceaide program")
message(STATUS "Testing juceaide")
execute_process(COMMAND "${imported_location}" version
RESULT_VARIABLE result_variable
OUTPUT_VARIABLE output
ERROR_VARIABLE output)
if(result_variable)
message(FATAL_ERROR "Testing juceaide failed:\noutput: ${output}")
endif()
message(STATUS "Finished setting up juceaide")
endif()
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
# The juceaide program generates intermediate build files including BinaryData sources, icons, and
# plists. To ensure that we always build it for the host system, and not for, say, a device or
# simulator if we're targeting iOS or Android, we reinvoke cmake here and build juceaide during the
# configuration stage of the outer project.
if(JUCE_BUILD_HELPER_TOOLS)
# Build the tool for the current system
juce_add_console_app(juceaide _NO_RESOURCERC)
target_sources(juceaide PRIVATE Main.cpp)
target_compile_definitions(juceaide PRIVATE
JUCE_DISABLE_JUCE_VERSION_PRINTING=1
JUCE_USE_CURL=0
# This is a temporary workaround to allow builds to complete on Xcode 15.
# Add -Wl,-ld_classic to the OTHER_LDFLAGS build setting if you need to
# deploy to older versions of macOS.
JUCE_SILENCE_XCODE_15_LINKER_WARNING=1)
target_link_libraries(juceaide PRIVATE
juce::juce_build_tools
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
set_target_properties(juceaide PROPERTIES
MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
export(TARGETS juceaide
NAMESPACE juce_tools::
FILE "${JUCE_BINARY_DIR}/JUCEToolsExport.cmake")
else()
message(STATUS "Configuring juceaide")
if(CMAKE_CROSSCOMPILING)
unset(ENV{ADDR2LINE})
unset(ENV{AR})
unset(ENV{ASM})
unset(ENV{AS})
unset(ENV{CC})
unset(ENV{CPP})
unset(ENV{CXXFILT})
unset(ENV{CXX})
unset(ENV{DLLTOOL})
unset(ENV{DLLWRAP})
unset(ENV{ELFEDIT})
unset(ENV{GCC})
unset(ENV{GCOV_DUMP})
unset(ENV{GCOV_TOOL})
unset(ENV{GCOV})
unset(ENV{GPROF})
unset(ENV{GXX})
unset(ENV{LDFLAGS})
unset(ENV{LD_BFD})
unset(ENV{LD})
unset(ENV{LTO_DUMP})
unset(ENV{NM})
unset(ENV{OBJCOPY})
unset(ENV{OBJDUMP})
unset(ENV{PKG_CONFIG_LIBDIR})
unset(ENV{PKG_CONFIG})
unset(ENV{RANLIB})
unset(ENV{RC})
unset(ENV{READELF})
unset(ENV{SIZE})
unset(ENV{STRINGS})
unset(ENV{STRIP})
unset(ENV{WIDL})
unset(ENV{WINDMC})
unset(ENV{WINDRES})
if(DEFINED ENV{PATH_ORIG})
set(ENV{PATH} "$ENV{PATH_ORIG}")
endif()
endif()
# Generator platform is only supported on specific generators
if(CMAKE_GENERATOR MATCHES "^Visual Studio.*$")
set(ENV{CMAKE_GENERATOR_PLATFORM} "${CMAKE_HOST_SYSTEM_PROCESSOR}")
endif()
# Looks like we're bootstrapping, reinvoke CMake
execute_process(COMMAND "${CMAKE_COMMAND}"
"."
"-B${JUCE_BINARY_DIR}/tools"
"-G${CMAKE_GENERATOR}"
"-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}"
"-DCMAKE_BUILD_TYPE=Debug"
"-DJUCE_BUILD_HELPER_TOOLS=ON"
"-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}"
WORKING_DIRECTORY "${JUCE_SOURCE_DIR}"
OUTPUT_VARIABLE command_output
ERROR_VARIABLE command_output
RESULT_VARIABLE result_variable)
if(result_variable)
message(FATAL_ERROR "Failed to configure juceaide\n${command_output}")
endif()
message(STATUS "Building juceaide")
execute_process(COMMAND "${CMAKE_COMMAND}"
--build "${JUCE_BINARY_DIR}/tools"
--config Debug
OUTPUT_VARIABLE command_output
ERROR_VARIABLE command_output
RESULT_VARIABLE result_variable)
if(result_variable)
message(FATAL_ERROR "Failed to build juceaide\n${command_output}")
endif()
message(STATUS "Exporting juceaide")
# This will be generated by the recursive invocation of CMake (above)
include("${JUCE_BINARY_DIR}/tools/JUCEToolsExport.cmake")
add_executable(juceaide IMPORTED GLOBAL)
get_target_property(imported_location juce_tools::juceaide IMPORTED_LOCATION_DEBUG)
set_target_properties(juceaide PROPERTIES IMPORTED_LOCATION "${imported_location}")
add_executable(juce::juceaide ALIAS juceaide)
set(JUCE_TOOL_INSTALL_DIR "bin/JUCE-${JUCE_VERSION}" CACHE STRING
"The location, relative to the install prefix, where juceaide will be installed")
install(PROGRAMS "${imported_location}" DESTINATION "${JUCE_TOOL_INSTALL_DIR}")
get_filename_component(binary_name "${imported_location}" NAME)
set(JUCE_JUCEAIDE_NAME "${binary_name}" CACHE INTERNAL "The name of the juceaide program")
message(STATUS "Testing juceaide")
execute_process(COMMAND "${imported_location}" version
RESULT_VARIABLE result_variable
OUTPUT_VARIABLE output
ERROR_VARIABLE output)
if(result_variable)
message(FATAL_ERROR "Testing juceaide failed:\noutput: ${output}")
endif()
message(STATUS "Finished setting up juceaide")
endif()

View file

@ -1,39 +1,39 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
set(CMAKE_FOLDER extras)
add_subdirectory(AudioPerformanceTest)
add_subdirectory(AudioPluginHost)
add_subdirectory(BinaryBuilder)
add_subdirectory(NetworkGraphicsDemo)
add_subdirectory(Projucer)
add_subdirectory(UnitTestRunner)
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
set(CMAKE_FOLDER extras)
add_subdirectory(AudioPerformanceTest)
add_subdirectory(AudioPluginHost)
add_subdirectory(BinaryBuilder)
add_subdirectory(NetworkGraphicsDemo)
add_subdirectory(Projucer)
add_subdirectory(UnitTestRunner)

View file

@ -1,49 +1,49 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
juce_add_gui_app(NetworkGraphicsDemo)
juce_generate_juce_header(NetworkGraphicsDemo)
target_sources(NetworkGraphicsDemo PRIVATE Source/Main.cpp)
target_compile_definitions(NetworkGraphicsDemo PRIVATE
JUCE_USE_CURL=0 JUCE_WEB_BROWSER=0)
target_link_libraries(NetworkGraphicsDemo PRIVATE
juce::juce_audio_utils
juce::juce_cryptography
juce::juce_opengl
juce::juce_osc
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
juce_add_gui_app(NetworkGraphicsDemo)
juce_generate_juce_header(NetworkGraphicsDemo)
target_sources(NetworkGraphicsDemo PRIVATE Source/Main.cpp)
target_compile_definitions(NetworkGraphicsDemo PRIVATE
JUCE_USE_CURL=0 JUCE_WEB_BROWSER=0)
target_link_libraries(NetworkGraphicsDemo PRIVATE
juce::juce_audio_utils
juce::juce_cryptography
juce::juce_opengl
juce::juce_osc
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)

View file

@ -1,162 +1,162 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
juce_add_gui_app(Projucer
BUNDLE_ID com.juce.theprojucer
ICON_BIG ${CMAKE_CURRENT_SOURCE_DIR}/Source/BinaryData/Icons/juce_icon.png
DOCUMENT_EXTENSIONS jucer
NEEDS_CURL TRUE
NEEDS_WEB_BROWSER TRUE)
juce_generate_juce_header(Projucer)
target_sources(Projucer PRIVATE
Source/Application/jucer_AutoUpdater.cpp
Source/Application/jucer_CommandLine.cpp
Source/Application/jucer_Main.cpp
Source/Application/jucer_MainWindow.cpp
Source/Application/StartPage/jucer_StartPageComponent.cpp
Source/Application/StartPage/jucer_NewProjectWizard.cpp
Source/CodeEditor/jucer_DocumentEditorComponent.cpp
Source/CodeEditor/jucer_OpenDocumentManager.cpp
Source/CodeEditor/jucer_SourceCodeEditor.cpp
Source/Project/Modules/jucer_Modules.cpp
Source/Project/UI/jucer_HeaderComponent.cpp
Source/Project/jucer_Project.cpp
Source/ProjectSaving/jucer_ProjectExporter.cpp
Source/ProjectSaving/jucer_ProjectSaver.cpp
Source/ProjectSaving/jucer_ResourceFile.cpp
Source/Settings/jucer_AppearanceSettings.cpp
Source/Settings/jucer_StoredSettings.cpp
Source/Utility/Helpers/jucer_CodeHelpers.cpp
Source/Utility/Helpers/jucer_FileHelpers.cpp
Source/Utility/Helpers/jucer_MiscUtilities.cpp
Source/Utility/Helpers/jucer_NewFileWizard.cpp
Source/Utility/Helpers/jucer_VersionInfo.cpp
Source/Utility/PIPs/jucer_PIPGenerator.cpp
Source/Utility/UI/jucer_Icons.cpp
Source/Utility/UI/jucer_JucerTreeViewBase.cpp
Source/Utility/UI/jucer_ProjucerLookAndFeel.cpp
Source/Utility/UI/jucer_SlidingPanelComponent.cpp)
target_compile_definitions(Projucer PRIVATE
JUCE_ALLOW_STATIC_NULL_VARIABLES=0
JUCE_LOAD_CURL_SYMBOLS_LAZILY=1
JUCE_LOG_ASSERTIONS=1
JUCE_STRICT_REFCOUNTEDPOINTER=1
JUCE_USE_CURL=1
JUCE_WEB_BROWSER=0
# This is a temporary workaround to allow builds to complete on Xcode 15.
# Add -Wl,-ld_classic to the OTHER_LDFLAGS build setting if you need to
# deploy to older versions of macOS.
JUCE_SILENCE_XCODE_15_LINKER_WARNING=1)
juce_add_binary_data(ProjucerData SOURCES
Source/BinaryData/Icons/background_logo.svg
Source/BinaryData/Icons/export_android.svg
Source/BinaryData/Icons/export_linux.svg
Source/BinaryData/Icons/export_visualStudio.svg
Source/BinaryData/Icons/export_xcode.svg
Source/BinaryData/Icons/juce_icon.png
Source/BinaryData/Icons/wizard_AnimatedApp.svg
Source/BinaryData/Icons/wizard_AudioApp.svg
Source/BinaryData/Icons/wizard_AudioPlugin.svg
Source/BinaryData/Icons/wizard_ConsoleApp.svg
Source/BinaryData/Icons/wizard_DLL.svg
Source/BinaryData/Icons/wizard_GUI.svg
Source/BinaryData/Icons/wizard_Highlight.svg
Source/BinaryData/Icons/wizard_OpenGL.svg
Source/BinaryData/Icons/wizard_Openfile.svg
Source/BinaryData/Icons/wizard_StaticLibrary.svg
Source/BinaryData/Templates/jucer_AnimatedComponentSimpleTemplate.h
Source/BinaryData/Templates/jucer_AnimatedComponentTemplate.cpp
Source/BinaryData/Templates/jucer_AnimatedComponentTemplate.h
Source/BinaryData/Templates/jucer_AudioComponentSimpleTemplate.h
Source/BinaryData/Templates/jucer_AudioComponentTemplate.cpp
Source/BinaryData/Templates/jucer_AudioComponentTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.cpp
Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.cpp
Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginEditorTemplate.cpp
Source/BinaryData/Templates/jucer_AudioPluginEditorTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginARAEditorTemplate.cpp
Source/BinaryData/Templates/jucer_AudioPluginARAEditorTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginFilterTemplate.cpp
Source/BinaryData/Templates/jucer_AudioPluginFilterTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginARAFilterTemplate.h
Source/BinaryData/Templates/jucer_ComponentTemplate.cpp
Source/BinaryData/Templates/jucer_ComponentTemplate.h
Source/BinaryData/Templates/jucer_ContentCompSimpleTemplate.h
Source/BinaryData/Templates/jucer_ContentCompTemplate.cpp
Source/BinaryData/Templates/jucer_ContentCompTemplate.h
Source/BinaryData/Templates/jucer_InlineComponentTemplate.h
Source/BinaryData/Templates/jucer_MainConsoleAppTemplate.cpp
Source/BinaryData/Templates/jucer_MainTemplate_NoWindow.cpp
Source/BinaryData/Templates/jucer_MainTemplate_Window.cpp
Source/BinaryData/Templates/jucer_NewComponentTemplate.cpp
Source/BinaryData/Templates/jucer_NewComponentTemplate.h
Source/BinaryData/Templates/jucer_NewCppFileTemplate.cpp
Source/BinaryData/Templates/jucer_NewCppFileTemplate.h
Source/BinaryData/Templates/jucer_NewInlineComponentTemplate.h
Source/BinaryData/Templates/jucer_OpenGLComponentSimpleTemplate.h
Source/BinaryData/Templates/jucer_OpenGLComponentTemplate.cpp
Source/BinaryData/Templates/jucer_OpenGLComponentTemplate.h
Source/BinaryData/Templates/jucer_PIPAudioProcessorTemplate.h
Source/BinaryData/Templates/jucer_PIPTemplate.h
Source/BinaryData/colourscheme_dark.xml
Source/BinaryData/colourscheme_light.xml
Source/BinaryData/gradle/LICENSE
Source/BinaryData/gradle/gradle-wrapper.jar
Source/BinaryData/gradle/gradlew
Source/BinaryData/gradle/gradlew.bat
Source/BinaryData/juce_SimpleBinaryBuilder.cpp
../Build/CMake/JuceLV2Defines.h.in
../Build/CMake/LaunchScreen.storyboard
../Build/CMake/PIPAudioProcessor.cpp.in
../Build/CMake/PIPAudioProcessorWithARA.cpp.in
../Build/CMake/PIPComponent.cpp.in
../Build/CMake/PIPConsole.cpp.in
../Build/CMake/RecentFilesMenuTemplate.nib
../Build/CMake/UnityPluginGUIScript.cs.in
../Build/CMake/juce_runtime_arch_detection.cpp
../Build/CMake/juce_LinuxSubprocessHelper.cpp)
target_link_libraries(Projucer PRIVATE
ProjucerData
juce::juce_build_tools
juce::juce_cryptography
juce::juce_gui_extra
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
juce_add_gui_app(Projucer
BUNDLE_ID com.juce.theprojucer
ICON_BIG ${CMAKE_CURRENT_SOURCE_DIR}/Source/BinaryData/Icons/juce_icon.png
DOCUMENT_EXTENSIONS jucer
NEEDS_CURL TRUE
NEEDS_WEB_BROWSER TRUE)
juce_generate_juce_header(Projucer)
target_sources(Projucer PRIVATE
Source/Application/jucer_AutoUpdater.cpp
Source/Application/jucer_CommandLine.cpp
Source/Application/jucer_Main.cpp
Source/Application/jucer_MainWindow.cpp
Source/Application/StartPage/jucer_StartPageComponent.cpp
Source/Application/StartPage/jucer_NewProjectWizard.cpp
Source/CodeEditor/jucer_DocumentEditorComponent.cpp
Source/CodeEditor/jucer_OpenDocumentManager.cpp
Source/CodeEditor/jucer_SourceCodeEditor.cpp
Source/Project/Modules/jucer_Modules.cpp
Source/Project/UI/jucer_HeaderComponent.cpp
Source/Project/jucer_Project.cpp
Source/ProjectSaving/jucer_ProjectExporter.cpp
Source/ProjectSaving/jucer_ProjectSaver.cpp
Source/ProjectSaving/jucer_ResourceFile.cpp
Source/Settings/jucer_AppearanceSettings.cpp
Source/Settings/jucer_StoredSettings.cpp
Source/Utility/Helpers/jucer_CodeHelpers.cpp
Source/Utility/Helpers/jucer_FileHelpers.cpp
Source/Utility/Helpers/jucer_MiscUtilities.cpp
Source/Utility/Helpers/jucer_NewFileWizard.cpp
Source/Utility/Helpers/jucer_VersionInfo.cpp
Source/Utility/PIPs/jucer_PIPGenerator.cpp
Source/Utility/UI/jucer_Icons.cpp
Source/Utility/UI/jucer_JucerTreeViewBase.cpp
Source/Utility/UI/jucer_ProjucerLookAndFeel.cpp
Source/Utility/UI/jucer_SlidingPanelComponent.cpp)
target_compile_definitions(Projucer PRIVATE
JUCE_ALLOW_STATIC_NULL_VARIABLES=0
JUCE_LOAD_CURL_SYMBOLS_LAZILY=1
JUCE_LOG_ASSERTIONS=1
JUCE_STRICT_REFCOUNTEDPOINTER=1
JUCE_USE_CURL=1
JUCE_WEB_BROWSER=0
# This is a temporary workaround to allow builds to complete on Xcode 15.
# Add -Wl,-ld_classic to the OTHER_LDFLAGS build setting if you need to
# deploy to older versions of macOS.
JUCE_SILENCE_XCODE_15_LINKER_WARNING=1)
juce_add_binary_data(ProjucerData SOURCES
Source/BinaryData/Icons/background_logo.svg
Source/BinaryData/Icons/export_android.svg
Source/BinaryData/Icons/export_linux.svg
Source/BinaryData/Icons/export_visualStudio.svg
Source/BinaryData/Icons/export_xcode.svg
Source/BinaryData/Icons/juce_icon.png
Source/BinaryData/Icons/wizard_AnimatedApp.svg
Source/BinaryData/Icons/wizard_AudioApp.svg
Source/BinaryData/Icons/wizard_AudioPlugin.svg
Source/BinaryData/Icons/wizard_ConsoleApp.svg
Source/BinaryData/Icons/wizard_DLL.svg
Source/BinaryData/Icons/wizard_GUI.svg
Source/BinaryData/Icons/wizard_Highlight.svg
Source/BinaryData/Icons/wizard_OpenGL.svg
Source/BinaryData/Icons/wizard_Openfile.svg
Source/BinaryData/Icons/wizard_StaticLibrary.svg
Source/BinaryData/Templates/jucer_AnimatedComponentSimpleTemplate.h
Source/BinaryData/Templates/jucer_AnimatedComponentTemplate.cpp
Source/BinaryData/Templates/jucer_AnimatedComponentTemplate.h
Source/BinaryData/Templates/jucer_AudioComponentSimpleTemplate.h
Source/BinaryData/Templates/jucer_AudioComponentTemplate.cpp
Source/BinaryData/Templates/jucer_AudioComponentTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.cpp
Source/BinaryData/Templates/jucer_AudioPluginARADocumentControllerTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.cpp
Source/BinaryData/Templates/jucer_AudioPluginARAPlaybackRendererTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginEditorTemplate.cpp
Source/BinaryData/Templates/jucer_AudioPluginEditorTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginARAEditorTemplate.cpp
Source/BinaryData/Templates/jucer_AudioPluginARAEditorTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginFilterTemplate.cpp
Source/BinaryData/Templates/jucer_AudioPluginFilterTemplate.h
Source/BinaryData/Templates/jucer_AudioPluginARAFilterTemplate.h
Source/BinaryData/Templates/jucer_ComponentTemplate.cpp
Source/BinaryData/Templates/jucer_ComponentTemplate.h
Source/BinaryData/Templates/jucer_ContentCompSimpleTemplate.h
Source/BinaryData/Templates/jucer_ContentCompTemplate.cpp
Source/BinaryData/Templates/jucer_ContentCompTemplate.h
Source/BinaryData/Templates/jucer_InlineComponentTemplate.h
Source/BinaryData/Templates/jucer_MainConsoleAppTemplate.cpp
Source/BinaryData/Templates/jucer_MainTemplate_NoWindow.cpp
Source/BinaryData/Templates/jucer_MainTemplate_Window.cpp
Source/BinaryData/Templates/jucer_NewComponentTemplate.cpp
Source/BinaryData/Templates/jucer_NewComponentTemplate.h
Source/BinaryData/Templates/jucer_NewCppFileTemplate.cpp
Source/BinaryData/Templates/jucer_NewCppFileTemplate.h
Source/BinaryData/Templates/jucer_NewInlineComponentTemplate.h
Source/BinaryData/Templates/jucer_OpenGLComponentSimpleTemplate.h
Source/BinaryData/Templates/jucer_OpenGLComponentTemplate.cpp
Source/BinaryData/Templates/jucer_OpenGLComponentTemplate.h
Source/BinaryData/Templates/jucer_PIPAudioProcessorTemplate.h
Source/BinaryData/Templates/jucer_PIPTemplate.h
Source/BinaryData/colourscheme_dark.xml
Source/BinaryData/colourscheme_light.xml
Source/BinaryData/gradle/LICENSE
Source/BinaryData/gradle/gradle-wrapper.jar
Source/BinaryData/gradle/gradlew
Source/BinaryData/gradle/gradlew.bat
Source/BinaryData/juce_SimpleBinaryBuilder.cpp
../Build/CMake/JuceLV2Defines.h.in
../Build/CMake/LaunchScreen.storyboard
../Build/CMake/PIPAudioProcessor.cpp.in
../Build/CMake/PIPAudioProcessorWithARA.cpp.in
../Build/CMake/PIPComponent.cpp.in
../Build/CMake/PIPConsole.cpp.in
../Build/CMake/RecentFilesMenuTemplate.nib
../Build/CMake/UnityPluginGUIScript.cs.in
../Build/CMake/juce_runtime_arch_detection.cpp
../Build/CMake/juce_LinuxSubprocessHelper.cpp)
target_link_libraries(Projucer PRIVATE
ProjucerData
juce::juce_build_tools
juce::juce_cryptography
juce::juce_gui_extra
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)

View file

@ -1,60 +1,60 @@
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
juce_add_console_app(UnitTestRunner)
juce_generate_juce_header(UnitTestRunner)
target_sources(UnitTestRunner PRIVATE Source/Main.cpp)
target_compile_definitions(UnitTestRunner PRIVATE
JUCE_PLUGINHOST_LV2=1
JUCE_PLUGINHOST_VST3=1
JUCE_UNIT_TESTS=1
JUCE_USE_CURL=0
JUCE_WEB_BROWSER=0
# This is a temporary workaround to allow builds to complete on Xcode 15.
# Add -Wl,-ld_classic to the OTHER_LDFLAGS build setting if you need to
# deploy to older versions of macOS.
JUCE_SILENCE_XCODE_15_LINKER_WARNING=1)
target_link_libraries(UnitTestRunner PRIVATE
juce::juce_analytics
juce::juce_audio_utils
juce::juce_dsp
juce::juce_midi_ci
juce::juce_opengl
juce::juce_osc
juce::juce_product_unlocking
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)
# ==============================================================================
#
# This file is part of the JUCE framework.
# Copyright (c) Raw Material Software Limited
#
# JUCE is an open source framework subject to commercial or open source
# licensing.
#
# By downloading, installing, or using the JUCE framework, or combining the
# JUCE framework with any other source code, object code, content or any other
# copyrightable work, you agree to the terms of the JUCE End User Licence
# Agreement, and all incorporated terms including the JUCE Privacy Policy and
# the JUCE Website Terms of Service, as applicable, which will bind you. If you
# do not agree to the terms of these agreements, we will not license the JUCE
# framework to you, and you must discontinue the installation or download
# process and cease use of the JUCE framework.
#
# JUCE End User Licence Agreement: https://juce.com/legal/juce-8-licence/
# JUCE Privacy Policy: https://juce.com/juce-privacy-policy
# JUCE Website Terms of Service: https://juce.com/juce-website-terms-of-service/
#
# Or:
#
# You may also use this code under the terms of the AGPLv3:
# https://www.gnu.org/licenses/agpl-3.0.en.html
#
# THE JUCE FRAMEWORK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL
# WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING WARRANTY OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.
#
# ==============================================================================
juce_add_console_app(UnitTestRunner)
juce_generate_juce_header(UnitTestRunner)
target_sources(UnitTestRunner PRIVATE Source/Main.cpp)
target_compile_definitions(UnitTestRunner PRIVATE
JUCE_PLUGINHOST_LV2=1
JUCE_PLUGINHOST_VST3=1
JUCE_UNIT_TESTS=1
JUCE_USE_CURL=0
JUCE_WEB_BROWSER=0
# This is a temporary workaround to allow builds to complete on Xcode 15.
# Add -Wl,-ld_classic to the OTHER_LDFLAGS build setting if you need to
# deploy to older versions of macOS.
JUCE_SILENCE_XCODE_15_LINKER_WARNING=1)
target_link_libraries(UnitTestRunner PRIVATE
juce::juce_analytics
juce::juce_audio_utils
juce::juce_dsp
juce::juce_midi_ci
juce::juce_opengl
juce::juce_osc
juce::juce_product_unlocking
juce::juce_recommended_config_flags
juce::juce_recommended_lto_flags
juce::juce_recommended_warning_flags)