From fc8b2f02f98d2b319e488f6b164401a958fd6e74 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 12 Aug 2014 11:08:15 +0100 Subject: [PATCH] Windows: more changes to auto-adapt to Visual Studio version Although newer versions of Visual Studio can open 2010 projects, the meaning of the project turns out to be: use 2010 tools. So, I've added a step in the build script to automatically upgrade the solutions and projects based on the version of Visual Studio that is being run. Meanwhile, since my previous tests for VS 2012 and VS 2013 were using VS 2010 projects, I wasn't actually testing with the 2012 and 2013 compilers. Additional changes are needed to make those work, notably a fresh implementation of setjmp() and longjmp() for Win64. This was all very painful, but the projects are now in much better shape, so maybe it won't be so bad from here. --- racket/collects/compiler/private/xform.rkt | 6 +- racket/src/racket/include/mzwin.def | 1 + racket/src/racket/include/mzwin3m.def | 1 + racket/src/racket/include/scheme.h | 30 ++++- racket/src/racket/sconfig.h | 2 +- racket/src/racket/src/mzsj86.c | 31 ++++- racket/src/racket/src/mzsj86w64.S | 63 ++++++++++ racket/src/racket/src/schemef.h | 1 + racket/src/racket/src/schemex.h | 4 +- racket/src/racket/src/schemex.inc | 1 + racket/src/racket/src/schemexm.h | 1 + racket/src/racket/src/setjmpup.c | 10 ++ racket/src/worksp/.gitignore | 7 ++ racket/src/worksp/README | 11 +- racket/src/worksp/build.bat | 4 + racket/src/worksp/gc2/make.rkt | 24 +++- racket/src/worksp/genvsx.c | 108 ++++++++++++++++++ racket/src/worksp/gracket/gracket.vcxproj | 4 +- racket/src/worksp/libffi/libffi.vcxproj | 34 +++--- racket/src/worksp/libmzgc/libmzgc.vcxproj | 84 +++----------- racket/src/worksp/libracket/libracket.vcxproj | 10 +- racket/src/worksp/mrstart/mrstart.vcxproj | 13 ++- racket/src/worksp/mzcom/mzcom.vcxproj | 18 +-- racket/src/worksp/mzstart/mzstart.vcxproj | 9 +- racket/src/worksp/racket/racket.vcxproj | 4 +- racket/src/worksp/sgc/sgc.vcxproj | 50 +++----- 26 files changed, 369 insertions(+), 162 deletions(-) create mode 100644 racket/src/racket/src/mzsj86w64.S create mode 100644 racket/src/worksp/genvsx.c diff --git a/racket/collects/compiler/private/xform.rkt b/racket/collects/compiler/private/xform.rkt index ebba5845bb..ee0520a773 100644 --- a/racket/collects/compiler/private/xform.rkt +++ b/racket/collects/compiler/private/xform.rkt @@ -81,6 +81,7 @@ (hash-set! used-symbols (string->symbol "scheme_thread_local_key") 1) (hash-set! used-symbols (string->symbol "scheme_thread_locals") 1) (hash-set! used-symbols (string->symbol "pthread_getspecific") 1) + (hash-set! used-symbols (string->symbol "scheme_get_mz_setjmp") 1) ;; For dependency tracking: (define depends-files (make-hash)) @@ -766,6 +767,9 @@ (printf (if callee-restore? "#define XFORM_RESET_VAR_STACK /* empty */\n" "#define XFORM_RESET_VAR_STACK SET_GC_VARIABLE_STACK((void **)__gc_var_stack__[0]);\n")) + + ;; Indirect setjmp support: + (printf "#define scheme_mz_setjmp_post_xform(s) ((scheme_get_mz_setjmp())(s))\n") (unless pgc-really? (printf "#include \"cgc2.h\"\n")) @@ -860,7 +864,7 @@ ;; These don't act like functions, but we need to treat them ;; specially: (define setjmp-functions - '(setjmp _setjmp scheme_setjmp scheme_mz_setjmp)) + '(setjmp _setjmp scheme_setjmp scheme_mz_setjmp scheme_mz_setjmp_post_xform)) ;; The non-functions table identifies symbols to ignore when ;; finding function calls diff --git a/racket/src/racket/include/mzwin.def b/racket/src/racket/include/mzwin.def index c6aaf892dc..793ff308dd 100644 --- a/racket/src/racket/include/mzwin.def +++ b/racket/src/racket/include/mzwin.def @@ -3,6 +3,7 @@ EXPORTS scheme_setjmpup_relative scheme_longjmpup scheme_reset_jmpup_buf + scheme_get_mz_setjmp scheme_mz_setjmp scheme_mz_longjmp scheme_clear_escape diff --git a/racket/src/racket/include/mzwin3m.def b/racket/src/racket/include/mzwin3m.def index 2fe6d62e67..eec3094382 100644 --- a/racket/src/racket/include/mzwin3m.def +++ b/racket/src/racket/include/mzwin3m.def @@ -3,6 +3,7 @@ EXPORTS scheme_setjmpup_relative scheme_longjmpup scheme_reset_jmpup_buf + scheme_get_mz_setjmp scheme_mz_setjmp scheme_mz_longjmp scheme_clear_escape diff --git a/racket/src/racket/include/scheme.h b/racket/src/racket/include/scheme.h index cfbf9d915d..3bf595de04 100644 --- a/racket/src/racket/include/scheme.h +++ b/racket/src/racket/include/scheme.h @@ -957,7 +957,12 @@ typedef struct Scheme_Env Scheme_Env; /*========================================================================*/ #ifdef USE_MZ_SETJMP +# if defined(_WIN64) +# define USE_MZ_SETJMP_INDIRECT +typedef intptr_t mz_pre_jmp_buf[31]; +# else typedef intptr_t mz_pre_jmp_buf[8]; +# endif #else # define mz_pre_jmp_buf jmp_buf #endif @@ -1008,6 +1013,23 @@ typedef struct Scheme_Continuation_Jump_State { char is_kill, is_escape, skip_dws; } Scheme_Continuation_Jump_State; +#ifdef USE_MZ_SETJMP_INDIRECT +/* Needed to avoid a direct reference to scheme_mz_setjmp, + which might be implemented in assembly and incompatible + with delayloading: */ +typedef int (*Scheme_Setjmp_Proc)(mz_pre_jmp_buf); +# ifndef MZ_XFORM +# define scheme_call_mz_setjmp(s) ((scheme_get_mz_setjmp())(s)) +# else +# define scheme_call_mz_setjmp(s) scheme_mz_setjmp_post_xform(s) +# endif +#else +# ifdef USE_MZ_SETJMP +# define scheme_call_mz_setjmp(s) scheme_mz_setjmp(s) +# endif +typedef int (*Scheme_Setjmp_Proc)(void*); +#endif + /* A mark position is in odd number, so that it can be viewed as a pointer (i.e., a fixnum): */ #define MZ_MARK_POS_TYPE intptr_t @@ -1686,20 +1708,20 @@ MZ_EXTERN Scheme_Object *scheme_eval_waiting; #ifndef USE_MZ_SETJMP # ifdef USE_UNDERSCORE_SETJMP # define scheme_mz_longjmp(b, v) _longjmp(b, v) -# define scheme_mz_setjmp(b) _setjmp(b) +# define scheme_call_mz_setjmp(b) _setjmp(b) # else # define scheme_mz_longjmp(b, v) longjmp(b, v) -# define scheme_mz_setjmp(b) setjmp(b) +# define scheme_call_mz_setjmp(b) setjmp(b) # endif #endif #ifdef MZ_USE_JIT MZ_EXTERN void scheme_jit_longjmp(mz_jit_jmp_buf b, int v); MZ_EXTERN void scheme_jit_setjmp_prepare(mz_jit_jmp_buf b); -# define scheme_jit_setjmp(b) (scheme_jit_setjmp_prepare(b), scheme_mz_setjmp((b)->jb)) +# define scheme_jit_setjmp(b) (scheme_jit_setjmp_prepare(b), scheme_call_mz_setjmp((b)->jb)) #else # define scheme_jit_longjmp(b, v) scheme_mz_longjmp(b, v) -# define scheme_jit_setjmp(b) scheme_mz_setjmp(b) +# define scheme_jit_setjmp(b) scheme_call_mz_setjmp(b) #endif #ifdef MZ_PRECISE_GC diff --git a/racket/src/racket/sconfig.h b/racket/src/racket/sconfig.h index 2bf958d6b5..44b9d5d107 100644 --- a/racket/src/racket/sconfig.h +++ b/racket/src/racket/sconfig.h @@ -593,7 +593,7 @@ the actual size from the executable on startup: */ # define WINDOWS_DEFAULT_STACK_SIZE 1048576 -# ifndef _WIN64 +# if !defined(_WIN64) || (_MSC_VER >= 1600) # define USE_MZ_SETJMP # endif diff --git a/racket/src/racket/src/mzsj86.c b/racket/src/racket/src/mzsj86.c index 0736c67fd5..26953efb8c 100644 --- a/racket/src/racket/src/mzsj86.c +++ b/racket/src/racket/src/mzsj86.c @@ -24,7 +24,36 @@ #include "schpriv.h" -#ifndef _WIN64 +#ifdef _WIN64 + +# ifdef USE_MZ_SETJMP_INDIRECT + +/* Implementation in "mzsj86w64.S", and these wrappers make + DLL exporting work: */ + +extern int _scheme_mz_setjmp(mz_pre_jmp_buf b); +extern void _scheme_mz_longjmp(mz_pre_jmp_buf b, int v); + +Scheme_Setjmp_Proc scheme_get_mz_setjmp(void) +{ + return _scheme_mz_setjmp; +} + +void scheme_mz_longjmp(mz_pre_jmp_buf b, int v) +{ + _scheme_mz_longjmp(b, v); +} + +int scheme_mz_setjmp(mz_pre_jmp_buf b) +{ + scheme_log_abort("internal error: setjmp wasn't indirect"); + abort(); + return 0; +} + +# endif + +#else int __declspec(naked) scheme_mz_setjmp(mz_jmp_buf b) { diff --git a/racket/src/racket/src/mzsj86w64.S b/racket/src/racket/src/mzsj86w64.S new file mode 100644 index 0000000000..59c81a56f9 --- /dev/null +++ b/racket/src/racket/src/mzsj86w64.S @@ -0,0 +1,63 @@ +PUBLIC _scheme_mz_setjmp +PUBLIC _scheme_mz_longjmp + +_TEXT SEGMENT + +_scheme_mz_setjmp PROC + mov [RCX], RBX + mov [RCX+08h], RBP + mov [RCX+10h], RDI + mov [RCX+18h], RSI + mov [RCX+20h], RSP + mov [RCX+28h], R12 + mov [RCX+30h], R13 + mov [RCX+38h], R14 + mov [RCX+40h], R15 + stmxcsr [RCX+48h] + movdqu [RCX+50h], XMM6 + movdqu [RCX+60h], XMM7 + movdqu [RCX+70h], XMM8 + movdqu [RCX+80h], XMM9 + movdqu [RCX+90h], XMM10 + movdqu [RCX+0A0h], XMM11 + movdqu [RCX+0B0h], XMM12 + movdqu [RCX+0C0h], XMM13 + movdqu [RCX+0D0h], XMM14 + movdqu [RCX+0E0h], XMM15 + mov RAX, [RSP] + mov [RCX+0F0h], RAX + mov RAX, 0 + ret +_scheme_mz_setjmp ENDP + +_scheme_mz_longjmp PROC + mov RBX, [RCX] + mov RBP, [RCX+08h] + mov RDI, [RCX+10h] + mov RSI, [RCX+18h] + mov RSP, [RCX+20h] + mov R12, [RCX+28h] + mov R13, [RCX+30h] + mov R14, [RCX+38h] + mov R15, [RCX+40h] + ldmxcsr [RCX+48h] + movdqu XMM6, [RCX+50h] + movdqu XMM7, [RCX+60h] + movdqu XMM8, [RCX+70h] + movdqu XMM9, [RCX+80h] + movdqu XMM10, [RCX+90h] + movdqu XMM11, [RCX+0A0h] + movdqu XMM12, [RCX+0B0h] + movdqu XMM13, [RCX+0C0h] + movdqu XMM14, [RCX+0D0h] + movdqu XMM15, [RCX+0E0h] + mov RAX, [RCX+0F0h] + mov [RSP], RAX + mov RAX, RDX + ret +_scheme_mz_longjmp ENDP + +_TEXT ENDS + +END + diff --git a/racket/src/racket/src/schemef.h b/racket/src/racket/src/schemef.h index 44b3963c29..0a5e3ed026 100644 --- a/racket/src/racket/src/schemef.h +++ b/racket/src/racket/src/schemef.h @@ -42,6 +42,7 @@ MZ_EXTERN void scheme_longjmpup(Scheme_Jumpup_Buf *b); MZ_EXTERN void scheme_reset_jmpup_buf(Scheme_Jumpup_Buf *b); #ifdef USE_MZ_SETJMP +MZ_EXTERN Scheme_Setjmp_Proc scheme_get_mz_setjmp(void); MZ_EXTERN int scheme_mz_setjmp(mz_pre_jmp_buf b); MZ_EXTERN void scheme_mz_longjmp(mz_pre_jmp_buf b, int v); #endif diff --git a/racket/src/racket/src/schemex.h b/racket/src/racket/src/schemex.h index f636aa6f71..e82bd9189a 100644 --- a/racket/src/racket/src/schemex.h +++ b/racket/src/racket/src/schemex.h @@ -22,6 +22,7 @@ int (*scheme_setjmpup_relative)(Scheme_Jumpup_Buf *b, void *base, void (*scheme_longjmpup)(Scheme_Jumpup_Buf *b); void (*scheme_reset_jmpup_buf)(Scheme_Jumpup_Buf *b); #ifdef USE_MZ_SETJMP +Scheme_Setjmp_Proc (*scheme_get_mz_setjmp)(void); int (*scheme_mz_setjmp)(mz_pre_jmp_buf b); void (*scheme_mz_longjmp)(mz_pre_jmp_buf b, int v); #endif @@ -952,8 +953,7 @@ int (*scheme_is_list)(Scheme_Object *obj1); int (*scheme_list_length)(Scheme_Object *list); int (*scheme_proper_list_length)(Scheme_Object *list); Scheme_Object *(*scheme_alloc_list)(int size); -Scheme_Object *(*scheme_map_1)(Scheme_Object *(*f)(Scheme_Object*), - Scheme_Object *l); +Scheme_Object *(*scheme_map_1)(Scheme_Object *(*f)(Scheme_Object*), Scheme_Object *l); Scheme_Object *(*scheme_car)(Scheme_Object *pair); Scheme_Object *(*scheme_cdr)(Scheme_Object *pair); Scheme_Object *(*scheme_cadr)(Scheme_Object *pair); diff --git a/racket/src/racket/src/schemex.inc b/racket/src/racket/src/schemex.inc index 9a40c6ce4b..8f4850d639 100644 --- a/racket/src/racket/src/schemex.inc +++ b/racket/src/racket/src/schemex.inc @@ -3,6 +3,7 @@ scheme_extension_table->scheme_longjmpup = scheme_longjmpup; scheme_extension_table->scheme_reset_jmpup_buf = scheme_reset_jmpup_buf; #ifdef USE_MZ_SETJMP + scheme_extension_table->scheme_get_mz_setjmp = scheme_get_mz_setjmp; scheme_extension_table->scheme_mz_setjmp = scheme_mz_setjmp; scheme_extension_table->scheme_mz_longjmp = scheme_mz_longjmp; #endif diff --git a/racket/src/racket/src/schemexm.h b/racket/src/racket/src/schemexm.h index 32425656a7..362c47c556 100644 --- a/racket/src/racket/src/schemexm.h +++ b/racket/src/racket/src/schemexm.h @@ -3,6 +3,7 @@ #define scheme_longjmpup (scheme_extension_table->scheme_longjmpup) #define scheme_reset_jmpup_buf (scheme_extension_table->scheme_reset_jmpup_buf) #ifdef USE_MZ_SETJMP +#define scheme_get_mz_setjmp (scheme_extension_table->scheme_get_mz_setjmp) #define scheme_mz_setjmp (scheme_extension_table->scheme_mz_setjmp) #define scheme_mz_longjmp (scheme_extension_table->scheme_mz_longjmp) #endif diff --git a/racket/src/racket/src/setjmpup.c b/racket/src/racket/src/setjmpup.c index 248cb54264..e6e04221a9 100644 --- a/racket/src/racket/src/setjmpup.c +++ b/racket/src/racket/src/setjmpup.c @@ -716,3 +716,13 @@ void scheme_mz_longjmp(mz_pre_jmp_buf b, int v) } #endif + + +#ifndef USE_MZ_SETJMP_INDIRECT +Scheme_Setjmp_Proc scheme_get_mz_setjmp(void) +{ + scheme_log_abort("internal error: setjmp was indirect?"); + abort(); + return NULL; +} +#endif diff --git a/racket/src/worksp/.gitignore b/racket/src/worksp/.gitignore index a146a8f555..0b53f3d0b8 100644 --- a/racket/src/worksp/.gitignore +++ b/racket/src/worksp/.gitignore @@ -9,11 +9,18 @@ # files generated by Visual Studio */*.ncb +*/*.opensdf */*.suo */*.sdf */*.sln.cache +# potentially generated by "genvsx" +*/*X.vcxproj +*/*X.sln + checkvs9.obj checkvs9.exe +genvsx.obj +genvsx.exe rbuildmode.obj rbuildmode.exe diff --git a/racket/src/worksp/README b/racket/src/worksp/README index aa6bac84c5..eddefb2230 100644 --- a/racket/src/worksp/README +++ b/racket/src/worksp/README @@ -77,11 +77,16 @@ The CGC source code for RacketCGC and GRacketCGC is split into several projects that are grouped into a few solutions. To build the `X' solution with Visual Studio, open the file racket\src\worksp\X\X.sln, but add `9' before ".sln" if you're using Visual Studio 2008 (i.e., -version 9.0). +version 9.0). The solution files without a number are for Visual +Studio 2010, but they should upgrade immediately for later versions. [The .vcproj files are used by the ...9.sln solutions, while the - .vcxproj files are used by the other .sln solutions. The latter - are compatible with Visual Studio 2010 and up.] + .vcxproj files are used by the other .sln solutions. The latter are + compatible with Visual Studio 2010. For Visual Studio versions later + than 2010, "build.bat" script auto-upgrades projects in a copy whose + file name ends with a literal "X" to match the current tool version, + but you can also just upgrade them within your version of Visual + Studio.] To build RacketCGC, build the Racket solution in racket\src\worksp\racket - makes racket\RacketCGC.exe diff --git a/racket/src/worksp/build.bat b/racket/src/worksp/build.bat index e09cfd27d2..098c953089 100644 --- a/racket/src/worksp/build.bat +++ b/racket/src/worksp/build.bat @@ -8,6 +8,10 @@ cl checkvs9.c checkvs9.exe if errorlevel 1 (set PLTSLNVER=9) +cl genvsx.c +genvsx.exe +if errorlevel 1 (set PLTSLNVER=X) + if not exist ..\..\etc mkdir ..\..\etc if not exist ..\..\doc mkdir ..\..\doc if not exist ..\..\share mkdir ..\..\share diff --git a/racket/src/worksp/gc2/make.rkt b/racket/src/worksp/gc2/make.rkt index 0c4e6112af..72be16a2f0 100644 --- a/racket/src/worksp/gc2/make.rkt +++ b/racket/src/worksp/gc2/make.rkt @@ -160,18 +160,26 @@ (check-timestamp t2 f) (>= t t2))) deps)))) - (unless (system- (format "~a ~a /MT /Zi ~a /c ~a /Fdxsrc/ /Fo~a" cl.exe flags opt-flags c o)) + (unless (system- (format "~a ~a /MT /Zi /GS- ~a /c ~a /Fdxsrc/ /Fo~a" cl.exe flags opt-flags c o)) (error "failed compile")))) (define common-deps (list "../../racket/gc2/xform.rkt" "../../racket/gc2/xform-mod.rkt")) (define (find-build-file d f) + (define (find-release d2) + ;; An ".obj" location may depend on whether CGC was + ;; built with SGC or the Boehm GC + (or (for/or ([d '("srelease" "brelease")]) + (define p (string-append d2 d "/")) + (and (file-exists? (build-path p f)) + p)) + (string-append d2 "release/"))) (string-append (if win64? - (string-append "../" d "/x64/release") - (let ([d2 (string-append "../" d "/win32/release")]) - (if (directory-exists? d2) d2 (string-append "../" d "/release")))) + (find-release (string-append "../" d "/x64/")) + (let ([d2 (find-release (string-append "../" d "/win32/"))]) + (if (directory-exists? d2) d2 (find-release (string-append "../" d "/"))))) "/" f)) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -306,7 +314,13 @@ "xsrc/foreign.obj" (find-build-file "libracket" "gmp.obj") (find-build-file "racket" "libffi.lib") - (map (lambda (n) (format "xsrc/~a.obj" n)) srcs))]) + (append + (let ([f (and win64? + (find-build-file "libracket" "mzsj86w64.obj"))]) + (if (and f (file-exists? f)) + (list f) + null)) + (map (lambda (n) (format "xsrc/~a.obj" n)) srcs)))]) (link-dll objs null null dll "" #f)) (define (check-rc res rc) diff --git a/racket/src/worksp/genvsx.c b/racket/src/worksp/genvsx.c new file mode 100644 index 0000000000..f30dd79505 --- /dev/null +++ b/racket/src/worksp/genvsx.c @@ -0,0 +1,108 @@ +#include +#include +#include + +/* Generate racketX.sln from racket.sln, etc., to match the + current VS tool chain */ + +static const char *solutions[] = { "gracket/gracket.sln", + "mzstart/mzstart.sln", + "mrstart/mrstart.sln", + "racket/racket.sln", + "mzcom/mzcom.sln", + NULL }; + +static const char *projects[] = { "gracket/gracket.vcxproj", + "libracket/libracket.vcxproj", + "mzstart/mzstart.vcxproj", + "libffi/libffi.vcxproj", + "mrstart/mrstart.vcxproj", + "racket/racket.vcxproj", + "libmzgc/libmzgc.vcxproj", + "mzcom/mzcom.vcxproj", + "sgc/sgc.vcxproj", + NULL }; + +static const char *tool_prefix = "v"; +static const char *filename_suffix = ".vcxproj"; + +static void adjust_file(const char *fn, const char *vers) { + char *new_fn; + int i, j, tool_pos, filename_pos; + FILE *f, *new_f; + + new_fn = malloc(strlen(fn) + 2); + for (i = 0, j = 0; fn[i]; i++, j++) { + if (fn[i] == '.') + new_fn[j++] = 'X'; + new_fn[j] = fn[i]; + } + new_fn[j] = 0; + + f = fopen(fn, "r"); + new_f = fopen(new_fn, "w"); + + tool_pos = 0; + filename_pos = 0; + while (1) { + i = fgetc(f); + + if (i == EOF) + break; + + if (i == tool_prefix[tool_pos]) + tool_pos++; + else + tool_pos = 0; + + if (i && (i == filename_suffix[filename_pos])) { + /* don't write potential suffix until we know whether it matches... */ + filename_pos++; + } else { + if (filename_pos) { + if (!filename_suffix[filename_pos]) { + /* found matching suffix, so add "X" before: */ + fwrite("X", 1, 1, new_f); + } + fwrite(filename_suffix, 1, filename_pos, new_f); + filename_pos = 0; + } + fputc(i, new_f); + } + + if (!tool_prefix[tool_pos]) { + /* found matching tool prefix, so adjust version */ + fwrite(vers, 1, strlen(vers), new_f); + tool_pos = 0; + fgetc(f); fgetc(f); fgetc(f); /* = "100" */ + } + } + + fclose(f); + fclose(new_f); +} + +int main() { + const char *vers = "100"; + int i; + +#if _MSC_VER >= 1800 + /* VS 2013 */ + vers = "120"; +#elif _MSC_VER >= 1700 + /* VS 2012 */ + vers = "110"; +#else + /* VS 2010 or earlier */ + return 0; +#endif + + for (i = 0; solutions[i]; i++) { + adjust_file(solutions[i], vers); + } + for (i = 0; projects[i]; i++) { + adjust_file(projects[i], vers); + } + + return 1; +} diff --git a/racket/src/worksp/gracket/gracket.vcxproj b/racket/src/worksp/gracket/gracket.vcxproj index a6c884249d..632b247327 100644 --- a/racket/src/worksp/gracket/gracket.vcxproj +++ b/racket/src/worksp/gracket/gracket.vcxproj @@ -53,9 +53,10 @@ <_ProjectFileVersion>10.0.40219.1 - $(ProjectName)CGC + GracketCGC ..\..\..\lib\ $(Platform)\$(Configuration)\ + v100 @@ -65,6 +66,7 @@ true ProgramDatabase Default + false NDEBUG;%(PreprocessorDefinitions) diff --git a/racket/src/worksp/libffi/libffi.vcxproj b/racket/src/worksp/libffi/libffi.vcxproj index d74beb6785..710e55e770 100644 --- a/racket/src/worksp/libffi/libffi.vcxproj +++ b/racket/src/worksp/libffi/libffi.vcxproj @@ -60,63 +60,55 @@ <_ProjectFileVersion>10.0.40219.1 + libffi $(SolutionDir)$(Platform)\$(Configuration)\ $(Platform)\$(Configuration)\ + v100 - + Disabled ..\libffi;..\..\foreign\libffi\include;..\..\foreign\libffi\src\x86;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) true - EnableFastChecks - MultiThreadedDebug Level3 - EditAndContinue + ProgramDatabase + false + + + + + Disabled + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug Disabled - ..\libffi;..\..\foreign\libffi\include;..\..\foreign\libffi\src\x86;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) - true EnableFastChecks MultiThreadedDebug - - - Level3 - ProgramDatabase MaxSpeed true - ..\libffi;..\..\foreign\libffi\include;..\..\foreign\libffi\src\x86;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) MultiThreaded true - - - Level3 - ProgramDatabase MaxSpeed true - ..\libffi;..\..\foreign\libffi\include;..\..\foreign\libffi\src\x86;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) MultiThreaded true - - - Level3 - ProgramDatabase diff --git a/racket/src/worksp/libmzgc/libmzgc.vcxproj b/racket/src/worksp/libmzgc/libmzgc.vcxproj index d1eccc80ba..a76ef5d07b 100644 --- a/racket/src/worksp/libmzgc/libmzgc.vcxproj +++ b/racket/src/worksp/libmzgc/libmzgc.vcxproj @@ -64,68 +64,53 @@ <_ProjectFileVersion>10.0.40219.1 - $(ProjectName)xxxxxxx + libmzgcxxxxxxx ..\..\..\lib\ $(Platform)\$(Configuration)\ + v100 - + - Disabled ..\..\Racket\Gc\Include - WIN32;_DEBUG;_WINDOWS;_USRDLL;GC_BUILD;MD_LIB_MAIN;SILENT;OLD_BLOCK_ALLOC;LARGE_CONFIG;ATOMIC_UNCOLLECTABLE;INITIAL_MARK_STACK_SIZE=8192;GC_DLL;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebug Level3 true ProgramDatabase Default + false NDEBUG;%(PreprocessorDefinitions) 0x0409 - /MACHINE:I386 %(AdditionalOptions) User32.lib;%(AdditionalDependencies) - ..\..\..\lib\$(ProjectName)xxxxxxx.dll + ..\..\..\lib\libmzgcxxxxxxx.dll true true false - ..\..\..\lib\msvc\$(ProjectName)xxxxxxx.lib + ..\..\..\lib\msvc\libmzgcxxxxxxx.lib + + + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;GC_BUILD;MD_LIB_MAIN;SILENT;OLD_BLOCK_ALLOC;LARGE_CONFIG;ATOMIC_UNCOLLECTABLE;INITIAL_MARK_STACK_SIZE=8192;GC_DLL;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + + Disabled - ..\..\Racket\Gc\Include WIN32;_DEBUG;_WINDOWS;_USRDLL;GC_BUILD;MD_LIB_MAIN;SILENT;OLD_BLOCK_ALLOC;LARGE_CONFIG;ATOMIC_UNCOLLECTABLE;INITIAL_MARK_STACK_SIZE=8192;GC_DLL;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug - - - Level3 - true - ProgramDatabase - Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - /MACHINE:X64 %(AdditionalOptions) - User32.lib;%(AdditionalDependencies) - ..\..\..\lib\$(ProjectName)xxxxxxx.dll - true - true - false - - - ..\..\..\lib\msvc\$(ProjectName)xxxxxxx.lib MachineX64 @@ -134,64 +119,23 @@ AnySuitable true Speed - ..\..\Racket\Gc\Include WIN32;NDEBUG;_WINDOWS;_USRDLL;GC_BUILD;SILENT;OLD_BLOCK_ALLOC;LARGE_CONFIG;ATOMIC_UNCOLLECTABLE;INITIAL_MARK_STACK_SIZE=8192;GC_DLL;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreaded true - - - Level3 - true - ProgramDatabase - Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - /MACHINE:I386 %(AdditionalOptions) - User32.lib;%(AdditionalDependencies) - ..\..\..\lib\$(ProjectName)xxxxxxx.dll - true - true - false - - - ..\..\..\lib\msvc\$(ProjectName)xxxxxxx.lib - AnySuitable true Speed - ..\..\Racket\Gc\Include WIN32;NDEBUG;_WINDOWS;_USRDLL;GC_BUILD;SILENT;OLD_BLOCK_ALLOC;LARGE_CONFIG;ATOMIC_UNCOLLECTABLE;INITIAL_MARK_STACK_SIZE=8192;GC_DLL;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreaded true - - - Level3 - true - ProgramDatabase - Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - User32.lib;%(AdditionalDependencies) - ..\..\..\lib\$(ProjectName)xxxxxxx.dll - true - true - false - - - ..\..\..\lib\msvc\$(ProjectName)xxxxxxx.lib MachineX64 diff --git a/racket/src/worksp/libracket/libracket.vcxproj b/racket/src/worksp/libracket/libracket.vcxproj index 4fb8816eef..73a59ca01c 100644 --- a/racket/src/worksp/libracket/libracket.vcxproj +++ b/racket/src/worksp/libracket/libracket.vcxproj @@ -53,9 +53,10 @@ <_ProjectFileVersion>10.0.40219.1 - $(ProjectName)xxxxxxx + libracketxxxxxxx ..\..\..\lib\ $(Platform)\$(Configuration)\ + v100 @@ -66,6 +67,7 @@ true ProgramDatabase Default + false NDEBUG;%(PreprocessorDefinitions) @@ -226,6 +228,12 @@ + + + ml64.exe /c /Cx /Fo $(Platform)\$(Configuration)\mzsj86w64.obj ..\..\racket\src\mzsj86w64.S + $(Platform)\$(Configuration)\mzsj86w64.obj;%(Outputs) + + {7db29f1e-06fd-4e39-97ff-1c7922f6901a} diff --git a/racket/src/worksp/mrstart/mrstart.vcxproj b/racket/src/worksp/mrstart/mrstart.vcxproj index f0bfc55195..f4ac329841 100644 --- a/racket/src/worksp/mrstart/mrstart.vcxproj +++ b/racket/src/worksp/mrstart/mrstart.vcxproj @@ -39,6 +39,7 @@ ..\..\..\lib\ $(Platform)\$(Configuration)\ false + v100 @@ -46,7 +47,7 @@ true true Win32 - ..\..\..\lib\$(ProjectName).tlb + ..\..\..\lib\mrstart.tlb AnySuitable @@ -68,10 +69,10 @@ /MACHINE:I386 %(AdditionalOptions) user32.lib;%(AdditionalDependencies) - ..\..\..\lib\$(ProjectName).exe + ..\..\..\lib\mrstart.exe true true - ..\..\..\lib\$(ProjectName).pdb + ..\..\..\lib\mrstart.pdb Windows false @@ -84,7 +85,7 @@ true true X64 - ..\..\..\lib\$(ProjectName).tlb + ..\..\..\lib\mrstart.tlb AnySuitable @@ -105,10 +106,10 @@ user32.lib;%(AdditionalDependencies) - ..\..\..\lib\$(ProjectName).exe + ..\..\..\lib\mrstart.exe true true - ..\..\..\lib\$(ProjectName).pdb + ..\..\..\lib\mrstart.pdb Windows false diff --git a/racket/src/worksp/mzcom/mzcom.vcxproj b/racket/src/worksp/mzcom/mzcom.vcxproj index 1e07e64553..985e6c3498 100644 --- a/racket/src/worksp/mzcom/mzcom.vcxproj +++ b/racket/src/worksp/mzcom/mzcom.vcxproj @@ -61,14 +61,15 @@ <_ProjectFileVersion>10.0.40219.1 - $(ProjectName)CGC + mzcomCGC ..\..\..\lib\ $(Platform)\$(Configuration)\ false + v100 - $(OutDir)$(ProjectName).tlb + $(OutDir)mzcom.tlb ..;..\..\racket\include;.;%(AdditionalIncludeDirectories) @@ -77,6 +78,7 @@ true ProgramDatabase Default + false _DEBUG;%(PreprocessorDefinitions) @@ -86,10 +88,10 @@ /DELAYLOAD:libracketxxxxxxx.dll /DELAYLOAD:libmzgcxxxxxxx.dll %(AdditionalOptions) delayimp.lib;%(AdditionalDependencies) - ..\..\..\lib\$(ProjectName)CGC.exe + ..\..\..\lib\mzcomCGC.exe true true - ..\..\..\lib\$(ProjectName)CGC.pdb + ..\..\..\lib\mzcomCGC.pdb Windows 8388608 false @@ -201,8 +203,8 @@ /DELAYLOAD:libracket3mxxxxxxx.dll %(AdditionalOptions) delayimp.lib;..\..\..\lib\msvc\libracket3mxxxxxxx.lib;%(AdditionalDependencies) - ..\..\..\lib\$(ProjectName).exe - ..\..\..\lib\$(ProjectName).pdb + ..\..\..\lib\mzcom.exe + ..\..\..\lib\mzcom.pdb @@ -221,8 +223,8 @@ /DELAYLOAD:libracket3mxxxxxxx.dll %(AdditionalOptions) delayimp.lib;..\..\..\lib\msvc\libracket3mxxxxxxx.lib;%(AdditionalDependencies) - ..\..\..\lib\$(ProjectName).exe - ..\..\..\lib\$(ProjectName).pdb + ..\..\..\lib\mzcom.exe + ..\..\..\lib\mzcom.pdb MachineX64 diff --git a/racket/src/worksp/mzstart/mzstart.vcxproj b/racket/src/worksp/mzstart/mzstart.vcxproj index ef8ccea76b..f15bf95ec8 100644 --- a/racket/src/worksp/mzstart/mzstart.vcxproj +++ b/racket/src/worksp/mzstart/mzstart.vcxproj @@ -39,6 +39,7 @@ ..\..\..\lib\ $(Platform)\$(Configuration)\ false + v100 @@ -60,10 +61,10 @@ /MACHINE:I386 %(AdditionalOptions) - ..\..\..\lib\$(ProjectName).exe + ..\..\..\lib\mzstart.exe true true - ..\..\..\lib\$(ProjectName).pdb + ..\..\..\lib\mzstart.pdb Console false @@ -89,10 +90,10 @@ ..\starters - ..\..\..\lib\$(ProjectName).exe + ..\..\..\lib\mzstart.exe true true - ..\..\..\lib\$(ProjectName).pdb + ..\..\..\lib\mzstart.pdb Console false diff --git a/racket/src/worksp/racket/racket.vcxproj b/racket/src/worksp/racket/racket.vcxproj index db98f21222..3b47d6f49c 100644 --- a/racket/src/worksp/racket/racket.vcxproj +++ b/racket/src/worksp/racket/racket.vcxproj @@ -42,6 +42,7 @@ Application false MultiByte + v100 @@ -53,7 +54,7 @@ <_ProjectFileVersion>10.0.40219.1 - $(ProjectName)CGC + RacketCGC ..\..\..\ $(Platform)\$(Configuration)\ false @@ -66,6 +67,7 @@ true ProgramDatabase Default + false _DEBUG;%(PreprocessorDefinitions) diff --git a/racket/src/worksp/sgc/sgc.vcxproj b/racket/src/worksp/sgc/sgc.vcxproj index c695318336..2ff6e036d0 100644 --- a/racket/src/worksp/sgc/sgc.vcxproj +++ b/racket/src/worksp/sgc/sgc.vcxproj @@ -63,23 +63,33 @@ ..\..\..\lib\ $(Platform)\$(Configuration)\ false + libmzgcxxxxxxx + v100 - + - Disabled - WIN32;_DEBUG;_WINDOWS;_USRDLL;SGC_EXPORTS;%(PreprocessorDefinitions) + ..;%(AdditionalIncludeDirectories) true - EnableFastChecks - MultiThreadedDebugDLL - Use + Level3 - EditAndContinue + ProgramDatabase + false ..\..\..\lib\libmzgcxxxxxxx.dll true Windows ..\..\..\lib\msvc\libmzgcxxxxxxx.lib + + + + + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;SGC_EXPORTS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + MachineX86 @@ -87,18 +97,10 @@ Disabled WIN32;_DEBUG;_WINDOWS;_USRDLL;SGC_EXPORTS;%(PreprocessorDefinitions) - true EnableFastChecks MultiThreadedDebugDLL - Use - Level3 - ProgramDatabase - ..\..\..\lib\libmzgcxxxxxxx.dll - true - Windows - ..\..\..\lib\msvc\libmzgcxxxxxxx.lib MachineX64 @@ -106,22 +108,13 @@ Disabled true - ..;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;SGC_EXPORTS;%(PreprocessorDefinitions) MultiThreadedDLL true - - - Level3 - ProgramDatabase - ..\..\..\lib\libmzgcxxxxxxx.dll - true - Windows true true - ..\..\..\lib\msvc\libmzgcxxxxxxx.lib MachineX86 @@ -129,22 +122,13 @@ Disabled true - ..;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;SGC_EXPORTS;%(PreprocessorDefinitions) MultiThreadedDLL true - - - Level3 - ProgramDatabase - ..\..\..\lib\libmzgcxxxxxxx.dll - true - Windows true true - ..\..\..\lib\msvc\libmzgcxxxxxxx.lib MachineX64