270 lines
		
	
	
	
		
			7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			270 lines
		
	
	
	
		
			7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | #! /bin/sh | ||
|  | 
 | ||
|  | # workarea | ||
|  | # Copyright 1984-2017 Cisco Systems, Inc. | ||
|  | #  | ||
|  | # Licensed under the Apache License, Version 2.0 (the "License"); | ||
|  | # you may not use this file except in compliance with the License. | ||
|  | # You may obtain a copy of the License at | ||
|  | #  | ||
|  | # http://www.apache.org/licenses/LICENSE-2.0 | ||
|  | #  | ||
|  | # Unless required by applicable law or agreed to in writing, software | ||
|  | # distributed under the License is distributed on an "AS IS" BASIS, | ||
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
|  | # See the License for the specific language governing permissions and | ||
|  | # limitations under the License. | ||
|  | 
 | ||
|  | if [ $# != 1 -a $# != 2 ] | ||
|  | then | ||
|  |     echo "Usage: workarea <machine-type> { <workarea name> }" | ||
|  |     exit 1 | ||
|  | fi | ||
|  | 
 | ||
|  | # set M to machine type and W to workarea name | ||
|  | M=$1 | ||
|  | if [ "$2" = "" ] | ||
|  | then | ||
|  |     W=$M | ||
|  | else | ||
|  |     W=$2 | ||
|  | fi | ||
|  | 
 | ||
|  | case "$M" in | ||
|  |   a6fb) ;; | ||
|  |   a6le) ;; | ||
|  |   a6nb) ;; | ||
|  |   a6nt) ;; | ||
|  |   a6ob) ;; | ||
|  |   a6osx) ;; | ||
|  |   a6s2) ;; | ||
|  |   arm32le) ;; | ||
|  |   i3fb) ;; | ||
|  |   i3le) ;; | ||
|  |   i3nb) ;; | ||
|  |   i3nt) ;; | ||
|  |   i3ob) ;; | ||
|  |   i3osx) ;; | ||
|  |   i3qnx) ;; | ||
|  |   i3s2) ;; | ||
|  |   ppc32le) ;; | ||
|  |   ta6fb) ;; | ||
|  |   ta6le) ;; | ||
|  |   ta6nb) ;; | ||
|  |   ta6nt) ;; | ||
|  |   ta6ob) ;; | ||
|  |   ta6osx) ;; | ||
|  |   ta6s2) ;; | ||
|  |   tarm32le) ;; | ||
|  |   ti3fb) ;; | ||
|  |   ti3le) ;; | ||
|  |   ti3nb) ;; | ||
|  |   ti3nt) ;; | ||
|  |   ti3ob) ;; | ||
|  |   ti3osx) ;; | ||
|  |   ti3qnx) ;; | ||
|  |   ti3s2) ;; | ||
|  |   tppc32le) ;; | ||
|  |   *) echo "Unrecognized machine name $M"; exit 1 ;; | ||
|  | esac | ||
|  | 
 | ||
|  | if [ "$OS" = "Windows_NT" ] | ||
|  | then | ||
|  |     ln="cp -R" | ||
|  | else | ||
|  |     ln="ln -s" | ||
|  | fi | ||
|  | 
 | ||
|  | # This shell script creates a workarea for local modifications to the | ||
|  | # Chez Scheme source code.  Invoke with the name of a machine type: | ||
|  | # i3le, i3nt, ti3osx, etc., plus an optional workarea name.  The script | ||
|  | # creates a subdirectory in the current working (release) directory. | ||
|  | # If the workarea name argument is not given, this subdirectory is | ||
|  | # named by the machine type.  The workarea contains subdirectories | ||
|  | # that correspond to various subdirectories of the release directory. | ||
|  | # Initially, all of the files in the workarea are links back into the | ||
|  | # source directories.  Furthermore, many of the files are simply make | ||
|  | # files that are used to rebuild the system, and in most cases, the | ||
|  | # make files themselves create links for the source files as needed. | ||
|  | # To make local modifications, convert the links into local copies. | ||
|  | 
 | ||
