             xdc-B22 (corevers:16.0.2.0; B:150,G:180,R:170)

                       eXpanDed C Tools (XDCtools)

    This tree contains the RTSC build and configuration engines for
    target content. The tree is used in XDCtools product releases. This series
    of trees breaks forward compatibility with XDCtools 3.24. The Java
    classes built in this tree are build for Java 1.6, while XDCtools 3.24
    (and earlier) has a Java 1.5 JRE. However, XDCtools 3.24 and earlier are
    already forward incompatible with the current release because of
    @DirectCall changes in xdc.runtime in XDCtools 3.25.

Librarian repo creation
-----------------------
    The xdc.git repo was created to "track" the repo maintained at 
    eclipse.org and was created as follows:
        git clone --bare ssh://git.eclipse.org/gitroot/rtsc/org.eclipse.rtsc.xdccore.git xdc.git
	cd xdc.git
        git config remote.origin.fetch "+refs/heads/*:refs/heads/*"

BUILD	

    o setup ssh to enable "git" from xlibrary as "dr" (if necessary) 
	cd ~xlibrary/.ssh
	cp -f config-dr config

    o fetch the latest changes from the Eclipse git server, but do it from
      a Ubuntu host because SUSE 10 has an old version of ssh
	cd xdc.git
	git fetch

    o To clone tree from previous branch
        ggentree -b xdccore-B -u d-russo@ti.com xdc.git

    o Build this tree from master on Linux using standard SM-MAKE
    
        # clone the tree and merge/review user content
        ggentree -u sascha@ti.com xdc.git
        cd xdc-C??

	# unzip build.zip from the last released tree
	unzip -q ../xdc-C??/build.zip

        # make sure the user email and name are your eclipse credentials 
        # before making any changes that need to be pushed to eclipse
        cat config-dr >> ./.git/config

        # make sure the user email and name are your eclipse credentials 
        git merge origin/xdccore-C-dr

        # build the tree using LSF to force older GLIBC to be used when
	# linking Linux executables
        SM-MAKE .clean
        SM-MAKE .all-files >& Make.log 

        # update README 
        emacs README
        git commit -a -m xdc-C??

        # release the tree
        greltree -m "something brief and meaningful"

    o to make both the UNIX and PC sides, from a Linux workstation, go to the
      top directory of the tree and type:

	SM-MAKE .all-files

      To clean the tree, type:

        SM-MAKE .clean

    o to build only packages in src/packages from scratch:

    	SM-MAKE .xdc-packages

    o to build bundles:

    	SM-MAKE .bundles

    o to run regressions:

        SM-MAKE .regress

==============================================================

ADDITIONS

DELETIONS

CHANGES

xdc.runtime & xdc.rutime.knl
        removed RomConsts

xdc.services.spec
        removed RomConsts

MRS

ECL515617 - remove RoMConsts XDCspec attribute
