Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt1
-rw-r--r--build_files/build_environment/CMakeLists.txt1
-rw-r--r--build_files/build_environment/cmake/harvest.cmake2
-rw-r--r--build_files/build_environment/cmake/potrace.cmake38
-rw-r--r--build_files/build_environment/cmake/versions.cmake4
-rw-r--r--build_files/build_environment/patches/cmakelists_potrace.txt54
-rw-r--r--build_files/cmake/Modules/FindPotrace.cmake65
-rw-r--r--build_files/cmake/platform/platform_unix.cmake8
-rw-r--r--build_files/cmake/platform/platform_win32.cmake7
9 files changed, 180 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 602616ca286..6fc454a639c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -198,6 +198,7 @@ option(WITH_OPENIMAGEDENOISE "Enable the OpenImageDenoise compositing node" ON
option(WITH_OPENSUBDIV "Enable OpenSubdiv for surface subdivision" ON)
+option(WITH_POTRACE "Enable features relying on potrace" OFF)
option(WITH_OPENVDB "Enable features relying on OpenVDB" ON)
option(WITH_OPENVDB_BLOSC "Enable blosc compression for OpenVDB, only enable if OpenVDB was built with blosc support" ON)
option(WITH_OPENVDB_3_ABI_COMPATIBLE "Assume OpenVDB library has been compiled with version 3 ABI compatibility" OFF)
diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt
index d521abc418f..f49c6ea238f 100644
--- a/build_files/build_environment/CMakeLists.txt
+++ b/build_files/build_environment/CMakeLists.txt
@@ -88,6 +88,7 @@ include(cmake/python_site_packages.cmake)
include(cmake/package_python.cmake)
include(cmake/numpy.cmake)
include(cmake/usd.cmake)
+include(cmake/potrace.cmake)
# Boost needs to be included after python.cmake due to the PYTHON_BINARY variable being needed.
include(cmake/boost.cmake)
if(UNIX)
diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake
index dbb3a33e705..93e17f33284 100644
--- a/build_files/build_environment/cmake/harvest.cmake
+++ b/build_files/build_environment/cmake/harvest.cmake
@@ -177,6 +177,8 @@ harvest(xvidcore/lib ffmpeg/lib "*.a")
harvest(usd/include usd/include "*.h")
harvest(usd/lib/usd usd/lib/usd "*")
harvest(usd/plugin usd/plugin "*")
+harvest(potrace/include potrace/include "*.h")
+harvest(potrace/lib potrace/lib "*.a")
if(UNIX AND NOT APPLE)
harvest(libglu/lib mesa/lib "*.so*")
diff --git a/build_files/build_environment/cmake/potrace.cmake b/build_files/build_environment/cmake/potrace.cmake
new file mode 100644
index 00000000000..28e57c8c54a
--- /dev/null
+++ b/build_files/build_environment/cmake/potrace.cmake
@@ -0,0 +1,38 @@
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ***** END GPL LICENSE BLOCK *****
+
+set(POTRACE_EXTRA_ARGS
+)
+
+if((WIN32 AND BUILD_MODE STREQUAL Release) OR UNIX)
+ ExternalProject_Add(external_potrace
+ URL ${POTRACE_URI}
+ DOWNLOAD_DIR ${DOWNLOAD_DIR}
+ URL_HASH MD5=${POTRACE_HASH}
+ PREFIX ${BUILD_DIR}/potrace
+ PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${PATCH_DIR}/cmakelists_potrace.txt ${BUILD_DIR}/potrace/src/external_potrace/CMakeLists.txt
+ CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/potrace ${DEFAULT_CMAKE_FLAGS} ${POTRACE_EXTRA_ARGS}
+ INSTALL_DIR ${LIBDIR}/potrace
+ )
+ if(WIN32)
+ ExternalProject_Add_Step(external_potrace after_install
+ COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/potrace ${HARVEST_TARGET}/potrace
+ DEPENDEES install
+ )
+ endif()
+endif()
diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake
index eb5df8204b5..cf598c5455a 100644
--- a/build_files/build_environment/cmake/versions.cmake
+++ b/build_files/build_environment/cmake/versions.cmake
@@ -320,3 +320,7 @@ set(ISPC_HASH 4bf5e8d0020c4b9980faa702c1a6f25f)
set(GMP_VERSION 6.2.0)
set(GMP_URI https://gmplib.org/download/gmp/gmp-${GMP_VERSION}.tar.xz)
set(GMP_HASH a325e3f09e6d91e62101e59f9bda3ec1)
+
+set(POTRACE_VERSION 1.16)
+set(POTRACE_URI http://potrace.sourceforge.net/download/${POTRACE_VERSION}/potrace-${POTRACE_VERSION}.tar.gz)
+set(POTRACE_HASH 5f0bd87ddd9a620b0c4e65652ef93d69)
diff --git a/build_files/build_environment/patches/cmakelists_potrace.txt b/build_files/build_environment/patches/cmakelists_potrace.txt
new file mode 100644
index 00000000000..c214ff7fd4a
--- /dev/null
+++ b/build_files/build_environment/patches/cmakelists_potrace.txt
@@ -0,0 +1,54 @@
+project(potrace)
+cmake_minimum_required(VERSION 2.8)
+
+include_directories(src/include)
+
+set(SOURCES
+ src/backend_dxf.c
+ src/backend_eps.c
+ src/backend_geojson.c
+ src/backend_pdf.c
+ src/backend_pgm.c
+ src/backend_svg.c
+ src/backend_xfig.c
+ src/bbox.c
+ src/bitmap_io.c
+ src/curve.c
+ src/decompose.c
+ src/flate.c
+ src/greymap.c
+ src/lzw.c
+ src/potracelib.c
+ src/progress_bar.c
+ src/render.c
+ src/trace.c
+ src/trans.c
+)
+
+set(HEADERS
+ src/potracelib.h
+)
+
+if(WIN32)
+ add_definitions(/D_USE_MATH_DEFINES)
+endif()
+
+add_definitions(/DPOTRACE="POTrace")
+add_definitions(/DVERSION="Blender")
+add_definitions(/DHAVE_INTTYPES_H)
+
+
+add_library(${PROJECT_NAME} STATIC ${HEADERS} ${SOURCES})
+
+set_target_properties(${PROJECT_NAME} PROPERTIES
+ LIBRARY_OUTPUT_NAME "${PROJECT_NAME}"
+ PUBLIC_HEADER "${HEADERS}"
+)
+
+install(TARGETS ${PROJECT_NAME}
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+ PUBLIC_HEADER DESTINATION include
+)
+
diff --git a/build_files/cmake/Modules/FindPotrace.cmake b/build_files/cmake/Modules/FindPotrace.cmake
new file mode 100644
index 00000000000..5b6e68b7f5c
--- /dev/null
+++ b/build_files/cmake/Modules/FindPotrace.cmake
@@ -0,0 +1,65 @@
+# - Find potrace library
+# Find the potrace include and library
+# This module defines
+# POTRACE_INCLUDE_DIRS, where to find potracelib.h, Set when
+# POTRACE is found.
+# POTRACE_LIBRARIES, libraries to link against to use POTRACE.
+# POTRACE_ROOT_DIR, The base directory to search for POTRACE.
+# This can also be an environment variable.
+# POTRACE_FOUND, If false, do not try to use POTRACE.
+#
+# also defined, but not for general use are
+# POTRACE_LIBRARY, where to find the POTRACE library.
+
+#=============================================================================
+# Copyright 2020 Blender Foundation.
+#
+# Distributed under the OSI-approved BSD 3-Clause License,
+# see accompanying file BSD-3-Clause-license.txt for details.
+#=============================================================================
+
+# If POTRACE_ROOT_DIR was defined in the environment, use it.
+IF(NOT POTRACE_ROOT_DIR AND NOT $ENV{POTRACE_ROOT_DIR} STREQUAL "")
+ SET(POTRACE_ROOT_DIR $ENV{POTRACE_ROOT_DIR})
+ENDIF()
+
+SET(_potrace_SEARCH_DIRS
+ ${POTRACE_ROOT_DIR}
+ /opt/lib/potrace
+ /usr/include
+ /usr/local/include
+)
+
+FIND_PATH(POTRACE_INCLUDE_DIR
+ NAMES
+ potracelib.h
+ HINTS
+ ${_potrace_SEARCH_DIRS}
+ PATH_SUFFIXES
+ include
+)
+
+FIND_LIBRARY(POTRACE_LIBRARY
+ NAMES
+ potrace
+ HINTS
+ ${_potrace_SEARCH_DIRS}
+ PATH_SUFFIXES
+ lib64 lib
+ )
+
+# handle the QUIETLY and REQUIRED arguments and set POTRACE_FOUND to TRUE if
+# all listed variables are TRUE
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(POTRACE DEFAULT_MSG
+ POTRACE_LIBRARY POTRACE_INCLUDE_DIR)
+
+IF(POTRACE_FOUND)
+ SET(POTRACE_LIBRARIES ${POTRACE_LIBRARY})
+ SET(POTRACE_INCLUDE_DIRS ${POTRACE_INCLUDE_DIR})
+ENDIF()
+
+MARK_AS_ADVANCED(
+ POTRACE_INCLUDE_DIR
+ POTRACE_LIBRARY
+)
diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake
index b2105a58a0a..bf611f56ce1 100644
--- a/build_files/cmake/platform/platform_unix.cmake
+++ b/build_files/cmake/platform/platform_unix.cmake
@@ -459,6 +459,14 @@ if(WITH_GMP)
endif()
endif()
+if(WITH_POTRACE)
+ find_package_wrapper(Potrace)
+ if(NOT POTRACE_FOUND)
+ message(WARNING "potrace not found, disabling WITH_POTRACE")
+ set(WITH_POTRACE OFF)
+ endif()
+endif()
+
if(EXISTS ${LIBDIR})
without_system_libs_end()
endif()
diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake
index 64e4b276610..d49b576ba1a 100644
--- a/build_files/cmake/platform/platform_win32.cmake
+++ b/build_files/cmake/platform/platform_win32.cmake
@@ -760,3 +760,10 @@ if(WITH_GMP)
set(GMP_ROOT_DIR ${LIBDIR}/gmp)
set(GMP_FOUND On)
endif()
+
+if(WITH_POTRACE)
+ set(POTRACE_INCLUDE_DIRS ${LIBDIR}/potrace/include)
+ set(POTRACE_LIBRARIES ${LIBDIR}/potrace/lib/potrace.lib)
+ set(POTRACE_FOUND On)
+endif()
+