Well, to me, having such hint  in the settings.js file (= compile time flag or link time flag) would certainly help to make things cleaner while porting existing program.

While I do agree the "simple and safe" method of passing everything at both compile/link time is convenient, the issue is that having to recompile a full 5000+ CPP files program just because of a tweak in a flag that is only expected to be used at link time is... argh :)

Le 25/10/2019 à 19:18, Alon Zakai a écrit :



On Fri, Oct 25, 2019 at 9:54 AM 'Derek Schuff' via emscripten-discuss <[email protected] <mailto:[email protected]>> wrote:

    This is a good point, actually. Before, almost all of the
    emscripten-specific flags only mattered at link time, and now
    there are probably several that also matter at compile time. We
    should probably take a pass over the docs and figure that out, or
    else just declare that everything should also go at compile time.


The docs have recently been update to say that it is best (search for "simple and safe") to pass the flags at both times,

https://emscripten.org/docs/compiling/WebAssembly.html#backends

But maybe that's not prominent enough?

I can do a pass through settings.js to mark options as "link" or "compile" if that would help? Not sure it would.

- Alon


    Emscripten is already a little weird that so many things matter at
    link time so I think the default expectation of most users (and
    build systems) would be that you only have to pass things at
    compile time. It would be nice to push the upstream backend more
    in that direction rather than going back.

    On Fri, Oct 25, 2019 at 5:31 AM Gabriel Cuvillier
    <[email protected] <mailto:[email protected]>>
    wrote:

        Ok, I understand better.

        What makes things confusing is probably more that the usual
        distinction between compiler flags and linker flags are a bit
        blurred in Emscripten.

        As "WASM_OBJECT_FILES=0" is doing the same as "-flto", but
        also applying it to system libs, maybe it would be cleaner to
        have it replaced by a "-s ENABLE_SYSTEM_LIBS_LTO=1" that would
        only focus on enabling LTO on the system libs (letting the
        user control the LTO of its own code with the usual -flto flag).


        Btw, the docs mention that --lvm-lto might have the values 1,2
        or 3 => is this still applicable to the new Wasm backend ? I
        guess no (?)


        Cheers,

        Gabriel

        Le 22/10/2019 à 21:39, Alon Zakai a écrit :

        The LTO docs are here:

        https://emscripten.org/docs/optimizing/Optimizing-Code.html#lto

        Basically

         * -flto is a clang flag that says "emit LLVM IR in the
        bitcode file"
         * WASM_OBJECT_FILES=0 is an emscripten flag that says "don't
        use wasm object files, so use LLVM IR in bitcode files, *and
        also in system libs*"
         * --llvm-lto 1 is an emscripten flag that also runs LLVM's
        default LTO opts at link time.

        Perhaps -flto should automatically set --llvm-lto 1? I'm not
        sure what clang normally does, but we should do the same
        probably...

        - Alon


        On Tue, Oct 22, 2019 at 2:40 AM Gabriel Cuvillier
        <[email protected]
        <mailto:[email protected]>> wrote:

            Great!

            A question regarding this in the documentation, which
            confuses me a bit:

            /You can disable wasm object files with -s
            WASM_OBJECT_FILES=0, which will make the wasm backend
            behave more like fastcomp. //
            //Neither fastcomp nor the wasm backend without wasm
            object files will run the LLVM optimization passes by
            default, even if using LLVM IR in object files; //
            //for that you must pass --llvm-lto 1.//
            /
            With the 3 options "-s WASM_OBJECT_FILES=0", "--llvm-lto
            1", and "-flto", there is a lot of combinations possible
            and the outcome is not quite clear.

            So, on the Wasm backed, what's the difference between
            doing (or what is meaningful/meaningless):
            -flto
              --llvm-lto 1
              -s WASM_OBJECT_FILES=0
              -flto --llvm-lto 1
              -flto -s WASM_OBJECT_FILES=0
              -flto -s WASM_OBJECT_FILES=0 --llvm-lto 1
              -s WASM_OBJECT_FILES=0 --llvm-lto 1

            + Which option shall be passed at compilation time / at
            link time ?

            Thanks!

            Le 22/10/2019 à 00:17, Alon Zakai a écrit :
            Hello everyone,

            The emsdk will now install the upstream LLVM backend by
            default, instead of fastcomp, as of

            https://github.com/emscripten-core/emsdk/pull/373

            That is, if you install/activate "latest" then you get
            the same as "latest-upstream". It used to be an alias
            for "latest-fastcomp".

            You can still use "latest-fastcomp" to get fastcomp if
            you need that. You can also install stuff like
            "1.39.0-fastcomp", a version with a specific backend.

            The emsdk defaults to the upstream backend from 1.39.0,
            but not earlier versions, as the upstream backend wasn't
            stable enough yet at those times. (But you can as always
            do "1.38.39-upstream" to get upstream for those
            versions.) In other words, the only thing that changed
            now is that for 1.39.0 and onwards, if you don't specify
            the backend, you'll get upstream.

            We are changing the default now after a long period of
            recommending people upgrade to the LLVM backend and
            fixing issues based on their feedback, as a result of
            which at this point we feel comfortable changing the
            default.

            Please test and file bugs if you find any! All you need
            to do is update to the latest emsdk master from github, and

            ./emsdk install latest
            ./emsdk activate latest

            If this is your first time using the upstream backend,
            see the list of differences,

            https://emscripten.org/docs/compiling/WebAssembly.html#backends

            Our goal is to remove fastcomp eventually, and it is now
            officially deprecated, but we will only start to plan
            that after seeing the feedback from users after this switch.

            - Alon

