aboutsummaryrefslogtreecommitdiff
path: root/lib/mlibc/sysdeps/managarm/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'lib/mlibc/sysdeps/managarm/meson.build')
-rw-r--r--lib/mlibc/sysdeps/managarm/meson.build145
1 files changed, 145 insertions, 0 deletions
diff --git a/lib/mlibc/sysdeps/managarm/meson.build b/lib/mlibc/sysdeps/managarm/meson.build
new file mode 100644
index 0000000..3b85e30
--- /dev/null
+++ b/lib/mlibc/sysdeps/managarm/meson.build
@@ -0,0 +1,145 @@
+
+bragi = find_program('bragi')
+
+bragi_gen = generator(bragi, arguments: [
+ '-l', 'frigg',
+ '--protobuf',
+ '@INPUT@',
+ '@OUTPUT@'
+ ],
+ output: '@BASENAME@.frigg_bragi.hpp')
+
+fs_bragi = bragi_gen.process('../../subprojects/managarm/protocols/fs/fs.bragi')
+posix_bragi = bragi_gen.process('../../subprojects/managarm/protocols/posix/posix.bragi')
+
+managarm_incl = include_directories(
+ '../../subprojects/managarm/protocols/posix/include',
+ '../../subprojects/managarm/hel/include',
+ '../../subprojects/bragi/include')
+
+rtdl_include_dirs += managarm_incl
+rtdl_sources += files(
+ 'generic/ensure.cpp',
+ 'generic/memory.cpp',
+ 'rtdl-generic/support.cpp',
+)
+rtdl_sources += [
+ fs_bragi,
+ posix_bragi,
+]
+
+libc_include_dirs += include_directories('../../../ports/libdrm/include')
+libc_include_dirs += managarm_incl
+
+libc_sources += files(
+ 'generic/drm.cpp',
+ 'generic/ensure.cpp',
+ 'generic/entry.cpp',
+ 'generic/file.cpp',
+ 'generic/fork-exec.cpp',
+ 'generic/ioctl.cpp',
+ 'generic/memory.cpp',
+ 'generic/mount.cpp',
+ 'generic/net.cpp',
+ 'generic/sched.cpp',
+ 'generic/signals.cpp',
+ 'generic/socket.cpp',
+ 'generic/time.cpp'
+)
+libc_sources += [
+ fs_bragi,
+ posix_bragi,
+]
+
+if host_machine.cpu_family() == 'aarch64'
+ libc_sources += files(
+ 'aarch64/signals.S',
+ 'aarch64/thread_entry.S',
+ 'aarch64/thread.cpp'
+ )
+elif host_machine.cpu_family() == 'x86_64'
+ libc_sources += files(
+ 'x86_64/signals.S',
+ 'x86_64/thread_entry.S',
+ 'x86_64/thread.cpp'
+ )
+else
+ error('Unknown architecture')
+endif
+
+if not no_headers
+ install_headers(
+ 'include/abi-bits/access.h',
+ 'include/abi-bits/auxv.h',
+ 'include/abi-bits/seek-whence.h',
+ 'include/abi-bits/vm-flags.h',
+ 'include/abi-bits/errno.h',
+ 'include/abi-bits/fcntl.h',
+ 'include/abi-bits/in.h',
+ 'include/abi-bits/stat.h',
+ 'include/abi-bits/signal.h',
+ 'include/abi-bits/reboot.h',
+ 'include/abi-bits/resource.h',
+ 'include/abi-bits/socket.h',
+ 'include/abi-bits/termios.h',
+ 'include/abi-bits/time.h',
+ 'include/abi-bits/blkcnt_t.h',
+ 'include/abi-bits/blksize_t.h',
+ 'include/abi-bits/dev_t.h',
+ 'include/abi-bits/gid_t.h',
+ 'include/abi-bits/ino_t.h',
+ 'include/abi-bits/mode_t.h',
+ 'include/abi-bits/nlink_t.h',
+ 'include/abi-bits/pid_t.h',
+ 'include/abi-bits/uid_t.h',
+ 'include/abi-bits/wait.h',
+ 'include/abi-bits/limits.h',
+ 'include/abi-bits/utsname.h',
+ 'include/abi-bits/ptrace.h',
+ 'include/abi-bits/poll.h',
+ 'include/abi-bits/epoll.h',
+ 'include/abi-bits/packet.h',
+ 'include/abi-bits/inotify.h',
+ 'include/abi-bits/clockid_t.h',
+ 'include/abi-bits/shm.h',
+ 'include/abi-bits/mqueue.h',
+ 'include/abi-bits/suseconds_t.h',
+ 'include/abi-bits/fsfilcnt_t.h',
+ 'include/abi-bits/fsblkcnt_t.h',
+ 'include/abi-bits/socklen_t.h',
+ 'include/abi-bits/statfs.h',
+ 'include/abi-bits/statvfs.h',
+ 'include/abi-bits/ioctls.h',
+ 'include/abi-bits/xattr.h',
+ 'include/abi-bits/msg.h',
+ 'include/abi-bits/vt.h',
+ subdir: 'abi-bits',
+ follow_symlinks: true
+ )
+endif
+
+if not headers_only
+ crtstuff = ['crt0']
+ if host_machine.cpu_family() in ['x86_64', 'aarch64']
+ crtstuff += [
+ 'Scrt1',
+ 'crti',
+ 'crtn'
+ ]
+ endif
+ foreach crtthing : crtstuff
+ crtf = crtthing + '.S'
+ crt_src = files(host_machine.cpu_family() / 'crt-src' / crtf)
+ crt = custom_target(
+ crtthing,
+ build_by_default: true,
+ command: c_compiler.cmd_array() + ['-c', '-o', '@OUTPUT@', '@INPUT@'],
+ input: crt_src,
+ output: crtthing + '.o',
+ install: true,
+ install_dir: get_option('libdir')
+ )
+ endforeach
+
+endif
+