Просмотр исходного кода

deps: Add gtest, nlopt, zlib, and libpng, add debug configurations on Windows

Vojtech Kral 6 лет назад
Родитель
Сommit
ce7d196b43
3 измененных файлов с 205 добавлено и 20 удалено
  1. 5 3
      deps/CMakeLists.txt
  2. 50 1
      deps/deps-unix-static.cmake
  3. 150 16
      deps/deps-windows.cmake

+ 5 - 3
deps/CMakeLists.txt

@@ -5,12 +5,12 @@
 #
 # All the dependencies are installed in a `destdir` directory in the root of the build directory,
 # in a traditional Unix-style prefix structure. The destdir can be used directly by CMake
-# when building Slic3r - to do this, set the CMAKE_PREFIX_PATH to the destdir's location.
+# when building Slic3r - to do this, set the CMAKE_PREFIX_PATH to ${destdir}/usr/local.
 #
 # For better clarity of console output, it's recommended to _not_ use a parallelized build
 # for the top-level command, ie. use `make -j 1` or `ninja -j 1` to force single-threaded top-level
 # build. This doesn't degrade performance as individual dependencies are built in parallel fashion
-# as appropriate anyway (cf. the `NPROC` variable).
+# if supported by the dependency.
 #
 # On Windows, architecture (64 vs 32 bits) is judged based on the compiler variant.
 # To build dependencies for either 64 or 32 bit OS, use the respective compiler command line.
@@ -27,7 +27,9 @@ if (NPROC EQUAL 0)
     set(NPROC 1)
 endif ()
 
-set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir")
+set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory")
+option(DEP_DEBUG "Build debug variants (currently only works on Windows)" ON)
+
 
 if (MSVC)
     if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")

+ 50 - 1
deps/deps-unix-static.cmake

@@ -22,13 +22,62 @@ ExternalProject_Add(dep_tbb
     EXCLUDE_FROM_ALL 1
     URL "https://github.com/wjakob/tbb/archive/a0dc9bf76d0120f917b641ed095360448cabc85b.tar.gz"
     URL_HASH SHA256=0545cb6033bd1873fcae3ea304def720a380a88292726943ae3b9b207f322efe
-    BUILD_IN_SOURCE 1
     CMAKE_ARGS -DTBB_BUILD_SHARED=OFF
         -DTBB_BUILD_TESTS=OFF
         -DCMAKE_POSITION_INDEPENDENT_CODE=ON
     INSTALL_COMMAND make install "DESTDIR=${DESTDIR}"
 )
 
