[complement-svn] SF.net SVN: complement: [1436] trunk/WWW/explore/Complement
Status: Pre-Alpha
Brought to you by:
complement
From: <com...@us...> - 2006-12-05 18:29:46
|
Revision: 1436 http://svn.sourceforge.net/complement/?rev=1436&view=rev Author: complement Date: 2006-12-05 10:29:42 -0800 (Tue, 05 Dec 2006) Log Message: ----------- update documentation: build system, announce, current state of project, requirements; remove garbage Modified Paths: -------------- trunk/WWW/explore/Complement/Content.shtml trunk/WWW/explore/Complement/Requirements.shtml trunk/WWW/explore/Complement/index.shtml Added Paths: ----------- trunk/WWW/explore/Complement/BuildSystem.shtml trunk/WWW/explore/Complement/ContentTech.shtml trunk/WWW/explore/Complement/Technical.shtml trunk/WWW/explore/Complement/compare.pdf trunk/WWW/explore/Complement/head-tech.shtml Removed Paths: ------------- trunk/WWW/explore/Complement/.cvsignore trunk/WWW/explore/Complement/Content-string.shtml trunk/WWW/explore/Complement/head-string.shtml Deleted: trunk/WWW/explore/Complement/.cvsignore =================================================================== --- trunk/WWW/explore/Complement/.cvsignore 2006-12-05 15:38:09 UTC (rev 1435) +++ trunk/WWW/explore/Complement/.cvsignore 2006-12-05 18:29:42 UTC (rev 1436) @@ -1,10 +0,0 @@ -.xvpics -prog.xcf -prog.jpg -Co1.xcf -Co2.xcf -Co-yg1.png -Co-yg1.jpg -Co-ys1.jpg -Co-ydg1.jpg -sample.css Added: trunk/WWW/explore/Complement/BuildSystem.shtml =================================================================== --- trunk/WWW/explore/Complement/BuildSystem.shtml (rev 0) +++ trunk/WWW/explore/Complement/BuildSystem.shtml 2006-12-05 18:29:42 UTC (rev 1436) @@ -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: 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/Content-string.shtml =================================================================== --- trunk/WWW/explore/Complement/Content-string.shtml 2006-12-05 15:38:09 UTC (rev 1435) +++ trunk/WWW/explore/Complement/Content-string.shtml 2006-12-05 18:29:42 UTC (rev 1436) @@ -1,8 +0,0 @@ -<!-- Time-stamp: <03/10/10 09:02:43 ptr> --> -<!-- $Id$ --> -<div class="nodecor"> -<a href="index.shtml">Complement Home</a><br> -<a href="compare.pdf">Comparison of Strings Implementations in C++ language (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> -</div> Modified: trunk/WWW/explore/Complement/Content.shtml =================================================================== --- trunk/WWW/explore/Complement/Content.shtml 2006-12-05 15:38:09 UTC (rev 1435) +++ trunk/WWW/explore/Complement/Content.shtml 2006-12-05 18:29:42 UTC (rev 1436) @@ -1,7 +1,7 @@ <!-- Time-stamp: <03/06/29 16:07:20 ptr> --> -<!-- $Id$ --> <div class="nodecor"> <a href="index.shtml">Home</a><br> +<a href="Technical.shtml">Architecture, specifications,<br> technical descriptions</a><br> <a href="Requirements.shtml">Requirements</a><br> <a href="Related.shtml">Related issues</a><br> <a href="Download.shtml">Download</a><br> Added: trunk/WWW/explore/Complement/ContentTech.shtml =================================================================== --- trunk/WWW/explore/Complement/ContentTech.shtml (rev 0) +++ trunk/WWW/explore/Complement/ContentTech.shtml 2006-12-05 18:29:42 UTC (rev 1436) @@ -0,0 +1,9 @@ +<!-- 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="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> +</div> +<!-- Created: Mon Oct 7 17:32:53 MSD 2002 --> Modified: trunk/WWW/explore/Complement/Requirements.shtml =================================================================== --- trunk/WWW/explore/Complement/Requirements.shtml 2006-12-05 15:38:09 UTC (rev 1435) +++ trunk/WWW/explore/Complement/Requirements.shtml 2006-12-05 18:29:42 UTC (rev 1436) @@ -1,7 +1,6 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!-- Time-stamp: <03/05/04 21:08:11 ptr> --> -<!-- $Id$ --> <html> <head> @@ -18,7 +17,46 @@ <img src="img/jpg/c++.jpg"> </div> <div class="main"> - <h2 class="lheader">Platforms and Compilers</h2> + <h2 class="lheader">About portability</h2> + <p>Project was started as cross-platform with two main target platforms: few *nixes and Windows. + But now I lost interest to Windows. Of cause, I don't remove code for Windows + specially, but I don't check code on Windows platform and don't worry about Windows when writing new code + during long time. But margine of code is enough, so this support may be added, + if somebody would want use this project under Redmond's OS. + </p> + + <h2 class="lheader">Platforms and Compilers, current state</h2> + <p>My primary platform is Linux, but I made few efforts to suport FreeBSD. + </p> + + <p>Well, in code I mentioned NetBSD and OpenBSD, but due to restrictions in + threads implementation on this platforms, I'm expect problems here. + </p> + + <p>Really, I don't see blocking problems to use libraries from this project + on any POSIX-compliant OS, that has good threads implementation. + </p> + + <p>The same words applicable to compilers: now I use gcc 4.x, but 3.4 enough too + or any other compiler, that implement modern C++ (near ISO/IEC 14882:2003 + standard). + </p> + + <p>Other useful tools are not beyond the normal POSIX system tools, except Make: + I'm expect GNU make 3.80 or better. Not too strong requirement for *nixes. + </p> + + <p>In the past Complement work only with <a href="http://stlport.sourceforge.net">STLport</a> STL implementation. Now + it may use any modern STL (libstdc++ in particular). + </p> + + <p>Unit tests use <a href="http://www.boost.org/libs/test/doc/components/utf/">Boost Unit Test Framework</a>. + </p> + + <h2 class="lheader">Platforms and Compilers, historical</h2> + + <p>Really + </p> <p> Libraries worked with following platforms and C++ compilers: </p> @@ -45,7 +83,7 @@ </table> </center> - <h2 class="lheader">Other requirements</h2> + <h2 class="lheader">Other requirements, historical</h2> <ul> <li>GNU make v. 3.79.1 (for Unix-like platforms);</li> @@ -55,7 +93,7 @@ and early 3.x releases; 2.96, that shipout with RedHat, IMHO isn't good choice too); </li> - <li><a href="http://www.stlport.org">STLport</a>---STL implementation. + <li><a href="http://stlport.sourceforge.net">STLport</a>---STL implementation. Very efficient, very portable STL implementation. Instead of have troubles with different (and sometimes ugly) STL implementations that come with C++ compilers, I use STLport. Added: trunk/WWW/explore/Complement/Technical.shtml =================================================================== --- trunk/WWW/explore/Complement/Technical.shtml (rev 0) +++ trunk/WWW/explore/Complement/Technical.shtml 2006-12-05 18:29:42 UTC (rev 1436) @@ -0,0 +1,26 @@ +<!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">Technology</h2> +</div> +<!--#include file="foot.shtml" --> +<!-- Created: Mon Oct 7 16:33:17 MSD 2002 --> + </body> +</html> + Added: trunk/WWW/explore/Complement/compare.pdf =================================================================== (Binary files differ) Property changes on: trunk/WWW/explore/Complement/compare.pdf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Deleted: trunk/WWW/explore/Complement/head-string.shtml =================================================================== --- trunk/WWW/explore/Complement/head-string.shtml 2006-12-05 15:38:09 UTC (rev 1435) +++ trunk/WWW/explore/Complement/head-string.shtml 2006-12-05 18:29:42 UTC (rev 1436) @@ -1,10 +0,0 @@ -<!-- Time-stamp: <03/10/07 15:48:03 ptr> --> -<!-- $Id$ --> - -<div class="logo1 margines20"><img src="img/jpg/Co-yw1.jpg"></div> -<div class="rightfloat"> - <div class="logo2 margines20"><!-- <img src="img/png/ermine.png"> --></div> - <div class="toc"> -<!--#include file="Content-string.shtml" --> - </div> <!-- toc --> -</div> <!-- rightfloat --> Added: trunk/WWW/explore/Complement/head-tech.shtml =================================================================== --- trunk/WWW/explore/Complement/head-tech.shtml (rev 0) +++ trunk/WWW/explore/Complement/head-tech.shtml 2006-12-05 18:29:42 UTC (rev 1436) @@ -0,0 +1,9 @@ +<!-- Time-stamp: <03/05/04 16:12:38 ptr> --> + +<div class="logo1 margines20"><img src="img/jpg/Co-yw1.jpg"></div> +<div class="rightfloat"> + <div class="logo2 margines20"><!-- <img src="img/png/ermine.png"> --></div> + <div class="toc"> +<!--#include file="ContentTech.shtml" --> + </div> <!-- toc --> +</div> <!-- rightfloat --> Modified: trunk/WWW/explore/Complement/index.shtml =================================================================== --- trunk/WWW/explore/Complement/index.shtml 2006-12-05 15:38:09 UTC (rev 1435) +++ trunk/WWW/explore/Complement/index.shtml 2006-12-05 18:29:42 UTC (rev 1436) @@ -50,35 +50,35 @@ Generic interface for interprocess communication via sockets. Sockios programming interface unified with C++ standard (ISO/IEC 14882) IO streams interface. Provide easy and evident (for C++ programmer, - who understand STL) interface for TCP socket: framework both for client - and server parts. + who understand STL) interface for TCP sockets: framework both for client + and server parts. Generic server implemented with use of <b>xmt</b> library. </dd> <dt>StEM</dt> <dd> - StEM is finite state machine, released as set of objects with - state and interaction via events. It used as framework for - asynchronous events delivery and processing. - Every node has a stack of states and may react on incoming - events (depends upon event processing handlers and state). - Behaviour of object may vary during it's life time. - Communication - with events in StEM framework possible as within single process, - as between different processes (wold-wide too), over TCP - (framework provided by libsockios). In contrast to similar frameworks, - to process StEM-designed code you need only C++ compiler. + StEM is a C++ framework to build application as finite state, + event-driven machine. Machine correspond to set of independent objects, + each with own state and state history, that may interact via events. + Objects may be situated in different processes (that may be running on different + hosts, connected via TCP network). Framework use asynchronous events delivery + and processing.<br><br> + + Every node (object) has a stack of states and may react on incoming + events (depends upon event processing handlers, state and states history). + Behaviour of object may vary during it's life time (via change of it state).<br><br> + + StEM follow code reuse principles: it use <b>xmt</b> and <b>sockios</b> internal + and external communication.<br><br> + + In contrast to similar frameworks, + to build application based on StEM framework, you need only C++ compiler. </dd> </dl> <h2 class="lheader">Present State of Complement Project</h2> <p> - Active development for Unix-like systems - (now Linux, some time ago it was Solaris, HP-UX, Windows). - Supported compilers---all modern gcc (begin from 2.95.3, but better - 3.4.x or 4.x). Work well with STLport 5.x. - Different versions and parts of this system was used on Windows - (95, 98, NT, 2000, XP) with VC++ 5 SP3, HP-UX 11.00 (HP aCC A.03.13), - Solaris (SunSoft CC 5.2), FreeBSD, Linux (glibc and uClibc). + Since 1996 few projects was implemented with this libraries (it's not frozen, it under development). + See <a href="Requirements.shtml">Requirements</a>. </p> </div> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |