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
	
	 tmtt
						tmtt