Spaces:
Runtime error
Runtime error
File size: 4,719 Bytes
be11144 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
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() |