##*************************************************************************##
##  CUBE        http://www.scalasca.org/                                   ##
##*************************************************************************##
##  Copyright (c) 2024-2025                                                ##
##  Forschungszentrum Juelich GmbH, Juelich Supercomputing Centre          ##
##                                                                         ##
##  This software may be modified and distributed under the terms of       ##
##  a BSD-style license.  See the COPYING file in the package base         ##
##  directory for details.                                                 ##
##*************************************************************************##


set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/..)

qt_add_plugin(advisor ${PLUGIN_TYPE} CLASS_NAME CubeAdvisor
    Bar.cpp
    Bar.h
    CubeAdvice.h
    CubeAdvisorPlugin.cpp
    CubeAdvisorPlugin.h
    CubeAdvisorProgress.cpp
    CubeAdvisorProgress.h
    CubeAdvisorTableWidgetItem.cpp
    CubeAdvisorTableWidgetItem.h
    CubeHelpButton.cpp
    CubeHelpButton.h
    CubeRatingWidget.cpp
    CubeRatingWidget.h
    CubeTestWidget.cpp
    CubeTestWidget.h
    analyse/PerformanceAnalysis.cpp
    analyse/PerformanceAnalysis.h
    analyse/jsc-hybrid-audit/JSCHybridAuditAnalysis.cpp
    analyse/jsc-hybrid-audit/JSCHybridAuditAnalysis.h
    analyse/jsc-hybrid-audit/tests/JSCHybridAmdahlTest.cpp
    analyse/jsc-hybrid-audit/tests/JSCHybridAmdahlTest.h
    analyse/jsc-hybrid-audit/tests/JSCHybridCommunicationEfficiencyTest.cpp
    analyse/jsc-hybrid-audit/tests/JSCHybridCommunicationEfficiencyTest.h
    analyse/jsc-hybrid-audit/tests/JSCHybridComputationTimeTest.cpp
    analyse/jsc-hybrid-audit/tests/JSCHybridComputationTimeTest.h
    analyse/jsc-hybrid-audit/tests/JSCHybridIPCTest.cpp
    analyse/jsc-hybrid-audit/tests/JSCHybridIPCTest.h
    analyse/jsc-hybrid-audit/tests/JSCHybridImbalanceTest.cpp
    analyse/jsc-hybrid-audit/tests/JSCHybridImbalanceTest.h
    analyse/jsc-hybrid-audit/tests/JSCHybridNoWaitINSTest.cpp
    analyse/jsc-hybrid-audit/tests/JSCHybridNoWaitINSTest.h
    analyse/jsc-hybrid-audit/tests/JSCHybridOMPImbalanceTest.cpp
    analyse/jsc-hybrid-audit/tests/JSCHybridOMPImbalanceTest.h
    analyse/jsc-hybrid-audit/tests/JSCHybridOMPSerialisationTest.cpp
    analyse/jsc-hybrid-audit/tests/JSCHybridOMPSerialisationTest.h
    analyse/jsc-hybrid-audit/tests/JSCHybridOMPTransferTest.cpp
    analyse/jsc-hybrid-audit/tests/JSCHybridOMPTransferTest.h
    analyse/jsc-hybrid-audit/tests/JSCHybridSerialisationTest.cpp
    analyse/jsc-hybrid-audit/tests/JSCHybridSerialisationTest.h
    analyse/jsc-hybrid-audit/tests/JSCHybridStalledResourcesTest.cpp
    analyse/jsc-hybrid-audit/tests/JSCHybridStalledResourcesTest.h
    analyse/jsc-hybrid-audit/tests/JSCHybridTransferTest.cpp
    analyse/jsc-hybrid-audit/tests/JSCHybridTransferTest.h
    tests/PerformanceTest.cpp
    tests/PerformanceTest.h
    tests/PerformanceTest_incl.cpp
    tests/PerformanceTest_incl.h
)

target_include_directories(advisor PRIVATE
    analyse
    analyse/jsc-hybrid-audit
    analyse/jsc-hybrid-audit/tests
    tests
)

target_link_libraries(advisor PRIVATE
    CubeGui
)

install(TARGETS advisor
    LIBRARY DESTINATION ${PLUGIN_DIR}
)
