diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 932f373daa..19178b4fd0 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -173,8 +173,8 @@ if (DEP_MSAN) set(_msan_linker_flags "${_msan_linker_flags} -fsanitize-memory-track-origins=2") endif () set(_msan_common_flags "${_msan_linker_flags} -fno-omit-frame-pointer") - set(_msan_only_cxx_flags "-nostdinc++ -stdlib=libc++ -isystem ${DESTDIR}/usr/local/include -isystem ${DESTDIR}/usr/local/include/c++/v1") - set(_msan_only_ld_flags "-nostdinc++ -stdlib=libc++ -L${DESTDIR}/usr/local/lib -Wl,--rpath=${DESTDIR}/usr/local/lib") + set(_msan_only_cxx_flags "-nostdinc++ -isystem ${DESTDIR}/usr/local/include -isystem ${DESTDIR}/usr/local/include/c++/v1") + set(_msan_only_ld_flags "-Wl,-L${DESTDIR}/usr/local/lib,-lc++ -undefined dynamic_lookup") # For dependencies that are configure using CFLAGS, CXXFLAGS and LDFLAGS instead of CMAKE_*_FLAGS. set(MSAN_CMAKE_C_FLAGS "${_msan_common_flags}") @@ -182,7 +182,7 @@ if (DEP_MSAN) set(MSAN_CMAKE_LD_FLAGS "${_msan_common_flags} ${_msan_only_ld_flags}") set(_msan_all_flags "${_msan_common_flags} ${_msan_only_cxx_flags} ${_msan_only_ld_flags}") - set(MSAN_CMAKE_ARGS ${_MSAN_CMAKE_ARGS} -DCMAKE_C_FLAGS:STRING=${MSAN_CMAKE_C_FLAGS} -DCMAKE_CXX_FLAGS:STRING=${_msan_all_flags}) + set(MSAN_CMAKE_ARGS ${_MSAN_CMAKE_ARGS} -DCMAKE_C_FLAGS:STRING=${MSAN_CMAKE_C_FLAGS} -DCMAKE_CXX_FLAGS:STRING=${MSAN_CMAKE_CXX_FLAGS} -DCMAKE_EXE_LINKER_FLAGS=${_msan_only_ld_flags} -DCMAKE_SHARED_LINKER_FLAGS=${_msan_only_ld_flags} -DCMAKE_BUILD_RPATH:STRING=${DESTDIR}/usr/local/lib) set(DEP_CMAKE_OPTS ${DEP_CMAKE_OPTS} ${MSAN_CMAKE_ARGS}) @@ -197,17 +197,17 @@ else () endif () set(ZLIB_PKG "") -if (NOT ZLIB_FOUND OR DEP_MSAN) +if (NOT ZLIB_FOUND AND NOT DEP_MSAN) include(ZLIB/ZLIB.cmake) set(ZLIB_PKG dep_ZLIB) endif () set(PNG_PKG "") -if (NOT PNG_FOUND OR DEP_MSAN) +if (NOT PNG_FOUND AND NOT DEP_MSAN) include(PNG/PNG.cmake) set(PNG_PKG dep_PNG) endif () set(EXPAT_PKG "") -if (NOT EXPAT_FOUND OR DEP_MSAN) +if (NOT EXPAT_FOUND AND NOT DEP_MSAN) include(EXPAT/EXPAT.cmake) set(EXPAT_PKG dep_EXPAT) endif () @@ -236,7 +236,10 @@ include(NLopt/NLopt.cmake) include(OpenSSL/OpenSSL.cmake) include(CURL/CURL.cmake) -include(JPEG/JPEG.cmake) +if(NOT JPEG_FOUND AND NOT DEP_MSAN) + include(JPEG/JPEG.cmake) + set(JPEG_PKG dep_JPEG) +endif () include(TIFF/TIFF.cmake) include(wxWidgets/wxWidgets.cmake) diff --git a/deps/MSan_Deps/Chromium_prebuilt_libraries/Chromium.cmake b/deps/MSan_Deps/Chromium_prebuilt_libraries/Chromium.cmake index 53ce81f766..f68381c67a 100644 --- a/deps/MSan_Deps/Chromium_prebuilt_libraries/Chromium.cmake +++ b/deps/MSan_Deps/Chromium_prebuilt_libraries/Chromium.cmake @@ -13,5 +13,5 @@ ExternalProject_Add(dep_Chromium_Libs BUILD_IN_SOURCE ON CONFIGURE_COMMAND "" BUILD_COMMAND "" - INSTALL_COMMAND ${CMAKE_COMMAND} "-D_MSAN_COPY_FROM=./instrumented_libraries_prebuilt/msan/lib" "-D_MSAN_COPY_TO=${DESTDIR}/usr/lib" -P ${CMAKE_CURRENT_LIST_DIR}/copy_chromium_prebuilt_libraries.cmake + INSTALL_COMMAND ${CMAKE_COMMAND} "-D_MSAN_COPY_FROM=./instrumented_libraries_prebuilt/msan/lib" "-D_MSAN_COPY_TO=${DESTDIR}/usr/local/lib" -P ${CMAKE_CURRENT_LIST_DIR}/copy_chromium_prebuilt_libraries.cmake ) diff --git a/deps/MSan_Deps/Chromium_prebuilt_libraries/copy_chromium_prebuilt_libraries.cmake b/deps/MSan_Deps/Chromium_prebuilt_libraries/copy_chromium_prebuilt_libraries.cmake index 927ef72c8b..96effe8317 100644 --- a/deps/MSan_Deps/Chromium_prebuilt_libraries/copy_chromium_prebuilt_libraries.cmake +++ b/deps/MSan_Deps/Chromium_prebuilt_libraries/copy_chromium_prebuilt_libraries.cmake @@ -29,12 +29,14 @@ function(copy_chromium_prebuilt_libraries path_from path_to) libharfbuzz-gobject libharfbuzz-icu libjasper + libjpeg libpango-1.0 libpangocairo-1.0 libpangoft2-1.0 libpangoxft-1.0 libpixman-1 libpng12 + libexpat libsecret-1 libudev libX11 diff --git a/deps/MSan_Deps/LLVM/LLVM.cmake b/deps/MSan_Deps/LLVM/LLVM.cmake index 79576e5850..f44545c8af 100644 --- a/deps/MSan_Deps/LLVM/LLVM.cmake +++ b/deps/MSan_Deps/LLVM/LLVM.cmake @@ -1,10 +1,7 @@ set(projectname LLVM) -set(_llvm_cmake_c_flags "-fPIC") -set(_llvm_cmake_cxx_flags "-nostdinc++ -isystem ${DESTDIR}/usr/local/include -isystem ${DESTDIR}/usr/local/include/c++/v1 -fPIC") -set(_llvm_cmake_exe_linker_flags "-stdlib=libc++ -Wl,--rpath=${DESTDIR}/usr/local/lib -L${DESTDIR}/usr/local/lib -fsanitize=memory -fPIC") -set(_llvm_cmake_shared_linker_flags "-stdlib=libc++ -Wl,--rpath=${DESTDIR}/usr/local/lib -L${DESTDIR}/usr/local/lib -fsanitize=memory -fPIC") -set(_llvm_cmake_module_linker_flags "-stdlib=libc++ -Wl,--rpath=${DESTDIR}/usr/local/lib -L${DESTDIR}/usr/local/lib -fsanitize=memory -fPIC") +set(_llvm_cmake_c_flags "-isystem ${DESTDIR}/usr/local/include -fsanitize=memory") +set(_llvm_cmake_cxx_flags "-nostdinc++ -isystem ${DESTDIR}/usr/local/include -isystem ${DESTDIR}/usr/local/include/c++/v1 -fsanitize=memory") # TODO: Build LLVM statically and link with Mesa 3D. @@ -24,11 +21,12 @@ ExternalProject_Add(dep_LLVM -DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER} -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} + -DCMAKE_BUILD_RPATH=${DESTDIR}/usr/local/lib -DCMAKE_BUILD_TYPE=Release -DLLVM_USE_SANITIZER=MemoryWithOrigins # -DLLVM_ENABLE_PROJECTS=clang|lld|llvm-config -DLLVM_ENABLE_PROJECTS=LLVM|llvm-config - -DLLVM_ENABLE_LIBCXX=ON + #-DLLVM_ENABLE_LIBCXX=ON # This forces to make shared library. -DLLVM_BUILD_LLVM_DYLIB=ON @@ -41,14 +39,10 @@ ExternalProject_Add(dep_LLVM -DCMAKE_C_FLAGS:STRING=${_llvm_cmake_c_flags} -DCMAKE_CXX_FLAGS:STRING=${_llvm_cmake_cxx_flags} - -DCMAKE_EXE_LINKER_FLAGS:STRING=${_llvm_cmake_exe_linker_flags} - -DCMAKE_SHARED_LINKER_FLAGS:STRING=${_llvm_cmake_shared_linker_flags} - -DCMAKE_MODULE_LINKER_FLAGS:STRING=${_llvm_cmake_module_linker_flags} + -DCMAKE_EXE_LINKER_FLAGS:STRING="-Wl,-L${DESTDIR}/usr/local/lib,-lc++" + -DCMAKE_SHARED_LINKER_FLAGS:STRING="-Wl,-L${DESTDIR}/usr/local/lib,-lc++" SOURCE_SUBDIR llvm - BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release --target LLVM llvm-config -- ${_build_j} - INSTALL_COMMAND ${CMAKE_COMMAND} --build . --config Release --target install-LLVM install-llvm-config install-llvm-headers - COMMAND ln -sfn "../local/lib/libLLVM.so" "${DESTDIR}/usr/lib/libLLVM.so" - COMMAND ln -sfn "../local/lib/libLLVM-12.so" "${DESTDIR}/usr/lib/libLLVM-12.so" - COMMAND ln -sfn "../local/lib/libLLVM-12.0.1.so" "${DESTDIR}/usr/lib/libLLVM-12.0.1.so" + BUILD_COMMAND ${CMAKE_COMMAND} --build . --target LLVM llvm-config -- ${_build_j} + INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install-LLVM install-llvm-config install-llvm-headers ) diff --git a/deps/MSan_Deps/Libcxx/Libcxx.cmake b/deps/MSan_Deps/Libcxx/Libcxx.cmake index 8621319bd5..a8d034a85e 100644 --- a/deps/MSan_Deps/Libcxx/Libcxx.cmake +++ b/deps/MSan_Deps/Libcxx/Libcxx.cmake @@ -20,10 +20,4 @@ ExternalProject_Add(dep_Libcxx SOURCE_SUBDIR llvm BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release --target cxx cxxabi -- ${_build_j} INSTALL_COMMAND ${CMAKE_COMMAND} --build . --config Release --target install-cxx install-cxxabi - COMMAND ln -sfn "../local/lib/libc++.so" "${DESTDIR}/usr/lib/libc++.so" - COMMAND ln -sfn "../local/lib/libc++.so.1" "${DESTDIR}/usr/lib/libc++.so.1" - COMMAND ln -sfn "../local/lib/libc++.so.1.0" "${DESTDIR}/usr/lib/libc++.so.1.0" - COMMAND ln -sfn "../local/lib/libc++abi.so" "${DESTDIR}/usr/lib/libc++abi.so" - COMMAND ln -sfn "../local/lib/libc++abi.so.1" "${DESTDIR}/usr/lib/libc++abi.so.1" - COMMAND ln -sfn "../local/lib/libc++abi.so.1.0" "${DESTDIR}/usr/lib/libc++abi.so.1.0" -) \ No newline at end of file +) diff --git a/deps/MSan_Deps/Mesa3D/Mesa3D.cmake b/deps/MSan_Deps/Mesa3D/Mesa3D.cmake index 9fa35acb43..a633023efc 100644 --- a/deps/MSan_Deps/Mesa3D/Mesa3D.cmake +++ b/deps/MSan_Deps/Mesa3D/Mesa3D.cmake @@ -1,6 +1,6 @@ -set(_mesa3d_cflags "-fsanitize=memory -stdlib=libc++ -fsanitize-recover=memory -fsanitize-blacklist=${CMAKE_CURRENT_LIST_DIR}/ignorelist.txt -I${DESTDIR}/usr/local/include -I${DESTDIR}/usr/local/include/c++/v1") -set(_mesa3d_cxxflags "-fsanitize=memory -stdlib=libc++ -fsanitize-recover=memory -fsanitize-blacklist=${CMAKE_CURRENT_LIST_DIR}/ignorelist.txt -I${DESTDIR}/usr/local/include -I${DESTDIR}/usr/local/include/c++/v1") -set(_mesa3d_ldflags "-fsanitize=memory -stdlib=libc++ -fsanitize-recover=memory -fsanitize-blacklist=${CMAKE_CURRENT_LIST_DIR}/ignorelist.txt -L${DESTDIR}/usr/local/lib -Wl,-rpath,${DESTDIR}/usr/local/lib") +set(_mesa3d_cflags "-fsanitize=memory -fsanitize-recover=memory -fsanitize-blacklist=${CMAKE_CURRENT_LIST_DIR}/ignorelist.txt -I${DESTDIR}/usr/local/include -I${DESTDIR}/usr/local/include/c++/v1") +set(_mesa3d_cxxflags "-fsanitize=memory -nostdinc++ -fsanitize-recover=memory -fsanitize-blacklist=${CMAKE_CURRENT_LIST_DIR}/ignorelist.txt -I${DESTDIR}/usr/local/include -I${DESTDIR}/usr/local/include/c++/v1") +set(_mesa3d_ldflags "-fsanitize=memory -fsanitize-recover=memory -fsanitize-blacklist=${CMAKE_CURRENT_LIST_DIR}/ignorelist.txt -Wl,-rpath,${DESTDIR}/usr/local/lib,-L${DESTDIR}/usr/local/lib,-lc++") set(_mesa3d_path "${DESTDIR}/usr/local/bin:$ENV{PATH}") # We need to override PATH variable to make Meson find our build llvm-config and not use system one. @@ -8,12 +8,10 @@ set(_mesa3d_path "${DESTDIR}/usr/local/bin:$ENV{PATH}") ExternalProject_Add(dep_Mesa3D URL https://archive.mesa3d.org/mesa-21.3.3.tar.xz URL_HASH SHA256=ad7f4613ea7c5d08d9fcb5025270199e6ceb9aa99fd72ee572b70342240a8121 - DEPENDS dep_Libcxx dep_LLVM dep_Chromium_Libs + DEPENDS dep_Libcxx dep_LLVM dep_Chromium_Libs DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/Mesa3D BUILD_IN_SOURCE ON CONFIGURE_COMMAND env "PATH=${_mesa3d_path}" "CFLAGS=${_mesa3d_cflags}" "CXXFLAGS=${_mesa3d_cxxflags}" "LDFLAGS=${_mesa3d_ldflags}" meson build_mesa -Dglx=gallium-xlib -Dgallium-drivers=swrast -Dplatforms=x11 -Ddri3=disabled "-Ddri-drivers=" "-Dvulkan-drivers=" -Db_sanitize=memory -Db_lundef=false -Dgles1=disabled -Dgles2=disabled -Dshared-glapi=disabled "-Dprefix=${DESTDIR}/usr/local" "-Dlibdir=${DESTDIR}/usr/local/lib" BUILD_COMMAND ninja -C build_mesa install - INSTALL_COMMAND ln -sfn "../local/lib/libGL.so" "${DESTDIR}/usr/lib/libGL.so" - COMMAND ln -sfn "../local/lib/libGL.so.1" "${DESTDIR}/usr/lib/libGL.so.1" - COMMAND ln -sfn "../local/lib/libGL.so.1.5.0" "${DESTDIR}/usr/lib/libGL.so.1.5.0" -) \ No newline at end of file + INSTALL_COMMAND "" +) diff --git a/deps/MSan_Deps/fontconfig/fontconfig.cmake b/deps/MSan_Deps/fontconfig/fontconfig.cmake index cb3c2663b4..2d0f347548 100644 --- a/deps/MSan_Deps/fontconfig/fontconfig.cmake +++ b/deps/MSan_Deps/fontconfig/fontconfig.cmake @@ -1,16 +1,13 @@ -set(_fontconfig_cflags "-fsanitize=memory -stdlib=libc++ -fsanitize-recover=memory -I${DESTDIR}/usr/local/include -I${DESTDIR}/usr/local/include/c++/v1") -set(_fontconfig_cxxflags "-fsanitize=memory -stdlib=libc++ -fsanitize-recover=memory -I${DESTDIR}/usr/local/include -I${DESTDIR}/usr/local/include/c++/v1") -set(_fontconfig_ldflags "-fsanitize=memory -stdlib=libc++ -fsanitize-recover=memory -L${DESTDIR}/usr/local/lib -Wl,-rpath,${DESTDIR}/usr/local/lib") +set(_fontconfig_cflags "-fsanitize=memory -fsanitize-recover=memory -I${DESTDIR}/usr/local/include -I${DESTDIR}/usr/local/include/c++/v1") +set(_fontconfig_cxxflags "-fsanitize=memory -nostdinc++ -fsanitize-recover=memory -I${DESTDIR}/usr/local/include -I${DESTDIR}/usr/local/include/c++/v1") +set(_fontconfig_ldflags "-fsanitize=memory -fsanitize-recover=memory -L${DESTDIR}/usr/local/lib -Wl,-rpath,${DESTDIR}/usr/local/lib,-L${DESTDIR}/usr/local/lib,-lc++") ExternalProject_Add(dep_fontconfig URL https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.13.1.tar.gz URL_HASH SHA256=9f0d852b39d75fc655f9f53850eb32555394f36104a044bb2b2fc9e66dbbfa7f - DEPENDS dep_Libcxx ${EXPAT_PKG} + DEPENDS dep_Libcxx dep_LLVM dep_Mesa3D DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/fontconfig BUILD_IN_SOURCE ON CONFIGURE_COMMAND env "CFLAGS=${_fontconfig_cflags}" "CXXFLAGS=${_fontconfig_cxxflags}" "LDFLAGS=${_fontconfig_ldflags}" ./configure --disable-docs --disable-static "--sysconfdir=/etc" "--localstatedir=/var" "--prefix=${DESTDIR}/usr/local" INSTALL_COMMAND make install-exec && cd fontconfig && make install-fontconfigincludeHEADERS - COMMAND ln -sfn "../local/lib/libfontconfig.so" "${DESTDIR}/usr/lib/libfontconfig.so" - COMMAND ln -sfn "../local/lib/libfontconfig.so.1" "${DESTDIR}/usr/lib/libfontconfig.so.1" - COMMAND ln -sfn "../local/lib/libfontconfig.so.1.12.0" "${DESTDIR}/usr/lib/libfontconfig.so.1.12.0" ) diff --git a/deps/TIFF/TIFF.cmake b/deps/TIFF/TIFF.cmake index f92dd08110..12e9603807 100644 --- a/deps/TIFF/TIFF.cmake +++ b/deps/TIFF/TIFF.cmake @@ -3,7 +3,7 @@ find_package(OpenGL QUIET REQUIRED) prusaslicer_add_cmake_project(TIFF URL https://gitlab.com/libtiff/libtiff/-/archive/v4.1.0/libtiff-v4.1.0.zip URL_HASH SHA256=c56edfacef0a60c0de3e6489194fcb2f24c03dbb550a8a7de5938642d045bd32 - DEPENDS ${ZLIB_PKG} ${PNG_PKG} dep_JPEG + DEPENDS ${ZLIB_PKG} ${PNG_PKG} ${JPEG_PKG} CMAKE_ARGS -Dlzma:BOOL=OFF -Dwebp:BOOL=OFF diff --git a/deps/wxWidgets/wxWidgets.cmake b/deps/wxWidgets/wxWidgets.cmake index 7750ada82f..aa0598ec5e 100644 --- a/deps/wxWidgets/wxWidgets.cmake +++ b/deps/wxWidgets/wxWidgets.cmake @@ -11,14 +11,19 @@ endif() set(_wx_config_command "") +set(_wx_precomp "-DwxBUILD_PRECOMP:BOOL=ON") +if (DEP_MSAN) + set(_wx_precomp "-DwxBUILD_PRECOMP:BOOL=OFF") +endif() + prusaslicer_add_cmake_project(wxWidgets # GIT_REPOSITORY "https://github.com/prusa3d/wxWidgets" # GIT_TAG tm_cross_compile #${_wx_git_tag} URL https://github.com/prusa3d/wxWidgets/archive/73f029adfcc82fb3aa4b01220a013f716e57d110.zip URL_HASH SHA256=c35fe0187db497b6a3f477e24ed5e307028657ff0c2554385810b6e7961ad2e4 - DEPENDS ${FONTCONFIG_PKG} ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF dep_JPEG + DEPENDS ${FONTCONFIG_PKG} ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} dep_TIFF ${JPEG_PKG} CMAKE_ARGS - -DwxBUILD_PRECOMP=ON + ${_wx_precomp} ${_wx_toolkit} "-DCMAKE_DEBUG_POSTFIX:STRING=" -DwxBUILD_DEBUG_LEVEL=0 @@ -39,4 +44,4 @@ prusaslicer_add_cmake_project(wxWidgets if (MSVC) add_debug_dep(dep_wxWidgets) -endif () \ No newline at end of file +endif ()