Codebase list libmawk / upstream/1.0.0 doc / portability.html
upstream/1.0.0

Tree @upstream/1.0.0 (Download .tar.gz)

portability.html @upstream/1.0.0

b761e9e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<HTML>
<BODY>
	<H1> Portability with scconfig </H1>

	Libmawk is configured using an embedded copy of scconfig. In a distribution
	tarball, it's a snapshot of scconfig; in an svn repository it is an
	svn external, which guarantees libmawk is using the latest version
	of scconfig.
	<P>
	Scconfig is a self-contained project configuration tool which depends
	only on Make and an ANSI (C89) C compiler. Scconfig can test different
	things on a system, often by compiling and running test programs. Besides
	saving test results in a text file, it can also generate text files like
	Makefiles or include files with content depending on those test results.
	<P>
	There are artificial limits on portability tho. While in theory it is
	possible to scretch the system so that it really works on all operating
	systems ever existed, or at least on all UNIX-like systems, it is not the
	goal. This decision is a trade-off between portability and maintainability.
	Also between portability and code size (or bloat). The artificial limits are:
	<UL>
		<LI> a C compiler that fully supports ANSI (C89) C is required
		<LI> make supporting traditional Makefiles is required
		<LI> no efforts for systems older than 80s UNIX systems; for example libmawk depends on pipe(2), and if it is missing, some of the functionality will be missing
		<LI> mawk had support for DOS - this is removed, because
			<UL>
				<LI> it was already marked as somewhat obsolete or at least untested in version 1.3.3, which is the base for libmawk; documentation suggested users should use an older version of mawk on DOS
				<LI> since DOS poses drastic limitation on memory, and mawk seemed to be a memory hog, it is hard to believe someone would actually write an application that would share memory with libmawk and still do something useful - and after all, the purpose of libmawk is exactly embedding awk in applications
				<LI> too many #ifdefs scattered the code for supporting DOS
			</UL>
	</UL>
	<P>
	Libmawk 0.9.7 is reported to configure and compile on the
	following systems:
	<TABLE border=1>
		<TR><TD> system           <TD> compiles
		                          <BR> out of
		                          <BR> the box  <TD> FPE problems <TD> awklib<BR> test <TD> binary save/load<BR> save/load
		<TR><TD>[i386] GNU/Linux  <TD> yes      <TD> no           <TD> ok              <TD> ok
		<TR><TD>[amd64] GNU/Linux <TD> yes      <TD> no           <TD> ok              <TD> ok
		<TR><TD>[i386] Minix      <TD>          <TD>              <TD>                 <TD>   
		<TR><TD>[i386] NetBSD 4.0 <TD> yes      <TD> no           <TD> ok              <TD> ok
		<TR><TD>[i386] open
		        solaris 5.11      <TD>          <TD>              <TD>                 <TD>   
		<TR><TD>[i386] OpenBSD 5.0<TD> yes      <TD> no           <TD> ok              <TD> ok
		<TR><TD>[i386] FreeBSD 9.0<TD> yes      <TD> no           <TD> ok              <TD> ok
		<TR><TD>[IP22] IRIX 5.3   <TD> no       <TD> minor        <TD>                 <TD> doesn't work
		<TR><TD>[i386] Dragonfly
		        BSD 2.10          <TD> yes      <TD> no           <TD> ok              <TD> ok

	</table>


	<P>
	Libmawk 0.9.6 is reported to configure and compile on the
	following systems:
	<TABLE border=1>
		<TR><TD> system         <TD> compiles
		                        <BR> out of
		                        <BR> the box  <TD> FPE problems <TD> awklib<BR> test <TD> binary save/load<BR> save/load
		<TR><TD>i386 GNU/Linux  <TD> yes      <TD> no           <TD> ok     <TD> ok
		<TR><TD>amd64 GNU/Linux <TD> yes      <TD> no           <TD> ok     <TD> ok
		<TR><TD>i386 Minix      <TD> yes      <TD> yes          <TD> ok     <TD> ok
		<TR><TD>i386 NetBSD 4.0 <TD> yes      <TD> yes          <TD> ok     <TD> ok
		<TR><TD>i386 open
		        solaris 5.11    <TD> yes      <TD> no           <TD> ok     <TD> ok
		<TR><TD>i386 OpenBSD 5.0<TD> yes      <TD> yes          <TD> ok     <TD> ok
		<TR><TD>i386 FreeBSD 9.0<TD> yes      <TD> yes          <TD> ok     <TD> ok
		<TR><TD>IP22 IRIX 5.3   <TD> yes      <TD> no           <TD> ok     <TD> doesn't work
		<TR><TD>i386 Dragonfly
		        BSD 2.10        <TD> yes      <TD> yes          <TD> ok     <TD> ok

	</table>

</BODY>
</HTML>