|
- # ==============================================================================
- #
- # This file is part of the JUCE library.
- # Copyright (c) 2020 - Raw Material Software Limited
- #
- # JUCE is an open source library subject to commercial or open-source
- # licensing.
- #
- # By using JUCE, you agree to the terms of both the JUCE 6 End-User License
- # Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020).
- #
- # End User License Agreement: www.juce.com/juce-6-licence
- # Privacy Policy: www.juce.com/juce-privacy-policy
- #
- # Or: You may also use this code under the terms of the GPL v3 (see
- # www.gnu.org/licenses).
- #
- # JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
- # EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR 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)
-
- target_sources(juceaide PRIVATE Main.cpp)
-
- target_compile_definitions(juceaide PRIVATE
- JUCE_DISABLE_JUCE_VERSION_PRINTING=1
- JUCE_USE_CURL=0)
-
- 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()
- # If we're building using the NDK, the gradle wrapper will try to inject its own compiler using
- # environment variables, which is unfortunate because we really don't want to cross-compile
- # juceaide. If you really want to set the compilers for juceaide, pass the appropriate
- # CMAKE_<lang>_COMPILER flags when configuring CMake.
- unset(ENV{ASM})
- unset(ENV{CC})
- unset(ENV{CXX})
-
- message(STATUS "Configuring juceaide")
-
- # Looks like we're boostrapping, reinvoke CMake
- execute_process(COMMAND "${CMAKE_COMMAND}"
- "."
- "-B${JUCE_BINARY_DIR}/tools"
- "-G${CMAKE_GENERATOR}"
- "-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")
- endif()
|