[complement-svn] SF.net SVN: complement: [1437] trunk/WWW/explore/Complement
Status: Pre-Alpha
Brought to you by:
complement
From: <com...@us...> - 2006-12-06 12:30:44
|
Revision: 1437 http://svn.sourceforge.net/complement/?rev=1437&view=rev Author: complement Date: 2006-12-06 04:30:41 -0800 (Wed, 06 Dec 2006) Log Message: ----------- few renaming; start make description; update CMS info, ref to project's page at SF Modified Paths: -------------- trunk/WWW/explore/Complement/Content.shtml trunk/WWW/explore/Complement/ContentTech.shtml Added Paths: ----------- trunk/WWW/explore/Complement/Anti-autotools.shtml trunk/WWW/explore/Complement/MakeTags.shtml trunk/WWW/explore/Complement/SVN.shtml Removed Paths: ------------- trunk/WWW/explore/Complement/BuildSystem.shtml trunk/WWW/explore/Complement/CVS.shtml Copied: trunk/WWW/explore/Complement/Anti-autotools.shtml (from rev 1436, trunk/WWW/explore/Complement/BuildSystem.shtml) =================================================================== --- trunk/WWW/explore/Complement/Anti-autotools.shtml (rev 0) +++ trunk/WWW/explore/Complement/Anti-autotools.shtml 2006-12-06 12:30:41 UTC (rev 1437) @@ -0,0 +1,183 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<!-- Time-stamp: <03/10/07 15:50:35 ptr> --> + +<html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="main.css" media="screen" title="general"> + <link rel="stylesheet" type="text/css" href="decor.css" media="screen" title="general"> + <link rel="stylesheet" type="text/css" href="float.css" media="screen" title="general"> + <title>Complement: Anti-autotools</title> + </head> + + <body> +<!--#include file="head-tech.shtml" --> +<div class="toppic"> +<img src="img/jpg/apropos.jpg"> +</div> +<div class="main"> + <h2 class="lheader">Why I hate autotools</h2> + <dl> + <dt>Myth 1. Autotools isolate programmer from platform software.</dt> + <dd> + Do you ever try to build some real project with autotools (with ./configure) + with some compiler different from gcc? I do. I spent much more time to + say what compiler name I need, what options I need, what options I don't + to see, etc. etc. then for code portability itself! I.e. I spent more + time to boring tools that was intended for screen portabilty problems.<br> + + This problem even worse. Autotools incompatible between versions of autotools. + When automake installed on you system too old for one project, it too new + for another. It's a big luck when only warning happens. + </dd> + + <dt>Myth 2. Autotools help to write portable code.</dt> + + <dd> + The case when platform A has function with name foo, platform B has function with + name boo, that implement the same paradigm as foo on platform A. Programmer + should worry about paradigm difference youself, autotools can't help too much here. + Really I can say: 'my code work on platform A' only if I at least compile + it for platform A. Or at least check the difference between platform A and platform + B, if I know what happens on platform B. Autotools don't magically provide + workarounds for platform A. I, as programmer, should know about platform A speciality, and should + worry about it. + </dd> + + <dt>Myth 3. Autotools provide easy-to-use build system.</dt> + <dd> Well, while you use autotools only to build projects: + +<pre class="ddisplay"> +./configure && make && make install +</pre> + + all fine and you happy. Nice! But if you developer, not all so good: +<pre class="ddisplay"> +autoreconf +... +./configure +... +make +... +Boom! +make clean +... +Boom! +make distclean +... +autoreconf +... +automake +... +./configure +... +make +</pre> + Hmm, I should pass <tt>-DUSE_FEATURE_BOO=2</tt> for program <tt>boo</tt>! +<pre class="ddisplay"> +make distclean; autoreconf && automake && ./configure && make +</pre> + Ufff...<br> + + It very annoying, especially if I know that all this job may be done + within make tool only, without other bloated scripts.<br> + + What about this checks: +<pre class="ddisplay"> +checking for g77... no +checking for f77... no +checking for xlf... no +checking for frt... no +checking for pgf77... no +checking for cf77... no +checking for fort77... no +checking for fl32... no +checking for af77... no +checking for f90... no +checking for xlf90... no +checking for pgf90... no +checking for pghpf... no +checking for epcf90... no +checking for gfortran... no +checking for g95... no +checking for f95... no +checking for fort... no +checking for xlf95... no +checking for ifort... no +checking for ifc... no +checking for efc... no +checking for pgf95... no +checking for lf95... no +checking for ftn... no +checking whether we are using the GNU Fortran 77 compiler... no +</pre> + when I have no fortran code? Note, that this check may be not only annoying, + but block build on insignificant check. + </dd> + </dl> + + Yet another. What you think about pollution by generated file (.o, .la, ...) + in the same place where you source files situated? Can you hide this intermediate + results someware else? I can. Autotools can't. Only with libtool, that + block cross-compilation (it finding native libraries, instead of cross). + + <h2 class="lheader">What instead?</h2> + + <p> + First, let's say that informing about and passing specific configuration options 'configure' + do well. But this not require shell script 700K in size. + </p> + + <p> + Then, we can see that 'make' and friends is very power tool. Just let's allow + do it job well! + </p> + + <p> + You have 'common' flow, i.e. compile object files from C source, link the set of + object files into executable or shared object. And, sometimes, you need original + operations, like generation of C file from some meta-language with some + tool. Build system provide easy suggestion for common tasks, and allow you + do original builds as you want. I.e. build system may worry about transformation + from file.cc to file.o to file.so, take into account dependency and generate + TAGS for emacs. If you don't want here something else, of cause. + </p> + + <p> + As simplest example, I use two files to build <b>xmt</b> library on a wide set of + platforms: + </p> +<pre class="ddisplay"> +# -*- Makefile -*- Time-stamp: <06/11/10 16:23:01 ptr> + +SRCROOT := ../.. + +include Makefile.inc +include ${SRCROOT}/Makefiles/top.mak + +INCLUDES += -I$(SRCROOT)/include +</pre> + <p> + and <tt>Makefile.inc</tt> + </p> +<pre class="ddisplay"> +# -*- Makefile -*- Time-stamp: <06/11/29 01:59:50 ptr> + +LIBNAME = xmt +MAJOR = 1 +MINOR = 9 +PATCH = 3 +SRC_CC = xmt.cc thr_mgr.cc time.cc uid.cc +SRC_C = fl.c +</pre> + <p> + Really first file vary for different compilers (and very different for + Redmond's nmake) but the second (<tt>Makefile.inc</tt>) is one for all. + </p> +</div> +<!--#include file="foot.shtml" --> +<!-- Created: Mon Oct 7 16:33:17 MSD 2002 --> + </body> +</html> + Deleted: trunk/WWW/explore/Complement/BuildSystem.shtml =================================================================== --- trunk/WWW/explore/Complement/BuildSystem.shtml 2006-12-05 18:29:42 UTC (rev 1436) +++ trunk/WWW/explore/Complement/BuildSystem.shtml 2006-12-06 12:30:41 UTC (rev 1437) @@ -1,183 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<!-- Time-stamp: <03/10/07 15:50:35 ptr> --> - -<html> - <head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <link rel="stylesheet" type="text/css" href="main.css" media="screen" title="general"> - <link rel="stylesheet" type="text/css" href="decor.css" media="screen" title="general"> - <link rel="stylesheet" type="text/css" href="float.css" media="screen" title="general"> - <title>Complement: Build System</title> - </head> - - <body> -<!--#include file="head-tech.shtml" --> -<div class="toppic"> -<img src="img/jpg/apropos.jpg"> -</div> -<div class="main"> - <h2 class="lheader">Why I hate autotools</h2> - <dl> - <dt>Myth 1. Autotools isolate programmer from platform software.</dt> - <dd> - Do you ever try to build some real project with autotools (with ./configure) - with some compiler different from gcc? I do. I spent much more time to - say what compiler name I need, what options I need, what options I don't - to see, etc. etc. then for code portability itself! I.e. I spent more - time to boring tools that was intended for screen portabilty problems.<br> - - This problem even worse. Autotools incompatible between versions of autotools. - When automake installed on you system too old for one project, it too new - for another. It's a big luck when only warning happens. - </dd> - - <dt>Myth 2. Autotools help to write portable code.</dt> - - <dd> - The case when platform A has function with name foo, platform B has function with - name boo, that implement the same paradigm as foo on platform A. Programmer - should worry about paradigm difference youself, autotools can't help too much here. - Really I can say: 'my code work on platform A' only if I at least compile - it for platform A. Or at least check the difference between platform A and platform - B, if I know what happens on platform B. Autotools don't magically provide - workarounds for platform A. I, as programmer, should know about platform A speciality, and should - worry about it. - </dd> - - <dt>Myth 3. Autotools provide easy-to-use build system.</dt> - <dd> Well, while you use autotools only to build projects: - -<pre class="ddisplay"> -./configure && make && make install -</pre> - - all fine and you happy. Nice! But if you developer, not all so good: -<pre class="ddisplay"> -autoreconf -... -./configure -... -make -... -Boom! -make clean -... -Boom! -make distclean -... -autoreconf -... -automake -... -./configure -... -make -</pre> - Hmm, I should pass <tt>-DUSE_FEATURE_BOO=2</tt> for program <tt>boo</tt>! -<pre class="ddisplay"> -make distclean; autoreconf && automake && ./configure && make -</pre> - Ufff...<br> - - It very annoying, especially if I know that all this job may be done - within make tool only, without other bloated scripts.<br> - - What about this checks: -<pre class="ddisplay"> -checking for g77... no -checking for f77... no -checking for xlf... no -checking for frt... no -checking for pgf77... no -checking for cf77... no -checking for fort77... no -checking for fl32... no -checking for af77... no -checking for f90... no -checking for xlf90... no -checking for pgf90... no -checking for pghpf... no -checking for epcf90... no -checking for gfortran... no -checking for g95... no -checking for f95... no -checking for fort... no -checking for xlf95... no -checking for ifort... no -checking for ifc... no -checking for efc... no -checking for pgf95... no -checking for lf95... no -checking for ftn... no -checking whether we are using the GNU Fortran 77 compiler... no -</pre> - when I have no fortran code? Note, that this check may be not only annoying, - but block build on insignificant check. - </dd> - </dl> - - Yet another. What you think about pollution by generated file (.o, .la, ...) - in the same place where you source files situated? Can you hide this intermediate - results someware else? I can. Autotools can't. Only with libtool, that - block cross-compilation (it finding native libraries, instead of cross). - - <h2 class="lheader">What instead?</h2> - - <p> - First, let's say that informing about and passing specific configuration options 'configure' - do well. But this not require shell script 700K in size. - </p> - - <p> - Then, we can see that 'make' and friends is very power tool. Just let's allow - do it job well! - </p> - - <p> - You have 'common' flow, i.e. compile object files from C source, link the set of - object files into executable or shared object. And, sometimes, you need original - operations, like generation of C file from some meta-language with some - tool. Build system provide easy suggestion for common tasks, and allow you - do original builds as you want. I.e. build system may worry about transformation - from file.cc to file.o to file.so, take into account dependency and generate - TAGS for emacs. If you don't want here something else, of cause. - </p> - - <p> - As simplest example, I use two files to build <b>xmt</b> library on a wide set of - platforms: - </p> -<pre class="ddisplay"> -# -*- Makefile -*- Time-stamp: <06/11/10 16:23:01 ptr> - -SRCROOT := ../.. - -include Makefile.inc -include ${SRCROOT}/Makefiles/top.mak - -INCLUDES += -I$(SRCROOT)/include -</pre> - <p> - and <tt>Makefile.inc</tt> - </p> -<pre class="ddisplay"> -# -*- Makefile -*- Time-stamp: <06/11/29 01:59:50 ptr> - -LIBNAME = xmt -MAJOR = 1 -MINOR = 9 -PATCH = 3 -SRC_CC = xmt.cc thr_mgr.cc time.cc uid.cc -SRC_C = fl.c -</pre> - <p> - Really first file vary for different compilers (and very different for - Redmond's nmake) but the second (<tt>Makefile.inc</tt>) is one for all. - </p> -</div> -<!--#include file="foot.shtml" --> -<!-- Created: Mon Oct 7 16:33:17 MSD 2002 --> - </body> -</html> - Deleted: trunk/WWW/explore/Complement/CVS.shtml =================================================================== --- trunk/WWW/explore/Complement/CVS.shtml 2006-12-05 18:29:42 UTC (rev 1436) +++ trunk/WWW/explore/Complement/CVS.shtml 2006-12-06 12:30:41 UTC (rev 1437) @@ -1,70 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> - -<!-- Time-stamp: <03/05/04 20:33:15 ptr> --> -<!-- $Id$ --> - -<html> - <head> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> - <link rel="stylesheet" type="text/css" href="main.css" media="screen" title="general"> - <link rel="stylesheet" type="text/css" href="decor.css" media="screen" title="general"> - <link rel="stylesheet" type="text/css" href="float.css" media="screen" title="general"> - <title>Complement: CVS access</title> - </head> - - <body> -<!--#include file="head.shtml" --> -<div class="toppic"> -<img src="img/jpg/cvs.jpg"> -</div> -<div class="main"> -<!-- <h2 class="lheader">CVS access</h2> --> - - <p> - You can read directives for CVS access either - <a href="http://sourceforge.net/cvs/?group_id=63160">on SourceForge page</a> - or below on this page. - </p> - - <h2 class="lheader">Anonymous CVS Access</h2> - - <p> - This project's SourceForge.net CVS repository can be checked out - through anonymous (pserver) CVS with the following instruction set. - When prompted for a password for anonymous, simply press the Enter key. - </p> - - <pre class="ddisplay"> -cvs -d:pserver:ano...@cv...:\ -/cvsroot/complement login - </pre> - - <pre class="ddisplay"> -cvs -z3 -d:pserver:ano...@cv...:\ -/cvsroot/complement co complement - </pre> - - <p> - Updates from within the module's directory do not need the -d parameter. - </p> - - <h2 class="lheader">Developer CVS Access via SSH</h2> - - <p> - Only project developers can access the CVS tree via this method. - SSH (either SSH1 or SSH2) must be installed on your client machine. - Substitute developername with the proper values. - Name of module is 'complement' here. Enter your site password when - prompted. - </p> - - <pre class="ddisplay"> -export CVS_RSH=ssh - -cvs -z3 -d:ext:dev...@cv...:\ -/cvsroot/complement co complement - </pre> -</div> -<!--#include file="foot.shtml" --> - </body> -</html> Modified: trunk/WWW/explore/Complement/Content.shtml =================================================================== --- trunk/WWW/explore/Complement/Content.shtml 2006-12-05 18:29:42 UTC (rev 1436) +++ trunk/WWW/explore/Complement/Content.shtml 2006-12-06 12:30:41 UTC (rev 1437) @@ -5,7 +5,8 @@ <a href="Requirements.shtml">Requirements</a><br> <a href="Related.shtml">Related issues</a><br> <a href="Download.shtml">Download</a><br> -<a href="CVS.shtml">CVS</a><br> +<a href="SVN.shtml">Code repository</a><br> +<a href="http://sourceforge.net/projects/complement">Project's page @ SourceForge</a><br> <a href="History.shtml">Project history</a><br> <a href="Developers.shtml">Developers</a><br> <a href="License.shtml">License</a><br> Modified: trunk/WWW/explore/Complement/ContentTech.shtml =================================================================== --- trunk/WWW/explore/Complement/ContentTech.shtml 2006-12-05 18:29:42 UTC (rev 1436) +++ trunk/WWW/explore/Complement/ContentTech.shtml 2006-12-06 12:30:41 UTC (rev 1437) @@ -1,7 +1,8 @@ <!-- Time-stamp: <03/06/29 16:07:20 ptr> --> <div class="nodecor"> <a href="index.shtml">Home</a><br> -<a href="BuildSystem.shtml">Build system</a><br> +<a href="Anti-autotools.shtml">Anti-autotools</a><br> +<a href="MakeTags.shtml">Make system</a><br> <a href="compare.pdf">Comparison of STL<br>Implementations (PDF)</a><br> <br> <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=63160&type=2" width="125" height="37" border="0" alt="SourceForge.net Logo"></a><br> Added: trunk/WWW/explore/Complement/MakeTags.shtml =================================================================== --- trunk/WWW/explore/Complement/MakeTags.shtml (rev 0) +++ trunk/WWW/explore/Complement/MakeTags.shtml 2006-12-06 12:30:41 UTC (rev 1437) @@ -0,0 +1,139 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<!-- Time-stamp: <03/10/07 15:50:35 ptr> --> + +<html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="main.css" media="screen" title="general"> + <link rel="stylesheet" type="text/css" href="decor.css" media="screen" title="general"> + <link rel="stylesheet" type="text/css" href="float.css" media="screen" title="general"> + <title>Complement: Make Tags</title> + </head> + + <body> +<!--#include file="head-tech.shtml" --> +<div class="toppic"> +<img src="img/jpg/apropos.jpg"> +</div> +<div class="main"> + <h2 class="lheader">Make versions</h2> + <p> + I stop on support on two make variants. Well, really on single + GNU Make + and one naive utility (nmake). + </p> + + <p> + GNU Make is everyware (or can be + everyware) in *NIX world. So I don't have stimulus to play with + another make incarnations (for example, BSD make is very nice, + but GNU Make more common). If GNU Make is present, I expect that + other POSIX utilities (sed, awk, sh, grep, cat, test, ... ) + present too. + </p> + + <p> + To play with compilers from one Redmond's company, you may + use nmake. The makefiles less attached to absolute paths, + and really may be moved from one box to another, in contrast + to MS's project files. Even more, VS's projects are castrated makefiles + that processed by nmake; this process screened by GUI from users. + Nmake is really restricted, and system based on it has less + features and power then GNU make-based. But it work too. + </p> + + <h2 class="lheader">Use-case: application</h2> + +<pre class="ddisplay"> +# -*- Makefile -*- Time-stamp: <06/08/04 10:54:19 ptr> + +SRCROOT := ../../.. +COMPILER_NAME := gcc + +include Makefile.inc +include ${SRCROOT}/Makefiles/top.mak + + +INCLUDES += -I$(SRCROOT)/include -I$(BOOST_INCLUDE_DIR) + +release-shared : LDLIBS = -lxmt -lboost_test_utf +stldbg-shared : LDLIBS = -lxmtstlg -lboost_test_utfstlg +dbg-shared : LDLIBS = -lxmtg -lboost_test_utfg +</pre> + +<pre class="ddisplay"> +# -*- makefile -*- Time-stamp: <04/05/06 18:40:56 ptr> + +PRGNAME = mt_ut +SRC_CC = unit_test.cc timespec.cc mutex_test.cc spinlock_test.cc \ + recursive_mutex.cc join.cc signal-1.cc signal-2.cc flck.cc lfs.cc +</pre> + +<pre class="ddisplay"> +# -*- Makefile -*- Time-stamp: <03/10/17 19:42:29 ptr> + +SRCROOT=..\..\.. +COMPILER_NAME=vc6 + +!include Makefile.inc + +INCLUDES=$(INCLUDES) /I "$(SRCROOT)/include" /I "$(STLPORT_INCLUDE_DIR)" /I "$(BOOST_INCLUDE_DIR)" +DEFS = $(DEFS) /D_STLP_USE_DYNAMIC_LIB + +LDSEARCH=/LIBPATH:"$(CoMT_LIB_DIR)" +LDLIBS = xmt_vc6.lib boost_test_utf_vc6s.lib +!include $(SRCROOT)/Makefiles/nmake/top.mak +</pre> + + <h2 class="lheader">Use-case: library</h2> + +<pre class="ddisplay"> +# -*- Makefile -*- Time-stamp: <06/11/10 16:23:01 ptr> + +SRCROOT := ../.. + +include Makefile.inc +include ${SRCROOT}/Makefiles/top.mak + +INCLUDES += -I$(SRCROOT)/include +</pre> + +<pre class="ddisplay"> +# -*- Makefile -*- Time-stamp: <06/11/29 01:59:50 ptr> + +LIBNAME = xmt +MAJOR = 1 +MINOR = 9 +PATCH = 3 +SRC_CC = xmt.cc thr_mgr.cc time.cc uid.cc +SRC_C = fl.c +</pre> + +<pre class="ddisplay"> +# -*- Makefile -*- Time-stamp: <03/09/28 19:14:05 ptr> + +SRCROOT=..\.. +COMPILER_NAME=vc6 + +!include Makefile.inc + +DEFS = /D_STLP_USE_DYNAMIC_LIB +INCLUDES=$(INCLUDES) /I "$(SRCROOT)/include" /I "$(STLPORT_INCLUDE_DIR)" +OPT_STLDBG = /Zm800 +LDSEARCH=$(LDSEARCH) /LIBPATH:$(STLPORT_LIB_DIR) + +!include $(SRCROOT)/Makefiles/nmake/top.mak +</pre> + + <h2 class="lheader">Global settings: configure again?</h2> + <h2 class="lheader">Build tags</h2> +<pre class="ddisplay"> +</pre> + +</div> +<!--#include file="foot.shtml" --> +<!-- Created: Mon Oct 7 16:33:17 MSD 2002 --> + </body> +</html> + Copied: trunk/WWW/explore/Complement/SVN.shtml (from rev 1365, trunk/WWW/explore/Complement/CVS.shtml) =================================================================== --- trunk/WWW/explore/Complement/SVN.shtml (rev 0) +++ trunk/WWW/explore/Complement/SVN.shtml 2006-12-06 12:30:41 UTC (rev 1437) @@ -0,0 +1,47 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> + +<!-- Time-stamp: <03/05/04 20:33:15 ptr> --> + +<html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <link rel="stylesheet" type="text/css" href="main.css" media="screen" title="general"> + <link rel="stylesheet" type="text/css" href="decor.css" media="screen" title="general"> + <link rel="stylesheet" type="text/css" href="float.css" media="screen" title="general"> + <title>Complement: Code repository access</title> + </head> + + <body> +<!--#include file="head.shtml" --> +<div class="toppic"> +<img src="img/jpg/cvs.jpg"> +</div> +<div class="main"> + <h2 class="lheader">Information on SF</h2> + + <p> + You can read directives for Subversion repository access either + <a href="http://sourceforge.net/svn/?group_id=63160">on SourceForge page</a> + or below on this page. + </p> + + <h2 class="lheader">Anonymous read-only access</h2> + + <p> + Complement's use Subversion CMS. Repository based on SourceForge. + Anonymous read-only commit: + </p> +<pre class="ddisplay"> +svn co https://complement.svn.sourceforge.net/svnroot/complement/trunk/complement \ + complement +</pre> + <p> + To update (from catalog 'complement', if commit was made as described above) + </p> +<pre class="ddisplay"> +svn update +</pre> +</div> +<!--#include file="foot.shtml" --> + </body> +</html> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |