ADD_SUBDIRECTORY( Algorithms )
ADD_SUBDIRECTORY( Multimaps )

set( headers Array.h
             Array_impl.h
             ArrayIO.h
             IndexedMap.h
             IndexedMap_impl.h
             IndexedSet.h
             IndexedSet_impl.h
             UnorderedIndexedSet.h
             UnorderedIndexedSet_impl.h
             List.h
             List_impl.h
             MultiArray.h
             MultiArray1D_impl.h
             MultiArray2D_impl.h
             MultiArray3D_impl.h
             MultiArray4D_impl.h
             ArrayView.h
             ArrayView_impl.h
             StaticArray.h
             StaticArray_impl.h
             StaticArray1D_impl.h
             StaticArray2D_impl.h
             StaticArray3D_impl.h
             Vector.h
             Vector_impl.h
             MultiVector.h
             MultiVector1D_impl.h
             MultiVector2D_impl.h
             MultiVector3D_impl.h
             MultiVector4D_impl.h
             VectorView.h
             VectorView_impl.h
             StaticVector.h
             StaticVector_impl.h
             StaticVector1D_impl.h
             StaticVector2D_impl.h
             StaticVector3D_impl.h  )

INSTALL( FILES ${headers} DESTINATION ${TNL_TARGET_INCLUDE_DIRECTORY}/Containers )

if( ${WITH_TEMPLATES_INSTANTIATION} )
   SET( CURRENT_DIR ${CMAKE_SOURCE_DIR}/src/TNL/Containers )
   set( common_SOURCES
        ${CURRENT_DIR}/MultiArray_impl.cpp
        ${CURRENT_DIR}/Array_impl.cpp
        ${CURRENT_DIR}/StaticArray_impl.cpp
        ${CURRENT_DIR}/MultiVector_impl.cpp
        ${CURRENT_DIR}/Vector_impl.cpp
        ${CURRENT_DIR}/StaticVector_impl.cpp
   )

   if( BUILD_CUDA )
      set( tnl_containers_CUDA__SOURCES
           ${common_SOURCES}
           ${CURRENT_DIR}/Array_impl.cu
           ${CURRENT_DIR}/MultiArray_impl.cu
           ${CURRENT_DIR}/StaticArray_impl.cu
           ${CURRENT_DIR}/Vector_impl.cu
           ${CURRENT_DIR}/StaticVector_impl.cu
           PARENT_SCOPE )
   endif()

   set( tnl_containers_SOURCES
        ${common_SOURCES}
        PARENT_SCOPE )
endif()
