mlibc/meson.build

114 lines
3.3 KiB
Meson
Raw Normal View History

2018-10-14 16:45:07 +02:00
project('mlibc', 'c', 'cpp')
2018-10-29 19:55:08 +01:00
cxxshim_dep = subproject('cxxshim').get_variable('cxxshim_dep')
2018-10-14 16:45:07 +02:00
frigg_dep = subproject('frigg').get_variable('frigg_dep')
2018-11-10 09:41:08 +01:00
rtdl_include_dirs = [ ]
libc_include_dirs = [ ]
rtdl_sources = [ ]
libc_sources = [ ]
disable_posix_option = false
disable_linux_option = false
2018-11-17 16:05:57 +01:00
# Process sysdeps first, as sysdeps might want to disable unsupported options.
if host_machine.system() == 'managarm'
subdir('sysdeps/managarm')
elif host_machine.system() == 'qword'
subdir('sysdeps/qword')
else
error('No sysdeps defined for OS: ' + host_machine.system())
endif
2018-10-14 16:45:07 +02:00
internal_incl = include_directories('options/internal/include')
internal_sources = [
'options/internal/generic/allocator.cpp',
'options/internal/generic/debug.cpp',
'options/internal/generic/ensure.cpp',
'options/internal/generic/essential.cpp',
'options/internal/generic/frigg.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',
'options/internal/gcc-extra/mlibc_crtbegin.S',
'options/internal/gcc-extra/mlibc_crtend.S',
'options/internal/x86_64/setjmp.S',
]
install_headers(
'options/internal/include/stdint.h'
)
install_headers(
'options/internal/include/bits/wchar_t.h',
'options/internal/include/bits/feature.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/null.h',
subdir: 'bits'
)
2018-10-14 16:45:07 +02:00
2018-11-10 09:41:08 +01:00
rtdl_sources += [
2018-11-05 20:15:53 +01:00
'options/internal/gcc/guard-abi.cpp',
'options/internal/generic/allocator.cpp',
'options/internal/generic/debug.cpp',
'options/internal/generic/ensure.cpp',
'options/internal/generic/essential.cpp',
'options/internal/generic/frigg.cpp',
2018-10-28 14:43:01 +01:00
'options/rtdl/generic/main.cpp',
'options/rtdl/generic/linker.cpp',
2018-11-10 09:41:08 +01:00
'options/rtdl/x86_64/runtime.S'
2018-10-28 14:43:01 +01:00
]
2018-11-10 09:41:08 +01:00
subdir('options/ansi')
subdir('options/posix')
subdir('options/lsb')
subdir('options/linux')
2018-10-14 16:45:07 +02:00
2018-11-10 09:41:08 +01:00
c_compiler = meson.get_compiler('c')
2018-10-29 19:55:08 +01:00
gccdir = run_command('/bin/sh', '-c',
2018-11-10 09:41:08 +01:00
''.join(c_compiler.cmd_array()) + ' -print-search-dirs | sed -n -e "s/install: \(.*\)/\\1/p"',
2018-10-29 19:55:08 +01:00
check: true).stdout().strip()
add_project_arguments('-nostdinc', '-fno-builtin', language: ['c', 'cpp'])
2018-10-14 16:45:07 +02:00
add_project_arguments('-std=c++17', language: 'cpp')
2018-10-29 19:55:08 +01:00
add_project_arguments('-fno-rtti', '-fno-exceptions', language: 'cpp')
add_project_link_arguments('-nostdlib', language: ['c', 'cpp'])
ldso_lib = shared_library('ld', rtdl_sources,
2018-10-29 19:55:08 +01:00
name_prefix: '',
cpp_args: ['-fvisibility=hidden', '-DMLIBC_BUILDING_RTDL', '-DFRIGG_HAVE_LIBC'],
2018-10-29 19:55:08 +01:00
include_directories: [
2018-11-10 09:41:08 +01:00
rtdl_include_dirs,
2018-10-29 19:55:08 +01:00
internal_incl,
ansi_incl,
include_directories(gccdir + '/include'),
],
dependencies: [cxxshim_dep, frigg_dep],
install: true)
2018-10-14 16:45:07 +02:00
shared_library('c',
[
2018-11-10 09:41:08 +01:00
libc_sources,
2018-10-14 16:45:07 +02:00
internal_sources,
ansi_sources,
lsb_sources,
],
2018-10-28 14:43:01 +01:00
cpp_args: ['-DFRIGG_HAVE_LIBC'],
2018-10-14 16:45:07 +02:00
include_directories: [
2018-11-10 09:41:08 +01:00
libc_include_dirs,
2018-10-14 16:45:07 +02:00
internal_incl,
ansi_incl,
lsb_incl,
2018-10-29 19:55:08 +01:00
include_directories(gccdir + '/include'),
2018-10-28 14:43:01 +01:00
],
2018-10-29 19:55:08 +01:00
dependencies: [cxxshim_dep, frigg_dep],
link_with: [ldso_lib],
2018-10-28 14:43:01 +01:00
install: true)
shared_library('dl', 'libdl/src/dummy.cpp', install: true)
shared_library('m', 'libm/src/dummy.cpp', install: true)
shared_library('pthread', 'libpthread/src/dummy.cpp', install: true)
shared_library('rt', 'librt/src/dummy.cpp', install: true)
shared_library('util', 'libutil/src/dummy.cpp', install: true)