cmake_minimum_required(VERSION 3.16)

project(engraving_app LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_SCAN_FOR_MODULES OFF)

set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(MU_ROOT ${CMAKE_CURRENT_LIST_DIR}/../..)
set(MUSE_FRAMEWORK_PATH ${MU_ROOT}/muse)
set(MUSE_FRAMEWORK_SRC_PATH ${MUSE_FRAMEWORK_PATH}/framework)

set(CMAKE_MODULE_PATH
    ${MU_ROOT}/buildscripts
    ${MU_ROOT}/buildscripts/cmake
    ${MUSE_FRAMEWORK_PATH}/buildscripts/cmake
    ${MUSE_FRAMEWORK_SRC_PATH}/cmake
    ${CMAKE_MODULE_PATH}
)

###########################################
# Check compiler version
###########################################    
message(STATUS "C:   ${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}")
message(STATUS "CXX: ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")    

include(GetCompilerInfo)
include(SetupBuildEnvironment)
include(GetPlatformInfo)

include_directories(
    ${CMAKE_CURRENT_LIST_DIR}
    ${MU_ROOT}/src
)

set(MUSE_QT_SUPPORT OFF)
include(${MUSE_FRAMEWORK_SRC_PATH}/cmake/MuseSetupConfiguration.cmake)

set(EXTDEPS_DIR "${MU_ROOT}/muse_deps")
include(${EXTDEPS_DIR}/buildtools/manifest.cmake)
include(${MUSE_FRAMEWORK_PATH}/buildscripts/cmake/ExtDepsManifest.cmake)

set(GLOBAL_NO_INTERNAL ON)
add_subdirectory(${MUSE_FRAMEWORK_SRC_PATH}/global global)

set(DRAW_NO_INTERNAL ON)
add_subdirectory(${MUSE_FRAMEWORK_SRC_PATH}/draw draw)

set(ENGRAVING_NO_INTERNAL ON)
set(ENGRAVING_NO_ACCESSIBILITY ON)
add_subdirectory(${MU_ROOT}/src/engraving engraving)

add_subdirectory(${MU_ROOT}/src/importexport/guitarpro guitarpro)

set(MUSICXML_NO_INTERNAL ON)
add_subdirectory(${MU_ROOT}/src/importexport/musicxml musicxml)

add_executable(engraving_app
    fontproviderstub.cpp
    fontproviderstub.h
    main.cpp
)

target_include_directories(engraving_app PUBLIC
    ${MU_ROOT}
    ${MU_ROOT}/src
    ${MUSE_FRAMEWORK_SRC_PATH}
    ${MUSE_FRAMEWORK_SRC_PATH}/global
)

target_link_libraries(engraving_app
    muse::global
    muse::draw
    engraving
    iex_guitarpro
    iex_musicxml
)
