artefaktur
software engineer &        architecture

 
 
 
 

ACDK Make concepts


Description of the internal concepts of acdkmake.



Content of this chapter:

   Props hierarchy
   General C++ Task
   Tasks and Tools
     Tool-Classes
     Selection, Input
     ToolOutputFilter



 Props hierarchy

Root
  [Enviromnent]
  <- acdkmake globals
    <- build props (passed to Task.execute())
      <- Target specific Props (held by Task)

 General C++ Task

  • Build options
    • Load other configuration .csf before starting build.csf.
    • Use generated project files (f.e. msdev.exe) instead of own builder
    • Plugin for eclipse
  • Compile options
  • Support for compiling c Sources.
    • optional use libtool to compile
    • C++ options for rtti, exception support
    • console/windows options
    • Support for static libraries
    • Support for mingw.
    • support for ressource compiler (vc, borland)
    • flag for threaded applications (set compiler and linker settings)
    • Parser for compiler to unify compiler output (warnings, errors).
  • Generation options
    • Build make and project files

 Tasks and Tools

  • Tool
    • Class (like CCompiler)
    • Tribe (like vc6, posix-gnuc, dos, unix)

 Tool-Classes

Tools are identified by ToolClass (CCompiler) and ToolTribe.

  • FileTranslater. Has Input and Output files and additionally log output
  • CCompiler (FileTranslater): compiles .c -> .o/.obj
  • CCCompiler (FileTranslater): compiles .c -> .o/.obj
  • JavaCompiler (FileTranslater): JC_
  • Linker (FileTranslater): CCC_
  • Builder uses tools like amake, make, devenv, ant
  • ExeBuilder, LibBuilder, StaticLibBuilder, SharedLibBuilder:
    Can use Compiler/Linker or make/project files
  • ProjectGenerator, ProjectGroupGenerator, ProjectTargetGenerator
  • VersionControl
  • Shell
  • FileCopy, FileMove, FileRemove, FileMakeDir
  • Install
  • acdkmc
  • ResourceCompiler

ProjectBuilder:

  CppExeBuilder: SharedLibBuilder
    FileDependTask
    CCCompiler
    LINKER(EXE)  
  CppSharedLibBuilder
      CCCompiler
      Linker(SHARED)
  
ProjectBuilder:
  CppExeBuilder:
    make -f xxx target


// pseudo code
  
class Tool extends Task
{
  String getToolClass();
  String getToolTribe();
  
  Tool initTool(Props props);
  static Tool getTool(String toolClass, String toolTribe = Nil);
}

class FileTranslater extends Tool
{
  bool translates(String fileExt);
  String translatesTo(String file);
}


RCCompiler cc = (RCCompiler)Tools::getTool("CCompiler");
RCCompiler cc = (RCCompiler)Tools::getTool("CCompiler", "vc");


Props p = new Props(

 Selection, Input

If more than one or none ToolTribe was found, may interact with user to select the tool.

 ToolOutputFilter

The ToolOutputFilter filters the output of
 
Last modified 2005-05-08 22:30 by SYSTEM By Artefaktur, Ing. Bureau Kommer