Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix openscad build #539

Merged
merged 10 commits into from Aug 28, 2023
Merged

fix openscad build #539

merged 10 commits into from Aug 28, 2023

Conversation

pca006132
Copy link
Collaborator

openscad/openscad#4679 (comment)

  1. Do not use PSTL if tbb version is too old.
  2. Only use tbb concurrent containers if the header exists.
  3. Avoid leaking MANIFOLD_FLAGS to downstream consumers.

I think we should probably put public.h into a separate directory as well, as other headers in utilities are not supposed to be visible to users.

@t-paul can you verify if this patch fixes the compilation errors for you?

@codecov
Copy link

codecov bot commented Aug 27, 2023

Codecov Report

Patch coverage: 66.66% and no project coverage change.

Comparison is base (1d6a89a) 91.32% compared to head (5a03152) 91.32%.

❗ Current head 5a03152 differs from pull request most recent head f9010c1. Consider uploading reports for the commit f9010c1 to get more accurate results

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #539   +/-   ##
=======================================
  Coverage   91.32%   91.32%           
=======================================
  Files          35       35           
  Lines        4543     4543           
=======================================
  Hits         4149     4149           
  Misses        394      394           
Files Changed Coverage Δ
src/manifold/src/boolean_result.cpp 98.74% <ø> (ø)
src/manifold/src/face_op.cpp 98.79% <ø> (ø)
src/polygon/src/polygon.cpp 91.12% <ø> (ø)
src/utilities/include/par.h 96.77% <ø> (ø)
src/utilities/include/sparse.h 52.63% <ø> (ø)
src/manifold/src/csg_tree.cpp 91.58% <66.66%> (ø)

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@t-paul
Copy link

t-paul commented Aug 27, 2023

I think I have correctly switched the submodule but I'm still getting the build error.

$ git submodule 
 1ea402208c3127ffb443931e9bb1681c191dacca libraries/MCAD (openscad-2019.05-78-g1ea4022)
 7b24d76556e885195c80952494454baf1544067c submodules/OpenCSG (heads/master)
 553af165116c159d800d6c3b928ad10035dfbf5f submodules/manifold (v1.0.0-466-g553af16)
 fe61be80bf8942e764e18d469e96f8dacab44728 submodules/mimalloc (v1.7.7)
 c3dc841af4dbf44669e65b82cb68a575864326bd submodules/sanitizers-cmake (heads/master)

Build log:

/mxe/usr/x86_64-pc-linux-gnu/bin/x86_64-w64-mingw32.static.posix-g++  -I/openscad/mingw64.static.posix/submodules/manifold/src/collider -I/openscad/submodules/manifold/src/collider -I/openscad/submodules/manifold/src/collider/include -I/openscad/submodules/manifold/src/utilities/include -I/openscad/submodules/manifold/src/third_party/thrust/dependencies/libcudacxx/include -I/openscad/submodules/manifold/src/third_party/thrust -I/openscad/submodules/manifold/src/third_party/glm/glm/.. -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++ -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/x86_64-w64-mingw32.static.posix -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/backward -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include -isystem /
mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include-fixed -isystem /mxe/usr/x86_64-w64-mingw32.static.posix/include -frounding-math -Wno-attributes -O3 -DNDEBUG -O3 -Werror -Wall -Wno-sign-compare -Wno-unused -Wno-array-bounds -Wno-stringop-overflow "-DMANIFOLD_PAR='T'" -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_TBB -MD -MT submodules/manifold/src/collider/CMakeFiles/collider.dir/src/collider.cpp.obj -MF submodules/manifold/src/collider/CMakeFiles/collider.dir/src/collider.cpp.obj.d -o submodules/manifold/src/collider/CMakeFiles/collider.dir/src/collider.cpp.obj -c /openscad/submodules/manifold/src/collider/src/collider.cpp                                    
In file included from /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/pstl/parallel_backend.h:20,                                             
                 from /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/pstl/algorithm_impl.h:22,
                 from /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/pstl/glue_execution_defs.h:50,
                 from /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/execution:32,                                                                                                            
                 from /openscad/submodules/manifold/src/utilities/include/par.h:34,                                                                                                                                
                 from /openscad/submodules/manifold/src/utilities/include/sparse.h:19,                                                                                                                             
                 from /openscad/submodules/manifold/src/collider/include/collider.h:17,                                                                                                                            
                 from /openscad/submodules/manifold/src/collider/src/collider.cpp:15:                    
/mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/pstl/parallel_backend_tbb.h:29:6: error: #error Intel(R) Threading Building Blocks 2018 is required; older versions are not supported.         
   29 | #    error Intel(R) Threading Building Blocks 2018 is required; older versions are not supported. 
      |      ^~~~~                                                                                                                                                                                                 

How can I check that pstl is disabled?

@t-paul
Copy link

t-paul commented Aug 27, 2023

Ouchies!

/mxe/usr/x86_64-pc-linux-gnu/bin/x86_64-w64-mingw32.static.posix-g++ -D__TBB_BUILD -D__TBB_DYNAMIC_LOAD_ENABLED=0 -D__TBB_SOURCE_DIRECTLY_INCLUDED=1 -D__TBB_USE_ITT_NOTIFY -I/openscad/mingw64.static.posix/_deps/tbb-build/src/tbb -I/openscad/mingw64.static.posix/_deps/tbb-src/src/tbb -I/openscad/mingw64.static.posix/_deps/tbb-src/src/tbb/../../include -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++ -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/x86_64-w64-mingw32.static.posix -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/backward -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include-fixed -isystem /mxe/usr/x86_64-w64-mingw32.static.posix/include -frounding-math -Wno-attributes -O3 -DNDEBUG -flifetime-dse=1 -Wall -Wextra -Wfatal-errors -mrtm -mwaitpkg -fstack-clash-protection -fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -Wformat -Wformat-security -Werror=format-security -fstack-protector-strong -D_FORTIFY_SOURCE=2 -std=c++11 -MD -MT _deps/tbb-build/src/tbb/CMakeFiles/tbb.dir/arena.cpp.obj -MF _deps/tbb-build/src/tbb/CMakeFiles/tbb.dir/arena.cpp.obj.d -o _deps/tbb-build/src/tbb/CMakeFiles/tbb.dir/arena.cpp.obj -c /openscad/mingw64.static.posix/_deps/tbb-src/src/tbb/arena.cpp
during RTL pass: final
In file included from /openscad/mingw64.static.posix/_deps/tbb-src/src/tbb/arena.cpp:17:
/openscad/mingw64.static.posix/_deps/tbb-src/src/tbb/task_dispatcher.h: In static member function 'static void tbb::detail::r1::task_dispatcher::local_wait_for_all<true, tbb::detail::r1::outermost_worker_waiter>(tbb::detail::d1::task*, tbb::detail::r1::outermost_worker_waiter&)::<lambda()>::_FUN()':
/openscad/mingw64.static.posix/_deps/tbb-src/src/tbb/task_dispatcher.h:358:35: internal compiler error: in seh_emit_stackalloc, at config/i386/winnt.c:1056
  358 |                 do_throw_noexcept([] { throw; });
      |                                   ^~~~~~~~~~~~~
0x17608f6 internal_error(char const*, ...)
        ???:0
0x676f80 fancy_abort(char const*, int, char const*)
        ???:0
0x1095b14 i386_pe_seh_unwind_emit(_IO_FILE*, rtx_insn*)
        ???:0
0xa3487b final_scan_insn(rtx_insn*, _IO_FILE*, int, int, int*)
        ???:0
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
ninja: build stopped: subcommand failed.

Maybe it's time to look at submitting an updated TBB package to MXE... that would remove the need for the pkg-config trickery too. I've never used TBB directly, but I suppose that's not really required for packaging 😀.

@pca006132
Copy link
Collaborator Author

I think I have correctly switched the submodule but I'm still getting the build error.

$ git submodule 
 1ea402208c3127ffb443931e9bb1681c191dacca libraries/MCAD (openscad-2019.05-78-g1ea4022)
 7b24d76556e885195c80952494454baf1544067c submodules/OpenCSG (heads/master)
 553af165116c159d800d6c3b928ad10035dfbf5f submodules/manifold (v1.0.0-466-g553af16)
 fe61be80bf8942e764e18d469e96f8dacab44728 submodules/mimalloc (v1.7.7)
 c3dc841af4dbf44669e65b82cb68a575864326bd submodules/sanitizers-cmake (heads/master)

Build log:

