Listing 1: Generic Make Build Script

# =================================
# Builds the application executable
# =================================
application: application.c lib_a.o lib_b.o lib_c.o
	@cc g -qcpluscmt -qidirfirst -I. -I/sys_apps/ref_dir/release/include -I/usr/include
	-o./exe/application $? -bE:/sys_apps/ref_dir/release/include/application.imp

lib_a.o: lib_a.c
@cc g -qcpluscmt -qidirfirst -I. -I/sys_apps/ref_dir/release/include -I/usr/include -o lib_a.o -c $?

lib_b.o: lib_b.c
@cc g -qcpluscmt -qidirfirst -I. -I/sys_apps/ref_dir/release/include -I/usr/include -o lib_b.o -c $?

lib_c.o: lib_c.c
@cc g -qcpluscmt -qidirfirst -I. -I/sys_apps/ref_dir/release/include -I/usr/include -o lib_c.o -c $?


GENERIC ANT SCRIPT
 <!-- ========================================================= -->
 <!-- Compiles source code and packages application.jar         -->
 <!--========================================================= -->
 <target name="compile" depends="prepare">
    <javac srcdir="./src"
           includes=**/*.java"
           destdir="./build"
           debug="off"
           deprecation="off"
           optimize="on"
  </target>

  <target name="application_jar" depends="compile">
    <jar jarfile="./build/application.jar"
         basedir="./build/classes"
         compress="false"
         includes="com/**"/>
  </target>

Listing 2

# =========================================================== #
# Setup global variables. These variables will be edited by developers
# in order to make the scripts run on their workstations.     #
# =========================================================== #

EXEDIR		= ./exe
REFDIR		= /sys_apps/ref_dir
SHAREDDIR	= /shared

COMPILERDIR	= $(SHAREDDIR)/compilers
VPATH		= .:$(REFDIR)/release/src:$(REFDIR)/test/src
IPATH		= $(REFDIR)/release/include

CC			= $(COMPILERDIR)/cc
INCLUDES		= -I. -I$(IPATH) -I/usr/include
CFLAGS		= -g -qcpluscmt -qidirfirst $(INCLUDES)

application: application.c lib_a.o lib_b.o lib_c.o
	$(CC) $(CFLAGS) -o$(EXEDIR)/application $? -bE:$(IPATH)/application.imp

lib_a.o: lib_a.c
	$(CC) $(CFLAGS) -o lib_a.o -c $?

lib_b.o: lib_b.c
	$(CC) $(CFLAGS) -o lib_b.o -c $?

lib_c.o: lib_c.c
	$(CC) $(CFLAGS) -o lib_c.o -c $?

Listing 3

  <!-- ======================================================== -->
  <!-- Setup the properties. These values will be edited by developers -->
  <!-- in order to make the scripts run on their on workstations.-->
  <!-- ======================================================== -->
  <property name="src.dir" value="./src"/>
  <property name="build.dir" value="./build"/>
  <property name="classes.dir" value="${build.dir}/classes"/>
  <property name="debug" value="off"/>
  <property name="optimize" value="on"/>
  <property name="deprecation" value="off"/>
  <property name="jar.name" value="application.jar"/>

  <!-- ======================================================== -->
  <!-- Compiles source code and packages the jar specified in the jar.name property  -->
  <!-- ======================================================== -->
  <target name="compile" depends="prepare">
    <javac srcdir="${src.dir}"
           includes=**/*.java"
           destdir="${build.dir}"
           debug="${debug}"
           deprecation="${deprecation}"
           optimize="${optimize}"
  </target>

  <target name="package_jar" depends="compile">
    <jar jarfile="${build.dir}/$(jar.name)"
         basedir="${classes.dir}"
         compress="false"
         includes="com/**"/>
</target>

