aboutsummaryrefslogtreecommitdiff
path: root/lib/mlibc/sysdeps/linux/meson.build
blob: 08092377c67bf63bab125320af56e608322cf0e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
rtdl_dso_sources += files(
	host_machine.cpu_family() / 'arch-syscall.cpp',
	'generic/sysdeps.cpp',
)

linux_include_dirs = [
	include_directories(host_machine.cpu_family()),
	include_directories('include-internal/'),
]

rtdl_include_dirs += linux_include_dirs
libc_include_dirs += linux_include_dirs
libc_sources += files(
	host_machine.cpu_family() / 'signals.S',
	host_machine.cpu_family() / 'arch-syscall.cpp',
	'generic/entry.cpp',
	'generic/sysdeps.cpp',
)

if not disable_posix_option
	libc_sources += files(
		'generic/thread.cpp',
		host_machine.cpu_family() / 'cp_syscall.S',
		host_machine.cpu_family() / 'thread_entry.S'
	)
endif

if not no_headers
	install_headers(
		'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/access.h',
		'include/abi-bits/wait.h',
		'include/abi-bits/limits.h',
		'include/abi-bits/utsname.h',
		'include/abi-bits/ptrace.h',
		'include/abi-bits/vt.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',
		subdir: 'abi-bits',
		follow_symlinks: true
	)

	install_headers('include/syscall.h')
	install_headers('include/sys/syscall.h', subdir: 'sys')
	install_headers(
		'include/bits/syscall.h',
		'include/bits/syscall_aliases.h',
		subdir: 'bits'
	)
endif

if not headers_only
	crt = custom_target('crt1',
		build_by_default: true,
		command: c_compiler.cmd_array() + ['-c', '-o', '@OUTPUT@', '@INPUT@'],
		input: host_machine.cpu_family() / 'crt-src/crt1.S',
		output: 'crt1.o',
		install: true,
		install_dir: get_option('libdir')
	)

	crt_pie = custom_target('Scrt1',
		build_by_default: true,
		command: c_compiler.cmd_array() + ['-fPIE', '-c', '-o', '@OUTPUT@', '@INPUT@'],
		input: host_machine.cpu_family() / 'crt-src/Scrt1.S',
		output: 'Scrt1.o',
		install: true,
		install_dir: get_option('libdir')
	)

	custom_target('crti',
		build_by_default: true,
		command: c_compiler.cmd_array() + ['-c', '-o', '@OUTPUT@', '@INPUT@'],
		input: host_machine.cpu_family() / 'crt-src/crti.S',
		output: 'crti.o',
		install: true,
		install_dir: get_option('libdir')
	)

	custom_target('crtn',
		build_by_default: true,
		command: c_compiler.cmd_array() + ['-c', '-o', '@OUTPUT@', '@INPUT@'],
		input: host_machine.cpu_family() / 'crt-src/crtn.S',
		output: 'crtn.o',
		install: true,
		install_dir: get_option('libdir')
	)

	wrapper_conf = configuration_data()
	wrapper_conf.set('LIBDIR', get_option('libdir'))
	wrapper_conf.set('PREFIX', get_option('prefix'))
	specs = configure_file(input: 'mlibc-gcc.specs.in',
			output: 'mlibc-gcc.specs',
			configuration: wrapper_conf)

	wrapper_script = configure_file(input: 'mlibc-gcc.in',
			output: 'mlibc-gcc',
			configuration: wrapper_conf)

	install_data(specs,
		install_dir: get_option('libdir')
	)

	install_data(wrapper_script,
		install_dir: get_option('bindir')
	)
endif