# packages

# Add source files
# set(cgalpy_SRC_FILES ${cgalpy_SRC_FILES} lib/xxx.cpp)

# Add the generated files
set(cgalpy_SRC_FILES ${cgalpy_SRC_FILES} ${cgalpy_AUTO_GENERATED_SRC_FILES})

# Add all include directories
include_directories(lib)
include_directories(include)

link_directories(${Boost_LIBRARY_DIRS})
# Add defines
add_definitions(-DCGALPY_cgalpy_SOURCE)

if (WIN32)
  add_definitions(/wd4251)
else(WIN32)
  add_definitions(-DGL_GLEXT_PROTOTYPES)
endif(WIN32)

# Add library
# if (BUILD_SHARED_LIBS)
#   add_definitions(-DCGALPY_ALL_DYN_LINK)
#   add_library(cgalpy SHARED ${cgalpy_SRC_FILES})
# else(BUILD_SHARED_LIBS)
#   add_library(cgalpy STATIC ${cgalpy_SRC_FILES})
# endif(BUILD_SHARED_LIBS)

# set_target_properties(cgalpy PROPERTIES
#   VERSION "${cgalpy_SOVERSION}"
#   SOVERSION "${cgalpy_SONAME_VERSION}")

# Add links
# if (NOT WIN32)
#   set (NON_WIN32_LIBRARIES ${X11_LIBRARIES} ${X11_Xxf86vm_LIB})
#   if (APPLE)
#     set (NON_WIN32_LIBRARIES ${NON_WIN32_LIBRARIES} /opt/X11/lib/libGL.dylib)
#   endif(APPLE)
# endif(NOT WIN32)

# Add Python bindings
add_library(cgalpy_PYBINDINGS SHARED
  lib/Export_module.cpp
  lib/Kernel_bindings.cpp
  lib/Arrangement_2_bindings.cpp
  lib/Vertex_bindings.cpp
  lib/Halfedge_bindings.cpp
  lib/Face_bindings.cpp
  lib/Intersections_2_bindings.cpp
  lib/Point_location_bindings.cpp
  lib/Arr_segment_traits_bindings.cpp
  lib/Arr_linear_traits_bindings.cpp
  lib/Arr_circle_segment_traits_bindings.cpp
  lib/Arr_non_caching_segment_traits_bindings.cpp
  lib/Arr_conic_traits_bindings.cpp
  lib/Arr_Bezier_curve_traits_bindings.cpp
  lib/Arr_algebraic_segment_traits_bindings.cpp
  lib/Arr_rational_function_traits_bindings.cpp
  lib/Polygon_2_bindings.cpp
  lib/Polygon_with_holes_2_bindings.cpp
  lib/Polygon_partitioning_bindings.cpp
  lib/Minkowski_sum_2_bindings.cpp
  lib/Boolean_set_operations_2_bindings.cpp
  lib/Object_bindings.cpp
  lib/General_polygon_2_bindings.cpp
  lib/General_polygon_with_holes_2_bindings.cpp
  lib/Polygon_set_2_bindings.cpp
  lib/General_polygon_set_2_bindings.cpp
  lib/Triangulations_bindings.cpp
  lib/Convex_hull_2_bindings.cpp
  lib/Spatial_searching_bindings.cpp
  lib/Bounding_volumes_bindings.cpp)

if(WIN32)
set_target_properties(cgalpy_PYBINDINGS PROPERTIES SUFFIX ".pyd")
endif()

target_link_libraries(cgalpy_PYBINDINGS
                      ${cgalpy}
		      ${NON_WIN32_LIBRARIES}
                      ${Boost_LIBRARIES}
		      ${PYTHON_LIBRARIES})

list (GET CGALPY_KERNEL_SHORT_NAMES ${CGALPY_KERNEL} CGALPY_KERNEL_PART)
list (GET CGALPY_GEOMETRY_TRAITS_SHORT_NAMES ${CGALPY_GEOMETRY_TRAITS} CGALPY_GT_PART)
list (GET CGALPY_DCEL_SHORT_NAMES ${CGALPY_DCEL} CGALPY_DCEL_PART)
set(CGALPY_LIB_NAME "arr2_${CGALPY_KERNEL_PART}_${CGALPY_GT_PART}${CGALPY_DCEL_PART}")

set_target_properties(cgalpy_PYBINDINGS PROPERTIES OUTPUT_NAME
		      ${CGALPY_LIB_NAME})
# don't prepend wrapper library name with lib
set_target_properties(cgalpy_PYBINDINGS PROPERTIES PREFIX "")

# target_link_libraries(arr_2-ecep-seg ${NON_WIN32_LIBRARIES})

# Documentation

find_package(Doxygen)

if(DOXYGEN_FOUND)
  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
                 ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
  add_custom_target(doc
		    ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
     		    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
     		    COMMENT "Generating API documentation with Doxygen" VERBATIM)
endif(DOXYGEN_FOUND)

# Installation

# Add Python bindings
if (CGALPY_DEF_PYBINDINGS)
  set_property(TARGET cgalpy_PYBINDINGS PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
  set_property(TARGET cgalpy_PYBINDINGS PROPERTY INSTALL_RPATH "${CGAL_DIR}/lib")
endif()

# set_property(TARGET cgalpy PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
# set_property(TARGET cgalpy PROPERTY INSTALL_RPATH "${CGAL_DIR}/lib")

if (CGALPY_DEF_PYBINDINGS)
  install(TARGETS cgalpy_PYBINDINGS
          RUNTIME DESTINATION ${CGALPY_INSTALL_BIN_DIR}
          LIBRARY DESTINATION ${CGALPY_INSTALL_LIB_DIR}
          ARCHIVE DESTINATION ${CGALPY_INSTALL_LIB_DIR})
endif()

# install(TARGETS cgalpy
#         RUNTIME DESTINATION ${CGALPY_INSTALL_BIN_DIR}
#         LIBRARY DESTINATION ${CGALPY_INSTALL_LIB_DIR}
#         ARCHIVE DESTINATION ${CGALPY_INSTALL_LIB_DIR})