-- You received this message because you are subscribed to
            the Google Groups "emscripten-discuss" group.
            To unsubscribe from this group and stop receiving emails
            from it, send an email to
            [email protected]
            <mailto:[email protected]>.
            To view this discussion on the web visit
            
https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpTHC%3DRz2UZrqLBBaPQ0ROT4JXGA7RnH5iDEsLeUdvRmMA%40mail.gmail.com
            
<https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpTHC%3DRz2UZrqLBBaPQ0ROT4JXGA7RnH5iDEsLeUdvRmMA%40mail.gmail.com?utm_medium=email&utm_source=footer>.
-- You received this message because you are subscribed to
            the Google Groups "emscripten-discuss" group.
            To unsubscribe from this group and stop receiving emails
            from it, send an email to
            [email protected]
            <mailto:[email protected]>.
            To view this discussion on the web visit
            
https://groups.google.com/d/msgid/emscripten-discuss/06858de5-a732-0e70-6ce7-e60c1a9e2667%40gmail.com
            
<https://groups.google.com/d/msgid/emscripten-discuss/06858de5-a732-0e70-6ce7-e60c1a9e2667%40gmail.com?utm_medium=email&utm_source=footer>.

-- You received this message because you are subscribed to the
        Google Groups "emscripten-discuss" group.
        To unsubscribe from this group and stop receiving emails from
        it, send an email to
        [email protected]
        <mailto:[email protected]>.
        To view this discussion on the web visit
        
https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpRXtK1wYBfm27dqgALwr2oHMZLE4QeU7rN1KKEugfORfg%40mail.gmail.com
        
<https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpRXtK1wYBfm27dqgALwr2oHMZLE4QeU7rN1KKEugfORfg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
-- You received this message because you are subscribed to the
        Google Groups "emscripten-discuss" group.
        To unsubscribe from this group and stop receiving emails from
        it, send an email to
        [email protected]
        <mailto:[email protected]>.
        To view this discussion on the web visit
        
https://groups.google.com/d/msgid/emscripten-discuss/24154c49-5529-af52-1319-c0cd47ccb242%40gmail.com
        
<https://groups.google.com/d/msgid/emscripten-discuss/24154c49-5529-af52-1319-c0cd47ccb242%40gmail.com?utm_medium=email&utm_source=footer>.

-- You received this message because you are subscribed to the Google
    Groups "emscripten-discuss" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to [email protected]
    <mailto:[email protected]>.
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/emscripten-discuss/CAAEAhvckhm4szfJzz61wa7jMAHyDfbhozjDw8-GFCXa3dh4R%3Dw%40mail.gmail.com
    
<https://groups.google.com/d/msgid/emscripten-discuss/CAAEAhvckhm4szfJzz61wa7jMAHyDfbhozjDw8-GFCXa3dh4R%3Dw%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpTOyCC%2BF0i7zrQNPFWW3nFim7c%3DntgUxKU4uPhbHs3NKg%40mail.gmail.com <https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpTOyCC%2BF0i7zrQNPFWW3nFim7c%3DntgUxKU4uPhbHs3NKg%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/emscripten-discuss/06d628c8-627e-5dba-6a39-22044c269d57%40gmail.com.

Reply via email to