Recent Changes - Search:

WikiDoc

Categories

AlphaX source code organization

This file describes the new structure of the building environment of the AlphaX core.


Introduction

This is the new model designed during the major code reorganization undertaken after the public release of AlphaX 8.0.1 in November 2005. The original code has been completely rearranged, cleaned of all obsolete elements and reorganized in a hopefully more consistent structure.

Top hierarchy

The top development folder (let's call it AlphaCore) contains:

  • the Current folder with the code currently under development
  • the Extras folder with auxiliary data
  • the APIs folder with external libraries common to all versions (MoreFiles, MoreAtsui)
  • possibly other folders corresponding to the different released versions of AlphaX.

So the structure of this top AlphaCore folder looks like this:

 
     AlphaCore
         |
         |- APIs
         |
         |- Current
         |
         |- Extras
         |
         |- 8.0.1
         |
         |- 8.0b16
         |
         |- 8.0b17d8

The Extras folder and the Current folder are described in the following sections.

The Extras folder

The Extras subfolder contains auxiliary data not directly necessary for building the core. This is typically where you can maintain and store documentation, help files, script files to assemble distributions, wiki pages, etc. Currently the SVN repository has the following subfolders:

 
     --- Extras
        |
        |--- Help
        |
        |--- Logs
        |
        |--- Scripts
        |
        |--- Tests
        |
        |--- Wiki

As needed, other folders can be added therein: texmf, Web Site, XML, etc.

The Current folder

This is the development folder with source data corresponding to a particular version. This concerns not only Alpha's source files but also the AlphaTcl library, the various Tcl extensions which are stored in the bundle, possibly the Tcl framework, since all these resources do change from one version to the other. Here is the basic layout of this folder followed by a description of its items:

 
     Current
         |
         |- AlphaX.xcodeproj
         |- ChangeLog
         |
         |- Alpha_Precomp/
         |
         |- Alpha_Sources/
         |
         |- Alpha_Resources/
         |
         |- Libraries/
         |
         |- Tools/

  • the Alpha_Precomp folder contains top level headers or prefix files, mainly the headers used to build precompiled headers with CodeWarrior. Since we now all use XCode, it could be removed.

  • the Alpha_Resources folder contains the resource files: .r, .rsrc, .plist, .plc, etc. It has an Icons subfolder with some image files (.icns, .png, etc.). !! !! The .rsrc files now store the resources in the data fork, not !! !! in the resource fork.

  • the Alpha_Sources folder contains the C and C++ source files together with their corresponding header files. There are several subfolders which group the files according to the category they belong to.
 
        --- Alpha_Sources
           |
           |--- Application
           |
           |--- Controls
           |
           |--- CVS
           |
           |--- Features
           |
           |--- Files
           |
           |--- Globals
           |
           |--- Menus
           |
           |--- TclCommands
           |
           |--- Text
           |
           |--- Utils
           |
           |--- Windows

  • the Libraries folder contains the external elements which will also be included in the application's bundle, such as the AlphaTcl library, some Tcl extensions, additional encodings, a private Tcl framework (if necessary). The copy of these elements is handled automatically by Shell Script phases in the XCode project: this is the role of the Extras target in the XCode project. Its organization is like this:
 
     --- Libraries
        |
        |--- AlphaTcl
        |   |
        |   |--- Examples
        |   |
        |   |--- Help
        |   |
        |   |--- Tcl
        |   |
        |   |--- Tools
        |
        |--- Encodings
        |   |--- ISOmacRoman.enc
        |   |--- macRomanISO.enc
        |
        |--- PrivateFramework
        |
        |--- Tclextensions

The AlphaTcl folder contains the usual AlphaTcl library. This is where you should execute the checkouts from SourceForge. The Tclextensions folder currently contains the following extensions: Memchan2.2.1, Mk4tcl, Tcladdressbook1.1, Tclapplescript1.0, Tclresource1.1.1, tclAE2.0, tcllib1.7, tclx8.4, tdom0.8.0, tnc0.3.0, vfs1.3. Finally the Encodings folder contains additional encoding files (like ISOmacRoman.enc and macRomanISO.enc) which will be added to the Tcl framework (if any).

  • the Tools folder contains multipurpose scripts. Two of them are used by XCode during the build process (to automatically generate some resources or property lists):
    • the build_alfa_r.sh script for instance generates a file Alpha_alfa.r in Alpha_Resources containing the Rez definition of the 'ALFA' #0 resource (whose text is used in the splash screen).
    • the plcompile script processes the .plc file in order to produce the Info.plist file and the PkgInfo file; it is a replacement of the CodeWarrior's property list compiler (see the PList Compiler project [http://sourceforge.net/projects/plistcompiler] at SourceForge).

  • a new ChangeLog file has been started. The previous file has been renamed ChangeLog_1998-2004 and is found in /AlphaCore/Extras/Logs/.

  • AlphaX.xcodeproj is the XCode project file. Under Panther, it is the AlphaX.xcode file instead.

The build folder

The XCode project executes its tasks in the build folder as usual. The output is found in either the Deployment or the Development subfolder, depending on the build configuration.

The XCode project has two separate targets: the AlphaX target takes care of building the executable and the Extras target of copying the external elements into the bundle. The target named Final is just a wrapper combining the two previous ones.


Last updated 2007-01-14 09:08:58

Page last modified on January 14, 2007, at 08:23 AM
Hosted on SourceForge.net Logo