project (Qzip)
cmake_minimum_required(VERSION 3.10.0)
set (CMAKE_CXX_STANDARD 17)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)

# Find includes in corresponding build directories
# set(CMAKE_INCLUDE_CURRENT_DIR ON) this does not propagate to subdirectories
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories("./include/")

set(CMAKE_AUTOMOC ON)

# Include this package's headers first
add_definitions( -D_DISABLE_EXTENDED_ALIGNED_STORAGE )# for vs 2017
if(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4819 /MP")
endif()

find_package (Eigen3  REQUIRED NO_MODULE)
include_directories(${EIGEN3_INCLUDE_DIR})
add_definitions(-DUSE_EIGEN)
add_definitions(-DCGAL_EIGEN3_ENABLED)


# Add specific Find.cmake modules 
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ) 

find_package(CGAL 4.14 COMPONENTS Qt5 Core ImageIO)
set_target_properties(CGAL::CGAL PROPERTIES
    MAP_IMPORTED_CONFIG_RELEASE Release
    MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
)
set_target_properties(CGAL::CGAL_Core PROPERTIES
    MAP_IMPORTED_CONFIG_RELEASE Release
    MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
)
set_target_properties(CGAL::CGAL_Qt5 PROPERTIES
    MAP_IMPORTED_CONFIG_RELEASE Release
    MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
)
set_target_properties(CGAL::CGAL_ImageIO PROPERTIES
    MAP_IMPORTED_CONFIG_RELEASE Release
    MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
)


include_directories(${GLUT_INCLUDE_DIR} ${GLEW_INCLUDE_DIR})

find_package(Qt5 REQUIRED COMPONENTS OpenGL Gui Svg Xml Concurrent)

find_package(OpenGL)
find_package(GLUT REQUIRED)
find_package(GLEW REQUIRED)
find_package(QGLViewer REQUIRED)

if( WIN32 )
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /openmp")
  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /openmp")
endif()

if(WIN32)
    add_definitions( "/W3 /D_CRT_SECURE_NO_WARNINGS /wd4503 /nologo" )
endif(WIN32)

if(CGAL_FOUND AND CGAL_Qt5_FOUND AND OPENGL_FOUND)
    add_subdirectory(tools)
    add_subdirectory(quad)
    add_subdirectory(3d_surface_tool)
else()
  message(STATUS "NOTICE: This program requires CGAL, Qt4 and QGlviewer, and will not be compiled.")
  message(STATUS "CGAL FOUND: ${CGAL_FOUND}")
  message(STATUS "OPENGL_FOUND: ${OPENGL_FOUND}")
  message(STATUS "QGLVIEWER_FOUND: ${QGLVIEWER_FOUND}")
endif()
