##*************************************************************************##
##  CUBE        http://www.scalasca.org/                                   ##
##*************************************************************************##
##  Copyright (c) 2023-2024                                                ##
##  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.                                                 ##
##*************************************************************************##


# Create object library for libcube_library_tools. All objects will be added to cubelib.

set(HEADERS
    AbridgeTraversal.h
    AbstractConstraint.h
    AggregatedMetric.h
    Blacklist.h
    Cacheable.h
    CCnode.h
    CMetricCnodeConstraint.h
    CnodeConstraint.h
    CnodeInfo.h
    CnodeMetric.h
    CnodeSubForest.h
    CnodeSubTree.h
    ColorMode.h
    ComputeTraversal.h
    CowTree.h
    CRegion.h
    DiffPrintTraversal.h
    InfoObj.h
    MdAggrCube.h
    MdTraversal.h
    MultiMdAggrCube.h
    PrintableCCnode.h
    RegionConstraint.h
    RegionInfo.h
    scaling_calls.h
    tau2cube_calls.h
    TauProfile.h
    Traversal.h
    TreeConstraint.h
    VisitorsMetric.h
)

set(SOURCES
    AbridgeTraversal.cpp
    AbstractConstraint.cpp
    AggregatedMetric.cpp
    Blacklist.cpp
    Cacheable.cpp
    CCnode.cpp
    CMetricCnodeConstraint.cpp
    CnodeConstraint.cpp
    CnodeInfo.cpp
    CnodeMetric.cpp
    CnodeSubForest.cpp
    CnodeSubTree.cpp
    ComputeTraversal.cpp
    CowTree.cpp
    CRegion.cpp
    DiffPrintTraversal.cpp
    MdAggrCube.cpp
    MdTraversal.cpp
    MultiMdAggrCube.cpp
    PrintableCCnode.cpp
    RegionConstraint.cpp
    RegionInfo.cpp
    scaling_calls.cpp
    tau2cube_calls.cpp
    TauProfile.cpp
    Traversal.cpp
    TreeConstraint.cpp
    VisitorsMetric.cpp
)

add_library(libcube_library_tools OBJECT
    ${HEADERS}
    ${SOURCES}
)
set_property(TARGET libcube_library_tools PROPERTY POSITION_INDEPENDENT_CODE ON)

target_link_libraries(libcube_library_tools PRIVATE
    cube-base
)
# some of the headers are used by the tools -> add current source dir to include path
target_include_directories(libcube_library_tools PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
)
# install rule is in the main directory
file(GLOB CUBELIB_HEADERS_PUBLIC "*.h")
install(FILES ${CUBELIB_HEADERS_PUBLIC}
    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/cubelib
)
