diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 852d17fa2..b02575617 100644 --- a/deps/CMakeLists.txt +++ b/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") diff --git a/deps/deps-unix-static.cmake b/deps/deps-unix-static.cmake index f963f5356..a9ae1ea6a 100644 --- a/deps/deps-unix-static.cmake +++ b/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" diff --git a/deps/deps-windows.cmake b/deps/deps-windows.cmake index 2be0d448a..a47a29be1 100644 --- a/deps/deps-windows.cmake +++ b/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 ()