diff options
author | Ray Molenkamp <github@lazydodo.com> | 2020-09-15 22:16:37 +0300 |
---|---|---|
committer | Ray Molenkamp <github@lazydodo.com> | 2020-09-15 22:16:37 +0300 |
commit | 2eec6ec793386cef522193f69e2790a4bd301391 (patch) | |
tree | d08ad928130ffbb80102ae8747c52dc974b99020 /build_files/build_environment | |
parent | 7b3d38a72d367e155ad3c417882fa3dfcff2fcb9 (diff) |
Deps: Add potrace as a new library dependency
For work the GP team plans to land soon (T79877) potrace was taken
on as an additional optional dependency.
This diff adds building the library to the deps builder and takes
care of the integration into the build-system with the `WITH_POTRACE`
cmake switch.
Differential Revision: https://developer.blender.org/D8662
Reviewed by: brecht, sergey
Diffstat (limited to 'build_files/build_environment')
5 files changed, 99 insertions, 0 deletions
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 +) + |