2022-05-20 21:29:29 +02:00
|
|
|
project('mlibc', default_options: ['warning_level=2', 'cpp_std=c++20'])
|
2018-12-28 00:42:15 +01:00
|
|
|
|
2020-08-23 15:35:49 +02:00
|
|
|
fs = import('fs')
|
|
|
|
|
2018-12-28 00:25:24 +01:00
|
|
|
rtdl_include_dirs = [
|
|
|
|
include_directories('options/internal/include'),
|
2022-06-02 04:24:51 +02:00
|
|
|
include_directories('options/internal' / host_machine.cpu_family() + '-include'),
|
2020-08-28 11:36:53 +02:00
|
|
|
include_directories('options/rtdl/include'),
|
2018-12-28 00:25:24 +01:00
|
|
|
]
|
|
|
|
libc_include_dirs = [
|
|
|
|
include_directories('options/internal/include'),
|
|
|
|
include_directories('options/elf/include'),
|
|
|
|
include_directories('options/lsb/include'),
|
2022-06-02 04:37:51 +02:00
|
|
|
include_directories('options/rtdl/include'),
|
2020-12-06 15:58:15 +01:00
|
|
|
include_directories('options/internal' / host_machine.cpu_family() + '-include')
|
2018-12-28 00:25:24 +01:00
|
|
|
]
|
2020-12-06 15:58:15 +01:00
|
|
|
|
2018-11-10 09:41:08 +01:00
|
|
|
rtdl_sources = [ ]
|
2022-06-19 20:27:05 +02:00
|
|
|
rtdl_dso_sources = [ ]
|
2018-11-10 09:41:08 +01:00
|
|
|
libc_sources = [ ]
|
2018-12-28 00:42:15 +01:00
|
|
|
libc_sublibs = [ ]
|
2018-11-10 09:41:08 +01:00
|
|
|
|
2019-08-20 16:47:05 +02:00
|
|
|
libc_deps = [ ]
|
|
|
|
rtdl_deps = [ ]
|
|
|
|
|
2019-01-06 13:11:12 +01:00
|
|
|
headers_only = get_option('headers_only')
|
2019-06-15 11:15:41 +02:00
|
|
|
no_headers = get_option('mlibc_no_headers')
|
2022-06-19 20:27:05 +02:00
|
|
|
library_type = get_option('default_library')
|
2020-08-29 22:38:34 +02:00
|
|
|
build_tests = get_option('build_tests')
|
2022-06-06 20:51:15 +02:00
|
|
|
build_tests_host_libc = get_option('build_tests_host_libc')
|
2020-08-30 20:08:56 +02:00
|
|
|
disable_ansi_option = get_option('disable_ansi_option')
|
|
|
|
disable_posix_option = get_option('disable_posix_option')
|
|
|
|
disable_linux_option = get_option('disable_linux_option')
|
2021-10-27 18:16:54 +02:00
|
|
|
disable_linux_headers = get_option('disable_linux_headers_option')
|
2020-12-09 21:42:26 +01:00
|
|
|
disable_iconv_option = get_option('disable_iconv_option')
|
2021-01-30 16:30:23 +01:00
|
|
|
disable_intl_option = get_option('disable_intl_option')
|
2021-07-21 09:35:39 +02:00
|
|
|
disable_glibc_option = get_option('disable_glibc_option')
|
2021-10-28 18:45:56 +02:00
|
|
|
disable_crypt_option = get_option('disable_crypt_option')
|
2021-11-29 00:06:20 +01:00
|
|
|
disable_bsd_option = get_option('disable_bsd_option')
|
2018-12-21 18:00:27 +01:00
|
|
|
internal_conf = configuration_data()
|
2021-07-20 12:47:04 +02:00
|
|
|
mlibc_conf = configuration_data()
|
2018-12-21 18:00:27 +01:00
|
|
|
|
2019-01-06 13:11:12 +01:00
|
|
|
if not headers_only
|
2022-05-22 21:33:31 +02:00
|
|
|
cxxshim_dep = dependency('cxxshim', fallback: ['cxxshim', 'cxxshim_dep'])
|
2019-08-20 16:47:05 +02:00
|
|
|
libc_deps += cxxshim_dep
|
|
|
|
rtdl_deps += cxxshim_dep
|
2022-05-20 21:29:29 +02:00
|
|
|
|
2022-05-21 01:56:55 +02:00
|
|
|
frigg_dep = dependency(
|
|
|
|
'frigg',
|
|
|
|
default_options: ['frigg_no_install=true'],
|
|
|
|
fallback: ['frigg', 'frigg_dep'],
|
|
|
|
)
|
2019-08-20 16:47:05 +02:00
|
|
|
libc_deps += frigg_dep
|
|
|
|
rtdl_deps += frigg_dep
|
|
|
|
|
2019-01-06 13:11:12 +01:00
|
|
|
add_languages('c', 'cpp')
|
|
|
|
c_compiler = meson.get_compiler('c')
|
|
|
|
|
2022-07-06 01:12:52 +02:00
|
|
|
add_project_arguments('-Wno-unused-function', '-D__MLIBC_BUILDING_MLIBC', language: ['c', 'cpp'])
|
2019-01-06 13:11:12 +01:00
|
|
|
add_project_arguments('-nostdinc', '-fno-builtin', language: ['c', 'cpp'])
|
|
|
|
add_project_arguments('-fno-rtti', '-fno-exceptions', language: 'cpp')
|
|
|
|
add_project_link_arguments('-nostdlib', language: ['c', 'cpp'])
|
|
|
|
|
2021-12-12 23:51:49 +01:00
|
|
|
searchdirs = run_command(c_compiler.cmd_array(), '-print-search-dirs',
|
|
|
|
check: true).stdout()
|
|
|
|
searchdirs_arr = searchdirs.split('\n')
|
|
|
|
searchline = 'install: '
|
|
|
|
ccdir = ''
|
|
|
|
if c_compiler.get_id() == 'clang'
|
|
|
|
searchline = 'libraries: ='
|
|
|
|
endif
|
2020-12-04 10:39:26 +01:00
|
|
|
|
2021-12-12 23:51:49 +01:00
|
|
|
foreach line : searchdirs_arr
|
|
|
|
if line.startswith(searchline)
|
|
|
|
ccdir = line.strip(searchline)
|
|
|
|
ccdir = ccdir.split(':')[0]
|
2021-12-13 01:13:47 +01:00
|
|
|
break
|
2020-12-04 10:39:26 +01:00
|
|
|
endif
|
2021-12-12 23:51:49 +01:00
|
|
|
endforeach
|
|
|
|
|
|
|
|
if ccdir == ''
|
|
|
|
error('could not find compiler-specific header directory')
|
|
|
|
endif
|
2020-12-04 10:39:26 +01:00
|
|
|
|
2021-12-12 23:51:49 +01:00
|
|
|
if c_compiler.get_id() == 'gcc' and fs.exists(ccdir / 'include-fixed')
|
|
|
|
rtdl_include_dirs += include_directories(ccdir / 'include-fixed')
|
|
|
|
libc_include_dirs += include_directories(ccdir / 'include-fixed')
|
2020-08-23 15:35:49 +02:00
|
|
|
endif
|
2021-12-12 23:51:49 +01:00
|
|
|
|
|
|
|
rtdl_include_dirs += include_directories(ccdir / 'include')
|
|
|
|
libc_include_dirs += include_directories(ccdir / 'include')
|
2019-01-06 13:11:12 +01:00
|
|
|
endif
|
|
|
|
|
2019-01-09 20:06:52 +01:00
|
|
|
internal_conf.set_quoted('MLIBC_SYSTEM_NAME', host_machine.system())
|
2019-02-28 18:26:22 +01:00
|
|
|
internal_conf.set('MLIBC_MAP_DSO_SEGMENTS', false)
|
|
|
|
internal_conf.set('MLIBC_MAP_FILE_WINDOWS', false)
|
2022-07-19 21:13:46 +02:00
|
|
|
internal_conf.set('MLIBC_DEBUG_ALLOCATOR', get_option('debug_allocator'))
|
2018-11-11 13:46:39 +01:00
|
|
|
|
2018-12-28 00:25:24 +01:00
|
|
|
#----------------------------------------------------------------------------------------
|
|
|
|
# Configuration based on sysdeps.
|
|
|
|
#----------------------------------------------------------------------------------------
|
|
|
|
|
2018-11-17 16:05:57 +01:00
|
|
|
# Process sysdeps first, as sysdeps might want to disable unsupported options.
|
2019-08-12 20:44:26 +02:00
|
|
|
if host_machine.system() == 'linux'
|
2021-07-21 09:26:42 +02:00
|
|
|
disable_linux_headers = true
|
2019-08-12 20:44:26 +02:00
|
|
|
rtdl_include_dirs += include_directories('sysdeps/linux/include')
|
|
|
|
libc_include_dirs += include_directories('sysdeps/linux/include')
|
|
|
|
subdir('sysdeps/linux')
|
2021-06-06 08:37:54 +02:00
|
|
|
elif host_machine.system() == 'aero'
|
|
|
|
rtdl_include_dirs += include_directories('sysdeps/aero/include')
|
|
|
|
libc_include_dirs += include_directories('sysdeps/aero/include')
|
|
|
|
subdir('sysdeps/aero')
|
2019-08-12 20:44:26 +02:00
|
|
|
elif host_machine.system() == 'managarm'
|
2018-12-28 00:25:24 +01:00
|
|
|
# TODO: Adopt the include_directories() commands from the managarm meson.build.
|
|
|
|
rtdl_include_dirs += include_directories('sysdeps/managarm/include')
|
|
|
|
libc_include_dirs += include_directories('sysdeps/managarm/include')
|
2019-02-28 18:26:22 +01:00
|
|
|
internal_conf.set('MLIBC_MAP_DSO_SEGMENTS', true)
|
|
|
|
internal_conf.set('MLIBC_MAP_FILE_WINDOWS', true)
|
2018-11-17 16:05:57 +01:00
|
|
|
subdir('sysdeps/managarm')
|
2022-06-07 23:26:10 +02:00
|
|
|
elif host_machine.system() == 'ironclad'
|
|
|
|
# disable_linux_option = true
|
|
|
|
rtdl_include_dirs += include_directories('sysdeps/ironclad/include')
|
|
|
|
libc_include_dirs += include_directories('sysdeps/ironclad/include')
|
|
|
|
subdir('sysdeps/ironclad')
|
2022-06-30 16:55:51 +02:00
|
|
|
elif host_machine.system() == 'vinix'
|
|
|
|
rtdl_include_dirs += include_directories('sysdeps/vinix/include')
|
|
|
|
libc_include_dirs += include_directories('sysdeps/vinix/include')
|
|
|
|
subdir('sysdeps/vinix')
|
2020-02-13 12:19:28 +01:00
|
|
|
elif host_machine.system() == 'lemon'
|
|
|
|
rtdl_include_dirs += include_directories('sysdeps/lemon/include')
|
|
|
|
libc_include_dirs += include_directories('sysdeps/lemon/include')
|
|
|
|
subdir('sysdeps/lemon')
|
2020-06-22 02:51:43 +02:00
|
|
|
elif host_machine.system() == 'dripos'
|
|
|
|
disable_linux_option = true
|
|
|
|
rtdl_include_dirs += include_directories('sysdeps/dripos/include')
|
|
|
|
libc_include_dirs += include_directories('sysdeps/dripos/include')
|
|
|
|
subdir('sysdeps/dripos')
|
2022-08-12 19:46:28 +02:00
|
|
|
elif host_machine.system() == 'squiid'
|
|
|
|
disable_linux_option = true
|
|
|
|
disable_linux_headers = true
|
|
|
|
rtdl_include_dirs += include_directories('sysdeps/squiid/include')
|
|
|
|
libc_include_dirs += include_directories('sysdeps/squiid/include')
|
|
|
|
subdir('sysdeps/squiid')
|
2018-11-17 16:05:57 +01:00
|
|
|
else
|
|
|
|
error('No sysdeps defined for OS: ' + host_machine.system())
|
|
|
|
endif
|
2018-10-14 16:45:07 +02:00
|
|
|
|
2018-12-28 00:25:24 +01:00
|
|
|
#----------------------------------------------------------------------------------------
|
|
|
|
# Configuration based on enabled options.
|
|
|
|
#----------------------------------------------------------------------------------------
|
|
|
|
|
2021-07-20 12:47:04 +02:00
|
|
|
mlibc_conf.set('__MLIBC_ANSI_OPTION', not disable_ansi_option)
|
|
|
|
mlibc_conf.set('__MLIBC_POSIX_OPTION', not disable_posix_option)
|
|
|
|
mlibc_conf.set('__MLIBC_LINUX_OPTION', not disable_linux_option)
|
|
|
|
mlibc_conf.set('__MLIBC_INTL_OPTION', not disable_intl_option)
|
|
|
|
mlibc_conf.set('__MLIBC_ICONV_OPTION', not disable_iconv_option)
|
2021-07-21 09:35:39 +02:00
|
|
|
mlibc_conf.set('__MLIBC_GLIBC_OPTION', not disable_glibc_option)
|
2021-10-28 18:45:56 +02:00
|
|
|
mlibc_conf.set('__MLIBC_CRYPT_OPTION', not disable_crypt_option)
|
2021-11-29 00:06:20 +01:00
|
|
|
mlibc_conf.set('__MLIBC_BSD_OPTION', not disable_bsd_option)
|
2021-07-20 12:47:04 +02:00
|
|
|
|
2018-12-28 00:25:24 +01:00
|
|
|
if not disable_ansi_option
|
|
|
|
rtdl_include_dirs += include_directories('options/ansi/include')
|
|
|
|
libc_include_dirs += include_directories('options/ansi/include')
|
|
|
|
endif
|
|
|
|
|
|
|
|
if not disable_posix_option
|
|
|
|
rtdl_include_dirs += include_directories('options/posix/include')
|
|
|
|
libc_include_dirs += include_directories('options/posix/include')
|
|
|
|
endif
|
|
|
|
|
2020-12-09 21:42:26 +01:00
|
|
|
if not disable_iconv_option
|
|
|
|
rtdl_include_dirs += include_directories('options/iconv/include')
|
|
|
|
libc_include_dirs += include_directories('options/iconv/include')
|
|
|
|
endif
|
|
|
|
|
2021-01-30 16:30:23 +01:00
|
|
|
if not disable_intl_option
|
|
|
|
libc_include_dirs += include_directories('options/intl/include')
|
|
|
|
endif
|
|
|
|
|
2021-07-21 09:26:42 +02:00
|
|
|
if not disable_linux_option
|
|
|
|
rtdl_include_dirs += include_directories('options/linux/include')
|
|
|
|
libc_include_dirs += include_directories('options/linux/include')
|
|
|
|
endif
|
|
|
|
|
2021-07-21 09:35:39 +02:00
|
|
|
if not disable_glibc_option
|
|
|
|
rtdl_include_dirs += include_directories('options/glibc/include')
|
|
|
|
libc_include_dirs += include_directories('options/glibc/include')
|
|
|
|
endif
|
2021-07-21 09:26:42 +02:00
|
|
|
|
2021-10-28 18:45:56 +02:00
|
|
|
if not disable_crypt_option
|
|
|
|
libc_include_dirs += include_directories('options/crypt/include')
|
|
|
|
endif
|
|
|
|
|
2021-11-29 00:06:20 +01:00
|
|
|
if not disable_bsd_option
|
|
|
|
libc_include_dirs += include_directories('options/bsd/include')
|
|
|
|
endif
|
|
|
|
|
2021-07-21 09:26:42 +02:00
|
|
|
rtdl_include_dirs += include_directories('options/linux-headers/include')
|
|
|
|
libc_include_dirs += include_directories('options/linux-headers/include')
|
2020-02-15 18:47:24 +01:00
|
|
|
rtdl_include_dirs += include_directories('options/elf/include')
|
|
|
|
libc_include_dirs += include_directories('options/elf/include')
|
2021-07-20 12:47:04 +02:00
|
|
|
libc_include_dirs += include_directories('.')
|
2018-12-28 00:25:24 +01:00
|
|
|
|
|
|
|
#----------------------------------------------------------------------------------------
|
|
|
|
|
2018-12-21 18:00:27 +01:00
|
|
|
configure_file(input: 'internal-config.h.in',
|
|
|
|
output: 'internal-config.h',
|
|
|
|
configuration: internal_conf)
|
|
|
|
|
2021-07-20 12:47:04 +02:00
|
|
|
configure_file(input: 'mlibc-config.h.in',
|
|
|
|
output: 'mlibc-config.h',
|
|
|
|
configuration: mlibc_conf,
|
2021-10-27 12:46:06 +02:00
|
|
|
install: not no_headers,
|
2021-07-20 12:47:04 +02:00
|
|
|
install_dir: get_option('includedir'))
|
|
|
|
|
2018-10-14 16:45:07 +02:00
|
|
|
internal_sources = [
|
|
|
|
'options/internal/generic/allocator.cpp',
|
2018-12-18 18:31:32 +01:00
|
|
|
'options/internal/generic/charcode.cpp',
|
2018-12-25 14:52:19 +01:00
|
|
|
'options/internal/generic/charset.cpp',
|
2018-10-14 16:45:07 +02:00
|
|
|
'options/internal/generic/debug.cpp',
|
2018-11-10 10:11:56 +01:00
|
|
|
'options/internal/generic/ensure.cpp',
|
|
|
|
'options/internal/generic/essential.cpp',
|
|
|
|
'options/internal/generic/frigg.cpp',
|
2022-07-07 01:45:54 +02:00
|
|
|
'options/internal/generic/global-config.cpp',
|
2022-06-18 20:04:13 +02:00
|
|
|
'options/internal/generic/inline-emitter.cpp',
|
2022-07-03 17:30:49 +02:00
|
|
|
'options/internal/generic/locale.cpp',
|
2021-06-19 23:40:19 +02:00
|
|
|
'options/internal/generic/sigset.cpp',
|
2022-06-28 11:41:02 +02:00
|
|
|
'options/internal/generic/strings.cpp',
|
2022-06-15 01:17:33 +02:00
|
|
|
'options/internal/generic/ubsan.cpp',
|
2020-09-12 16:02:27 +02:00
|
|
|
'options/internal/gcc/stack_protector.cpp',
|
2018-11-05 20:15:53 +01:00
|
|
|
'options/internal/gcc/guard-abi.cpp',
|
2018-10-14 16:45:07 +02:00
|
|
|
'options/internal/gcc/initfini.cpp',
|
2018-12-29 13:21:37 +01:00
|
|
|
'options/internal/gcc-extra/cxxabi.cpp',
|
2020-12-06 15:58:15 +01:00
|
|
|
'options/internal' / host_machine.cpu_family() / 'setjmp.S',
|
2018-10-14 16:45:07 +02:00
|
|
|
]
|
2019-06-15 11:15:41 +02:00
|
|
|
|
2022-06-19 20:27:05 +02:00
|
|
|
internal_dso_sources = [
|
|
|
|
'options/internal/gcc-extra/mlibc_crtbegin.S',
|
|
|
|
'options/internal' / host_machine.cpu_family() / 'mlibc_crtend.S',
|
|
|
|
]
|
2020-02-13 12:19:28 +01:00
|
|
|
|
2019-06-15 11:15:41 +02:00
|
|
|
if not no_headers
|
|
|
|
install_headers(
|
|
|
|
'options/internal/include/stdint.h'
|
|
|
|
)
|
|
|
|
install_headers(
|
|
|
|
'options/internal/include/bits/wchar_t.h',
|
2021-08-15 23:08:38 +02:00
|
|
|
'options/internal/include/bits/wchar.h',
|
2019-06-15 11:15:41 +02:00
|
|
|
'options/internal/include/bits/wint_t.h',
|
|
|
|
'options/internal/include/bits/size_t.h',
|
|
|
|
'options/internal/include/bits/types.h',
|
|
|
|
'options/internal/include/bits/ensure.h',
|
|
|
|
'options/internal/include/bits/machine.h',
|
|
|
|
'options/internal/include/bits/mbstate.h',
|
2022-07-03 17:30:49 +02:00
|
|
|
'options/internal/include/bits/nl_item.h',
|
2019-06-15 11:15:41 +02:00
|
|
|
'options/internal/include/bits/null.h',
|
2020-08-28 11:36:53 +02:00
|
|
|
'options/internal/include/bits/off_t.h',
|
|
|
|
'options/internal/include/bits/ssize_t.h',
|
2021-06-19 23:40:19 +02:00
|
|
|
'options/internal/include/bits/sigset_t.h',
|
2022-06-18 21:34:21 +02:00
|
|
|
'options/internal/include/bits/inline-definition.h',
|
2019-06-15 11:15:41 +02:00
|
|
|
subdir: 'bits'
|
|
|
|
)
|
|
|
|
endif
|
2018-10-14 16:45:07 +02:00
|
|
|
|
2018-11-10 09:41:08 +01:00
|
|
|
rtdl_sources += [
|
2020-09-12 16:02:27 +02:00
|
|
|
'options/internal/gcc/stack_protector.cpp',
|
2018-11-05 20:15:53 +01:00
|
|
|
'options/internal/gcc/guard-abi.cpp',
|
|
|
|
'options/internal/generic/allocator.cpp',
|
2018-10-30 19:50:50 +01:00
|
|
|
'options/internal/generic/debug.cpp',
|
2018-11-10 10:11:56 +01:00
|
|
|
'options/internal/generic/ensure.cpp',
|
|
|
|
'options/internal/generic/essential.cpp',
|
2022-06-18 20:04:13 +02:00
|
|
|
'options/internal/generic/inline-emitter.cpp',
|
2018-11-10 10:11:56 +01:00
|
|
|
'options/internal/generic/frigg.cpp',
|
2022-06-15 01:17:33 +02:00
|
|
|
'options/internal/generic/ubsan.cpp',
|
2018-10-28 14:43:01 +01:00
|
|
|
'options/rtdl/generic/main.cpp',
|
|
|
|
'options/rtdl/generic/linker.cpp',
|
2020-12-06 15:58:15 +01:00
|
|
|
'options/rtdl' / host_machine.cpu_family() / 'runtime.S'
|
2018-10-28 14:43:01 +01:00
|
|
|
]
|
|
|
|
|
2022-06-19 20:27:05 +02:00
|
|
|
rtdl_dso_sources += ['options/rtdl' / host_machine.cpu_family() / 'entry.S']
|
2020-03-21 11:41:41 +01:00
|
|
|
|
2018-12-15 21:47:52 +01:00
|
|
|
subdir('options/elf')
|
2018-11-10 09:41:08 +01:00
|
|
|
subdir('options/ansi')
|
|
|
|
subdir('options/posix')
|
|
|
|
subdir('options/lsb')
|
2018-12-08 11:09:22 +01:00
|
|
|
subdir('options/glibc')
|
2018-11-10 09:41:08 +01:00
|
|
|
subdir('options/linux')
|
2021-10-27 18:16:54 +02:00
|
|
|
subdir('options/linux-headers')
|
2020-12-09 21:42:26 +01:00
|
|
|
subdir('options/iconv')
|
2021-01-30 16:30:23 +01:00
|
|
|
subdir('options/intl')
|
2021-10-28 18:45:56 +02:00
|
|
|
subdir('options/crypt')
|
2021-11-29 00:06:20 +01:00
|
|
|
subdir('options/bsd')
|
2018-10-14 16:45:07 +02:00
|
|
|
|
2022-06-21 16:59:43 +02:00
|
|
|
rtlib_deps = []
|
|
|
|
|
2019-01-06 13:11:12 +01:00
|
|
|
if not headers_only
|
2022-06-21 16:59:43 +02:00
|
|
|
if host_machine.cpu_family() == 'aarch64' or host_machine.cpu_family() == 'riscv64'
|
|
|
|
# Some architectures require us to link with libgcc or compiler_rt
|
|
|
|
libgcc = meson.get_compiler('c').find_library('gcc', required: false)
|
|
|
|
|
|
|
|
compiler_rt_name = 'libclang_rt.builtins-' + host_machine.cpu_family()
|
|
|
|
compiler_rt = meson.get_compiler('c').find_library(compiler_rt_name, required: false)
|
|
|
|
|
|
|
|
if libgcc.found()
|
|
|
|
rtlib_deps += libgcc
|
|
|
|
elif compiler_rt.found()
|
|
|
|
rtlib_deps += compiler_rt
|
|
|
|
else
|
|
|
|
error('neither libgcc nor ' + compiler_rt_name + ' was found')
|
2021-06-14 15:10:25 +02:00
|
|
|
endif
|
2022-06-21 16:59:43 +02:00
|
|
|
endif
|
2021-06-14 15:10:25 +02:00
|
|
|
|
2022-06-19 20:27:05 +02:00
|
|
|
ld_cpp_args = [
|
|
|
|
'-fvisibility=hidden',
|
|
|
|
'-fno-stack-protector',
|
|
|
|
'-DMLIBC_BUILDING_RTDL'
|
|
|
|
]
|
|
|
|
|
|
|
|
libc_all_sources = [
|
|
|
|
libc_sources,
|
|
|
|
internal_sources,
|
|
|
|
ansi_sources,
|
|
|
|
lsb_sources,
|
|
|
|
]
|
|
|
|
|
|
|
|
# Our library have different behaviour when built as static and shared libraries.
|
|
|
|
# Hence we need to rebuild the object files with a different define for each mode.
|
|
|
|
if library_type in ['static', 'both']
|
|
|
|
static_cpp_args = [
|
|
|
|
'-DMLIBC_STATIC_BUILD',
|
|
|
|
'-DFRIGG_HAVE_LIBC',
|
|
|
|
]
|
|
|
|
ld_static_lib = static_library('ld', rtdl_sources,
|
|
|
|
name_prefix: '',
|
|
|
|
cpp_args: ld_cpp_args + static_cpp_args,
|
|
|
|
include_directories: rtdl_include_dirs,
|
|
|
|
dependencies: rtdl_deps + rtlib_deps,
|
|
|
|
install: false
|
|
|
|
)
|
|
|
|
libc_static = static_library('c', libc_all_sources,
|
|
|
|
cpp_args: static_cpp_args + ['-fno-stack-protector'],
|
|
|
|
include_directories: libc_include_dirs,
|
|
|
|
dependencies: libc_deps + rtlib_deps,
|
|
|
|
link_with: [ld_static_lib],
|
|
|
|
link_whole: [libc_sublibs, ld_static_lib],
|
|
|
|
install: true
|
|
|
|
)
|
|
|
|
endif
|
|
|
|
if library_type in ['shared', 'both']
|
|
|
|
ld_shared_lib = shared_library('ld', rtdl_sources + rtdl_dso_sources,
|
|
|
|
name_prefix: '',
|
|
|
|
cpp_args: ld_cpp_args,
|
|
|
|
include_directories: rtdl_include_dirs,
|
|
|
|
dependencies: rtdl_deps + rtlib_deps,
|
|
|
|
install: true
|
|
|
|
)
|
|
|
|
libc_shared = shared_library('c', libc_all_sources + internal_dso_sources,
|
|
|
|
include_directories: libc_include_dirs,
|
|
|
|
dependencies: libc_deps + rtlib_deps,
|
|
|
|
link_with: [ld_shared_lib],
|
|
|
|
link_whole: libc_sublibs,
|
|
|
|
install: true
|
|
|
|
)
|
|
|
|
endif
|
|
|
|
|
|
|
|
library('pthread', 'dummy-libs/libpthread/src/dummy.cpp', install: true)
|
|
|
|
library('rt', 'dummy-libs/librt/src/dummy.cpp', install: true)
|
|
|
|
library('util', 'dummy-libs/libutil/src/dummy.cpp', install: true)
|
|
|
|
library('m', 'dummy-libs/libm/src/dummy.cpp', install: true)
|
|
|
|
if not disable_crypt_option
|
|
|
|
library('crypt', 'dummy-libs/libcrypt/src/dummy.cpp', install: true)
|
2020-02-15 11:29:20 +01:00
|
|
|
endif
|
2022-06-19 20:27:05 +02:00
|
|
|
library('resolv', 'dummy-libs/libresolv/src/dummy.cpp', install: true)
|
|
|
|
library('dl', 'dummy-libs/libdl/src/dummy.cpp', install: true)
|
2019-01-06 13:11:12 +01:00
|
|
|
endif
|
2020-08-29 22:38:34 +02:00
|
|
|
|
|
|
|
if build_tests
|
|
|
|
subdir('tests/')
|
|
|
|
endif
|