Giter Site home page Giter Site logo

Clang in MSVC 2019 about blend2d HOT 8 CLOSED

blend2d avatar blend2d commented on May 25, 2024
Clang in MSVC 2019

from blend2d.

Comments (8)

kobalicek avatar kobalicek commented on May 25, 2024

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.

martin31821 avatar martin31821 commented on May 25, 2024

You can pass -XClang $arbitraryOption to clang-cl as well as oclang (for mac os) to pass the default linux clang options.

from blend2d.

iryont avatar iryont commented on May 25, 2024

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.

iryont avatar iryont commented on May 25, 2024

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.

iryont avatar iryont commented on May 25, 2024

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.

kobalicek avatar kobalicek commented on May 25, 2024

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.

iryont avatar iryont commented on May 25, 2024

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.

kobalicek avatar kobalicek commented on May 25, 2024

Yeah closing, I don't think I can fix the exception options today and it's not critical anyway :)

from blend2d.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.