diff options
Diffstat (limited to 'hurd')
-rw-r--r-- | hurd/porting/guidelines.mdwn | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/hurd/porting/guidelines.mdwn b/hurd/porting/guidelines.mdwn index c5dd4891..529a6130 100644 --- a/hurd/porting/guidelines.mdwn +++ b/hurd/porting/guidelines.mdwn @@ -22,8 +22,30 @@ There is a separate page about [[System_API_Limitations]]. You may ask on the [[mailing lists/bug-hurd]] mailing list for details or questions about fixing bugs. +## <a name="GNU build system"> GNU build system </a> -## <a name="autoconf"> Fixing configure.ac/in </a> +For a good overview of the components in the GNU build system, see +<http://en.wikipedia.org/wiki/GNU_build_system> and +<http://www.gnu.org/s/hello/manual/autoconf/index.html>. + +The GNU build system distinguishes between 'build', 'host' and 'target' machines. +The 'build' machine is where compilers are run, the 'host' machine where the package +being built will run, and for cross compiling the 'target' machine, on which the compiler +built will generate code for. + +When using GNU autotools to configure a package config.guess and config.sub from autotools-dev +are used to find out the build machine identity: CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM. +For GNU/Hurd config.guess gives 'i686-unknown-gnu0.3'. Sometimes a quadruple is used +adding KERNEL, e.g. for Linux on an amd64: 'x86_64-unknown-linux-gnu'. config.sub is used to +canonicalize on these triplets, e.g. config.sub i686-gnu gives 'i686-pc-gnu'. + +On Debian systems the build Makefile is debian/rules and some Debian packages will set $host to +'i486-pc-gnu'. This is accomplished with the 'dpkg-architecture -qDEB_HOST_GNU_TYPE' construct +forwarded to configure in debian/rules, e.g. configure --host=$DEB_HOST_GNU_TYPE. +Another way to set $build, $host etc is via the Debian dh_auto_configure script from the debhelper +package which uses the Perl code autoconf.pm to find out these variables. + +## <a name="autoconf"> Fixing configure.{ac,in} </a> The GNU/Hurd (and GNU/kFreeBSD) toolchain is extremely close to the GNU/Linux toolchain. configure.ac thus very often just needs to be fixed by using the same cases as Linux, that is, turn @@ -230,6 +252,10 @@ then be found. Not implemented, packages may be fixed for working around this: use void sighandler(int num) prototype and sa_handler field. +## <a name="SA_NOCLDWAIT"> `SA_NOCLDWAIT` </a> + +Not implemented yet. + ## <a name="SOL_IP"> `SOL_IP` </a> Not implemented yet. |