cmake_minimum_required(VERSION 3.22)
project(SequenceQ VERSION 0.1.0 LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
find_package(JUCE 8.0.6 EXACT CONFIG QUIET)
if(NOT JUCE_FOUND)
 set(SEQUENCEQ_JUCE_ARCHIVE "${CMAKE_CURRENT_SOURCE_DIR}/vendor/JUCE-8.0.6.tar.gz")
 if(NOT EXISTS "${SEQUENCEQ_JUCE_ARCHIVE}")
  message(FATAL_ERROR "JUCE 8.0.6 is required. Use the complete SequenceQ source distribution.")
 endif()
 if(NOT EXISTS "${CMAKE_BINARY_DIR}/vendor/JUCE-8.0.6/CMakeLists.txt")
  file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/vendor")
  file(ARCHIVE_EXTRACT INPUT "${SEQUENCEQ_JUCE_ARCHIVE}" DESTINATION "${CMAKE_BINARY_DIR}/vendor")
 endif()
 add_subdirectory("${CMAKE_BINARY_DIR}/vendor/JUCE-8.0.6" "${CMAKE_BINARY_DIR}/juce-sdk" EXCLUDE_FROM_ALL)
endif()
find_package(PkgConfig REQUIRED)
option(SEQUENCEQ_USE_BUNDLED_VTERM "Build the pinned libvterm source" OFF)
if(NOT SEQUENCEQ_USE_BUNDLED_VTERM)
 pkg_check_modules(VTERM QUIET IMPORTED_TARGET "vterm>=0.3.3")
endif()
if(VTERM_FOUND AND NOT SEQUENCEQ_USE_BUNDLED_VTERM)
 set(SEQUENCEQ_VTERM_TARGET PkgConfig::VTERM)
else()
 set(VTERM_SOURCE "${CMAKE_BINARY_DIR}/vendor/libvterm-0.3.3")
 if(NOT EXISTS "${VTERM_SOURCE}/include/vterm.h")
  file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/vendor")
  file(ARCHIVE_EXTRACT INPUT "${CMAKE_CURRENT_SOURCE_DIR}/vendor/libvterm-0.3.3.tar.gz" DESTINATION "${CMAKE_BINARY_DIR}/vendor")
 endif()
 file(GLOB VTERM_SOURCES CONFIGURE_DEPENDS "${VTERM_SOURCE}/src/*.c")
 add_library(sequenceq_vterm STATIC ${VTERM_SOURCES})
 set_target_properties(sequenceq_vterm PROPERTIES C_STANDARD 99 POSITION_INDEPENDENT_CODE ON)
 target_include_directories(sequenceq_vterm PUBLIC "${VTERM_SOURCE}/include" PRIVATE "${VTERM_SOURCE}/src")
 set(SEQUENCEQ_VTERM_TARGET sequenceq_vterm)
endif()
juce_add_gui_app(sequenceq PRODUCT_NAME "SequenceQ" COMPANY_NAME "Qauntum Bear Systems" BUNDLE_ID "org.sequenceq.lab")
target_sources(sequenceq PRIVATE src/Main.cpp src/Terminal.cpp src/Tour.h)
target_compile_definitions(sequenceq PRIVATE JUCE_WEB_BROWSER=0 JUCE_USE_CURL=0 JUCE_MODAL_LOOPS_PERMITTED=0 JUCE_APPLICATION_NAME_STRING="SequenceQ" JUCE_APPLICATION_VERSION_STRING="0.1.0")
target_link_libraries(sequenceq PRIVATE juce::juce_gui_basics ${SEQUENCEQ_VTERM_TARGET} util)
