1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-30 06:25:37 +03:00

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=).
This commit is contained in:
Jan Janssen 2021-11-02 10:21:19 +01:00
parent f8a738bbc0
commit 1840dfc327

View File

@ -45,6 +45,12 @@ stub_sources = '''
cpio.c cpio.c
'''.split() '''.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' if conf.get('ENABLE_EFI') == 1 and get_option('gnu-efi') != 'false'
efi_cc = get_option('efi-cc') efi_cc = get_option('efi-cc')
if efi_cc.length() == 0 if efi_cc.length() == 0
@ -218,11 +224,7 @@ if have_gnu_efi
'-include', efi_config_h, '-include', efi_config_h,
'-include', version_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' if efi_arch == 'x86_64'
compile_args += ['-mno-red-zone', compile_args += ['-mno-red-zone',
'-mno-sse', '-mno-sse',
@ -231,29 +233,36 @@ if have_gnu_efi
compile_args += ['-mno-sse', compile_args += ['-mno-sse',
'-mno-mmx'] '-mno-mmx']
elif efi_arch == 'arm' elif efi_arch == 'arm'
if cc.has_argument('-mgeneral-regs-only') compile_args += cc.get_supported_arguments([
compile_args += ['-mgeneral-regs-only'] '-mgeneral-regs-only',
endif '-mfpu=none'
])
if cc.has_argument('-mfpu=none')
compile_args += ['-mfpu=none']
endif
endif 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'] compile_args += ['-Werror']
endif endif
if get_option('buildtype') == 'debug' if get_option('debug')
compile_args += ['-ggdb', '-O0', '-DEFI_DEBUG'] compile_args += ['-ggdb', '-DEFI_DEBUG']
elif get_option('buildtype') == 'debugoptimized' endif
compile_args += ['-ggdb', '-Og', '-DEFI_DEBUG'] if get_option('optimization') != '0'
else compile_args += ['-O' + get_option('optimization')]
compile_args += ['-O2']
endif endif
if get_option('b_ndebug') == 'true' or ( if get_option('b_ndebug') == 'true' or (
get_option('b_ndebug') == 'if-release' and ['plain', 'release'].contains(get_option('buildtype'))) get_option('b_ndebug') == 'if-release' and ['plain', 'release'].contains(get_option('buildtype')))
compile_args += ['-DNDEBUG'] compile_args += ['-DNDEBUG']
endif 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, efi_ldflags = ['-T', efi_lds,
'-shared', '-shared',
'-Bsymbolic', '-Bsymbolic',