/mxe/usr/x86_64-pc-linux-gnu/bin/x86_64-w64-mingw32.static.posix-g++  -I/openscad/mingw64.static.posix/submodules/manifold/src/collider -I/openscad/submodules/manifold/src/collider -I/openscad/submodules/manifold/src/collider/include -I/openscad/submodules/manifold/src/utilities/include -I/openscad/submodules/manifold/src/third_party/thrust/dependencies/libcudacxx/include -I/openscad/submodules/manifold/src/third_party/thrust -I/openscad/submodules/manifold/src/third_party/glm/glm/.. -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++ -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/x86_64-w64-mingw32.static.posix -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/backward -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include -isystem /
mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include-fixed -isystem /mxe/usr/x86_64-w64-mingw32.static.posix/include -frounding-math -Wno-attributes -O3 -DNDEBUG -O3 -Werror -Wall -Wno-sign-compare -Wno-unused -Wno-array-bounds -Wno-stringop-overflow "-DMANIFOLD_PAR='T'" -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_TBB -MD -MT submodules/manifold/src/collider/CMakeFiles/collider.dir/src/collider.cpp.obj -MF submodules/manifold/src/collider/CMakeFiles/collider.dir/src/collider.cpp.obj.d -o submodules/manifold/src/collider/CMakeFiles/collider.dir/src/collider.cpp.obj -c /openscad/submodules/manifold/src/collider/src/collider.cpp                                    
In file included from /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/pstl/parallel_backend.h:20,                                             
                 from /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/pstl/algorithm_impl.h:22,
                 from /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/pstl/glue_execution_defs.h:50,
                 from /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/execution:32,                                                                                                            
                 from /openscad/submodules/manifold/src/utilities/include/par.h:34,                                                                                                                                
                 from /openscad/submodules/manifold/src/utilities/include/sparse.h:19,                                                                                                                             
                 from /openscad/submodules/manifold/src/collider/include/collider.h:17,                                                                                                                            
                 from /openscad/submodules/manifold/src/collider/src/collider.cpp:15:                    
/mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/pstl/parallel_backend_tbb.h:29:6: error: #error Intel(R) Threading Building Blocks 2018 is required; older versions are not supported.         
   29 | #    error Intel(R) Threading Building Blocks 2018 is required; older versions are not supported. 
      |      ^~~~~                                                                                                                                                                                                 

How can I check that pstl is disabled?

it is weird, I did add a tbb version check in par.h and only enable pstl when the tbb version is large enough.

Copy link
Owner

@elalish elalish left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Agreed that public.h should live in a separate folder from the internal utils headers.

@pca006132
Copy link
Collaborator Author

I think the windows failure is due to AngusJohnson/Clipper2#601

@pca006132
Copy link
Collaborator Author

@t-paul I think I know the reason why pstl was not disabled, I forgot to check for TBB version before including <execution>. Can you check again to see if this works now?

@pca006132
Copy link
Collaborator Author

ok it seems that both max and min are problematic on windows...

@t-paul
Copy link

t-paul commented Aug 28, 2023

I'm now getting

FAILED: submodules/manifold/src/collider/CMakeFiles/collider.dir/src/collider.cpp.obj 
/mxe/usr/x86_64-pc-linux-gnu/bin/x86_64-w64-mingw32.static.posix-g++  -I/openscad/mingw64.static.posix/submodules/manifold/src/collider -I/openscad/submodules/manifold/src/collider -I/openscad/submodules/manifold/src/collider/include -I/openscad/submodules/manifold/src/utilities/include -I/openscad/submodules/manifold/src/third_party/thrust/dependencies/libcudacxx/include -I/openscad/submodules/manifold/src/third_party/thrust -I/openscad/submodules/manifold/src/third_party/glm/glm/.. -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++ -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/x86_64-w64-mingw32.static.posix -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/backward -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include-fixed -isystem /mxe/usr/x86_64-w64-mingw32.static.posix/include -frounding-math -Wno-attributes -O3 -DNDEBUG -Werror -Wall -Wno-sign-compare -Wno-unused -Wno-array-bounds -Wno-stringop-overflow -O3 "-DMANIFOLD_PAR='T'" -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_TBB -MD -MT submodules/manifold/src/collider/CMakeFiles/collider.dir/src/collider.cpp.obj -MF submodules/manifold/src/collider/CMakeFiles/collider.dir/src/collider.cpp.obj.d -o submodules/manifold/src/collider/CMakeFiles/collider.dir/src/collider.cpp.obj -c /openscad/submodules/manifold/src/collider/src/collider.cpp
In file included from /openscad/submodules/manifold/src/collider/include/collider.h:17,
                 from /openscad/submodules/manifold/src/collider/src/collider.cpp:15:
/openscad/submodules/manifold/src/utilities/include/sparse.h:44:2: error: #error "unknown architecture"
   44 | #error "unknown architecture"
      |  ^~~~~
/openscad/submodules/manifold/src/utilities/include/sparse.h: In member function 'manifold::Vec<int> manifold::SparseIndices::Copy(bool) const':
/openscad/submodules/manifold/src/utilities/include/sparse.h:57:18: error: 'pOffset' was not declared in this scope; did you mean 'offset'?
   57 |     int offset = pOffset;
      |                  ^~~~~~~
      |                  offset

