5.1 Information about the Project

The project should get a name (PROJECTNAME) and a version (combined from numbers given a MAJORVERSION, MINORVERSION, and PATCHVERSION). The value of projectname should simply be that of PROJECTNAME converted to lower case letters.

There are some restrictions for the values of PROJECTNAME and projectname. Neither of the values must contain LATEX special characters. The value of PROJECTNAME must be an Aldor identifier; it is used for the identifiers LibraryInformationCombinat in the generated file src/cscombinatversion.as as well as for the assertions DontNeedLibraryCombinat and MacrosCombinat in the Makefile targets loop and the Makefile variables FLAGSal and FLAGSx.

The name of the generated libraries is by default the project name in lower case letters, but can be set to be something else. The libraries

lib$(LIBRARYNAME).al  
lib$(LIBRARYNAME).a

will be generated.

Convention 1 Since the project and library name is used in several places as an argument to some LATEX command, it is required that the name does not contain any LATEX special characters. The value of PROJECTNAME must be an Aldor identifier when it is prepended by the letter A. The values of the variables projectname and LIBRARYNAME must be valid filenames.

The .al library consists of .ao files whose names are the same as the corresponding .as.nw files in the src (sub-)directory except that they will have an additional prefix which is given by LIBPREFIX. For example, if there is a source file src/basic/data.as.nw and LIBPREFIX=cx then the corresponding file inside the .al library will be generated as cxdata.ao.

The same rule applies to the .a library and the .o files therein.

The intention of such a prefix is to make the filenames inside the library unique with respect to other projects. Currently the building process will not work if the variable LIBPREFIX has no value, i. e., is empty.

32name of the game and its version 32  (30)  33
PROJECTNAME=Combinat
projectname=combinat
LIBRARYNAME=$(projectname)
MAJORVERSION=0
MINORVERSION=0
PATCHVERSION=3
LIBPREFIX=cs

Defines:
LIBPREFIX, never used.
LIBRARYNAME, never used.
MAJORVERSION, never used.
MINORVERSION, never used.
PATCHVERSION, never used.
PROJECTNAME, never used.
projectname, used in chunk 13.

It ist important to list the value of CREDITS with double quotes.

33name of the game and its version 32+   (30)  32  34a
CREDITS="Ralf Hemmecke <ralf@hemmecke.de>"

Defines:
CREDITS, used in chunk 34a.
If there is more than one person or institution that needs to be given credits, write it in the following form. In particular note that there is a comma after the equal sign.
CREDITS+=,"Somebody Else"

34aname of the game and its version 32+   (30)  33  34b
CREDITS+=,"Martin Rubey <martin.rubey@univie.ac.at>"

Uses CREDITS 33.

Among others the file src/cscombinatversion.as is generated from the above data.

Its code generation appears in src/Makefile.nw. The file src/cscombinatversion.as provides information about the library and looks as follows.

-- Generated from src/Makefile  
#assert DontNeedLibraryCombinat  
#include "combinat"  
LibraryInformationCombinat: VersionInformationType == add {  
        name: String == "Combinat";  
        version: String == "0.0.3";  
        major: MachineInteger == 0;  
        minor: MachineInteger == 0;  
        patch: MachineInteger == 3;  
        credits: List String == ["Ralf Hemmecke <ralf@hemmecke.de>" ,"Martin Rubey <martin.rubey@univie.ac.at>"];  
}

We create a simple executable given through the file cs.as.nw.

34bname of the game and its version 32+   (30)  34a
EXECUTABLEFILES=cs.as