diff options
Diffstat (limited to 'xs/src/libnest2d/CMakeLists.txt')
-rw-r--r-- | xs/src/libnest2d/CMakeLists.txt | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/xs/src/libnest2d/CMakeLists.txt b/xs/src/libnest2d/CMakeLists.txt new file mode 100644 index 000000000..568d1a5a9 --- /dev/null +++ b/xs/src/libnest2d/CMakeLists.txt @@ -0,0 +1,81 @@ +cmake_minimum_required(VERSION 2.8) + +project(Libnest2D) + +enable_testing() + +if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + # Update if necessary +# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long ") +endif() + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED) + +# Add our own cmake module path. +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/) + +option(LIBNEST2D_UNITTESTS "If enabled, googletest framework will be downloaded + and the provided unit tests will be included in the build." OFF) + +#set(LIBNEST2D_GEOMETRIES_TARGET "" CACHE STRING +# "Build libnest2d with geometry classes implemented by the chosen target.") + +#set(libnest2D_TEST_LIBRARIES "" CACHE STRING +# "Libraries needed to compile the test executable for libnest2d.") + + +set(LIBNEST2D_SRCFILES + libnest2d/libnest2d.hpp # Templates only + libnest2d.h # Exports ready made types using template arguments + libnest2d/geometry_traits.hpp + libnest2d/geometries_io.hpp + libnest2d/common.hpp + libnest2d/placers/placer_boilerplate.hpp + libnest2d/placers/bottomleftplacer.hpp + libnest2d/placers/nfpplacer.hpp + libnest2d/geometries_nfp.hpp + libnest2d/selections/selection_boilerplate.hpp + libnest2d/selections/filler.hpp + libnest2d/selections/firstfit.hpp + libnest2d/selections/djd_heuristic.hpp + ) + +if((NOT LIBNEST2D_GEOMETRIES_TARGET) OR (LIBNEST2D_GEOMETRIES_TARGET STREQUAL "")) + message(STATUS "libnest2D backend is default") + + if(NOT Boost_INCLUDE_DIRS_FOUND) + find_package(Boost REQUIRED) + # TODO automatic download of boost geometry headers + endif() + + add_subdirectory(libnest2d/clipper_backend) + + set(LIBNEST2D_GEOMETRIES_TARGET ${CLIPPER_LIBRARIES}) + + include_directories(BEFORE ${CLIPPER_INCLUDE_DIRS}) + include_directories(${Boost_INCLUDE_DIRS}) + + list(APPEND LIBNEST2D_SRCFILES libnest2d/clipper_backend/clipper_backend.cpp + libnest2d/clipper_backend/clipper_backend.hpp + libnest2d/boost_alg.hpp) + +else() + message(STATUS "Libnest2D backend is: ${LIBNEST2D_GEOMETRIES_TARGET}") +endif() + +add_library(libnest2d STATIC ${LIBNEST2D_SRCFILES} ) +target_link_libraries(libnest2d ${LIBNEST2D_GEOMETRIES_TARGET}) +target_include_directories(libnest2d PUBLIC ${CMAKE_SOURCE_DIR}) + +set(LIBNEST2D_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}) + +get_directory_property(hasParent PARENT_DIRECTORY) +if(hasParent) + set(LIBNEST2D_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE) +endif() + +if(LIBNEST2D_UNITTESTS) + add_subdirectory(tests) +endif() |