if(COMMAND cmake_policy)
    # Allow VERSION in the project() statement.
    cmake_policy(SET CMP0048 NEW)
endif()

cmake_minimum_required(VERSION 3.10)

set(GTE_VERSION_MAJOR 8)
set(GTE_VERSION_MINOR 4)

project(Physics VERSION ${GTE_VERSION_MAJOR}.${GTE_VERSION_MINOR})

add_subdirectory(BallHill)
add_subdirectory(BallRubberBand)
add_subdirectory(BeadSlide)
add_subdirectory(BlownGlass)
add_subdirectory(BouncingBall)
add_subdirectory(BouncingSpheres)
add_subdirectory(BouncingTetrahedra)
add_subdirectory(Cloth)
add_subdirectory(CollisionsBoundTree)
add_subdirectory(CollisionsMovingSpheres)
add_subdirectory(CollisionsMovingSphereTriangle)
add_subdirectory(DoublePendulum)
add_subdirectory(FlowingSkirt)
add_subdirectory(Fluids2D)
add_subdirectory(Fluids3D)
add_subdirectory(FoucaultPendulum)
add_subdirectory(FreeFormDeformation)
add_subdirectory(FreeTopFixedTip)
add_subdirectory(GelatinBlob)
add_subdirectory(GelatinCube)
add_subdirectory(HelixTubeSurface)
add_subdirectory(IntersectingBoxes)
add_subdirectory(IntersectingRectangles)
add_subdirectory(KeplerPolarForm)
add_subdirectory(MassPulleySpringSystem)
add_subdirectory(MassSprings3D)
add_subdirectory(Rope)
add_subdirectory(RoughPlaneFlatBoard)
add_subdirectory(RoughPlaneParticle1)
add_subdirectory(RoughPlaneParticle2)
add_subdirectory(RoughPlaneSolidBox)
add_subdirectory(RoughPlaneThinRod1)
add_subdirectory(RoughPlaneThinRod2)
add_subdirectory(SimplePendulum)
add_subdirectory(SimplePendulumFriction)
add_subdirectory(WaterDropFormation)
add_subdirectory(WrigglingSnake)

add_custom_target(Samples_Physics)
add_dependencies(Samples_Physics
    BallHill
    BallRubberBand
    BeadSlide
    BlownGlass
    BouncingBall
    BouncingSpheres
    BouncingTetrahedra
    Cloth
    CollisionsBoundTree
    CollisionsMovingSpheres
    CollisionsMovingSphereTriangle
    DoublePendulum
    FlowingSkirt
    Fluids2D
    Fluids3D
    FoucaultPendulum
    FreeFormDeformation
    FreeTopFixedTip
    GelatinBlob
    GelatinCube
    HelixTubeSurface
    IntersectingBoxes
    IntersectingRectangles
    KeplerPolarForm
    MassPulleySpringSystem
    MassSprings3D
    Rope
    RoughPlaneFlatBoard
    RoughPlaneParticle1
    RoughPlaneParticle2
    RoughPlaneSolidBox
    RoughPlaneThinRod1
    RoughPlaneThinRod2
    SimplePendulum
    SimplePendulumFriction
    WaterDropFormation
    WrigglingSnake
)
