Download Shareware and Freeware Software for Windows, Linux, Macintosh, PDA

line Home  |  About Us  |  Link To Us  |  FAQ  |  Contact

Serving Software Downloads in 976 Categories, Downloaded 29.990.265 Times

Cons 2.3.0

  Date Added: July 27, 2010  |  Visits: 989


Report Broken Link
Printer Friendly Version

Product Homepage
Download (74 downloads)

Cons is a Software Construction System. Cons is a system for constructing, primarily, software, but is quite different from previous software construction systems. Cons was designed from the ground up to deal easily with the construction of software spread over multiple source directories. Cons makes it easy to create build scripts that are simple, understandable and maintainable. Cons ensures that complex software is easily and accurately reproducible. Cons uses a number of techniques to accomplish all of this. Construction scripts are just Perl scripts, making them both easy to comprehend and very flexible. Global scoping of variables is replaced with an import/export mechanism for sharing information between scripts, significantly improving the readability and maintainability of each script. Construction environments are introduced: these are Perl objects that capture the information required for controlling the build process. Multiple environments are used when different semantics are required for generating products in the build tree. Cons implements automatic dependency analysis and uses this to globally sequence the entire build. Variant builds are easily produced from a single source tree. Intelligent build subsetting is possible, when working on localized changes. Overrides can be setup to easily override build instructions without modifying any scripts. MD5 cryptographic signatures are associated with derived files, and are used to accurately determine whether a given file needs to be rebuilt. While offering all of the above, and more, Cons remains simple and easy to use. This will, hopefully, become clear as you read the remainder of this document. Why Cons? Why not Make? Cons is a make replacement. In the following paragraphs, we look at a few of the undesirable characteristics of make--and typical build environments based on make--that motivated the development of Cons. Build complexity Traditional make-based systems of any size tend to become quite complex. The original make utility and its derivatives have contributed to this tendency in a number of ways. Make is not good at dealing with systems that are spread over multiple directories. Various work-arounds are used to overcome this difficulty; the usual choice is for make to invoke itself recursively for each sub-directory of a build. This leads to complicated code, in which it is often unclear how a variable is set, or what effect the setting of a variable will have on the build as a whole. The make scripting language has gradually been extended to provide more possibilities, but these have largely served to clutter an already overextended language. Often, builds are done in multiple passes in order to provide appropriate products from one directory to another directory. This represents a further increase in build complexity. Build reproducibility The bane of all makes has always been the correct handling of dependencies. Most often, an attempt is made to do a reasonable job of dependencies within a single directory, but no serious attempt is made to do the job between directories. Even when dependencies are working correctly, makes reliance on a simple time stamp comparison to determine whether a file is out of date with respect to its dependents is not, in general, adequate for determining when a file should be rederived. If an external library, for example, is rebuilt and then ``snapped into place, the timestamps on its newly created files may well be earlier than the last local build, since it was built before it became visible. Variant builds Make provides only limited facilities for handling variant builds. With the proliferation of hardware platforms and the need for debuggable vs. optimized code, the ability to easily create these variants is essential. More importantly, if variants are created, it is important to either be able to separate the variants or to be able to reproduce the original or variant at will. With make it is very difficult to separate the builds into multiple build directories, separate from the source. And if this technique isnt used, its also virtually impossible to guarantee at any given time which variant is present in the tree, without resorting to a complete rebuild. Repositories Make provides only limited support for building software from code that exists in a central repository directory structure. The VPATH feature of GNU make (and some other make implementations) is intended to provide this, but doesnt work as expected: it changes the path of target file to the VPATH name too early in its analysis, and therefore searches for all dependencies in the VPATH directory. To ensure correct development builds, it is important to be able to create a file in a local build directory and have any files in a code repository (a VPATH directory, in make terms) that depend on the local file get rebuilt properly. This isnt possible with VPATH, without coding a lot of complex repository knowledge directly into the makefiles..

Requirements: No special requirements
Platforms: Linux
Keyword: Build Builds Cons Construction Directory Libraries Programming Software Software Construction System Vpath
Users rating: 0/10