BTW: This is running in a docker container, so if you have some place where you can run an existing container, I can post the build steps I just copy&paste into the running container.

If I'm reading that correctly, it's failing to determine the byte order of the system. It tracks _MSC_VER for windows, but that's only set by the microsoft compiler not mingw. Maybe adding _WIN32 could solve this? That's defined in mingw too.

@pca006132
Copy link
Collaborator Author

Oh OK, our CI does not include mingw, I guess that is why we did not catch this issue earlier.

I can run containers. Not sure if I can run windows container without a VM, but yeah it would be easier if you can paste the instructions here.

@t-paul
Copy link

t-paul commented Aug 28, 2023

Good news, I think it got past collider.cpp now, but still some compile error in csg_tree.cpp.

/mxe/usr/x86_64-pc-linux-gnu/bin/x86_64-w64-mingw32.static.posix-g++  -I/openscad/mingw64.static.posix/submodules/manifold/src/manifold -I/openscad/submodules/manifold/src/manifold -I/openscad/submodules/manifol
d/src/manifold/include -I/openscad/submodules/manifold/src/utilities/include -I/openscad/submodules/manifold/src/third_party/thrust/dependencies/libcudacxx/include -I/openscad/submodules/manifold/src/third_party
/thrust -I/openscad/submodules/manifold/src/third_party/glm/glm/.. -I/openscad/submodules/manifold/src/cross_section/include -I/openscad/submodules/manifold/src/third_party/clipper2/CPP/Clipper2Lib/include -I/op
enscad/submodules/manifold/src/collider/include -I/openscad/submodules/manifold/src/polygon/include -I/openscad/submodules/manifold/src/third_party/graphlite/include -I/openscad/submodules/manifold/src/third_par
ty/quickhull -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++ -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/x86_64-w64-mingw32.static.posix -isystem /mx
e/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include/c++/backward -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0/include -isystem /mxe/usr/lib/gcc/x86_64-w64-mingw32.static.posix/11.2.0
/include-fixed -isystem /mxe/usr/x86_64-w64-mingw32.static.posix/include -frounding-math -Wno-attributes -O3 -DNDEBUG -Werror -Wall -Wno-sign-compare -Wno-unused -Wno-array-bounds -Wno-stringop-overflow -O3 "-DM
ANIFOLD_PAR='T'" -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_TBB -MD -MT submodules/manifold/src/manifold/CMakeFiles/manifold.dir/src/csg_tree.cpp.obj -MF submodules/manifold/src/manifold/CMakeFiles/manifold.dir
/src/csg_tree.cpp.obj.d -o submodules/manifold/src/manifold/CMakeFiles/manifold.dir/src/csg_tree.cpp.obj -c /openscad/submodules/manifold/src/manifold/src/csg_tree.cpp                                            
/openscad/submodules/manifold/src/manifold/src/csg_tree.cpp: In static member function 'static std::shared_ptr<manifold::Manifold::Impl> manifold::CsgOpNode::BatchBoolean(manifold::OpType, std::vector<std::share
d_ptr<const manifold::Manifold::Impl> >&)':                                                                                                                                                                        
/openscad/submodules/manifold/src/manifold/src/csg_tree.cpp:463:74: error: no matching function for call to 'tbb::interface5::concurrent_priority_queue<std::variant<std::shared_ptr<const manifold::Manifold::Impl
>, std::shared_ptr<manifold::Manifold::Impl> >, manifold::CsgOpNode::BatchBoolean(manifold::OpType, std::vector<std::shared_ptr<const manifold::Manifold::Impl> >&)::<lambda(const SharedImpl&, const SharedImpl&)>
 >::concurrent_priority_queue(manifold::CsgOpNode::BatchBoolean(manifold::OpType, std::vector<std::shared_ptr<const manifold::Manifold::Impl> >&)::<lambda(const SharedImpl&, const SharedImpl&)>&)'               
  463 |   tbb::concurrent_priority_queue<SharedImpl, decltype(cmpFn)> queue(cmpFn);                                                                                                                                
      |                                                                          ^                                                                                                                                 
In file included from /mxe/usr/x86_64-w64-mingw32.static.posix/include/tbb/tbb.h:46,                                                                                                                               
                 from /openscad/submodules/manifold/src/manifold/src/csg_tree.cpp:16:                                                                                                                              
