Comments (8)
Do you know how to pass these to clang-cl or it's a complete nonsense? With CMake it's really hard to avoid CMake defaults in this case, which turn exceptions on. This is definitely an issue that I would like to fix for both MSVC and Clang.
from blend2d.
You can pass -XClang $arbitraryOption
to clang-cl
as well as oclang
(for mac os) to pass the default linux clang options.
from blend2d.
martin31821 is right:
https://clang.llvm.org/docs/UsersManual.html#clang-cl
-Xclang <arg> Pass <arg> to the clang compiler
That should be trivial fix within cmake file.
from blend2d.
Perhaps it might not be possible after all. Xclang does not appear to be working as I expected it to work. Some insight:
https://reviews.llvm.org/D53457
However, we are indeed lucky, the funny fact is that /clang: was actually implemented within clang-cl. So the following does the trick:
list(APPEND BLEND2D_PRIVATE_CFLAGS /clang:-fno-exceptions /clang:-fno-rtti /clang:-fno-math-errno)
Well, almost, since we are getting those warnings:
2>clang-cl : warning : argument unused during compilation: '-fno-exceptions' [-Wunused-command-line-argument]
2>clang-cl : warning : argument unused during compilation: '-fno-exceptions' [-Wunused-command-line-argument]
2>clang-cl : warning : argument unused during compilation: '-fno-exceptions' [-Wunused-command-line-argument]
2>clang-cl : warning : argument unused during compilation: '-fno-exceptions' [-Wunused-command-line-argument]
2>clang-cl : warning : argument unused during compilation: '-fno-exceptions' [-Wunused-command-line-argument]
2>clang-cl : warning : argument unused during compilation: '-fno-exceptions' [-Wunused-command-line-argument]
2>clang-cl : warning : argument unused during compilation: '-fno-exceptions' [-Wunused-command-line-argument]
2>clang-cl : warning : argument unused during compilation: '-fno-exceptions' [-Wunused-command-line-argument]
2>clang-cl : warning : argument unused during compilation: '-fno-exceptions' [-Wunused-command-line-argument]
2>clang-cl : warning : argument unused during compilation: '-fno-exceptions' [-Wunused-command-line-argument]
2>clang-cl : warning : argument unused during compilation: '-fno-exceptions' [-Wunused-command-line-argument]
The rest went away though.
from blend2d.
Those flags are used during compilation:
/c /I"C:\X64-LIBS\BLEND2D\3RDPARTY\ASMJIT\SRC" /nologo /W4 /WX- /diagnostics:column /O2 /Ob2 /Oi /D WIN32 /D _WINDOWS /D NDEBUG /D BL_STATIC /D BL_BUILD_OPT_AVX2 /D ASMJIT_STATIC /D ASMJIT_NO_STDCXX /D "CMAKE_INTDIR=\"Release\"" /D _MBCS /EHsc /MD /GS- /fp:precise /GR- /Fo"BLEND2D.DIR\RELEASE\\" /Gd /TP -m64 -Zc:strictStrings -Zc:threadSafeInit- -volatile:iso /clang:-fno-exceptions /clang:-fno-rtti /clang:-fno-math-errno C:\X64-LIBS\BLEND2D\SRC\BLEND2D\API-NOCXX.CPP
Perhaps it ignores -fno-exceptions because of /EHsc which states:
If you use /EHs or /EHsc, then your catch(...) clause does not catch asynchronous structured exceptions. Access violations and managed System.Exception exceptions are not caught, and objects in scope when an asynchronous exception is generated are not destroyed even if the asynchronous exception is handled.
Perhaps instead we can use this:
/GX- Disable exception handling
/GX Enable exception handling
It's from LLVM UsersManual I did post before.
Edit:
I'm afraid not, it ignores it again just like no-exceptions.
from blend2d.
I tried to fix all the warnings in 7f88f7b, however, the -fno-exceptions
is not possible this way, so I have to find another way to set it. The warnings should be gone though.
from blend2d.
Seems like it was taken care of. I suppose we might as well just close this issue? After all, it's pretty much resolved, unless of course you want to keep it open for the no-exceptions.
from blend2d.
Yeah closing, I don't think I can fix the exception options today and it's not critical anyway :)
from blend2d.
Related Issues (20)
- Please support MSYS2 MINGW64 HOT 2
- UBSAN SIGSEGV when calling a JIT compiled pipeline (Clang 17+) HOT 10
- Have problems building the library HOT 20
- writeToFile should be const HOT 1
- Rectangles with zero sizes are drawn incorrectly HOT 5
- crash when saving/restoring strokeOptions HOT 2
- crash: blitImage + setTransform HOT 4
- img.getData 0.9.0 to 0.10.5 version HOT 4
- Wish: implement an API to rendering text along/by a path HOT 1
- composition operator not work on macOS MPB with Apple m1 HOT 2
- [Portable Pipeline] Composition operators not working (only SrcCopy and SrcOver) HOT 11
- Rendering bug with BLContext for certain image sizes HOT 2
- Wish: Android support HOT 2
- Raspberry Pi 2B rev1.1 compilation failed HOT 3
- about BLFont question HOT 12
- strokedPath error HOT 1
- Can bled2d be easily ported to rtos? HOT 3
- Rendering of fonts in various national languages HOT 2
- Build failure simdx86_test_avx512.cpp, MingGW-w64, static, cmake/ninja, no tests HOT 4
- clipToRect not correctly applied to fillGlyphRun within rotated context HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from blend2d.