You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

597 lines
25 KiB
Plaintext

# Mf-base
# 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.
MAKEFLAGS += --no-print-directory
# the following flags control various compiler options. flags prefixed by an x
# separately control the options used while compiling a cross compiler.
# o determines the optimize level
o = 3
# d is the debug level at which the system should be built
d = 0
# cl determines the commonization level
cl = (commonization-level)
# i determines whether inspector-information is generated: f for false, t for true
i = f
# cp0 determines the number of cp0 (source optimizer) iterations run
cp0 = 2
# fc determines whether fasl objects are compressed
fc = t
# xf determines the compression format
xf = (compress-format)
# xl determine the compression level
xl = (compress-level)
# p (xp) determines whether source profiling is enabled: f for false, t for true.
p = f
xp = f
# bp (xpb) determines whether binary profiling is enabled: f for false, t for true.
bp = f
xbp = f
# c determines whether covin files are generated: f for false, t for true.
c = f
# loadspd determines whether source-profile data is loaded: f for false, t for true
loadspd = f
# dumpspd determines whether source-profile data is dumped: f for false, t for true
dumpspd = f
# loadbpd determines whether binary-profile data is loaded: f for false, t for true
loadbpd = f
# dumpbpd determines whether binary-profile data is dumped: f for false, t for true
dumpbpd = f
# compile determines the entry point for compilng files
# another useful value for this is compile-with-asm, defined in debug.ss
compile = compile-file
# pdhtml determines whether profile-dump-html is called at the end of a build
pdhtml = f
# gac determines whether cost-center allocation counts are generated: f for false, t for true
gac = f
# gic determines whether cost-center instruction counts are generated: f for false, t for true
gic = f
# pps determines whether pass timings are printed
pps = f
# Explicit ".exe" needed for WSL
ifeq ($(OS),Windows_NT)
ExeSuffix = .exe
else
ExeSuffix =
endif
# The following control where files sit and typically don't need to be changed, except
# that Scheme and SCHEMEHEAPDIRS are set by Mf-cross to point to the host Scheme
# implementation
Scheme = ../bin/$m/scheme${ExeSuffix}
export SCHEMEHEAPDIRS=../boot/%m
export CHEZSCHEMELIBDIRS=.
# Define the libdirs separator character
ifeq ($(OS),Windows_NT)
dirsep = ;
else
dirsep = :
endif
ProfileDumpSource = source.pd
ProfileDumpBlock = block.pd
PetiteBoot = ../boot/$m/petite.boot
SchemeBoot = ../boot/$m/scheme.boot
Cheader = ../boot/$m/scheme.h
Cequates = ../boot/$m/equates.h
Revision = ../boot/$m/revision
# The following controls the patch files loaded before compiling, typically used only
# to load a new compiler for cross compilation
patchfile =
patch = patch
# putting cpnanopass.patch early for maximum make --jobs=2 benefit
patchobj = patch.patch cpnanopass.patch cprep.patch cpcheck.patch\
cp0.patch cpvalid.patch cpcommonize.patch cpletrec.patch\
reloc.patch\
compile.patch fasl.patch syntax.patch env.patch\
read.patch interpret.patch ftype.patch strip.patch\
ubify.patch back.patch
#ordering constraints:
#first: library, prims, mathprims, front, 5_?
#last: back
#newhash before read
#io before read
#event before 4
#ftype after syntax
#layout and record before strnum (first define-record)
#date before 7
#(there may be other constraints as well)
basesrc =\
library.ss prims.ss mathprims.ss record.ss 5_1.ss 5_2.ss 5_3.ss\
strnum.ss bytevector.ss 5_4.ss 5_6.ss 5_7.ss\
event.ss 4.ss front.ss foreign.ss 6.ss print.ss newhash.ss\
format.ss date.ss 7.ss cafe.ss trace.ss engine.ss\
interpret.ss cprep.ss cpcheck.ss cp0.ss cpvalid.ss cpcommonize.ss cpletrec.ss inspect.ss\
enum.ss io.ss read.ss primvars.ss syntax.ss costctr.ss expeditor.ss\
exceptions.ss pretty.ss env.ss\
fasl.ss reloc.ss pdhtml.ss strip.ss ftype.ss back.ss
baseobj = ${basesrc:%.ss=%.$m}
compilersrc =\
cpnanopass.ss compile.ss cback.ss
compilerobj = ${compilersrc:%.ss=%.$m}
src = ${basesrc} ${compilersrc}
obj = ${baseobj} ${compilerobj}
asm = $(basesrc:%.ss=%.asm)
macroobj =\
cmacros.so priminfo.so primvars.so env.so setup.so
allsrc =\
${basesrc} ${compilersrc} cmacros.ss ${archincludes} setup.ss debug.ss priminfo.ss primdata.ss layout.ss\
base-lang.ss expand-lang.ss primref.ss types.ss io-types.ss fasl-helpers.ss hashtable-types.ss\
np-languages.ss
# doit uses a different Scheme process to compile each target
doit: ${PetiteBoot} ${SchemeBoot} ${Cheader} ${Cequates} ${Revision}
# all uses a single Scheme process to compile all targets. this is typically
# faster when most of the targets need to be recompiled.
all: bootall ${Cheader} ${Cequates} ${Revision}
# allx runs all up to three times and checks to see if the new boot file is the
# same as the last, i.e., the system is properly bootstrapped.
allx: prettyclean saveboot
$(MAKE) all
if $(MAKE) checkboot > /dev/null 2>&1; then echo fine ; else\
$(MAKE) prettyclean saveboot &&\
$(MAKE) all &&\
if $(MAKE) checkboot > /dev/null 2>&1; then echo fine ; else\
$(MAKE) prettyclean saveboot &&\
$(MAKE) all &&\
$(MAKE) checkboot ;\
fi\
fi
$(MAKE) restoreboot
ifneq ($(OS),Windows_NT)
$(MAKE) resetbootlinks
endif
# bootstrap runs allx if any sources have changed since the last bootstrap
bootstrap: ${allsrc} | ${Revision}
$(MAKE) allx
touch bootstrap
# source eagerly creates links to most of the files that might be needed
source: ${allsrc} mkheader.ss script.all
# profiled goes through the involved process of building a profile-optimized boot file
profiled:
$(MAKE) profileclean
$(MAKE) all p=t
$(MAKE) prettyclean
$(MAKE) io.$m dumpspd=t
$(MAKE) prettyclean
$(MAKE) all loadspd=t bp=t PetiteBoot=../boot/$m/xpetite.boot SchemeBoot=../boot/$m/xscheme.boot
$(MAKE) prettyclean
$(MAKE) io.$m loadspd=t dumpbpd=t Scheme="../bin/$m/scheme -b ../boot/$m/xpetite.boot -b ../boot/$m/xscheme.boot"
rm -f ../boot/$m/xpetite.boot ../boot/$m/xscheme.boot
$(MAKE) prettyclean
$(MAKE) all loadspd=t loadbpd=t
# clean removes the products of the targets above
clean: profileclean
rm -f bootstrap
rm -f Make.out
# the remaining targets are typically not useful except to support those above
.SUFFIXES:
.SUFFIXES: .ss .$m .patch .so .asm
.ss.$m:
echo '(reset-handler abort)'\
'(optimize-level $o)'\
'(debug-level $d)'\
'(commonization-level $(cl))'\
'(fasl-compressed #$(fc))'\
'(compress-format $(xf))'\
'(compress-level $(xl))'\
'(when #$p (compile-profile (quote source)))'\
'(when #$(bp) (compile-profile (quote block)))'\
'(when #$(loadspd) (profile-load-data "${ProfileDumpSource}"))'\
'(when #$(loadbpd) (profile-load-data "${ProfileDumpBlock}"))'\
'(generate-inspector-information #$i)'\
'(generate-allocation-counts #${gac})'\
'(generate-instruction-counts #${gic})'\
'(generate-covin-files #$c)'\
'(run-cp0 (lambda (cp0 x)'\
' (do ([i ${cp0} (fx- i 1)] [x x (cp0 x)])'\
' ((fx= i 0) x))))'\
'(collect-trip-bytes (expt 2 24))'\
'(collect-request-handler (lambda () (collect 0 1)))'\
'(collect 1 2)'\
'(delete-file "$*.covin")'\
'(time (${compile} "$*.ss" "$*.$m" (quote $m)))'\
'(when #${pdhtml} (profile-dump-html))'\
'(when #${dumpspd} (profile-dump-data "${ProfileDumpSource}"))'\
'(when #${dumpbpd} (profile-dump-data "${ProfileDumpBlock}"))'\
| ${Scheme} -q ${macroobj} ${patchfile}
.ss.asm:
echo '(reset-handler abort)'\
'(optimize-level $o)'\
'(debug-level $d)'\
'(commonization-level $(cl))'\
'(fasl-compressed #$(fc))'\
'(compress-format $(xf))'\
'(compress-level $(xl))'\
'(when #$p (compile-profile (quote source)))'\
'(when #$(bp) (compile-profile (quote block)))'\
'(when #$(loadspd) (profile-load-data "${ProfileDumpSource}"))'\
'(when #$(loadbpd) (profile-load-data "${ProfileDumpBlock}"))'\
'(generate-inspector-information #$i)'\
'(generate-allocation-counts #${gac})'\
'(generate-instruction-counts #${gic})'\
'(generate-covin-files #$c)'\
'(run-cp0 (lambda (cp0 x)'\
' (do ([i ${cp0} (fx- i 1)] [x x (cp0 x)])'\
' ((fx= i 0) x))))'\
'(collect-trip-bytes (expt 2 24))'\
'(collect-request-handler (lambda () (collect 0 1)))'\
'(collect 1 2)'\
'(print-gensym (quote pretty/suffix))'\
'(delete-file "$*.covin")'\
'(compile-with-asm "$*.ss" "$*.$m" (quote $m))'\
'(when #${pdhtml} (profile-dump-html))'\
'(when #${dumpspd} (profile-dump-data "${ProfileDumpSource}"))'\
'(when #${dumpbpd} (profile-dump-data "${ProfileDumpBlock}"))'\
| ${Scheme} -q ${macroobj} ${patchfile}
.ss.so:
echo '(reset-handler abort)'\
'(base-exception-handler (lambda (c) (fresh-line) (display-condition c) (newline) (reset)))'\
'(keyboard-interrupt-handler (lambda () (display "interrupted---aborting\n") (reset)))'\
'(optimize-level $o)'\
'(debug-level $d)'\
'(commonization-level $(cl))'\
'(fasl-compressed #$(fc))'\
'(compress-format $(xf))'\
'(compress-level $(xl))'\
'(generate-inspector-information #$i)'\
'(subset-mode (quote system))'\
'(compile-file "$*.ss" "$*.so")'\
| ${Scheme} -q cmacros.so priminfo.so
.ss.patch:
echo '(reset-handler abort)'\
'(optimize-level $o)'\
'(debug-level $d)'\
'(commonization-level $(cl))'\
'(fasl-compressed #$(fc))'\
'(compress-format $(xf))'\
'(compress-level $(xl))'\
'(when #$(xp) (compile-profile (quote source)))'\
'(when #$(xbp) (compile-profile (quote block)))'\
'(generate-inspector-information #$i)'\
'(run-cp0 (lambda (cp0 x)'\
' (do ([i ${cp0} (fx- i 1)] [x x (cp0 x)])'\
' ((fx= i 0) x))))'\
'(collect-trip-bytes (expt 2 24))'\
'(collect-request-handler (lambda () (collect 0 1)))'\
'(collect 1 2)'\
'(time (${compile} "$*.ss" "$*.patch" (quote $m)))'\
| ${Scheme} -q ${macroobj}
saveboot:
cp -p -f ${PetiteBoot} ../boot/$m/sbb
cp -p -f ${SchemeBoot} ../boot/$m/scb
checkboot:
@echo '(reset-handler abort)'\
'(base-exception-handler (lambda (c) (fresh-line) (display-condition c) (newline) (reset)))'\
'(begin'\
'(#%$$fasl-file-equal? "../boot/$m/sbb" "../boot/$m/petite.boot" #t)'\
'(#%$$fasl-file-equal? "../boot/$m/scb" "../boot/$m/scheme.boot" #t)'\
'(printf "bootfile comparison succeeded\n"))'\
| ../bin/$m/scheme${ExeSuffix} -b ../boot/$m/sbb -q
xcheckboot: ${macroobj} ${patchfile}
@echo '(reset-handler abort)'\
'(base-exception-handler (lambda (c) (fresh-line) (display-condition c) (newline) (reset)))'\
'(begin'\
'(#%$$fasl-file-equal? "../boot/$m/sbb" "../boot/$m/petite.boot" #t)'\
'(#%$$fasl-file-equal? "../boot/$m/scb" "../boot/$m/scheme.boot" #t)'\
'(printf "bootfile comparison succeeded\n"))'\
| ${Scheme} -q ${macroobj} ${patchfile}
restoreboot:
-mv -f ../boot/$m/sbb ${PetiteBoot}
-mv -f ../boot/$m/scb ${SchemeBoot}
resetbootlinks:
-@echo '(reset-handler abort)'\
'(for-each'\
'(lambda (fn)'\
'(let ([fn (symbol->string fn)])'\
'(unless (file-symbolic-link? fn)'\
'(when (guard (c [else #f]) (#%$$fasl-file-equal? (format "../~a" fn) fn))'\
'(system (format "ln -sf ../../~a ~a" fn fn))'\
'(void)))))'\
'(list (quote ${SchemeBoot}) (quote ${PetiteBoot})))'\
| ${Scheme} -q
${PetiteBoot}: ${macroobj} ${patchfile} ${baseobj}
echo '(reset-handler abort)'\
'(generate-covin-files #$c)'\
'(delete-file (string-append (path-root "${PetiteBoot}") ".covin"))'\
'(apply #%$$make-boot-file "${PetiteBoot}" (quote $m) (quote ())'\
' (map symbol->string (quote (${baseobj}))))'\
| ${Scheme} -q ${macroobj} ${patchfile}
${SchemeBoot}: ${macroobj} ${patchfile} ${compilerobj}
echo '(reset-handler abort)'\
'(generate-covin-files #$c)'\
'(delete-file (string-append (path-root "${SchemeBoot}") ".covin"))'\
'(apply #%$$make-boot-file "${SchemeBoot}" (quote $m) (quote ("petite"))'\
' (map symbol->string (quote (${compilerobj}))))'\
| ${Scheme} -q ${macroobj} ${patchfile}
cmacros.so: cmacros.ss machine.def layout.ss
echo '(reset-handler abort)'\
'(base-exception-handler (lambda (c) (fresh-line) (display-condition c) (newline) (reset)))'\
'(keyboard-interrupt-handler (lambda () (display "interrupted---aborting\n") (reset)))'\
'(optimize-level $o)'\
'(debug-level $d)'\
'(commonization-level $(cl))'\
'(fasl-compressed #$(fc))'\
'(compress-format $(xf))'\
'(compress-level $(xl))'\
'(generate-inspector-information #$i)'\
'(subset-mode (quote system))'\
'(compile-file "$*.ss" "$*.so")'\
| ${Scheme} -q
priminfo.so: priminfo.ss primdata.ss cmacros.so
echo '(reset-handler abort)'\
'(base-exception-handler (lambda (c) (fresh-line) (display-condition c) (newline) (reset)))'\
'(keyboard-interrupt-handler (lambda () (display "interrupted---aborting\n") (reset)))'\
'(optimize-level $o)'\
'(debug-level $d)'\
'(commonization-level $(cl))'\
'(fasl-compressed #$(fc))'\
'(compress-format $(xf))'\
'(compress-level $(xl))'\
'(generate-inspector-information #$i)'\
'(subset-mode (quote system))'\
'(compile-file "$*.ss" "$*.so")'\
| ${Scheme} -q cmacros.so
# supply primvars.so as well as cmacros.so
mkheader.so: mkheader.ss cmacros.so primvars.so env.so
echo '(reset-handler abort)'\
'(base-exception-handler (lambda (c) (fresh-line) (display-condition c) (newline) (reset)))'\
'(keyboard-interrupt-handler (lambda () (display "interrupted---aborting\n") (reset)))'\
'(optimize-level $o)'\
'(debug-level $d)'\
'(commonization-level $(cl))'\
'(fasl-compressed #$(fc))'\
'(compress-format $(xf))'\
'(compress-level $(xl))'\
'(generate-inspector-information #$i)'\
'(subset-mode (quote system))'\
'(compile-file "$*.ss" "$*.so")'\
| ${Scheme} -q cmacros.so priminfo.so primvars.so env.so
nanopass.so: $(shell echo ../nanopass/nanopass/*) ../nanopass/nanopass.ss
echo '(reset-handler abort)'\
'(base-exception-handler (lambda (c) (fresh-line) (display-condition c) (newline) (reset)))'\
'(keyboard-interrupt-handler (lambda () (display "interrupted---aborting\n") (reset)))'\
'(optimize-level $o)'\
'(debug-level $d)'\
'(commonization-level $(cl))'\
'(fasl-compressed #$(fc))'\
'(compress-format $(xf))'\
'(compress-level $(xl))'\
'(generate-inspector-information #$i)'\
'(collect-trip-bytes (expt 2 24))'\
'(collect-request-handler (lambda () (collect 0 1)))'\
'(collect 1 2)'\
'(compile-library "../nanopass/nanopass.ss" "nanopass.so")'\
| ${Scheme} -q --libdirs "../nanopass${dirsep}${dirsep}." --compile-imported-libraries
rootsrc = $(shell cd ../../s; echo *)
${rootsrc}:
ifeq ($(OS),Windows_NT)
cp -p ../../s/$@ $@
else
ln -s ../../s/$@ $@
endif
script.all: Mf-base
script.all makescript:
echo '(reset-handler abort)'\
'(for-each load (command-line-arguments))'\
'(optimize-level $o)'\
'(debug-level $d)'\
'(commonization-level $(cl))'\
'(fasl-compressed #$(fc))'\
'(compress-format $(xf))'\
'(compress-level $(xl))'\
'(when #$p (compile-profile (quote source)))'\
'(when #$(bp) (compile-profile (quote block)))'\
'(when #$(loadspd) (profile-load-data "${ProfileDumpSource}"))'\
'(when #$(loadbpd) (profile-load-data "${ProfileDumpBlock}"))'\
'(generate-inspector-information #$i)'\
'(generate-allocation-counts #${gac})'\
'(generate-instruction-counts #${gic})'\
'(#%$$enable-pass-timing #${pps})'\
'(generate-covin-files #$c)'\
'(run-cp0 (lambda (cp0 x)'\
' (do ([i ${cp0} (fx- i 1)] [x x (cp0 x)])'\
' ((fx= i 0) x))))'\
'(collect-trip-bytes (expt 2 24))'\
'(collect-request-handler (lambda () (collect 0 1)))'\
'(for-each (lambda (x) (delete-file (string-append (path-root (symbol->string x)) ".covin"))) (quote (${obj})))'\
'(time (for-each (lambda (x y)'\
' (collect 1 2)'\
' (${compile} (symbol->string x)'\
' (symbol->string y)'\
' (quote $m)))'\
' (quote (${src}))'\
' (quote (${obj}))))'\
'(when #${pps} (#%$$print-pass-stats))'\
'(delete-file (string-append (path-root "${PetiteBoot}") ".covin"))'\
'(apply #%$$make-boot-file "${PetiteBoot}" (quote $m) (quote ())'\
' (map symbol->string (quote (${baseobj}))))'\
'(delete-file (string-append (path-root "${SchemeBoot}") ".covin"))'\
'(apply #%$$make-boot-file "${SchemeBoot}" (quote $m) (quote ("petite"))'\
' (map symbol->string (quote (${compilerobj}))))'\
'(when #${pdhtml} (profile-dump-html))'\
'(when #${dumpspd} (profile-dump-data "${ProfileDumpSource}"))'\
'(when #${dumpbpd} (profile-dump-data "${ProfileDumpBlock}"))'\
> script.all
script-static.all:
echo '(reset-handler abort)'\
'(for-each load (command-line-arguments))'\
'(optimize-level $o)'\
'(debug-level $d)'\
'(commonization-level $(cl))'\
'(fasl-compressed #$(fc))'\
'(compress-format $(xf))'\
'(compress-level $(xl))'\
'(when #$p (compile-profile (quote source)))'\
'(when #$(bp) (compile-profile (quote block)))'\
'(generate-inspector-information #$i)'\
'(generate-allocation-counts #${gac})'\
'(generate-instruction-counts #${gic})'\
'(generate-covin-files #$c)'\
'(run-cp0 (lambda (cp0 x)'\
' (do ([i ${cp0} (fx- i 1)] [x x (cp0 x)])'\
' ((fx= i 0) x))))'\
'(for-each (lambda (x) (delete-file (string-append (path-root (symbol->string x)) ".covin"))) (quote (${obj})))'\
'(compile-with-setup-closure-counts (quote (${closure-opt})) (quote (${src})) (quote (${obj})) (quote $m) #$r)'\
'(delete-file (string-append (path-root "${PetiteBoot}") ".covin"))'\
'(apply #%$$make-boot-file "${PetiteBoot}" (quote $m) (quote ())'\
' (map symbol->string (quote (${baseobj}))))'\
'(delete-file (string-append (path-root "${SchemeBoot}") ".covin"))'\
'(apply #%$$make-boot-file "${SchemeBoot}" (quote $m) (quote ("petite"))'\
' (map symbol->string (quote (${compilerobj}))))'\
'(when #${pdhtml} (profile-dump-html))'\
> script-static.all
script-dynamic.all:
echo '(reset-handler abort)'\
'(for-each load (command-line-arguments))'\
'(optimize-level $o)'\
'(debug-level $d)'\
'(commonization-level $(cl))'\
'(fasl-compressed #$(fc))'\
'(compress-format $(xf))'\
'(compress-level $(xl))'\
'(when #$p (compile-profile (quote source)))'\
'(when #$(bp) (compile-profile (quote block)))'\
'(generate-inspector-information #$i)'\
'(generate-allocation-counts #${gac})'\
'(generate-instruction-counts #${gic})'\
'(generate-covin-files #$c)'\
'(run-cp0 (lambda (cp0 x)'\
' (do ([i ${cp0} (fx- i 1)] [x x (cp0 x)])'\
' ((fx= i 0) x))))'\
'(for-each (lambda (x) (delete-file (string-append (path-root (symbol->string x)) ".covin"))) (quote (${obj})))'\
'(compile-with-closure-counts (quote (${closure-opt})) (quote (${src})) (quote (${obj})) (quote $m) #$r)'\
'(delete-file (string-append (path-root "${PetiteBoot}") ".covin"))'\
'(apply #%$$make-boot-file "${PetiteBoot}" (quote $m) (quote ())'\
' (map symbol->string (quote (${baseobj}))))'\
'(delete-file (string-append (path-root "${SchemeBoot}") ".covin"))'\
'(apply #%$$make-boot-file "${SchemeBoot}" (quote $m) (quote ("petite"))'\
' (map symbol->string (quote (${compilerobj}))))'\
'(when #${pdhtml} (profile-dump-html))'\
> script-dynamic.all
closure-counts: ${allsrc} ${patchfile} ${macroobj} nanopass.so base-lang.ss expand-lang.ss primref.ss types.ss io-types.ss fasl-helpers.ss hashtable-types.ss script-static.all script-dynamic.all
${Scheme} -q ${macroobj} ${patchfile} --script script-static.all
$(MAKE) ${PetiteBoot} ${SchemeBoot}
${Scheme} -q ${macroobj} ${patchfile} --script script-dynamic.all
$(MAKE) all
bootall: ${allsrc} ${patchfile} ${macroobj} nanopass.so makescript
${Scheme} -q ${macroobj} ${patchfile} --script script.all
${patch}: ${patchobj}
rm -f ${patch}
cat ${patchobj} > ${patch}
${asm} ${obj} mkheader.so: ${macroobj} nanopass.so base-lang.ss expand-lang.ss primref.ss types.ss io-types.ss fasl-helpers.ss hashtable-types.ss ${patchfile}
primvars.so setup.so mkheader.so env.so: cmacros.so priminfo.so primref.ss
setup.so: debug.ss
${patchobj}: ${macroobj} nanopass.so base-lang.ss expand-lang.ss primref.ss types.ss io-types.ss fasl-helpers.ss hashtable-types.ss env.ss
cpnanopass.$m cpnanopass.patch: nanopass.so np-languages.ss ${archincludes}
5_4.$m: ../unicode/unicode-char-cases.ss ../unicode/unicode-charinfo.ss
${Cheader}: mkheader.so ${macroobj} nanopass.so base-lang.ss expand-lang.ss primref.ss types.ss io-types.ss fasl-helpers.ss hashtable-types.ss
(if [ -r ${Cheader} ]; then mv -f ${Cheader} ${Cheader}.bak; fi)
echo '(reset-handler abort)'\
'(mkscheme.h "${Cheader}" (quote $m))' |\
${Scheme} -q ${macroobj} mkheader.so
(if `cmp -s ${Cheader} ${Cheader}.bak`;\
then mv -f ${Cheader}.bak ${Cheader};\
else rm -f ${Cheader}.bak; fi)
${Cequates}: mkheader.so ${macroobj} nanopass.so base-lang.ss expand-lang.ss primref.ss types.ss io-types.ss fasl-helpers.ss hashtable-types.ss
(if [ -r ${Cequates} ]; then mv -f ${Cequates} ${Cequates}.bak; fi)
echo '(reset-handler abort)'\
'(mkequates.h "${Cequates}")' |\
${Scheme} -q ${macroobj} mkheader.so
(if `cmp -s ${Cequates} ${Cequates}.bak`;\
then mv -f ${Cequates}.bak ${Cequates};\
else rm -f ${Cequates}.bak; fi)
.PHONY: ${Revision}
${Revision}: update-revision
@./update-revision > ${Revision}
examples:
( cd ../examples && ${MAKE} all Scheme="${Scheme} ../s/${patchfile}" )
prettyclean:
rm -f *.$m xpatch ${patch} *.patch *.so *.covin *.asm script.all header.tmp *.html
rm -rf nanopass
profileclean: prettyclean
rm -f ${ProfileDumpSource} ${ProfileDumpBlock}