/mxe/usr/x86_64-w64-mingw32.static.posix/include/tbb/concurrent_priority_queue.h:103:5: note: candidate: 'template<class InputIterator> tbb::interface5::concurrent_priority_queue<T, Compare, A>::concurrent_prior
ity_queue(InputIterator, InputIterator, const allocator_type&) [with InputIterator = InputIterator; T = std::variant<std::shared_ptr<const manifold::Manifold::Impl>, std::shared_ptr<manifold::Manifold::Impl> >; 
Compare = manifold::CsgOpNode::BatchBoolean(manifold::OpType, std::vector<std::shared_ptr<const manifold::Manifold::Impl> >&)::<lambda(const SharedImpl&, const SharedImpl&)>; A = tbb::cache_aligned_allocator<std
::variant<std::shared_ptr<const manifold::Manifold::Impl>, std::shared_ptr<manifold::Manifold::Impl> > >]'                                                                                                         
  103 |     concurrent_priority_queue(InputIterator begin, InputIterator end, const allocator_type& a = allocator_type()) :                                                                                        
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                                                                                              
/mxe/usr/x86_64-w64-mingw32.static.posix/include/tbb/concurrent_priority_queue.h:103:5: note:   template argument deduction/substitution failed:                                                                   
/openscad/submodules/manifold/src/manifold/src/csg_tree.cpp:463:74: note:   candidate expects 3 arguments, 1 provided                                                                                              
  463 |   tbb::concurrent_priority_queue<SharedImpl, decltype(cmpFn)> queue(cmpFn);                                                                                                                                

MXE is a cross-build environment running MinGW on Linux + providing a packaging system, so it does not require Windows at all.

Run ad-hoc base container with all packages needed for OpenSCAD compiled:

docker run -it openscad/mxe-x86_64-gui:latest

Commands that are used to build, including updating the git repo to this PR:

cd /
rm -rf openscad
git clone https://github.com/openscad/openscad
cd openscad
git checkout update-manifold
git submodule update --init --recursive
git log -n8 --pretty=tformat:"%h %ai (%aN) %s"
export LC_ALL=C.UTF-8
export MXEDIR=/mxe
export LIB3MF_INCLUDEPATH=/mxe/usr/x86_64-w64-mingw32.static.posix/include/lib3mf
export LIB3MF_LIBPATH=/mxe/usr/i686-w64-mingw32.static.posix/lib
export PKG_CONFIG_PATH=/mxe/usr/x86_64-w64-mingw32.static.posix/lib/pkgconfig 
bash -c 'ln -sfv $PKG_CONFIG_PATH/{intel-,}tbb.pc' 
bash -c 'ln -sfv /usr/bin/python{3,}' 
# update to manifold PR
git submodule deinit -f submodules/manifold
rm -rf submodules/manifold/
git submodule add -f -b compile-options --name manifold -- https://github.com/pca006132/manifold submodules/manifold
git submodule update --init --recursive
git submodule 
# run build
./scripts/release-common.sh -v "" mingw64 snapshot

I literally just copy all those lines and paste them into a freshly started container.

@pca006132
Copy link
Collaborator Author

@t-paul the build should now succeed. The MXE build environment is also added to our CI, which can hopefully catch this kind of issues for our subsequent changes.

@t-paul
Copy link

t-paul commented Aug 28, 2023

Awesome, thank you! I'll give it a try and see if someone can verify the build is running fine. I still have some issues with running those in my Windows VM, probably due to some legacy OpenGL code in OpenSCAD which is currently in the process of being removed. So there's some hope I can do some limited testing again soon-ish.

@pca006132
Copy link
Collaborator Author

good, I guess I will merge this first, and feel free to open an issue when you found any bug (except #535 which is known for now)

@pca006132 pca006132 merged commit e79d343 into elalish:master Aug 28, 2023
16 checks passed
@t-paul
Copy link

t-paul commented Aug 29, 2023

Builds look good for the AppImage and Windows build 🎉.

There an issue that's crashing the application after mutliple runs we still need to investigate, but that's unlikely to be related to those changes here and/or even Manifold itself.

Many thanks for getting the builds working on those older or slightly strange platforms working.

@elalish
Copy link
Owner

elalish commented Aug 29, 2023

Indeed, well done @pca006132!

@pca006132 pca006132 deleted the compile-options branch August 29, 2023 07:33
cartesian-theatrics pushed a commit to SovereignShop/manifold that referenced this pull request Mar 11, 2024
* fix openscad build

* update clipper2

* conditional compile with pstl

* try NOMINMAX for MSVC

* detect win32

* use struct instead of lambda

* fix non-tbb build

* try to add mxe to CI

* disable pybind for mxe
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants