cmake_minimum_required( VERSION 3.20 )

include_directories(${CMAKE_CURRENT_SOURCE_DIR})

set(SHAPE_EXAMPLE_SOURCE testShape.cpp)
set(SHAPE_EXAMPLE_HEADER)

add_executable(testShape ${SHAPE_EXAMPLE_SOURCE} ${SHAPE_EXAMPLE_HEADER})
target_link_libraries(testShape dsold dl Shape)

set(SHAPE_CATALOG_EXAMPLE_SOURCE Shape.cpp)
set(SHAPE_CATALOG_EXAMPLE_HEADER Shape.hh)

add_library(Shape SHARED ${SHAPE_CATALOG_EXAMPLE_SOURCE} ${SHAPE_CATALOG_EXAMPLE_HEADER})
set_target_properties(Shape PROPERTIES VERSION 1.0.0)
set_target_properties(Shape PROPERTIES SOVERSION 1)
set_target_properties(Shape PROPERTIES POSITION_INDEPENDENT_CODE ON)

set(PLUGIN_CIRCLE_EXAMPLE_SOURCE Circle.cpp)
set(PLUGIN_CIRCLE_EXAMPLE_HEADER Circle.hh)

add_library(Circle MODULE ${PLUGIN_CIRCLE_EXAMPLE_SOURCE} ${PLUGIN_CIRCLE_EXAMPLE_HEADER})
set_target_properties(Circle PROPERTIES VERSION 1.0.0)
set_target_properties(Circle PROPERTIES SOVERSION 1)
set_target_properties(Circle PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_link_libraries(Circle Shape)

set(PLUGIN_SQUARE_EXAMPLE_SOURCE Square.cpp)
set(PLUGIN_SQUARE_EXAMPLE_HEADER Square.hh)

add_library(Square MODULE ${PLUGIN_SQUARE_EXAMPLE_SOURCE} ${PLUGIN_SQUARE_EXAMPLE_HEADER})
set_target_properties(Square PROPERTIES VERSION 1.0.0)
set_target_properties(Square PROPERTIES SOVERSION 1)
set_target_properties(Square PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_link_libraries(Square Shape)

set(PLUGIN_ELLIPSE_EXAMPLE_SOURCE Ellipse.cpp)
set(PLUGIN_ELLIPSE_EXAMPLE_HEADER Ellipse.hh)

add_library(Ellipse MODULE ${PLUGIN_ELLIPSE_EXAMPLE_SOURCE} ${PLUGIN_ELLIPSE_EXAMPLE_HEADER})
set_target_properties(Ellipse PROPERTIES VERSION 1.0.0)
set_target_properties(Ellipse PROPERTIES SOVERSION 1)
set_target_properties(Ellipse PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_link_libraries(Ellipse Shape)
