From fea2b1ce5e964aafbb72a8e6ec2a6be8441e5e01 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 17 Aug 2015 08:32:12 -0600 Subject: [PATCH] repairs for MinGW build Fix compiler warnings and installation bugs related to the ".exe" extension. --- racket/collects/compiler/private/xform.rkt | 9 +++++---- racket/src/gracket/Makefile.in | 4 ++-- racket/src/gracket/grmain.c | 6 ++++-- racket/src/racket/Makefile.in | 4 ++-- racket/src/racket/dynsrc/Makefile.in | 8 ++++---- racket/src/racket/dynsrc/start.c | 4 ++-- racket/src/racket/include/scheme.h | 4 ++-- racket/src/racket/src/file.c | 10 +++++----- racket/src/racket/src/mzrt.c | 4 ++-- 9 files changed, 28 insertions(+), 25 deletions(-) diff --git a/racket/collects/compiler/private/xform.rkt b/racket/collects/compiler/private/xform.rkt index 63e8dd4c2a..534fabb736 100644 --- a/racket/collects/compiler/private/xform.rkt +++ b/racket/collects/compiler/private/xform.rkt @@ -3997,8 +3997,6 @@ ;; Not a decl (values (reverse decls) el)))))) - (define braces-then-semi '(typedef struct union enum __extension__)) - (define (get-one e comma-sep?) (let loop ([e e][result null][first #f][second #f]) (cond @@ -4018,7 +4016,7 @@ [(and (eq? '|,| (tok-n (car e))) comma-sep?) (values (reverse (cons (car e) result)) (cdr e))] [(and (braces? (car e)) - (not (memq first '(typedef enum __extension__))) + (not (memq first '(typedef enum))) (or (not (memq first '(static extern const struct union))) (equal? second "C") ; => extern "C" ... (equal? second "C++") ; => extern "C++" ... @@ -4030,7 +4028,10 @@ (values (reverse (cons (car e) result)) rest) (values (reverse (list* (car rest) (car e) result)) (cdr rest))))] [else (loop (cdr e) (cons (car e) result) - (or first (tok-n (car e))) + (or first (let ([s (tok-n (car e))]) + (if (memq s '(__extension__)) + #f ; skip over annotation when deciding shape + s))) (or second (and first (tok-n (car e)))))]))) (define (foldl-statement e comma-sep? f a-init) diff --git a/racket/src/gracket/Makefile.in b/racket/src/gracket/Makefile.in index e1ff600bea..c5330870ec 100644 --- a/racket/src/gracket/Makefile.in +++ b/racket/src/gracket/Makefile.in @@ -204,7 +204,7 @@ install-lib-cgc-wx_xt: install-wx_xt-cgc: $(MAKE) @MRLIBINSTALL@-cgc-wx_xt - cd ..; $(ICP) gracket/gracket@CGC@ "$(DESTDIR)$(libpltdir)/gracket@CGC_INSTALLED@" + cd ..; $(ICP) gracket/gracket@CGC@ "$(DESTDIR)$(libpltdir)/gracket@CGC_INSTALLED@@EXE_SUFFIX@" cd ..; @STRIP_DEBUG@ "$(DESTDIR)$(libpltdir)/gracket@CGC_INSTALLED@@EXE_SUFFIX@" @RUN_RACKET_CGC@ $(SELF_RACKET_FLAGS) -cu "$(srcdir)/../racket/collects-path.rkt" @DIRCVTPRE@"$(DESTDIR)$(libpltdir)/gracket@CGC_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ @COLLECTS_PATH@ @CONFIG_PATH@ @@ -219,7 +219,7 @@ install-lib-3m-wx_xt: install-wx_xt-3m: $(MAKE) @MRLIBINSTALL@-3m-wx_xt - cd ..; $(ICP) gracket/gracket@MMM@ "$(DESTDIR)$(libpltdir)/gracket@MMM_INSTALLED@" + cd ..; $(ICP) gracket/gracket@MMM@ "$(DESTDIR)$(libpltdir)/gracket@MMM_INSTALLED@@EXE_SUFFIX@" cd ..; @STRIP_DEBUG@ "$(DESTDIR)$(libpltdir)/gracket@MMM_INSTALLED@@EXE_SUFFIX@" @RUN_RACKET_MMM@ $(SELF_RACKET_FLAGS) -cu "$(srcdir)/../racket/collects-path.rkt" @DIRCVTPRE@"$(DESTDIR)$(libpltdir)/gracket@MMM_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ @COLLECTS_PATH@ @CONFIG_PATH@ diff --git a/racket/src/gracket/grmain.c b/racket/src/gracket/grmain.c index 9debfa986b..b47e7e9e6e 100644 --- a/racket/src/gracket/grmain.c +++ b/racket/src/gracket/grmain.c @@ -52,7 +52,9 @@ static void pre_filter_cmdline_arguments(int *argc, char ***argv); #if WIN32 # define DLL_RELATIVE_PATH L"." -# define INITIAL_COLLECTS_DIRECTORY "../collects" +# ifndef INITIAL_COLLECTS_DIRECTORY +# define INITIAL_COLLECTS_DIRECTORY "../collects" +# endif #endif #ifndef INITIAL_CONFIG_DIRECTORY @@ -113,7 +115,7 @@ static void init_console_in() if (!console_in) { console_in = GetStdHandle(STD_INPUT_HANDLE); MZ_REGISTER_STATIC(console_inport); - console_inport = scheme_make_fd_input_port((int)console_in, scheme_intern_symbol("stdin"), 0, 0); + console_inport = scheme_make_fd_input_port((intptr_t)console_in, scheme_intern_symbol("stdin"), 0, 0); } } diff --git a/racket/src/racket/Makefile.in b/racket/src/racket/Makefile.in index b547c5e3c4..7e1ad7ad1f 100644 --- a/racket/src/racket/Makefile.in +++ b/racket/src/racket/Makefile.in @@ -405,14 +405,14 @@ mingw-install: mingw-install-cgc: cd ..; $(ICP) racket/lib/libmzgcxxxxxxx.dll "$(DESTDIR)$(libdir)/libmzgcxxxxxxx.dll" cd ..; $(ICP) racket/lib/libracketxxxxxxx.dll "$(DESTDIR)$(libdir)/libracketxxxxxxx.dll" - cd ..; $(ICP) racket/racket@CGC@ "$(DESTDIR)@MZINSTALLBINDIR@/Racket@CGC_INSTALLED@" + cd ..; $(ICP) racket/racket@CGC@ "$(DESTDIR)@MZINSTALLBINDIR@/Racket@CGC_INSTALLED@@EXE_SUFFIX@" @RUN_RACKET_CGC@ -cu "$(srcdir)/collects-path.rkt" @DIRCVTPRE@"$(DESTDIR)@MZINSTALLBINDIR@/Racket@CGC_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ mingw-install-cgc-final: $(NOOP) mingw-install-3m: - cd ..; $(ICP) racket/racket@MMM@ "$(DESTDIR)@MZINSTALLBINDIR@/Racket@MMM_INSTALLED@" + cd ..; $(ICP) racket/racket@MMM@ "$(DESTDIR)@MZINSTALLBINDIR@/Racket@MMM_INSTALLED@@EXE_SUFFIX@" cd ..; $(ICP) racket/lib/libracket3mxxxxxxx.dll "$(DESTDIR)$(libdir)/libracket3mxxxxxxx.dll" @RUN_RACKET_MMM@ -cu "$(srcdir)/collects-path.rkt" @DIRCVTPRE@"$(DESTDIR)@MZINSTALLBINDIR@/Racket@MMM_INSTALLED@@EXE_SUFFIX@"@DIRCVTPOST@ $(DESTDIR)@COLLECTS_PATH@ $(DESTDIR)@CONFIG_PATH@ diff --git a/racket/src/racket/dynsrc/Makefile.in b/racket/src/racket/dynsrc/Makefile.in index 8dc2f016eb..5c88395a92 100644 --- a/racket/src/racket/dynsrc/Makefile.in +++ b/racket/src/racket/dynsrc/Makefile.in @@ -25,7 +25,7 @@ ALL_CFLAGS = $(CFLAGS) $(CPPFLAGS) -I$(builddir)/.. -I$(srcdir)/../include -I$(s dynlib: $(MAKE) ../mzdyn.o - $(MAKE) ../starter + $(MAKE) ../starter@EXE_SUFFIX@ dynlib3m: $(MAKE) ../mzdyn3m.o @@ -53,12 +53,12 @@ dynexmpl.o: $(srcdir)/dynexmpl.c $(HEADERS) $(PLAIN_CC) $(ALL_CFLAGS) -c $(srcdir)/dynexmpl.c -o dynexmpl.o ../starter@NOT_MINGW@@EXE_SUFFIX@: $(srcdir)/ustart.c - $(PLAIN_CC) $(ALL_CFLAGS) -o ../starter $(srcdir)/ustart.c + $(PLAIN_CC) $(ALL_CFLAGS) -o ../starter@EXE_SUFFIX@ $(srcdir)/ustart.c ../starter@MINGW@@EXE_SUFFIX@: $(srcdir)/start.c ../mrstarter@EXE_SUFFIX@ sres.o - $(PLAIN_CC) $(ALL_CFLAGS) -o ../starter $(srcdir)/start.c sres.o + $(PLAIN_CC) $(ALL_CFLAGS) -o ../starter@EXE_SUFFIX@ $(srcdir)/start.c sres.o ../mrstarter@EXE_SUFFIX@: sres.o - $(PLAIN_CC) $(ALL_CFLAGS) -mwindows -DMRSTART -o ../mrstarter $(srcdir)/start.c sres.o + $(PLAIN_CC) $(ALL_CFLAGS) -mwindows -DMRSTART -o ../mrstarter@EXE_SUFFIX@ $(srcdir)/start.c sres.o sres.o: @WINDRES@ -i $(srcdir)/../../worksp/starters/start.rc -o sres.o diff --git a/racket/src/racket/dynsrc/start.c b/racket/src/racket/dynsrc/start.c index 2111910152..7e00019e64 100644 --- a/racket/src/racket/dynsrc/start.c +++ b/racket/src/racket/dynsrc/start.c @@ -320,7 +320,7 @@ int wmain(int argc_in, wchar_t **argv_in) if (_wstat(go, &st)) { #ifdef USE_WINMAIN wchar_t errbuff[MAXCOMMANDLEN * 2]; - swprintf(errbuff,L"Can't find %s",go); + swprintf(errbuff,sizeof(errbuff),L"Can't find %s",go); MessageBoxW(NULL,errbuff,L"Error",MB_OK); #else char errbuff[MAXCOMMANDLEN * 2]; @@ -367,7 +367,7 @@ int wmain(int argc_in, wchar_t **argv_in) if (cl_len > MAXCOMMANDLEN) { #ifdef MRSTART wchar_t errbuff[MAXCOMMANDLEN * 2]; - swprintf(errbuff,L"Command line of %d characters exceeds %d characters: %.1024s", + swprintf(errbuff,sizeof(errbuff),L"Command line of %d characters exceeds %d characters: %.1024s", cl_len, MAXCOMMANDLEN,command_line); MessageBoxW(NULL,errbuff,L"Error",MB_OK); #else diff --git a/racket/src/racket/include/scheme.h b/racket/src/racket/include/scheme.h index 113ca373ae..91a5d30b88 100644 --- a/racket/src/racket/include/scheme.h +++ b/racket/src/racket/include/scheme.h @@ -1906,8 +1906,8 @@ MZ_EXTERN void scheme_register_embedded_load(intptr_t len, const char *s); typedef void (*Scheme_Exit_Proc)(int v); MZ_EXTERN Scheme_Exit_Proc scheme_exit; MZ_EXTERN void scheme_set_exit(Scheme_Exit_Proc p); -typedef void (*Scheme_At_Exit_Callback_Proc)(); -typedef void (*Scheme_At_Exit_Proc)(Scheme_At_Exit_Callback_Proc); +typedef void (*Scheme_At_Exit_Callback_Proc)(void); +typedef int (*Scheme_At_Exit_Proc)(Scheme_At_Exit_Callback_Proc); MZ_EXTERN void scheme_set_atexit(Scheme_At_Exit_Proc p); typedef void (*scheme_console_printf_t)(char *str, ...); MZ_EXTERN scheme_console_printf_t scheme_console_printf; diff --git a/racket/src/racket/src/file.c b/racket/src/racket/src/file.c index 1209ef82f3..fdfdbe689e 100644 --- a/racket/src/racket/src/file.c +++ b/racket/src/racket/src/file.c @@ -2411,9 +2411,9 @@ Scheme_Object *combine_link_path(char *copy, int len, char *clink, int clen, # define MZ_UNC_WRITE 0x2 # define MZ_UNC_EXEC 0x4 -static int UNC_stat(char *dirname, int len, int *flags, int *isdir, int *islink, +static int UNC_stat(const char *dirname, int len, int *flags, int *isdir, int *islink, Scheme_Object **date, mzlonglong *filesize, - char **resolved_path, int set_flags) + const char **resolved_path, int set_flags) /* dirname must be absolute */ { /* Note: stat() doesn't work with UNC "drive" names or \\?\ paths. @@ -4179,7 +4179,7 @@ static char *filename_for_error(Scheme_Object *p) } #ifdef DOS_FILE_SYSTEM -static int enable_write_permission(char *fn) +static int enable_write_permission(const char *fn) { int len; int flags; @@ -5407,10 +5407,10 @@ static Scheme_Object *do_directory_list(int break_ok, int argc, Scheme_Object *a err_val = GetLastError(); if ((err_val == ERROR_DIRECTORY) && CreateSymbolicLinkProc) { /* check for symbolic link */ - char *resolved; + const char *resolved; if (UNC_stat(filename, strlen(filename), NULL, NULL, NULL, NULL, NULL, &resolved, -1)) { if (resolved) { - filename = resolved; + filename = (char *)resolved; goto retry; } } diff --git a/racket/src/racket/src/mzrt.c b/racket/src/racket/src/mzrt.c index 4075c7e44a..269abff799 100644 --- a/racket/src/racket/src/mzrt.c +++ b/racket/src/racket/src/mzrt.c @@ -178,9 +178,9 @@ void *mzrt_thread_stub(void *data){ } #ifdef WIN32 -DWORD WINAPI mzrt_win_thread_stub(void *data) +uintptr_t WINAPI mzrt_win_thread_stub(void *data) { - return (DWORD)mzrt_thread_stub(data); + return (uintptr_t)mzrt_thread_stub(data); } #endif