Listing 4

  <!-- ================================================== -->
  <!-- Setup the properties. These values will be edited by developers -->
  <!-- in order to make the scripts run on their on workstations. -->
  <!-- ================================================== -->
  <property name="src.dir" value="./src"/>
  <property name="images.dir" value="./images"/>
  <property name="doc.dir" value="./doc"/>
  <property name="build.dir" value="./build"/>
  <property name="classes.dir" value="${build.dir}/classes"/>
  <property name="deploy.dir" value="./deploy"/>
  <property name="deploy.doc.dir" value="${deploy.dir}/doc"/>
  <property name="deploy.images.dir" value="${deploy.dir}/images"/>
  <property name="deploy.jars.dir" value="${deploy.dir}/jars"/>
  <property name="debug" value="off"/>
  <property name="optimize" value="on"/>
  <property name="deprecation" value="off"/>
  <property name="appjar.name" value="application.jar"/>
  <property name="commjar.name" value="common.jar"/>

  <!-- ================================================== -->
  <!-- Compiles source code -->
  <!-- ================================================== -->
  <target name="compile" depends="prepare">
    <javac srcdir="${src.dir}"
           includes=**/*.java"
           destdir="${classes.dir}"
           debug="${debug}"
           deprecation="${deprecation}"
           optimize="${optimize}"
  </target>	

  <!-- ================================================== -->
  <!-- Packages application.jar -->
  <!-- ================================================== -->
  <target name="common_jar" depends="compile">
    <jar jarfile="${build.dir}/${appjar.name}"
         basedir="${classes.dir}"
         compress="false"
         includes="com/company/application/**"/>
  </target>

  <!-- ================================================== -->
  <!-- Packages common.jar -->
  <!-- ================================================== -->
  <target name="application_jar" depends="common_jar">
    <jar jarfile="${build.dir}/${commjar.name}"
         basedir="${classes.dir}"
         compress="false"
         includes="com/company/common/**"/>
  </target>

  
    <!-- ================================================== -->
    <!-- Prepares the objects for distribution. -->
    <!-- ================================================== -->
    <target name="prep-deploy" depends="application_jar">
      <mkdir dir="${deploy.dir}"/>
      <mkdir dir="${deploy.doc.dir}"/>
      <mkdir dir="${deploy.images.dir}"/>
      <mkdir dir="${deploy.jars.dir}"/>

      <copy todir="${deploy.doc.dir}" >
          <fileset
              dir="${doc.dir}" includes="**/*.html" excludes="**/dev/*,**/qa/*"/>
      </copy>
  
  
      <copy todir="${deploy.images.dir}" >
          <fileset
              dir="${images.dir}" includes="**/*.jpg,**/*.gif"
              excludes="**/dev/*,**/qa/*"/>
      </copy>

      <copy todir="${deploy.jars.dir" >
          <fileset
              dir="${build.dir}" includes="*.jar"/>
      </copy>
  
      <zip zipfile="deployable.zip" basedir="${deploy.dir}"/>
  
      <tar tarfile="deployable.tar" basedir="${deploy.dir}"
    </target>


Listing 5

  <!-- ================================================== -->
  <!-- Setup the properties. These values will be edited by developers -->
  <!-- in order to make the scripts run on their on workstations. -->
  <!-- ================================================== -->
  <property name="src.dir" value="./src"/>
  <property name="buildutility.dir" value="./scripts"/>
  <property name="build.dir" value="./build"/>
  <property name="classes.dir" value="${build.dir}/classes"/>
  <property name="debug" value="off"/>
  <property name="optimize" value="on"/>
  <property name="deprecation" value="off"/>
  <property name="appjar.name" value="application.jar"/>
  <property name="commjar.name" value="common.jar"/>

  <!-- ================================================== -->
  <!-- Compiles source code -->
  <!-- ================================================== -->
  <target name="compile" depends="prepare">
    <javac srcdir="${src.dir}"
           includes=**/*.java"
           destdir="${classes.dir}"
           debug="${debug}"
           deprecation="${deprecation}"
           optimize="${optimize}"
  </target>

  <!-- ================================================== -->
  <!-- Packages application.jar -->
  <!-- ================================================== -->
  <target name="common_jar" depends="compile">
    <jar jarfile="${build.dir}/${appjar.name}"
         basedir="${classes.dir}"
         compress="false"
         includes="com/company/application/**"/>
  </target>

  <!-- ================================================== -->
  <!-- Packages common.jar -->
  <!-- ================================================== -->
  <target name="application_jar" depends="common_jar">
    <jar jarfile="${build.dir}/${commjar.name}"
         basedir="${classes.dir}"
         compress="false"
         includes="com/company/common/**"/>
  </target>

  
    <!-- ================================================== -->
    <!-- Executes the deployment script that handles preparing the -->
    <!-- deployable objects and actually deploys them. -->
    <!-- ================================================== -->
    <target name="post-build" depends="application_jar">
     <exec executable="post-build.pl" dir="${ buildutility.dir }">
      <arg line="/package" />
      <arg line="/deploy" />
    </target>