Spaces:
Runtime error
Runtime error
cmake_minimum_required(VERSION 3.12) | |
project(diffvg VERSION 0.0.1 DESCRIPTION "Differentiable Vector Graphics") | |
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") | |
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) | |
if(WIN32) | |
find_package(Python 3.6 COMPONENTS Development REQUIRED) | |
else() | |
find_package(Python 3.7 COMPONENTS Development REQUIRED) | |
endif() | |
add_subdirectory(pybind11) | |
option(DIFFVG_CUDA "Build diffvg with GPU code path?" ON) | |
if(DIFFVG_CUDA) | |
message(STATUS "Build with CUDA support") | |
find_package(CUDA 10 REQUIRED) | |
set(CMAKE_CUDA_STANDARD 11) | |
if(NOT WIN32) | |
# Hack: for some reason the line above doesn't work on some Linux systems. | |
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -std=c++11") | |
#set(CUDA_NVCC_FLAGS_DEBUG "-g -G") | |
endif() | |
else() | |
message(STATUS "Build without CUDA support") | |
find_package(Thrust REQUIRED) | |
endif() | |
# include_directories(${CMAKE_SOURCE_DIR}/pybind11/include) | |
include_directories(${PYTHON_INCLUDE_PATH}) | |
find_package(PythonLibs REQUIRED) | |
include_directories(${PYTHON_INCLUDE_PATH}) | |
include_directories(${PYTHON_INCLUDE_DIRS}) | |
include_directories(pybind11/include) | |
if(DIFFVG_CUDA) | |
link_directories(${CUDA_LIBRARIES}) | |
else() | |
include_directories(${THRUST_INCLUDE_DIR}) | |
endif() | |
if(NOT MSVC) | |
# These compile definitions are not meaningful for MSVC | |
add_compile_options(-Wall -g -O3 -fvisibility=hidden -Wno-unknown-pragmas) | |
else() | |
add_compile_options(/Wall /Zi) | |
add_link_options(/DEBUG) | |
endif() | |
if(NOT DIFFVG_CUDA) | |
add_compile_options("-DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_CPP") | |
endif() | |
set(SRCS atomic.h | |
color.h | |
cdf.h | |
cuda_utils.h | |
diffvg.h | |
edge_query.h | |
filter.h | |
matrix.h | |
parallel.h | |
pcg.h | |
ptr.h | |
sample_boundary.h | |
scene.h | |
shape.h | |
solve.h | |
vector.h | |
within_distance.h | |
winding_number.h | |
atomic.cpp | |
color.cpp | |
diffvg.cpp | |
parallel.cpp | |
scene.cpp | |
shape.cpp) | |
if(DIFFVG_CUDA) | |
add_compile_definitions(COMPILE_WITH_CUDA) | |
set_source_files_properties( | |
diffvg.cpp | |
scene.cpp | |
PROPERTIES CUDA_SOURCE_PROPERTY_FORMAT OBJ) | |
cuda_add_library(diffvg MODULE ${SRCS}) | |
else() | |
add_library(diffvg MODULE ${SRCS}) | |
endif() | |
if(APPLE) | |
# The "-undefined dynamic_lookup" is a hack for systems with | |
# multiple Python installed. If we link a particular Python version | |
# here, and we import it with a different Python version later. | |
# likely a segmentation fault. | |
# The solution for Linux Mac OS machines, as mentioned in | |
# https://github.com/pybind/pybind11/blob/master/tools/pybind11Tools.cmake | |
# is to not link against Python library at all and resolve the symbols | |
# at compile time. | |
set(DYNAMIC_LOOKUP "-undefined dynamic_lookup") | |
endif() | |
target_link_libraries(diffvg ${DYNAMIC_LOOKUP}) | |
if(WIN32) | |
# See: https://pybind11.readthedocs.io/en/master/compiling.html#advanced-interface-library-target | |
target_link_libraries(diffvg pybind11::module) | |
set_target_properties(diffvg PROPERTIES PREFIX "${PYTHON_MODULE_PREFIX}" | |
SUFFIX "${PYTHON_MODULE_EXTENSION}") | |
endif() | |
set_target_properties(diffvg PROPERTIES SKIP_BUILD_RPATH FALSE) | |
set_target_properties(diffvg PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE) | |
if(UNIX AND NOT APPLE) | |
set_target_properties(diffvg PROPERTIES INSTALL_RPATH "$ORIGIN") | |
elseif(APPLE) | |
set_target_properties(diffvg PROPERTIES INSTALL_RPATH "@loader_path") | |
endif() | |
set_property(TARGET diffvg PROPERTY CXX_STANDARD 11) | |
set_target_properties(diffvg PROPERTIES PREFIX "") | |
# Still enable assertion in release mode | |
string( REPLACE "/DNDEBUG" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") | |
string( REPLACE "-DNDEBUG" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") | |
string( REPLACE "/DNDEBUG" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") | |
string( REPLACE "-DNDEBUG" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") | |
string( REPLACE "/DNDEBUG" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") | |
string( REPLACE "-DNDEBUG" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") | |
string( REPLACE "/DNDEBUG" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") | |
string( REPLACE "-DNDEBUG" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") | |
if(NOT WIN32) | |
find_package(TensorFlow) | |
if(TensorFlow_FOUND) | |
add_subdirectory(pydiffvg_tensorflow/custom_ops) | |
else() | |
message(INFO " Building without TensorFlow support (not found)") | |
endif() | |
endif() | |