On Fri, 15 Mar 2024 12:39:03 GMT, Magnus Ihse Bursie <i...@openjdk.org> wrote:

>> make/modules/jdk.jpackage/Lib.gmk line 63:
>> 
>>> 61:     CXXFLAGS_FILTER_OUT := -MD, \
>>> 62:     CXXFLAGS := $(JPACKAGE_APPLAUNCHER_INCLUDES), \
>>> 63:     CFLAGS := $(JPACKAGE_APPLAUNCHER_INCLUDES), \
>> 
>> This removed `-MD`, but I don't see it adding `-MT`.
>
> You are correct, this is missing in several places. 
> 
> I got curious on how this could still end up making no difference in the 
> resulting binary, and I ended up in a deep google rabbit hole. My 
> understanding is that `/MT` is in effect default, but Microsoft does not say 
> that. Instead, they say that setting `/MT` makes the library link with 
> `libcmt.lib` (and define `_MT`), but not setting any of `/MT` or `/MD` will 
> result in your code linking with `libcmt.lib` by default... So if you don't 
> look for the `_MT` define, there is no difference in the output. 
> 
> Nevertheless, we should have the option for clarity of what we mean.

Actually, it **is** the default! I found it now: "/LD implies /MT unless you 
explicitly specify /MD." 
https://learn.microsoft.com/en-us/cpp/build/reference/md-mt-ld-use-run-time-library?view=msvc-170

Microsoft could certainly step up the game wrt their documentation. :-/

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/18301#discussion_r1526242203

Reply via email to