#=============================================================================
#  MuseScore
#  Music Composition & Notation
#  $Id:$
#
#  Copyright (C) 2011-2013 Werner Schweer
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License version 2
#  as published by the Free Software Foundation and appearing in
#  the file LICENSE.GPL
#=============================================================================

# set(CMAKE_VERBOSE_MAKEFILE ON)
enable_testing()

include_directories(
      ${PROJECT_BINARY_DIR}
      ${PROJECT_SOURCE_DIR}
      ${PROJECT_SOURCE_DIR}/thirdparty/freetype/include
      )

if (OMR)
set(OMR_SRC ${PROJECT_SOURCE_DIR}/omr/importpdf.cpp)
endif (OMR)

QT5_ADD_RESOURCES(qrc_files ${PROJECT_SOURCE_DIR}/mtest/mtest.qrc
            ${PROJECT_SOURCE_DIR}/mscore/musescorefonts-MScore.qrc
            ${PROJECT_SOURCE_DIR}/mscore/musescorefonts-Gootville.qrc
            ${PROJECT_SOURCE_DIR}/mscore/musescorefonts-Bravura.qrc
            ${PROJECT_SOURCE_DIR}/mscore/musescorefonts-MuseJazz.qrc
            ${PROJECT_SOURCE_DIR}/mscore/musescorefonts-Free.qrc
            ${PROJECT_SOURCE_DIR}/mscore/musescorefonts-FreeSerif.qrc
      )

add_library (testResources STATIC
      ${qrc_files}
      )

add_library(
      testutils STATIC
      testutils.cpp
      ${PROJECT_SOURCE_DIR}/libmscore/mcursor.cpp
      ${PROJECT_SOURCE_DIR}/mscore/album.cpp
      ${PROJECT_SOURCE_DIR}/mscore/bb.cpp
      ${PROJECT_SOURCE_DIR}/mscore/capella.cpp
      ${PROJECT_SOURCE_DIR}/mscore/capxml.cpp
      ${PROJECT_SOURCE_DIR}/mscore/exportxml.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importgtp.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importgtp-gp4.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importgtp-gp5.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importgtp-gp6.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importove.cpp
      ${PROJECT_SOURCE_DIR}/mscore/ove.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_operations.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_meter.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_quant.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_tuplet.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_tuplet_detect.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_tuplet_filter.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_tuplet_voice.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_tuplet_tonotes.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_chord.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_fraction.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_swing.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_drum.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_clef.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_lrhand.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_lyrics.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_tie.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_inner.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_beat.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_simplify.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_voice.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_key.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_tempo.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_model.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_instrument.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmidi/importmidi_chordname.cpp
      ${PROJECT_SOURCE_DIR}/mscore/exportmidi.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmxml.cpp               # Required by importxml.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmxmllogger.cpp         # Required by importxml.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmxmlnoteduration.cpp   # Required by importxml.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmxmlnotepitch.cpp      # Required by importxml.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmxmlpass1.cpp          # Required by importxml.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importmxmlpass2.cpp          # Required by importxml.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importxml.cpp
      ${PROJECT_SOURCE_DIR}/mscore/importxmlfirstpass.cpp
      ${PROJECT_SOURCE_DIR}/mscore/musicxmlfonthandler.cpp
      ${PROJECT_SOURCE_DIR}/mscore/musicxmlsupport.cpp
      ${PROJECT_SOURCE_DIR}/mscore/qmlplugin.cpp
      ${PROJECT_SOURCE_DIR}/mscore/shortcut.cpp
      ${PROJECT_SOURCE_DIR}/thirdparty/rtf2html/fmt_opts.cpp    # required by capella.cpp and capxml.cpp
      ${PROJECT_SOURCE_DIR}/thirdparty/rtf2html/rtf2html.cpp    # required by capella.cpp and capxml.cpp
      ${PROJECT_SOURCE_DIR}/thirdparty/rtf2html/rtf_keyword.cpp # required by capella.cpp and capxml.cpp
      ${PROJECT_SOURCE_DIR}/thirdparty/rtf2html/rtf_table.cpp   # required by capella.cpp and capxml.cpp
      ${PROJECT_SOURCE_DIR}/thirdparty/beatroot/Agent.cpp           # required by importmidi.cpp
      ${PROJECT_SOURCE_DIR}/thirdparty/beatroot/AgentList.cpp       # required by importmidi.cpp
      ${PROJECT_SOURCE_DIR}/thirdparty/beatroot/BeatTracker.cpp     # required by importmidi.cpp
      ${PROJECT_SOURCE_DIR}/thirdparty/beatroot/Induction.cpp       # required by importmidi.cpp
      ${PROJECT_SOURCE_DIR}/mscore/stringutils.cpp
      ${OMR_SRC}
      omr
      )

add_executable(
      mtest
      mtest.cpp
      )

target_link_libraries(
      mtest
      ${QT_LIBRARIES}
      mscore_freetype
      )

set(CMAKE_CXX_FLAGS         "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")

string(REPLACE ";" ";-I" INC "${QT_INCLUDES}")

if (APPLE AND (CMAKE_VERSION VERSION_LESS "3.5.0"))
set_target_properties (
      testutils
      PROPERTIES
      COMPILE_FLAGS "-include all.h -D TESTROOT=\\\\\"${PROJECT_SOURCE_DIR}\\\\\" -g -Wall -Wextra"
      )
else (APPLE AND (CMAKE_VERSION VERSION_LESS "3.5.0"))
set_target_properties (
      testutils
      PROPERTIES
      COMPILE_FLAGS "-include all.h -D TESTROOT=\\\"${PROJECT_SOURCE_DIR}\\\" -g -Wall -Wextra"
      )
endif (APPLE AND (CMAKE_VERSION VERSION_LESS "3.5.0"))

#      COMPILE_FLAGS "-include all.h -I ${INC} -D TESTROOT=\\\"${PROJECT_SOURCE_DIR}\\\" -g -Wall -Wextra"

add_custom_target(report
      COMMAND ant -f ${PROJECT_SOURCE_DIR}/mtest/build.xml -Droot.dir=${PROJECT_BINARY_DIR}/mtest report
      WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/mtest"
      )

add_custom_target(reporthtml
      COMMAND ant -f ${PROJECT_SOURCE_DIR}/mtest/build.xml -Droot.dir=${PROJECT_BINARY_DIR}/mtest reporthtml
      WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/mtest"
      )

subdirs (libmscore importmidi capella biab musicxml guitarpro scripting testoves zerberus stringutils)

install(FILES
      ../share/styles/chords_std.xml
      ../share/styles/chords_jazz.xml
      ../share/styles/chords.xml
      ../share/styles/stdchords.xml
      ../share/styles/jazzchords.xml
      ../share/styles/cchords_muse.xml
      ../share/styles/cchords_nrb.xml
      ../share/styles/cchords_rb.xml
      ../share/styles/cchords_sym.xml
      DESTINATION ${PROJECT_BINARY_DIR}/mtest/styles
      )


if (OMR)
subdirs(omr)
endif (OMR)
