diff options
Diffstat (limited to 'erts/etc/common')
-rw-r--r-- | erts/etc/common/Makefile.in | 15 | ||||
-rw-r--r-- | erts/etc/common/dialyzer.c | 9 | ||||
-rw-r--r-- | erts/etc/common/erlc.c | 13 | ||||
-rw-r--r-- | erts/etc/common/erlexec.c | 36 | ||||
-rw-r--r-- | erts/etc/common/escript.c | 36 |
5 files changed, 68 insertions, 41 deletions
diff --git a/erts/etc/common/Makefile.in b/erts/etc/common/Makefile.in index a9acab640e..3db4fcba61 100644 --- a/erts/etc/common/Makefile.in +++ b/erts/etc/common/Makefile.in @@ -1,19 +1,19 @@ # # %CopyrightBegin% -# -# Copyright Ericsson AB 1996-2009. All Rights Reserved. -# +# +# Copyright Ericsson AB 1996-2010. All Rights Reserved. +# # The contents of this file are subject to the Erlang Public License, # Version 1.1, (the "License"); you may not use this file except in # compliance with the License. You should have received a copy of the # Erlang Public License along with this software. If not, it can be # retrieved online at http://www.erlang.org/. -# +# # Software distributed under the License is distributed on an "AS IS" # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See # the License for the specific language governing rights and limitations # under the License. -# +# # %CopyrightEnd% # @@ -359,12 +359,9 @@ $(OBJDIR)/escript.o: escript.c ifeq ($(TARGET),win32) -$(BINDIR)/$(ERLEXEC): $(OBJDIR)/erlexec.o $(OBJDIR)/win_erlexec.o $(OBJDIR)/init_file.o $(OBJDIR)/$(ERLRES_OBJ) dbg +$(BINDIR)/$(ERLEXEC): $(OBJDIR)/erlexec.o $(OBJDIR)/win_erlexec.o $(OBJDIR)/init_file.o $(OBJDIR)/$(ERLRES_OBJ) $(LD) -dll $(LDFLAGS) -o $@ $(OBJDIR)/erlexec.o $(OBJDIR)/win_erlexec.o $(OBJDIR)/init_file.o $(OBJDIR)/$(ERLRES_OBJ) $(ERLEXEC_XLIBS) -dbg: - echo DBG - $(BINDIR)/erl@EXEEXT@: $(OBJDIR)/erl.o $(OBJDIR)/init_file.o $(OBJDIR)/$(ERLRES_OBJ) $(LD) $(LDFLAGS) -o $@ $(OBJDIR)/erl.o $(OBJDIR)/init_file.o $(OBJDIR)/$(ERLRES_OBJ) diff --git a/erts/etc/common/dialyzer.c b/erts/etc/common/dialyzer.c index 9c66be7f0f..4b4c1124f1 100644 --- a/erts/etc/common/dialyzer.c +++ b/erts/etc/common/dialyzer.c @@ -141,6 +141,7 @@ main(int argc, char** argv) int eargc_base; /* How many arguments in the base of eargv. */ char* emulator; char *env; + int i; int need_shell = 0; env = get_env("DIALYZER_EMULATOR"); @@ -167,9 +168,11 @@ main(int argc, char** argv) * Push initial arguments. */ - if (argc > 1 && strcmp(argv[1], "--wx") == 0) { - PUSH2("-smp", "--wx"); /* wx currently requires SMP enabled */ - argc--, argv++; + for (i = 1; i < argc; i++) { + if (strcmp(argv[i], "--wx") == 0) { + PUSH("-smp"); /* wx currently requires SMP enabled */ + break; + } } if (argc > 1 && strcmp(argv[1], "-smp") == 0) { diff --git a/erts/etc/common/erlc.c b/erts/etc/common/erlc.c index c958fed741..09aca19e6c 100644 --- a/erts/etc/common/erlc.c +++ b/erts/etc/common/erlc.c @@ -1,19 +1,19 @@ /* * %CopyrightBegin% - * - * Copyright Ericsson AB 1997-2009. All Rights Reserved. - * + * + * Copyright Ericsson AB 1997-2010. All Rights Reserved. + * * The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in * compliance with the License. You should have received a copy of the * Erlang Public License along with this software. If not, it can be * retrieved online at http://www.erlang.org/. - * + * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. - * + * * %CopyrightEnd% */ /* @@ -310,6 +310,8 @@ main(int argc, char** argv) case 'W': /* Enable warnings. */ if (strcmp(argv[1]+2, "all") == 0) { PUSH2("@warn", "999"); + } else if (strcmp(argv[1]+2, "error") == 0) { + PUSH2("@option", "warnings_as_errors"); } else if (isdigit((int)argv[1][2])) { PUSH2("@warn", argv[1]+2); } else { @@ -566,6 +568,7 @@ usage(void) {"-pz path", "add path to the end of Erlang's code path"}, {"-smp", "compile using SMP emulator"}, {"-v", "verbose compiler output"}, + {"-Werror", "make all warnings into errors"}, {"-W0", "disable warnings"}, {"-Wnumber", "set warning level to number"}, {"-Wall", "enable all warnings"}, diff --git a/erts/etc/common/erlexec.c b/erts/etc/common/erlexec.c index 4325418e7c..f79f5cc978 100644 --- a/erts/etc/common/erlexec.c +++ b/erts/etc/common/erlexec.c @@ -1,19 +1,19 @@ /* * %CopyrightBegin% - * - * Copyright Ericsson AB 1996-2009. All Rights Reserved. - * + * + * Copyright Ericsson AB 1996-2010. All Rights Reserved. + * * The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in * compliance with the License. You should have received a copy of the * Erlang Public License along with this software. If not, it can be * retrieved online at http://www.erlang.org/. - * + * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. - * + * * %CopyrightEnd% */ @@ -123,6 +123,14 @@ static char *pluss_val_switches[] = { "ss", NULL }; +/* +h arguments with values */ +static char *plush_val_switches[] = { + "ms", + "mbs", + "", + NULL +}; + /* * Define sleep(seconds) in terms of Sleep() on Windows. @@ -783,10 +791,10 @@ int main(int argc, char **argv) case 'a': case 'A': case 'b': - case 'h': case 'i': case 'P': case 'S': + case 't': case 'T': case 'R': case 'W': @@ -850,6 +858,20 @@ int main(int argc, char **argv) goto the_default; break; } + case 'h': + if (!is_one_of_strings(&argv[i][2], plush_val_switches)) { + goto the_default; + } else { + if (i+1 >= argc + || argv[i+1][0] == '-' + || argv[i+1][0] == '+') + usage(argv[i]); + argv[i][0] = '-'; + add_Eargs(argv[i]); + add_Eargs(argv[i+1]); + i++; + } + break; case 's': if (!is_one_of_strings(&argv[i][2], pluss_val_switches)) @@ -1048,7 +1070,7 @@ usage_aux(void) #endif "[-make] [-man [manopts] MANPAGE] [-x] [-emu_args] " "[-args_file FILENAME] " - "[+A THREADS] [+a SIZE] [+B[c|d|i]] [+c] [+h HEAP_SIZE] [+K BOOLEAN] " + "[+A THREADS] [+a SIZE] [+B[c|d|i]] [+c] [+h HEAP_SIZE_OPTION] [+K BOOLEAN] " "[+l] [+M<SUBSWITCH> <ARGUMENT>] [+P MAX_PROCS] [+R COMPAT_REL] " "[+r] [+s SCHEDULER_OPTION] [+S NO_SCHEDULERS:NO_SCHEDULERS_ONLINE] [+T LEVEL] [+V] [+v] [+W<i|w>] " "[args ...]\n"); diff --git a/erts/etc/common/escript.c b/erts/etc/common/escript.c index ab37d4af46..1bc5eb7651 100644 --- a/erts/etc/common/escript.c +++ b/erts/etc/common/escript.c @@ -1,19 +1,19 @@ /* * %CopyrightBegin% - * - * Copyright Ericsson AB 2007-2009. All Rights Reserved. - * + * + * Copyright Ericsson AB 2007-2010. All Rights Reserved. + * * The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in * compliance with the License. You should have received a copy of the * Erlang Public License along with this software. If not, it can be * retrieved online at http://www.erlang.org/. - * + * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. - * + * * %CopyrightEnd% */ /* @@ -199,9 +199,10 @@ find_prog(char *origpath) continue; } else { /* Wow we found the executable. */ - strcpy(abspath, wildcard); + strcpy(relpath, wildcard); FindClose(dir_handle); - return strsave(abspath); + look_for_sep = FALSE; + break; } #else dp = opendir(dir); @@ -216,11 +217,12 @@ find_prog(char *origpath) if (strcmp(origpath, dirp->d_name) == 0) { /* Wow we found the executable. */ - strcpy(abspath, dir); - strcat(abspath, DIRSEPSTR); - strcat(abspath, dirp->d_name); + strcpy(relpath, dir); + strcat(relpath, DIRSEPSTR); + strcat(relpath, dirp->d_name); closedir(dp); - return strsave(abspath); + look_for_sep = FALSE; + break; } } } @@ -239,8 +241,8 @@ find_prog(char *origpath) #else if (!realpath(relpath, abspath)) { #endif /* __WIN32__ */ - /* Cannot determine absolute path to escript. Try the relative. */ - return strsave(relpath); + /* Cannot determine absolute path to escript. Try the origin. */ + return strsave(origpath); } else { return strsave(abspath); } @@ -373,11 +375,10 @@ main(int argc, char** argv) if (strcmp(basename, "escript") == 0) { #endif /* - * Push all options (without the hyphen) before the script name. + * Locate all options before the script name. */ while (argc > 1 && argv[1][0] == '-') { - PUSH(argv[1]+1); argc--; argv++; last_opt = argv; @@ -402,6 +403,7 @@ main(int argc, char** argv) scriptname[len-4] = '\0'; } #endif + strcat(scriptname, ".escript"); } @@ -418,7 +420,7 @@ main(int argc, char** argv) PUSH3("-run", "escript", "start"); /* - * Push all options (without the hyphen) before the script name. + * Push all options before the script name. But omit the leading hyphens. */ while (first_opt != last_opt) { @@ -500,7 +502,7 @@ char *make_commandline(char **argv) *(--p) = '\0'; if (debug) { - printf("Processed commandline:%s\n",buff); + printf("Processed command line:%s\n",buff); } return buff; } |