License: Freeware Size: 235.52 KB
Libraries  -  Bio::MAGE::Protocol::Software 20020902.6
Bio::MAGE::Protocol::Software - Software represents the software used. SYNOPSIS use Bio::MAGE::Protocol::Software; # creating an empty instance my $software = Bio::MAGE::Protocol::Software->new(); # creating an already populated instance...
460.8 KB  
Audio Tools  -  BasicSynth for Linux 1.5
BasicSynth is a software sound synthesis system written in C++. It includes C++ classes implementing a variety of signal generators, processors, synthesis instruments and score processing, command line and GUI synthesizers built with the libraries.
7.83 MB  
Development Tools  -  Aegis 4.23
Aegis is a transaction-based software configuration management system. It provides a framework within which a team of developers may work on many changes to a program independently, and Aegis coordinates integrating these changes back into the...
Utilities  -  Argus Monitoring System 3.5
Argus Monitoring System software is a system and network monitoring application. It will monitor nearly anything you ask it to monitor (TCP + UDP applications, IP connectivity, SNMP OIDS, Programs, Databases, etc). It presents a nice clean,...
358.4 KB  
Libraries  -  FindBin 5.8.8
FindBin is a Perl module that can locate directory of original perl script. SYNOPSIS use FindBin; use lib "$FindBin::Bin/../lib"; or use FindBin qw($Bin); use lib "$Bin/../lib"; Locates the full path to the script bin directory to...
12.2 MB  
Libraries  -  AutoSplit 5.8.8
AutoSplit is a Perl module that can split a package for autoloading. SYNOPSIS autosplit($file, $dir, $keep, $check, $modtime); autosplit_lib_modules(@modules); This function will split up your program into files that the AutoLoader module...
12.2 MB  
Libraries  -  Witme-fileutils
Witme-fileutils is a version of GNU fileutils that builds as a shared library. If this gets merged into the main GNU fileutils, then this project will live on as the integration of libsigc++ and other glib based signal styles to complement the...
Libraries  -  libUtils 20010716-205721
libutils library is a hodgepodge of routines that I have found usefull at one time or another. There is a fixed version of fgets that is similar to the old Pascal readln, there are routines for parsing command line arguments with assorted bells...
48.13 KB  
Business  -  Update Your Web Site Today With New Programming Projects Software From Java 9.0
How is your web site or blog looking? If you are honest, do you really think it is as good as it could be? Well, if the answer is no, you could quickly and easily revamp it and get more traffic going through your web pages in next to no time.Java...
2.93 MB  
Programming  -  Jadex BDI Agent System 2.0
Jadex is a Belief Desire Intention (BDI) reasoning engine that allows for programming intelligent software agents in XML and Java. The resoning engine is very flexible and can be used on-top of different middleware infrastructures such as JADE.
25.73 MB  
Programming  -  FLEX-db Digital Asset Manager 3.0.9
FLEX-db - an enterprise Digital Asset Manager (DAM). It ingests and links metadata with files, creates thumbnails, and processes files using business rules. FLEX-db has a JSP client, Java app server for file input and output and an EJB metadata...
21.57 MB  
Programming  -  Libicom 0.9.0
The libicom library is a character based dynamicly linked library for Linux. It is used to remotely control the Icom IC-R8500 wide band receiver via an RS232 link. All call and return parameters to the control functions are character string based....
20.48 KB  
Programming  -  dotdesktop 0.3
Dotdesktop library provides ability to parse desktop entry file and access the information in a convenient way. Desktop entry file format is defined by, it is used to describe information about an application such as the name and...
327.68 KB  
Programming  -  Cedalion for Linux 0.2.6
Cedalion is a programming language that allows its users to add new abstractions and define (and use) internal DSLs. Its innovation is in the fact that it uses projectional editing to allow the new abstractions to have no syntactic limitations.
471.04 KB  
Programming  -  libyasl 0.2
Libyasl is a C++ class library to easily realize TCP/UDP/Multicast clientsand servers in IPv4 and IPv6 environments under GNU/Linux systems.
143.36 KB  
Libraries  -  wolfSSL 3.12.0
The wolfSSL embedded SSL/TLS library is a lightweight SSL library written in ANSI standard C and targeted for embedded and RTOS environments - primarily because of its small size, speed, and feature set. It is commonly used in standard operating...
2.73 MB  
Libraries  -  EuGTK 4.8.9
Makes it easy to develop good- looking, fast, cross-platform programs that run on Linux, OS X, and Windows. Euphoria is a very fast interpreted/compiled language with straight-forward syntax. EuGTK allows programming in a clean, object-oriented...
10.68 MB  
Libraries  -  Linux User Group Library Manager 1.0
The LUG Library Manager is a project to help Linux User Groups start their own library. A LUG library is helpful to the community at large because it increases access to information, and gives everyone the opportunity to become more knowledgeable.
5.35 KB  
Libraries  -  Module::MakefilePL::Parse 0.12
Module::MakefilePL::Parse is a Perl module to parse required modules from Makefile.PL. SYNOPSIS use Module::MakefilePL::Parse; open $fh, Makefile.PL; $parser = Module::MakefilePL::Parse->new( join("", ) ); $info = $parser->required;...
8.19 KB  
Libraries  -  sqlpp 0.06
sqlpp Perl package is a SQL preprocessor. sqlpp is a conventional cpp-alike preprocessor taught to understand SQL ( PgSQL, in particular) syntax specificities. In addition to the standard #define/#ifdef/#else/#endif cohort, provides also...
10.24 KB