+ExternalProject_Add(dep_gtest
+    EXCLUDE_FROM_ALL 1
+    URL "https://github.com/google/googletest/archive/release-1.8.1.tar.gz"
+    URL_HASH SHA256=9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c
+    CMAKE_ARGS -DBUILD_GMOCK=OFF
+        -DCMAKE_POSITION_INDEPENDENT_CODE=ON
+    INSTALL_COMMAND make install "DESTDIR=${DESTDIR}"
+)
+
+ExternalProject_Add(dep_nlopt
+    EXCLUDE_FROM_ALL 1
+    URL "https://github.com/stevengj/nlopt/archive/v2.5.0.tar.gz"
+    URL_HASH SHA256=c6dd7a5701fff8ad5ebb45a3dc8e757e61d52658de3918e38bab233e7fd3b4ae
+    CMAKE_GENERATOR "${DEP_MSVC_GEN}"
+    CMAKE_ARGS
+        -DNLOPT_PYTHON=OFF
+        -DNLOPT_OCTAVE=OFF
+        -DNLOPT_MATLAB=OFF
+        -DNLOPT_GUILE=OFF
+        -DCMAKE_POSITION_INDEPENDENT_CODE=ON
+    INSTALL_COMMAND make install "DESTDIR=${DESTDIR}"
+    INSTALL_COMMAND ""
+)
+
+ExternalProject_Add(dep_zlib
+    EXCLUDE_FROM_ALL 1
+    URL "https://zlib.net/zlib-1.2.11.tar.xz"
+    URL_HASH SHA256=4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066
+    CMAKE_GENERATOR "${DEP_MSVC_GEN}"
+    CMAKE_ARGS
+        -DCMAKE_POSITION_INDEPENDENT_CODE=ON
+    INSTALL_COMMAND make install "DESTDIR=${DESTDIR}"
+    INSTALL_COMMAND ""
+)
+
+
+ExternalProject_Add(dep_libpng
+    DEPENDS dep_zlib
+    EXCLUDE_FROM_ALL 1
+    URL "http://prdownloads.sourceforge.net/libpng/libpng-1.6.35.tar.xz?download"
+    URL_HASH SHA256=23912ec8c9584917ed9b09c5023465d71709dce089be503c7867fec68a93bcd7
+    CMAKE_GENERATOR "${DEP_MSVC_GEN}"
+    CMAKE_ARGS
+        -DPNG_SHARED=OFF
+        -DPNG_TESTS=OFF
+        -DCMAKE_POSITION_INDEPENDENT_CODE=ON
+    INSTALL_COMMAND make install "DESTDIR=${DESTDIR}"
+    INSTALL_COMMAND ""
+)
+
 ExternalProject_Add(dep_libopenssl
     EXCLUDE_FROM_ALL 1
     URL "https://github.com/openssl/openssl/archive/OpenSSL_1_1_0g.tar.gz"

+ 150 - 16
deps/deps-windows.cmake

@@ -1,4 +1,18 @@
 
+if (${DEPS_BITS} EQUAL 32)
+    set(DEP_MSVC_GEN "Visual Studio 12")
+else ()
+    set(DEP_MSVC_GEN "Visual Studio 12 Win64")
+endif ()
+
+
+
+if (${DEP_DEBUG})
+    set(DEP_BOOST_DEBUG "debug")
+else ()
+    set(DEP_BOOST_DEBUG "")
+endif ()
+
 ExternalProject_Add(dep_boost
     EXCLUDE_FROM_ALL 1
     URL "https://dl.bintray.com/boostorg/release/1.63.0/source/boost_1_63_0.tar.gz"
@@ -20,30 +34,129 @@ ExternalProject_Add(dep_boost
         variant=release
         threading=multi
         boost.locale.icu=off
-        install
+        "${DEP_BOOST_DEBUG}" release install
     INSTALL_COMMAND ""   # b2 does that already
 )
 
 
-if (${DEPS_BITS} EQUAL 32)
-    set(DEP_TBB_GEN "Visual Studio 12")
-else ()
-    set(DEP_TBB_GEN "Visual Studio 12 Win64")
-endif ()
-
 ExternalProject_Add(dep_tbb
     EXCLUDE_FROM_ALL 1
     URL "https://github.com/wjakob/tbb/archive/a0dc9bf76d0120f917b641ed095360448cabc85b.tar.gz"
     URL_HASH SHA256=0545cb6033bd1873fcae3ea304def720a380a88292726943ae3b9b207f322efe
-    CMAKE_GENERATOR "${DEP_TBB_GEN}"
+    CMAKE_GENERATOR "${DEP_MSVC_GEN}"
     CMAKE_ARGS
-        -DCMAKE_CONFIGURATION_TYPES=Release
+        -DCMAKE_DEBUG_POSTFIX=d
         -DTBB_BUILD_SHARED=OFF
         -DTBB_BUILD_TESTS=OFF
         "-DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR}\\usr\\local"
     BUILD_COMMAND msbuild /P:Configuration=Release INSTALL.vcxproj
     INSTALL_COMMAND ""
 )
+if (${DEP_DEBUG})
+    ExternalProject_Get_Property(dep_tbb BINARY_DIR)
+    ExternalProject_Add_Step(dep_tbb build_debug
+        DEPENDEES build
+        DEPENDERS install
+        COMMAND msbuild /P:Configuration=Debug INSTALL.vcxproj
+        WORKING_DIRECTORY "${BINARY_DIR}"
+    )
+endif ()
+
+
+ExternalProject_Add(dep_gtest
+    EXCLUDE_FROM_ALL 1
+    URL "https://github.com/google/googletest/archive/release-1.8.1.tar.gz"
+    URL_HASH SHA256=9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c
+    CMAKE_GENERATOR "${DEP_MSVC_GEN}"
+    CMAKE_ARGS -DBUILD_GMOCK=OFF
+        -DCMAKE_POSITION_INDEPENDENT_CODE=ON
+        "-DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR}\\usr\\local"
+    BUILD_COMMAND msbuild /P:Configuration=Release INSTALL.vcxproj
+    INSTALL_COMMAND ""
+)
+if (${DEP_DEBUG})
+    ExternalProject_Get_Property(dep_gtest BINARY_DIR)
+    ExternalProject_Add_Step(dep_gtest build_debug
+        DEPENDEES build
+        DEPENDERS install
+        COMMAND msbuild /P:Configuration=Debug INSTALL.vcxproj
+        WORKING_DIRECTORY "${BINARY_DIR}"
+    )
+endif ()
+
+
+ExternalProject_Add(dep_nlopt
+    EXCLUDE_FROM_ALL 1
+    URL "https://github.com/stevengj/nlopt/archive/v2.5.0.tar.gz"
+    URL_HASH SHA256=c6dd7a5701fff8ad5ebb45a3dc8e757e61d52658de3918e38bab233e7fd3b4ae
+    CMAKE_GENERATOR "${DEP_MSVC_GEN}"
+    CMAKE_ARGS
+        -DNLOPT_PYTHON=OFF
+        -DNLOPT_OCTAVE=OFF
+        -DNLOPT_MATLAB=OFF
+        -DNLOPT_GUILE=OFF
+        -DCMAKE_POSITION_INDEPENDENT_CODE=ON
+        -DCMAKE_DEBUG_POSTFIX=d
+        "-DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR}\\usr\\local"
+    BUILD_COMMAND msbuild /P:Configuration=Release INSTALL.vcxproj
+    INSTALL_COMMAND ""
+)
+if (${DEP_DEBUG})
+    ExternalProject_Get_Property(dep_nlopt BINARY_DIR)
+    ExternalProject_Add_Step(dep_nlopt build_debug
+        DEPENDEES build
+        DEPENDERS install
+        COMMAND msbuild /P:Configuration=Debug INSTALL.vcxproj
+        WORKING_DIRECTORY "${BINARY_DIR}"
+    )
+endif ()
+
+
+ExternalProject_Add(dep_zlib
+    EXCLUDE_FROM_ALL 1
+    URL "https://zlib.net/zlib-1.2.11.tar.xz"
+    URL_HASH SHA256=4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066
+    CMAKE_GENERATOR "${DEP_MSVC_GEN}"
+    CMAKE_ARGS
+        -DCMAKE_POSITION_INDEPENDENT_CODE=ON
+        "-DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR}\\usr\\local"
+    BUILD_COMMAND msbuild /P:Configuration=Release INSTALL.vcxproj
+    INSTALL_COMMAND ""
+)
+if (${DEP_DEBUG})
+    ExternalProject_Get_Property(dep_zlib BINARY_DIR)
+    ExternalProject_Add_Step(dep_zlib build_debug
+        DEPENDEES build
+        DEPENDERS install
+        COMMAND msbuild /P:Configuration=Debug INSTALL.vcxproj
+        WORKING_DIRECTORY "${BINARY_DIR}"
+    )
+endif ()
+
+
+ExternalProject_Add(dep_libpng
+    DEPENDS dep_zlib
+    EXCLUDE_FROM_ALL 1
+    URL "http://prdownloads.sourceforge.net/libpng/libpng-1.6.35.tar.xz?download"
+    URL_HASH SHA256=23912ec8c9584917ed9b09c5023465d71709dce089be503c7867fec68a93bcd7
+    CMAKE_GENERATOR "${DEP_MSVC_GEN}"
+    CMAKE_ARGS
+        -DPNG_SHARED=OFF
+        -DPNG_TESTS=OFF
+        -DCMAKE_POSITION_INDEPENDENT_CODE=ON
+        "-DCMAKE_INSTALL_PREFIX:PATH=${DESTDIR}\\usr\\local"
+    BUILD_COMMAND msbuild /P:Configuration=Release INSTALL.vcxproj
+    INSTALL_COMMAND ""
+)
+if (${DEP_DEBUG})
+    ExternalProject_Get_Property(dep_libpng BINARY_DIR)
+    ExternalProject_Add_Step(dep_libpng build_debug
+        DEPENDEES build
+        DEPENDERS install
+        COMMAND msbuild /P:Configuration=Debug INSTALL.vcxproj
+        WORKING_DIRECTORY "${BINARY_DIR}"
+    )
+endif ()
 
 
 if (${DEPS_BITS} EQUAL 32)
@@ -59,10 +172,27 @@ ExternalProject_Add(dep_libcurl
     BUILD_IN_SOURCE 1
     CONFIGURE_COMMAND ""
     BUILD_COMMAND cd winbuild && nmake /f Makefile.vc mode=static VC=12 GEN_PDB=yes DEBUG=no "MACHINE=${DEP_LIBCURL_TARGET}"
-    INSTALL_COMMAND cd builds\\libcurl-*-winssl
+    INSTALL_COMMAND cd builds\\libcurl-*-release-*-winssl
         && "${CMAKE_COMMAND}" -E copy_directory include "${DESTDIR}\\usr\\local\\include"
         && "${CMAKE_COMMAND}" -E copy_directory lib "${DESTDIR}\\usr\\local\\lib"
 )
+if (${DEP_DEBUG})
+    ExternalProject_Get_Property(dep_libcurl SOURCE_DIR)
+    ExternalProject_Add_Step(dep_libcurl build_debug
+        DEPENDEES build
+        DEPENDERS install
+        COMMAND cd winbuild && nmake /f Makefile.vc mode=static VC=12 GEN_PDB=yes DEBUG=yes "MACHINE=${DEP_LIBCURL_TARGET}"
+        WORKING_DIRECTORY "${SOURCE_DIR}"
+    )
+    ExternalProject_Add_Step(dep_libcurl install_debug
+        DEPENDEES install
+        COMMAND cd builds\\libcurl-*-debug-*-winssl
+            && "${CMAKE_COMMAND}" -E copy_directory include "${DESTDIR}\\usr\\local\\include"
+            && "${CMAKE_COMMAND}" -E copy_directory lib "${DESTDIR}\\usr\\local\\lib"
+        WORKING_DIRECTORY "${SOURCE_DIR}"
+    )
+endif ()
+
 
 if (${DEPS_BITS} EQUAL 32)
     set(DEP_WXWIDGETS_TARGET "")
@@ -79,12 +209,16 @@ ExternalProject_Add(dep_wxwidgets
     BUILD_IN_SOURCE 1
     PATCH_COMMAND "${CMAKE_COMMAND}" -E copy "${CMAKE_CURRENT_SOURCE_DIR}\\wxwidgets-pngprefix.h" src\\png\\pngprefix.h
     CONFIGURE_COMMAND ""
-    BUILD_COMMAND cd build\\msw && nmake /f makefile.vc
-        BUILD=release
-        SHARED=0
-        UNICODE=1
-        USE_GUI=1
-        "${DEP_WXWIDGETS_TARGET}"
+    BUILD_COMMAND cd build\\msw && nmake /f makefile.vc BUILD=release SHARED=0 UNICODE=1 USE_GUI=1 "${DEP_WXWIDGETS_TARGET}"
     INSTALL_COMMAND "${CMAKE_COMMAND}" -E copy_directory include "${DESTDIR}\\usr\\local\\include"
         && "${CMAKE_COMMAND}" -E copy_directory "lib\\${DEP_WXWIDGETS_LIBDIR}" "${DESTDIR}\\usr\\local\\lib\\${DEP_WXWIDGETS_LIBDIR}"
 )
+if (${DEP_DEBUG})
+    ExternalProject_Get_Property(dep_wxwidgets SOURCE_DIR)
+    ExternalProject_Add_Step(dep_wxwidgets build_debug
+        DEPENDEES build
+        DEPENDERS install
+        COMMAND cd build\\msw && nmake /f makefile.vc BUILD=debug SHARED=0 UNICODE=1 USE_GUI=1 "${DEP_WXWIDGETS_TARGET}"
+        WORKING_DIRECTORY "${SOURCE_DIR}"
+    )
+endif ()