added support for Microsoft Visual Studio 2017 on Windows
updated ez-grammar-test to write temp files to current directory and delete them when finished original commit: 89885b73d679759de9c62bab0b407318df123d6f
This commit is contained in:
parent
ff64811604
commit
5c5bdcd841
21
BUILDING
21
BUILDING
|
@ -167,11 +167,11 @@ The make file supports several targets:
|
|||
|
||||
WINDOWS
|
||||
|
||||
Building Chez Scheme under Windows with Cygwin or Bash/WSL follows the
|
||||
instructions above, except that 'make install' is not supported, and
|
||||
the 'OS' environment variable must be set to 'Windows_NT' on Bash/WSL
|
||||
(to indicate a build for Windows, as opposed to a build for Linux on
|
||||
Windows):
|
||||
Building Chez Scheme under 64-bit Windows with Cygwin or Bash/WSL
|
||||
follows the instructions above, except that 'make install' is not
|
||||
supported, and the 'OS' environment variable must be set to
|
||||
'Windows_NT' on Bash/WSL (to indicate a build for Windows, as opposed
|
||||
to a build for Linux on Windows):
|
||||
|
||||
env OS=Windows_NT ./configure
|
||||
env OS=Windows_NT make
|
||||
|
@ -179,7 +179,7 @@ env OS=Windows_NT make
|
|||
Prerequisites:
|
||||
|
||||
* Cygwin or Bash/WSL with bash, grep, make, sed, etc.
|
||||
* Microsoft Visual Studio 2015
|
||||
* Microsoft Visual Studio 2017 or 2015
|
||||
* WiX Toolset (for making an install)
|
||||
|
||||
To run Chez Scheme or Petite Chez Scheme from a Windows command prompt,
|
||||
|
@ -191,10 +191,10 @@ again with $W and $M replaced with the workarea name and machine
|
|||
type, and start Chez Scheme with the command "scheme" or Petite
|
||||
Chez with the command "petite".
|
||||
|
||||
The executables are linked against the Microsoft Visual C++ run-time
|
||||
library vcruntime140.dll. If you distribute the executables to a
|
||||
different system, be sure to include the redistributable run-time
|
||||
library.
|
||||
The executables are dynamically linked against the Microsoft Visual
|
||||
C++ run-time library vcruntime140.dll. If you distribute the
|
||||
executables to a different system, be sure to include the
|
||||
redistributable run-time library.
|
||||
|
||||
Making an Install for Windows
|
||||
|
||||
|
@ -229,4 +229,3 @@ the Cygwin values are incompatible with the Microsoft C Runtime
|
|||
Library.
|
||||
|
||||
Use 'make test' described above to run the tests.
|
||||
|
||||
|
|
5
LOG
5
LOG
|
@ -559,3 +559,8 @@
|
|||
- added "ez-grammar" example program
|
||||
examples/ez-grammar.ss, examples/ez-grammar-test.ss,
|
||||
examples/Makefile, examples.ms
|
||||
- updated ez-grammar-test to write temp files to current directory and delete them when finished
|
||||
examples/ez-grammar-test.ss
|
||||
- added support for Microsoft Visual Studio 2017 on Windows
|
||||
BUILDING, c/Mf-a6nt, c/Mf-ta6nt, c/vs.bat,
|
||||
mats/Mf-a6nt, mats/Mf-ta6nt, mats/ftype.ms
|
||||
|
|
|
@ -31,5 +31,5 @@ ${Scheme}: make.bat
|
|||
make.bat: vs.bat
|
||||
echo '@echo off' > $@
|
||||
echo 'set MAKEFLAGS=' >> $@
|
||||
echo 'vs.bat x86_amd64 amd64 && nmake /f Makefile.$m /nologo %*' >> $@
|
||||
echo 'vs.bat amd64 && nmake /f Makefile.$m /nologo %*' >> $@
|
||||
chmod +x $@
|
||||
|
|
|
@ -31,5 +31,5 @@ ${Scheme}: make.bat
|
|||
make.bat: vs.bat
|
||||
echo '@echo off' > $@
|
||||
echo 'set MAKEFLAGS=' >> $@
|
||||
echo 'vs.bat x86_amd64 amd64 && nmake /f Makefile.$m /nologo %*' >> $@
|
||||
echo 'vs.bat amd64 && nmake /f Makefile.$m /nologo %*' >> $@
|
||||
chmod +x $@
|
||||
|
|
51
c/vs.bat
51
c/vs.bat
|
@ -1,39 +1,32 @@
|
|||
@echo off
|
||||
|
||||
:: Set up Visual Studio command line environment variables given a
|
||||
:: sequence of machine types to try ("x86", "x86_amd64", and "amd64").
|
||||
:: machine type, e.g., amd64 or x86.
|
||||
|
||||
:: Note: VS 11.0 (2012) and earlier won't work, because they
|
||||
:: don't support C99 mid-block declarations. Also, there's no
|
||||
:: such thing as VS 13.0.
|
||||
:: Visual Studio 2017 Enterprise
|
||||
set BATDIR=%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build
|
||||
if exist "%BATDIR%\vcvarsall.bat" goto found
|
||||
|
||||
:: Visual Studio 2017 Professional
|
||||
set BATDIR=%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build
|
||||
if exist "%BATDIR%\vcvarsall.bat" goto found
|
||||
|
||||
:: Visual Studio 2017 Community
|
||||
set BATDIR=%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build
|
||||
if exist "%BATDIR%\vcvarsall.bat" goto found
|
||||
|
||||
:: Visual Studio 2015
|
||||
set BATDIR=%VS140COMNTOOLS%..\..\VC
|
||||
if exist "%BATDIR%\vcvarsall.bat" goto found
|
||||
|
||||
echo Visual Studio 2017 or 2015 must be installed.
|
||||
exit 1
|
||||
|
||||
:found
|
||||
|
||||
:: Clear environment variables that we might otherwise inherit
|
||||
set INCLUDE=
|
||||
set LIB=
|
||||
set LIBPATH=
|
||||
|
||||
:: Find visual studio
|
||||
set VCDIR=%VS140COMNTOOLS%\..\..\vc
|
||||
if not exist "%VCDIR%\vcvarsall.bat" set VCDIR=%VS120COMNTOOLS%\..\..\vc
|
||||
|
||||
:: Loop to find a requested machine type
|
||||
if exist "%VCDIR%\vcvarsall.bat" goto :VCDIR
|
||||
echo Could not find Visual Studio installed.
|
||||
exit 1
|
||||
|
||||
:VCDIR
|
||||
|
||||
set MACHINETYPE=%1
|
||||
if "%MACHINETYPE%" neq "" goto :MACHINE
|
||||
echo Could not find working machine type.
|
||||
exit 1
|
||||
|
||||
:MACHINE
|
||||
if "%MACHINETYPE%" == "x86" goto :VS
|
||||
if exist "%VCDIR%\bin\%MACHINETYPE%\vcvars%MACHINETYPE%.bat" goto :VS
|
||||
shift
|
||||
goto :VCDIR
|
||||
|
||||
:: Set environment variables
|
||||
:VS
|
||||
"%VCDIR%\vcvarsall.bat" %MACHINETYPE%
|
||||
"%BATDIR%\vcvarsall.bat" %1
|
||||
|
|
|
@ -348,25 +348,29 @@
|
|||
(define parse
|
||||
(lambda (fn)
|
||||
(let ([ip (open-input-file fn)])
|
||||
(let ([token-stream (lexer fn ip)])
|
||||
(define (oops)
|
||||
(let ([last-token (stream-last-forced token-stream)])
|
||||
(if last-token
|
||||
(errorf 'parse "parse error at or before character ~s of ~a" (token-bfp last-token) fn)
|
||||
(errorf 'parse "no expressions found in ~a" fn))))
|
||||
;;; return the first result, if any, for which the input stream was entirely consumed.
|
||||
(let loop ([res* (expr token-stream)])
|
||||
(if (null? res*)
|
||||
(oops)
|
||||
(let ([res (car res*)])
|
||||
(if (parse-consumed-all? res)
|
||||
(parse-result-value res)
|
||||
(loop (cdr res*))))))))))
|
||||
(dynamic-wind
|
||||
void
|
||||
(lambda ()
|
||||
(let ([token-stream (lexer fn ip)])
|
||||
(define (oops)
|
||||
(let ([last-token (stream-last-forced token-stream)])
|
||||
(if last-token
|
||||
(errorf 'parse "parse error at or before character ~s of ~a" (token-bfp last-token) fn)
|
||||
(errorf 'parse "no expressions found in ~a" fn))))
|
||||
;;; return the first result, if any, for which the input stream was entirely consumed.
|
||||
(let loop ([res* (expr token-stream)])
|
||||
(if (null? res*)
|
||||
(oops)
|
||||
(let ([res (car res*)])
|
||||
(if (parse-consumed-all? res)
|
||||
(parse-result-value res)
|
||||
(loop (cdr res*))))))))
|
||||
(lambda () (close-input-port ip))))))
|
||||
)
|
||||
|
||||
(define (ez-grammar-test)
|
||||
(import (parser))
|
||||
(with-output-to-file "/tmp/t1"
|
||||
(with-output-to-file "ez-grammar-test1"
|
||||
(lambda ()
|
||||
(for-each display
|
||||
'(
|
||||
|
@ -374,7 +378,7 @@
|
|||
)))
|
||||
'replace)
|
||||
|
||||
(with-output-to-file "/tmp/t2"
|
||||
(with-output-to-file "ez-grammar-test2"
|
||||
(lambda ()
|
||||
(for-each display
|
||||
'(
|
||||
|
@ -386,7 +390,7 @@
|
|||
)))
|
||||
'replace)
|
||||
|
||||
(with-output-to-file "/tmp/t3err"
|
||||
(with-output-to-file "ez-grammar-test3err"
|
||||
(lambda ()
|
||||
(for-each display
|
||||
'(
|
||||
|
@ -398,7 +402,7 @@
|
|||
)))
|
||||
'replace)
|
||||
|
||||
(with-output-to-file "/tmp/t4err"
|
||||
(with-output-to-file "ez-grammar-test4err"
|
||||
(lambda ()
|
||||
(for-each display
|
||||
'(
|
||||
|
@ -406,14 +410,18 @@
|
|||
)))
|
||||
'replace)
|
||||
|
||||
(unless (guard (c [else #f]) (equal? (parse "/tmp/t1") (quote (int (0 . 3) 1347))))
|
||||
(unless (guard (c [else #f]) (equal? (parse "ez-grammar-test1") (quote (int (0 . 3) 1347))))
|
||||
(printf "test 1 failed\n"))
|
||||
(unless (guard (c [else #f]) (equal? (parse "/tmp/t2") (quote (=> (13 . 25) (group (16 . 25) (=> (18 . 24) (int (21 . 24) 1253)))))))
|
||||
(delete-file "ez-grammar-test1")
|
||||
(unless (guard (c [else #f]) (equal? (parse "ez-grammar-test2") (quote (=> (13 . 25) (group (16 . 25) (=> (18 . 24) (int (21 . 24) 1253)))))))
|
||||
(printf "test 2 failed\n"))
|
||||
(unless (guard (c [else (and (equal? (condition-message c) "parse error at or before character ~s of ~a") (equal? (condition-irritants c) (quote (25 "/tmp/t3err"))))]) (parse "/tmp/t3err") #f)
|
||||
(delete-file "ez-grammar-test2")
|
||||
(unless (guard (c [else (and (equal? (condition-message c) "parse error at or before character ~s of ~a") (equal? (condition-irritants c) (quote (25 "ez-grammar-test3err"))))]) (parse "ez-grammar-test3err") #f)
|
||||
(printf "test 3 failed\n"))
|
||||
(unless (guard (c [else (and (equal? (condition-message c) "unexpected ~a at character ~s of ~a") (equal? (condition-irritants c) (quote ("eof" 6 "/tmp/t4err"))))]) (parse "/tmp/t4err") #f)
|
||||
(delete-file "ez-grammar-test3err")
|
||||
(unless (guard (c [else (and (equal? (condition-message c) "unexpected ~a at character ~s of ~a") (equal? (condition-irritants c) (quote ("eof" 6 "ez-grammar-test4err"))))]) (parse "ez-grammar-test4err") #f)
|
||||
(printf "test 4 failed\n"))
|
||||
(delete-file "ez-grammar-test4err")
|
||||
(printf "end of tests\n"))
|
||||
|
||||
#!eof
|
||||
|
|
|
@ -22,7 +22,7 @@ mdclean = cat_flush.exe cat_flush.obj foreign1.exp foreign1.lib foreign1.obj for
|
|||
include Mf-base
|
||||
|
||||
foreign1.so: $(fsrc)
|
||||
cmd.exe /c "vs.bat x86_amd64 amd64 && cl /DWIN32 /DX86_64 /Fe$@ /I${Include} /LD /MD /nologo ../bin/$m/csv941.lib $(fsrc)"
|
||||
cmd.exe /c "vs.bat amd64 && cl /DWIN32 /DX86_64 /Fe$@ /I${Include} /LD /MD /nologo ../bin/$m/csv941.lib $(fsrc)"
|
||||
|
||||
cat_flush: cat_flush.c
|
||||
cmd.exe /c "vs.bat x86_amd64 amd64 && cl /DWIN32 /DX86_64 /MD /nologo $<"
|
||||
cmd.exe /c "vs.bat amd64 && cl /DWIN32 /DX86_64 /MD /nologo $<"
|
||||
|
|
|
@ -22,7 +22,7 @@ mdclean = cat_flush.exe cat_flush.obj foreign1.exp foreign1.lib foreign1.obj for
|
|||
include Mf-base
|
||||
|
||||
foreign1.so: $(fsrc)
|
||||
cmd.exe /c "vs.bat x86_amd64 amd64 && cl /DWIN32 /DX86_64 /Fe$@ /I${Include} /LD /MD /nologo ../bin/$m/csv941.lib $(fsrc)"
|
||||
cmd.exe /c "vs.bat amd64 && cl /DWIN32 /DX86_64 /Fe$@ /I${Include} /LD /MD /nologo ../bin/$m/csv941.lib $(fsrc)"
|
||||
|
||||
cat_flush: cat_flush.c
|
||||
cmd.exe /c "vs.bat x86_amd64 amd64 && cl /DWIN32 /DX86_64 /MD /nologo $<"
|
||||
cmd.exe /c "vs.bat amd64 && cl /DWIN32 /DX86_64 /MD /nologo $<"
|
||||
|
|
|
@ -557,7 +557,7 @@
|
|||
[(a6osx a6osx)
|
||||
(system (format "cc -m64 -dynamiclib -o ~a ~a" testfile.so testfile.c))]
|
||||
[(a6nt ta6nt)
|
||||
(system (format "..\\c\\vs.bat x86_amd64 amd64 && cl /DWIN32 /Fe~a /LD /MD /nologo ~a" testfile.so testfile.c))]
|
||||
(system (format "..\\c\\vs.bat amd64 && cl /DWIN32 /Fe~a /LD /MD /nologo ~a" testfile.so testfile.c))]
|
||||
[(i3nt ti3nt)
|
||||
(system (format "..\\c\\vs.bat x86 && cl /DWIN32 /Fe~a /LD /MD /nologo ~a" testfile.so testfile.c))]
|
||||
[(arm32le tarm32le)
|
||||
|
|
Loading…
Reference in New Issue
Block a user