feat: 9.5.9
This commit is contained in:
parent
cb1753732b
commit
35f43a7909
1084 changed files with 558985 additions and 0 deletions
596
s/Mf-base
Normal file
596
s/Mf-base
Normal file
|
@ -0,0 +1,596 @@
|
|||
# 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}
|
Reference in a new issue