diff options
author | Jan Janssen <medhefgo@web.de> | 2021-11-02 10:21:19 +0100 |
---|---|---|
committer | Jan Janssen <medhefgo@web.de> | 2021-11-04 18:54:31 +0100 |
commit | 1840dfc327805dbc7b8f729e090c129019b08cca (patch) | |
tree | 865084bab7ada4368e5322d8fd72014196af168a /src/boot/efi/meson.build | |
parent | sd-boot: Add some link flags (diff) | |
download | systemd-1840dfc327805dbc7b8f729e090c129019b08cca.tar.xz systemd-1840dfc327805dbc7b8f729e090c129019b08cca.zip |
sd-boot: Detect supported compile args
This brings the final list of compiler arguments more in line with
how meson does things. In particular, --buildtype=plain will not
add any optimizations on its own (and would have to be provided
through CFLAGS=).
Diffstat (limited to '')
-rw-r--r-- | src/boot/efi/meson.build | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build index dd42e20fbd..a0f9243b5b 100644 --- a/src/boot/efi/meson.build +++ b/src/boot/efi/meson.build @@ -45,6 +45,12 @@ stub_sources = ''' cpio.c '''.split() +if ['ia32', 'x86_64'].contains(efi_arch) + stub_sources += 'linux_x86.c' +else + stub_sources += 'linux.c' +endif + if conf.get('ENABLE_EFI') == 1 and get_option('gnu-efi') != 'false' efi_cc = get_option('efi-cc') if efi_cc.length() == 0 @@ -218,11 +224,7 @@ if have_gnu_efi '-include', efi_config_h, '-include', version_h, ] - if ['ia32', 'x86_64'].contains(efi_arch) - stub_sources += 'linux_x86.c' - else - stub_sources += 'linux.c' - endif + if efi_arch == 'x86_64' compile_args += ['-mno-red-zone', '-mno-sse', @@ -231,29 +233,36 @@ if have_gnu_efi compile_args += ['-mno-sse', '-mno-mmx'] elif efi_arch == 'arm' - if cc.has_argument('-mgeneral-regs-only') - compile_args += ['-mgeneral-regs-only'] - endif - - if cc.has_argument('-mfpu=none') - compile_args += ['-mfpu=none'] - endif + compile_args += cc.get_supported_arguments([ + '-mgeneral-regs-only', + '-mfpu=none' + ]) endif - if get_option('werror') == true + + # We are putting the efi_cc command line together ourselves, so make sure to pull any + # relevant compiler flags from meson/CFLAGS as povided by the user or distro. + + if get_option('werror') compile_args += ['-Werror'] endif - if get_option('buildtype') == 'debug' - compile_args += ['-ggdb', '-O0', '-DEFI_DEBUG'] - elif get_option('buildtype') == 'debugoptimized' - compile_args += ['-ggdb', '-Og', '-DEFI_DEBUG'] - else - compile_args += ['-O2'] + if get_option('debug') + compile_args += ['-ggdb', '-DEFI_DEBUG'] + endif + if get_option('optimization') != '0' + compile_args += ['-O' + get_option('optimization')] endif if get_option('b_ndebug') == 'true' or ( get_option('b_ndebug') == 'if-release' and ['plain', 'release'].contains(get_option('buildtype'))) compile_args += ['-DNDEBUG'] endif + foreach arg : get_option('c_args') + if arg in ['-Werror', '-g', '-ggdb', '-O1', '-O2', '-O3', '-Og', '-Os', '-DNDEBUG'] + message('Using "@0@" from c_args for EFI compiler'.format(arg)) + compile_args += arg + endif + endforeach + efi_ldflags = ['-T', efi_lds, '-shared', '-Bsymbolic', |