|  | # workln source dest | ||
|  | # creates link if dest does not exist and source does | ||
|  | workln() | ||
|  | { | ||
|  |     if [ ! -e $2 -a -e $1 ] ; then | ||
|  |         $ln $1 $2 2> /dev/null | ||
|  |     fi | ||
|  | } | ||
|  | 
 | ||
|  | # forceworkln source dest | ||
|  | # attempts to create link even if source does not exist | ||
|  | forceworkln() | ||
|  | { | ||
|  |     if [ ! -e $2 ] ; then | ||
|  |         ln -s $1 $2 2> /dev/null | ||
|  |     fi | ||
|  | } | ||
|  | 
 | ||
|  | forceworkln2() | ||
|  | { | ||
|  |     if [ ! -e $2 ] ; then | ||
|  |         $ln $1 $2 2> /dev/null | ||
|  |     fi | ||
|  | } | ||
|  | 
 | ||
|  | # workdir directory-name | ||
|  | workdir() | ||
|  | { | ||
|  |     if [ ! -e $1 ] ; then | ||
|  |         mkdir $1 | ||
|  |     fi | ||
|  | } | ||
|  | 
 | ||
|  | workdir $W | ||
|  | 
 | ||
|  | workdir $W/c | ||
|  | (cd $W/c; workln ../../c/Mf-$M Mf-$M) | ||
|  | (cd $W/c; forceworkln Mf-$M Makefile) | ||
|  | (cd $W/c; workln ../../c/Mf-base Mf-base) | ||
|  | if [ ! -e $W/c/config.h ] ; then | ||
|  |   touch $W/c/config.h | ||
|  | fi | ||
|  | if [ ! -e $W/c/Mf-config ] ; then | ||
|  |   touch $W/c/Mf-config | ||
|  | fi | ||
|  | case $M in | ||
|  |   *nt) | ||
|  |     (cd $W/c; workln ../../c/vs.bat vs.bat) | ||
|  |     ;; | ||
|  | esac | ||
|  | 
 | ||
|  | workdir $W/s | ||
|  | (cd $W/s; workln ../../s/Mf-$M Mf-$M) | ||
|  | (cd $W/s; forceworkln Mf-$M Makefile) | ||
|  | (cd $W/s; workln ../../s/Mf-base Mf-base) | ||
|  | (cd $W/s; workln ../../s/Mf-cross Mf-cross) | ||
|  | (cd $W/s; workln ../../s/$M.def $M.def) | ||
|  | (cd $W/s; forceworkln2 $M.def machine.def) | ||
|  | 
 | ||
|  | workdir $W/mats | ||
|  | (cd $W/mats; workln ../../mats/Mf-$M Mf-$M) | ||
|  | (cd $W/mats; forceworkln Mf-$M Makefile) | ||
|  | (cd $W/mats; workln ../../mats/Mf-base Mf-base) | ||
|  | (cd $W/mats; workln ../../mats/Mf-exobj Mf-exobj) | ||
|  | case $M in | ||
|  |   *nt) | ||
|  |     (cd $W/mats; workln ../../mats/vs.bat vs.bat) | ||
|  |     ;; | ||
|  | esac | ||
|  | 
 | ||
|  | for dir in `echo examples unicode` ; do | ||
|  |   workdir $W/$dir | ||
|  |   for file in `(cd $dir ; echo *)` ; do | ||
|  |     (cd $W/$dir ; workln ../../$dir/$file $file) | ||
|  |   done | ||
|  | done | ||
|  | 
 | ||
|  | # deep copy submodules where builds occur so changes don't propagate through symlinks | ||
|  | for dir in `echo zlib` ; do | ||
|  |   if [ ! -e $W/$dir ] ; then | ||
|  |     cp -R $dir $W/$dir | ||
|  |   fi | ||
|  | done | ||
|  | 
 | ||
|  | for dir in `echo lz4` ; do | ||
|  |   if [ ! -e $W/$dir ] ; then | ||
|  |     cp -R $dir $W/$dir | ||
|  |   fi | ||
|  | done | ||
|  | 
 | ||
