Mercurial > gub
changeset 5394:d6ed36e3702c
/GUB: bootstrap [fake-]root- [fake-]chrootable root.
Notes:
http://github.com/janneke/gub/commit/ba4eca63fad7bdcb9b89c1f5149bbf09fc5300de
for i in librestrict cross/binutils dash cross/gcc-core linux-headers glibc-core cross/gcc glibc bash coreutils tar make sed libtool fakeroot fakechroot makedev; do gub -x --fresh --keep $i || break; done
fakechroot chroot x86_64-linux /usr/bin/bash
fakeroot -s fakeroot.save fakechroot chroot x86_64-linux /usr/bin/bash
fakechroot chroot . /x86_64-linux/usr/bin/bash
bash-3.2$ bash -x ldd /bin/x86_64-linux-gcc
bash: /home/janneke/vc/gub/GUB/./lib/libc.so.6: version `GLIBC_2.4' not found (required by /usr/lib/fakechroot/libfakechroot.so)
ln -s /GUB/x86_64-linux/usr .
ln -s /GUB/x86_64-linux/usr/bin .
ln -s /GUB/x86_64-linux/lib64 .
ln -s /GUB/x86_64-linux/dev .
ln -s /GUB/x86_64-linux/etc .
mkdir -p /GUB/lib
ln -sf /GUB/x86_64-linux/usr/bin/true /GUB/lib/ld-linux.so.2
fakeroot -s fakeroot.save fakechroot chroot /GUB
fakechroot chroot /GUB
cd /dev && ./MAKEDEV standard
bash-3.2$ cp -pv /bin/true /lib/ld-linux.so.2
`/bin/true' -> `/lib/ld-linux.so.2'
bash-3.2$ ldd /bin/x86_64-linux-gcc
linux-vdso.so.1 => (0x00007fffdc7fe000)
libfakechroot.so => /usr/lib/fakechroot/libfakechroot.so (0x00007f66d41fa000)
libc.so.6 => /lib/libc.so.6 (0x00007f66d3e88000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f66d3c84000)
/lib64/ld-linux-x86-64.so.2 (0x00007f66d4409000)
/GUB/x86_64-linux/usr/bin/fakechroot chroot /GUB
/GUB/x86_64-linux/usr/bin/fakeroot -s fakeroot.save /GUB/x86_64-linux/usr/bin/fakechroot chroot /GUB
bash-3.2# ldd /bin/x86_64-linux-gcc
linux-vdso.so.1 => (0x00007fffd39ff000)
libfakechroot.so => /GUB/x86_64-linux/usr/lib/fakechroot/libfakechroot.so (0x00007fa0cb436000)
libfakeroot.so => /GUB/x86_64-linux/usr/lib/libfakeroot.so (0x00007fa0cb22e000)
libc.so.6 => /lib/libc.so.6 (0x00007fa0caebc000)
libdl.so.2 => /lib/libdl.so.2 (0x00007fa0cacb8000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa0cb646000)
author | Jan Nieuwenhuizen <janneke@gnu.org> |
---|---|
date | Thu, 23 Jul 2009 12:56:51 +0200 |
parents | a9e728eddb12 |
children | 2329bfeb44c9 |
files | gub/gup.py gub/specs/fakechroot.py gub/specs/fakeroot-ng.py gub/specs/fakeroot.py gub/specs/findutils.py gub/specs/make.py gub/specs/makedev.py gub/specs/sed.py gub/specs/tar.py patches/fakeroot-ng-linux-2.4.patch patches/fakeroot-ng-srcdir.patch |
diffstat | 11 files changed, 439 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/gub/gup.py Thu Jul 23 10:40:30 2009 +0200 +++ b/gub/gup.py Thu Jul 23 12:56:51 2009 +0200 @@ -142,7 +142,8 @@ ),], '%(root)s/%(file)s' % locals (), must_succeed=('tools/root' not in self.root - and 'cross' not in dir)) + and 'cross' not in dir + and '/GUB' not in self.root)) def pkgconfig_pc_fixup (self, root, file, prefix_dir): # avoid using libs from build platform, by adding
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gub/specs/fakechroot.py Thu Jul 23 12:56:51 2009 +0200 @@ -0,0 +1,13 @@ +from gub import tools + +class Fakechroot__tools (tools.AutoBuild): + source = 'http://ftp.debian.nl/debian/pool/main/f/fakechroot/fakechroot_2.9.orig.tar.gz' + def _get_build_dependencies (self): + return ['libtool'] + def configure_command (self): + return (tools.AutoBuild.configure_command (self) + + ''' LDFLAGS='-L%(system_prefix)s/lib -ldl' ''' + + ' CC=%(system_prefix)s/bin/%(toolchain_prefix)sgcc' + + ' CCLD=%(system_prefix)s/bin/%(toolchain_prefix)sgcc' + + ' CXX=%(system_prefix)s/bin/%(toolchain_prefix)sg++' + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gub/specs/fakeroot-ng.py Thu Jul 23 12:56:51 2009 +0200 @@ -0,0 +1,14 @@ +from gub import tools + +class Fakeroot_ng__tools (tools.AutoBuild): + source = 'http://ftp.debian.nl/debian/pool/main/f/fakeroot-ng/fakeroot-ng_0.16.orig.tar.gz' + patches = ['fakeroot-ng-srcdir.patch', 'fakeroot-ng-linux-2.4.patch'] + def configure_command (self): + return (tools.AutoBuild.configure_command (self) + + ' CFLAGS=-I%(builddir)s' + + ' CC=%(system_prefix)s/bin/%(toolchain_prefix)sgcc' + + ' CXX=%(system_prefix)s/bin/%(toolchain_prefix)sg++' + ) + def configure (self): + self.shadow () + tools.AutoBuild.configure (self)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gub/specs/fakeroot.py Thu Jul 23 12:56:51 2009 +0200 @@ -0,0 +1,13 @@ +from gub import tools + +class Fakeroot__tools (tools.AutoBuild): + source = 'http://ftp.debian.nl/debian/pool/main/f/fakeroot/fakeroot_1.5.10.tar.gz' + def _get_build_dependencies (self): + return ['libtool'] + def configure_command (self): + return (tools.AutoBuild.configure_command (self) + + ''' LDFLAGS='-L%(system_prefix)s/lib -ldl' ''' + + ' CC=%(system_prefix)s/bin/%(toolchain_prefix)sgcc' + + ' CCLD=%(system_prefix)s/bin/%(toolchain_prefix)sgcc' + + ' CXX=%(system_prefix)s/bin/%(toolchain_prefix)sg++' + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gub/specs/findutils.py Thu Jul 23 12:56:51 2009 +0200 @@ -0,0 +1,4 @@ +from gub import target as tools + +class Findutils__tools (tools.AutoBuild): + source = 'http://ftp.gnu.org/pub/gnu/findutils/findutils-4.4.2.tar.gz'
--- a/gub/specs/make.py Thu Jul 23 10:40:30 2009 +0200 +++ b/gub/specs/make.py Thu Jul 23 12:56:51 2009 +0200 @@ -1,5 +1,6 @@ from gub import misc -from gub import tools +#from gub import tools +from gub import target as tools class Make_make__tools (tools.AutoBuild): source = 'ftp://ftp.gnu.org/pub/gnu/make/make-3.81.tar.gz'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gub/specs/makedev.py Thu Jul 23 12:56:51 2009 +0200 @@ -0,0 +1,7 @@ +from gub import tools + +class Makedev__tools (tools.MakeBuild): + source = 'http://ftp.debian.nl/debian/pool/main/m/makedev/makedev_3.3.8.2.orig.tar.gz' + def install_command (self): + return '''make %(makeflags)s DESTDIR=%(install_root)s/%(system_root)s install''' +
--- a/gub/specs/sed.py Thu Jul 23 10:40:30 2009 +0200 +++ b/gub/specs/sed.py Thu Jul 23 12:56:51 2009 +0200 @@ -1,4 +1,4 @@ -from gub import tools +from gub import target as tools class Sed__tools (tools.AutoBuild): source = 'ftp://ftp.gnu.org/pub/gnu/sed/sed-4.1.5.tar.gz'
--- a/gub/specs/tar.py Thu Jul 23 10:40:30 2009 +0200 +++ b/gub/specs/tar.py Thu Jul 23 12:56:51 2009 +0200 @@ -1,4 +1,4 @@ -from gub import tools +from gub import target as tools class Tar__tools (tools.AutoBuild): source = 'ftp://ftp.gnu.org/pub/gnu/tar/tar-1.20.tar.gz'
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/fakeroot-ng-linux-2.4.patch Thu Jul 23 12:56:51 2009 +0200 @@ -0,0 +1,367 @@ +--- fakeroot-ng-0.16.orig/arch/linux/x86_64/platform.c.orig 2009-07-23 11:02:30.418385068 +0200 ++++ fakeroot-ng-0.16.orig/arch/linux/x86_64/platform.c 2009-07-23 11:06:33.586021194 +0200 +@@ -224,8 +224,16 @@ static int syscall_32_to_64[]={ + __NR_rt_sigtimedwait, /* 177 */ + __NR_rt_sigqueueinfo, /* 178 */ + __NR_rt_sigsuspend, /* 179 */ ++#ifdef LINUX_2_5 + __NR_pread64, /* 180 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_pwrite64, /* 181 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ + __NR_chown, /* 182 */ + __NR_getcwd, /* 183 */ + __NR_capget, /* 184 */ +@@ -294,74 +302,302 @@ static int syscall_32_to_64[]={ + __NR_io_getevents, /* 247 */ + __NR_io_submit, /* 248 */ + __NR_io_cancel, /* 249 */ ++#ifdef LINUX_2_5 + __NR_fadvise64, /* 250 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ + -1, /* 251 is available for reuse (was briefly sys_set_zone_reclaim) */ ++#ifdef LINUX_2_5 + __NR_exit_group, /* 252 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ + __NR_lookup_dcookie, /* 253 */ + __NR_epoll_create, /* 254 */ + __NR_epoll_ctl, /* 255 */ + __NR_epoll_wait, /* 256 */ + __NR_remap_file_pages, /* 257 */ ++#ifdef LINUX_2_5 + __NR_set_tid_address, /* 258 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_timer_create, /* 259 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_timer_settime, /* 260 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_timer_gettime, /* 261 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_timer_getoverrun, /* 262 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_timer_delete, /* 263 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_clock_settime, /* 264 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_clock_gettime, /* 265 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_clock_getres, /* 266 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_clock_nanosleep, /* 267 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ + -1, /* statfs64, 268 */ + -1, /* fstatfs64, 269 */ ++#ifdef LINUX_2_5 + __NR_tgkill, /* 270 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_utimes, /* 271 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ + -1, /* fadvise64_64, 272 */ ++#ifdef LINUX_2_5 + __NR_vserver, /* 273 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_mbind, /* 274 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_get_mempolicy, /* 275 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_set_mempolicy, /* 276 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_mq_open, /* 277 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_mq_unlink, /* 278 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_mq_timedsend, /* 279 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_mq_timedreceive, /* 280 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_mq_notify, /* 281 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_mq_getsetattr, /* 282 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_kexec_load, /* 283 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_waitid, /* 284 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ + -1, /* __NR_sys_setaltroot 285 */ ++#ifdef LINUX_2_5 + __NR_add_key, /* 286 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_request_key, /* 287 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_keyctl, /* 288 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_ioprio_set, /* 289 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_ioprio_get, /* 290 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_inotify_init, /* 291 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_inotify_add_watch, /* 292 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_inotify_rm_watch, /* 293 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_migrate_pages, /* 294 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_openat, /* 295 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_mkdirat, /* 296 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_mknodat, /* 297 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_fchownat, /* 298 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_futimesat, /* 299 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ + SYS_fstatat64, /* 300 */ ++#ifdef LINUX_2_5 + __NR_unlinkat, /* 301 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_renameat, /* 302 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_linkat, /* 303 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_symlinkat, /* 304 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_readlinkat, /* 305 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_fchmodat, /* 306 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_faccessat, /* 307 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_pselect6, /* 308 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_ppoll, /* 309 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_unshare, /* 310 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_set_robust_list, /* 311 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_get_robust_list, /* 312 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_splice, /* 313 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_sync_file_range, /* 314 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_tee, /* 315 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_vmsplice, /* 316 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ ++#ifdef LINUX_2_5 + __NR_move_pages, /* 317 */ ++#else /* !LINUX_2_5 */ ++ -1, ++#endif /* !LINUX_2_5 */ + -1, /* getcpu, 318 */ + -1, /* epoll_pwait, 319 */ + -1, /* utimensat, 320 */ +--- fakeroot-ng-0.16.orig/arch/linux/os.c~ 2009-06-23 19:25:42.000000000 +0200 ++++ fakeroot-ng-0.16.orig/arch/linux/os.c 2009-07-23 11:15:26.034467872 +0200 +@@ -36,6 +36,30 @@ + #include "../platform.h" + #include "os.h" + ++#ifndef PTRACE_GETEVENTMSG ++#define PTRACE_GETEVENTMSG 0x4201 ++#endif ++ ++#ifndef PTRACE_GETSIGINFO ++#define PTRACE_GETSIGINFO 0x4202 ++#endif ++ ++#ifndef PTRACE_SETSIGINFO ++#define PTRACE_SETSIGINFO 0x4203 ++#endif ++ ++#ifndef PTRACE_EVENT_FORK ++#define PTRACE_EVENT_FORK 1 ++#endif ++ ++#ifndef PTRACE_EVENT_VFORK ++#define PTRACE_EVENT_VFORK 2 ++#endif ++ ++#ifndef PTRACE_EVENT_CLONE ++#define PTRACE_EVENT_CLONE 3 ++#endif ++ + int ptlib_linux_continue( int request, pid_t pid, int signal ) + { + return ptrace( request, pid, 0, signal ); +--- fakeroot-ng-0.16.orig/parent.cpp~ 2009-06-23 19:25:42.000000000 +0200 ++++ fakeroot-ng-0.16.orig/parent.cpp 2009-07-23 11:17:09.759327981 +0200 +@@ -205,7 +205,9 @@ static void init_handlers() + syscalls[SYS_faccessat]=syscall_hook(sys_generic_chroot_at_link4, "faccessat"); + #endif + syscalls[SYS_utime]=syscall_hook(sys_generic_chroot_support_param1, "utime"); ++#if defined(SYS_utimes) + syscalls[SYS_utimes]=syscall_hook(sys_generic_chroot_support_param1, "utimes"); ++#endif + #ifdef SYS_setxattr + syscalls[SYS_setxattr]=syscall_hook(sys_generic_chroot_support_param1, "setxattr"); + syscalls[SYS_getxattr]=syscall_hook(sys_generic_chroot_support_param1, "getxattr");
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/fakeroot-ng-srcdir.patch Thu Jul 23 12:56:51 2009 +0200 @@ -0,0 +1,15 @@ +--- fakeroot-ng-0.16.orig/arch/linux/Makefile.template.in~ 2008-08-20 11:19:40.000000000 +0200 ++++ fakeroot-ng-0.16.orig/arch/linux/Makefile.template.in 2009-07-23 10:25:30.595354639 +0200 +@@ -19,10 +19,8 @@ RANLIB = @RANLIB@ + target_cpu = @target_cpu@ + target_os = @target_os@ + +-# Because we are extracted by configure one directory above the one from which we are included, +-# manually add a "directory up" +-top_builddir = ../@top_builddir@ +-top_srcdir = ../@top_srcdir@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ + + %.lo: %.c $(DEPDIR)/stamp + $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) \