2005/5/10

     
 

Platform makes

artefaktur

To serve multiple plattforms and development environments, a plattform independet format for makefiles is needed.


Sub chapter pages:

This is a generic installation for ACDK packages.

Description of the common directory layout of an ACDK project.

In ACDK Make Project a compilation unit (executable or library) will be defined.

In ACDK Make Workspace a distribution unit with sources, configuration, tests and documentation will be defined.



Content of this chapter:

   First steps
     Windows Visual Studio
     Unix (Linux/Solaris)
   Overall architecture
     Workspaces
     Projects
   Common directory Layout
     ACDKs Home
     Directory Workspaces
   Targets
     Target linux
       Linux Projects
       Linux Workspaces
     Target dsp
       Dsp Projects
       Dsp Workspaces
     Target sunos-gcc
     Target bsd
     Target cygnus




 First steps

 Windows Visual Studio

Open the .dsw of the package and compile the sources.
To compile the complete packages, go to the acdk root and type:
nmake -f acdk_all.nmake

 Unix (Linux/Solaris)

In the package directory type:
make -f [package].[platform]

where platform is linux or sunos-gcc.

To compile the complete packages, go to the acdk root and type:
nmake -f acdk_all.linux


 Overall architecture


The configuration files for acdk projects are written in lisp. This is used because:
  • ACDK as build in interpreter available.
  • Easy to use/understand.
  • No difference between code and data, therefore it is quite simple to write functional plugins for different targets.

 Workspaces

A workspace corresponds to one distribution package and contains code, documentation, tests.

For a workspace, there is a lisp configuration file workspace_name.lsp in the workspace directory, which defines the contained projects, supported platforms and version information.

To generate the platform dependend make files you need a working acdklisp, and the environment variable has to be set.

$ACDKHOME/bin/acdklisp workspace_name.lsp

This will generate the workspace project files for the supported platforms (.dsw, Makefiles, etc.).

For more detailed information see:
 Workspaces.


 Projects

For each executable or library a project_name.lsp is provided, which following information:


To generate the platform dependend make files you need a working acdklisp, and the environment variable has to be set.

$ACDKHOME/bin/acdklisp project_name.lsp [targetname]

where targetname can be "dsw", "linux", "sunos-gcc", "bsd".

This will generate the workspace project files for the supported platforms (.dsp, Makefiles, etc.).

For more detailed information see:
 Workspaces.

 Common directory Layout

 ACDKs Home


/somewhere/acdk
   contains the current distribution of acdk.
   Example: /usr/local/acdk-1.00 or d:\programming\acdk-1.00.
   This directory is also refered ACDKHOME.

/somewhere/acdk/bin
   The place for the exutables.

/somewhere/acdk/cfg
   The place for configuration data, like lisp files.

/somewhere/acdk/include
   The public include headers.
   Note: actually also the .cpp files will be copied to
   this location, because they are used to generate 
   the online documentation.


/somewhere/acdk/acdk-workspaces*
   Each workspace resists in a sperate directory, which
   should be named by the short package name, f.i.
   acdk_core, acdk_perl, acdkx_orb, etc.
   See below 

 Directory Workspaces


A workspace corresponds to one distribution unit, including sources, documentation, test and configuration files.

acdk_project/ 
   The root directory contains normally following files:

acdk_project/index.*
   HTML and text files with mayor documentation links.

acdk_project/acdk_project.lsp
   The acdk make for the project.
   see:  Target Workspaces.
         Workspaces.

acdk_project/acdk_project.*
   target specific make files

acdk_project/Makefile
   driver for the target specific make files.

acdk_project/src
   This directory contains the projects with all 
   sources (*.h, *.cpp).
   The sources are organized in namespace packages,
   whereas each namespace (nested) corresponds to a
   (nested) directory.

acdk_project/docs
   This directory contains the documentation
   of this workspace. For the standard workspaces
   these docs will be installed into the acdk project
   web.

acdk_project/cfg
   Configuration data. will be installed into
   the ACDKHOME/cfg directory.

acdk_project/tests
   contains the sources for the test executables.
   For more information about test please see also:  ACDK Unit Tests.
   
   


 Targets


At the moment targets are following available:


 Target linux


The linux targets generate makefiles for gmake.

 Linux Projects

Following targets are available in projects:
  • default: Build library or executable.
  • clean: removes all *.o files.
  • depend: creates files for dependencies.
  • outputdirectories: creates all outputdirectories if needed.
  • all: clean depend outputdirectories $(FINALTARGET) doc install

 Linux Workspaces

Following targets are available in workspaces:
  • Projects: For each project there is make target with the same name.
  • clean: calls clean for all projects.
  • doc: generates the document files (genweb needed).
  • install: install header, sources and documentation files.
  • metamakemake: regenerate Workspace Makefiles from project lsp files.
    $(ACDKHOME)/bin/acdklisp must be availabe.
  • makemake: regenerate Project Makefiles from project lsp files.
    $(ACDKHOME)/bin/acdklisp must be availabe.
  • distrib and ddistrib:
    makes distribution for unix platform (distrib) and windows (ddistrib).

 Target dsp

Target dsp generates project files for MS Visual Studio (.dsp).


 Dsp Projects

The target itself has 2 sub targets: Debug and Release.

 Dsp Workspaces

The target dsp generates for workspaces following files:
  • .dsw: MSVC Workspace file, with all projects.
  • .nmake: NMAKE make file with other targets
For some functions, like installing headers, the command line Makefile must be used:
  • nmake -f make_workspace.nmake install: Install headers
  • nmake -f make_workspace.nmake metamakemake: see  linux Workspaces metamakemake
  • nmake -f make_workspace.nmake makemake: see  linux Workspaces makemake

 Target sunos-gcc

The same functionality to target linux.

 Target bsd

The same functionality to target linux.

 Target cygnus

Not documented yet.