|  | workdir $W/boot | ||
|  | workdir $W/boot/$M | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/scheme.h scheme.h) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/equates.h equates.h) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/petite.boot petite.boot) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/scheme.boot scheme.boot) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/def.so def.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/edit.so edit.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/fact.so fact.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/fatfib.so fatfib.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/fib.so fib.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/freq.so freq.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/m4.so m4.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/macro.so macro.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/matrix.so matrix.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/object.so object.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/power.so power.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/rabbit.so rabbit.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/rsa.so rsa.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/scons.so scons.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/setof.so setof.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/unify.so unify.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/fft.so fft.so) | ||
|  | (cd $W/boot/$M; workln ../../../boot/$M/compat.so compat.so) | ||
|  | case $M in | ||
|  |   *nt) | ||
|  |     (cd $W/boot/$M; workln ../../../boot/$M/mainmd.obj mainmd.obj) | ||
|  |     (cd $W/boot/$M; workln ../../../boot/$M/mainmt.obj mainmt.obj) | ||
|  |     (cd $W/boot/$M; workln ../../../boot/$M/csv959md.lib csv959md.lib) | ||
|  |     (cd $W/boot/$M; workln ../../../boot/$M/csv959mt.lib csv959mt.lib) | ||
|  |     (cd $W/boot/$M; workln ../../../boot/$M/scheme.res scheme.res) | ||
|  |     ;; | ||
|  |   *) | ||
|  |     (cd $W/boot/$M; workln ../../../boot/$M/main.o main.o) | ||
|  |     (cd $W/boot/$M; workln ../../../boot/$M/kernel.o kernel.o) | ||
|  |     ;; | ||
|  | esac | ||
|  | 
 | ||
|  | workdir $W/bin | ||
|  | workdir $W/bin/$M | ||
|  | case $M in | ||
|  |   *nt) | ||
|  |     (cd $W/bin/$M; workln ../../../bin/$M/scheme.exe scheme.exe) | ||
|  |     (cd $W/bin/$M; forceworkln2 scheme.exe petite.exe) | ||
|  |     (cd $W/bin/$M; workln ../../../bin/$M/csv959.dll csv959.dll) | ||
|  |     (cd $W/bin/$M; workln ../../../bin/$M/csv959.lib csv959.lib) | ||
|  |     ;; | ||
|  |   *) | ||
|  |     (cd $W/bin/$M; workln ../../../bin/$M/scheme scheme) | ||
|  |     (cd $W/bin/$M; forceworkln scheme petite) | ||
|  |     ;; | ||
|  | esac | ||
|  | 
 | ||
|  | # crutch links for fingers that remember old release structure | ||
|  | case $M in | ||
|  |   *nt) | ||
|  |     (cd $W/bin; forceworkln $M/scheme.exe scheme) | ||
|  |     (cd $W/bin; forceworkln $M/petite.exe petite) | ||
|  |     ;; | ||
|  |   *) | ||
|  |     (cd $W/bin; forceworkln $M/scheme scheme) | ||
|  |     (cd $W/bin; forceworkln $M/petite petite) | ||
|  |     ;; | ||
|  | esac | ||
|  | 
 | ||
|  | workdir $W/bintar | ||
|  | (cd $W/bintar; workln ../../bintar/Makefile Makefile) | ||
|  | 
 | ||
|  | workdir $W/rpm | ||
|  | (cd $W/rpm; workln ../../rpm/Makefile Makefile) | ||
|  | 
 | ||
|  | workdir $W/pkg | ||
|  | (cd $W/pkg; workln ../../pkg/Makefile Makefile) | ||
|  | (cd $W/pkg; workln ../../pkg/rmpkg rmpkg) | ||
|  | 
 | ||
|  | (cd $W; workln ../LOG LOG) | ||
|  | (cd $W; forceworkln2 ../nanopass nanopass) | ||
|  | (cd $W; workln ../makefiles/installsh installsh) | ||
|  | (cd $W; workln ../scheme.1.in scheme.1.in) | ||
|  | 
 | ||
|  | case $M in | ||
|  |   *nt) | ||
|  |     (cd $W/c; make source > /dev/null 2>&1) | ||
|  |     (cd $W/s; make source > /dev/null 2>&1) | ||
|  |     (cd $W/mats; make source > /dev/null 2>&1) | ||
|  |     ;; | ||
|  | esac | ||
|  | 
 | ||
|  | exit 0 |