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