             xdc-C10 (corevers:16.0.2.0; B:200,G:200,R:200)

                       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 compatibility with XDCtools 3.32 and older.

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 Build this tree from 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 ../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

core	    removed all __S function declarations and definitions for
	    interfaces and proxies. Proxy create/delete do not go through
	    create__S/delete__S; they now invoke delegate's create/delete
	    directly

	    removed destruct__S function because it was never invoked from
	    old header files, and it is not used anymore in the big C file

	    removed startupDoneFxn and incremented version numbers to force
	    rebuilding of schemas. All old schemas reference that deprecated
	    parameter. This is useful for packages that don't have any blue
	    code, for example platform packages. We still want to have them to
	    be compatible, but the next release is also a chance to delete some
	    deprecated parameters.

	    BrowserSession.findPkg looks for the packages along the path
	    acquired from Env when the constructor is invoked. However, the
	    path in Env can be externally changed. For example, plugingen calls
	    xdc.$$private.Env.setPath in Main.xs. If xdc.loadPackage is called
	    after that, packages are found along the path supplied by
	    xdc.curPath, which corresponds to the new path. But then, if the
	    schema is old and needs to be rebuilt, we invoke xdc.$$ses.findPkg,
	    which searches along the old path. To fix that, whenever xdc.$$ses
	    searches for packages, it first gets the latest path from Env.

MRS

