diff options
author | john haque <j.eh@mchsi.com> | 2012-04-16 04:48:30 -0500 |
---|---|---|
committer | john haque <j.eh@mchsi.com> | 2012-04-16 04:48:30 -0500 |
commit | e729adf120f279fd65578a410ca8d2d93a56f0f0 (patch) | |
tree | a4994f31128b38820d71c2b7012704869e50b7a2 | |
parent | b07a47ccf4e41f45477a6cf9f3e4edba285ea095 (diff) | |
download | egawk-e729adf120f279fd65578a410ca8d2d93a56f0f0.tar.gz egawk-e729adf120f279fd65578a410ca8d2d93a56f0f0.tar.bz2 egawk-e729adf120f279fd65578a410ca8d2d93a56f0f0.zip |
MPFR fixes from Eli.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | README_d/README.mpfr | 10 | ||||
-rw-r--r-- | io.c | 4 | ||||
-rw-r--r-- | main.c | 2 | ||||
-rw-r--r-- | mpfr.c | 2 | ||||
-rw-r--r-- | pc/ChangeLog | 34 | ||||
-rw-r--r-- | pc/Makefile | 102 | ||||
-rw-r--r-- | pc/Makefile.tst | 38 | ||||
-rw-r--r-- | pc/config.h | 2 |
9 files changed, 139 insertions, 63 deletions
@@ -1,3 +1,11 @@ +2012-04-16 Eli Zaretskii <eliz@gnu.org> + + * io.c (read_with_timeout) [__MINGW32__]: Just call the blocking + 'read', as 'select' is only available for sockets. + * mpfr.c (set_ROUNDMODE) [!HAVE_MPFR]: Renamed from set_RNDMODE. + * main.c (load_procinfo): Declare name[] also when HAVE_MPFR is + defined even though HAVE_GETGROUPS etc. are not. + 2012-04-12 John Haque <j.eh@mchsi.com> * array.c, awk.h, awkgram.y, builtin.c, command.y, debug.c, diff --git a/README_d/README.mpfr b/README_d/README.mpfr index d090e0d4..b12c19b6 100644 --- a/README_d/README.mpfr +++ b/README_d/README.mpfr @@ -4,11 +4,21 @@ Sat Mar 17 07:32:01 CDT 2012 The MPFR and GMP versions known to work for Mac OS X on PPC: GNU MPFR 3.1.0, GNU MP 4.3.1 +---- Precompiled binaries for GMP and MPFR in Windows may be available from here: + http://sourceforge.net/projects/ezwinports/files/ + +or here: + http://sourceforge.net/projects/mingw/files/MinGW/Base/mpfr/ + http://sourceforge.net/projects/mingw/files/MinGW/Base/gmp/ + +You should try to use libraries downloaded from the same site +to avoid possible incompatibilities. +---- Gawk has been compiled and tested using the following combinations of MPFR and GMP versions on GNU/Linux: GNU MPFR 2.4.2, GNU MP 4.3.2 @@ -3432,6 +3432,7 @@ get_read_timeout(IOBUF *iop) static ssize_t read_with_timeout(int fd, char *buf, size_t size) { +#ifndef __MINGW32__ fd_set readfds; struct timeval tv; @@ -3457,6 +3458,9 @@ read_with_timeout(int fd, char *buf, size_t size) errno = EAGAIN; #endif return -1; +#else /* __MINGW32__ */ + return read(fd, buf, size); +#endif /* __MINGW32__ */ } @@ -1064,6 +1064,8 @@ load_procinfo() { #if defined (HAVE_GETGROUPS) && defined(NGROUPS_MAX) && NGROUPS_MAX > 0 int i; +#endif +#if (defined (HAVE_GETGROUPS) && defined(NGROUPS_MAX) && NGROUPS_MAX > 0) || defined(HAVE_MPFR) char name[100]; #endif AWKNUM value; @@ -1612,7 +1612,7 @@ set_PREC() } void -set_RNDMODE() +set_ROUNDMODE() { /* dummy function */ } diff --git a/pc/ChangeLog b/pc/ChangeLog index 5f287dd8..27a485c5 100644 --- a/pc/ChangeLog +++ b/pc/ChangeLog @@ -1,3 +1,37 @@ +2012-04-16 Eli Zaretskii <eliz@gnu.org> + + * Makefile.tst (PGAWK): Redefine as "../gawk.exe -p". + (MPFR_TESTS): New variable, a list of MPFR-related tests. + (mpfr-tests): A new target. + (badargs): Reset GREP_OPTIONS to empty, to avoid gratuitous + failures when the user has something like -nH there. + (mpfrieee, mpfrexprange, mpfrrnd, mpfrnr, mpfrsort, mpfrbigint): + New tests. + + * Makefile (default): Add descriptions of mingw32-mpfr and + mingw32-libreadline-mpfr targets. + (PRSPFILE, DRSPFILE, PRSP, DRSP, PLDRSP, DLDRSP, DO_PLNK) + (DO_PBIND, DO_DLNK, DO_DBIND, PLDJG, DLDJG, PLMINGW32) + (DLMINGW32, PAWKOBJS1, PAWKOBJS2, DAWKOBJS2, PGAWKOBJS) + (DGAWKOBJS): Remove unused variables. + (djgpp, djgpp-debug, mingw32): Don't use them. + (mingw32): Add -D__USE_MINGW_ANSI_STDIO to compilation flags. + (mingw32-readline, mingw32-mpfr, mingw32-readline-mpfr): New targets. + (CFLAGS, AWKOBJS2): Don't reference obsolete DYN_FLAGS and DYN_OBJ + variables. + (AWKOBJS2): Add symbol$O. + (AWKOBJS3): New variable, lists MPFR-related object files. + (AWKOBJS): Add $(AWKOBJS3). + (all): Remove pgawk.exe and dgawk.exe. + (pgawk.exe, dgawk.exe, $(PRSPFILE) $(DRSPFILE), eval_p$O) + (profile_p$O): Remove targets. + (random$O, debug$O): Don't depend on floatmagic.h + (eval$O): Depend on interpret.h. + (clean): Prepend '-' to command line, to ignore errors due to + non-existent files. + + * config.h: Comment out "#undef HAVE_LIBREADLINE" (again). + 2011-12-12 Scott Deifik <scottd.mail@sbcglobal.net> * Makefile.tst: Sync with mainline version. diff --git a/pc/Makefile b/pc/Makefile index 6156ce96..f01849a8 100644 --- a/pc/Makefile +++ b/pc/Makefile @@ -14,6 +14,11 @@ default: @echo " emxnt ... NT exe [emx/gcc with RSXNT] " @echo " emxbnd .. OS/2 and DOS 32-bit exe [emx/gcc] " @echo " mingw32 . Windows32 exe [Mingw32 GNU C] " + @echo " mingw32-readline . Like mingw32, but with readline " + @echo " [You will need to have GNU readline library installed.] " + @echo " mingw32-mpfr . Like mingw32, but with MPFR " + @echo " [You will need to have GNU MPFR library installed.] " + @echo " mingw32-readline-mpfr . mingw32 with readline and MPFR " @echo " ----------------------------------------------------- " @echo " test .... Perform tests (see README_d/README.pc) " @echo " install . Install gawk under $(prefix)/ " @@ -37,8 +42,6 @@ default: #======================= Configuration ================================== RSPFILE = gawk.rsp -PRSPFILE = pgawk.rsp -DRSPFILE = dgawk.rsp # # Choose method for passing arguments to the linker. # @@ -48,11 +51,7 @@ DRSPFILE = dgawk.rsp # # else use brain-dead approach (emxbnd will need 'tr'). RSP = $(RSPFILE) -PRSP = $(PRSPFILE) -DRSP = $(DRSPFILE) LDRSP = @$(RSP) -PLDRSP = @$(PRSP) -DLDRSP = @$(DRSP) LNKRSP = $(LDRSP) #------------------------------------------------------------------------ # Some makes do not define MAKE (and ndmake does not allow a define). @@ -78,10 +77,6 @@ install = 1 # that $($X) can be expanded. DO_LNK = $($(LNK)) DO_BIND= $($(BIND)) -DO_PLNK = $($(PLNK)) -DO_PBIND= $($(PBIND)) -DO_DLNK = $($(DLNK)) -DO_DBIND= $($(DBIND)) #======================================================================== # End of general configuration. Some platform-specific configuration # notes appear below. @@ -95,21 +90,19 @@ prefix = $(DJDIR) pkgdatadir = $(prefix)/share/awk endif LDJG = $(CC) $(LF) -o gawk.exe $(LDRSP) $(LF2) -PLDJG = $(CC) $(LF) -o pgawk.exe $(PLDRSP) $(LF2) -DLDJG = $(CC) $(LF) -o dgawk.exe $(DLDRSP) $(LF2) BDJG = stubify -g awk.exe | stubedit awk.exe runfile=gawk djgpp: $(MAK) all \ CC=gcc O=.o CF=-O2 \ - LNK=LDJG PLNK=PLDJG DLNK=DLDJG LF=-s LF2=-lm \ - BIND=BDJG PBIND='' DBIND='' + LNK=LDJG LF=-s LF2=-lm \ + BIND=BDJG djgpp-debug: $(MAK) all \ CC=gcc O=.o CF='-O2 -g' \ - LNK=LDJG PLNK=PLDJG DLNK=DLDJG LF2=-lm \ - BIND=BDJG PBIND='' DBIND='' + LNK=LDJG LF2=-lm \ + BIND=BDJG #======================================================================== #========================== EMX ========================================= @@ -156,34 +149,47 @@ emxbnd-debug: #======================================================================== LMINGW32 = $(CC) $(LF) -o $@ $(GAWKOBJS) $(LF2) -PLMINGW32 = $(CC) $(LF) -o $@ $(PGAWKOBJS) $(LF2) -DLMINGW32 = $(CC) $(LF) -o $@ $(DGAWKOBJS) $(LF2) # The following might work around command-line length limitations: #LMINGW32 = $(CC) $(LF) -o $@ *.o $(LF2) mingw32: $(MAK) all \ - CC=gcc O=.o CF="-O2 -gdwarf-2 -g3" OBJ=popen.o \ - LNK=LMINGW32 PLNK=PLMINGW32 DLNK=DLMINGW32 \ - LF="-gdwarf-2 -g3" LF2=-lmsvcp60 RSP= + CC=gcc O=.o CF="-D__USE_MINGW_ANSI_STDIO -O2 -gdwarf-2 -g3" \ + OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" LF2=-lmsvcp60 RSP= + +mingw32-readline: + $(MAK) all \ + CC=gcc O=.o \ + CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_LIBREADLINE -O2 -gdwarf-2 -g3" \ + OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \ + LF2="-lreadline -lmsvcp60 -Wl,--enable-auto-import" RSP= + +mingw32-mpfr: + $(MAK) all \ + CC=gcc O=.o \ + CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_MPFR -O2 -gdwarf-2 -g3" \ + OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \ + LF2="-lmpfr -lgmp -lmsvcp60 -Wl,--enable-auto-import" RSP= + +mingw32-readline-mpfr: + $(MAK) all \ + CC=gcc O=.o \ + CF="-D__USE_MINGW_ANSI_STDIO -DHAVE_LIBREADLINE -DHAVE_MPFR -O2 -gdwarf-2 -g3" \ + OBJ=popen.o LNK=LMINGW32 LF="-gdwarf-2 -g3" \ + LF2="-lmpfr -lgmp -lreadline -lmsvcp60 -Wl,--enable-auto-import" RSP= # Define BIND for BINDless compiles, otherwise $($(BIND)) may break. BIND = EMPTY PBIND = EMPTY EMPTY= -# bitwise operations (-DBITOPS) and non-decimal input data (-DNONDECDATA) are -# undocumented in 3.0.3. They may be enabled in config.h, or added to CFLAGS. -CFLAGS = $(CF) -DGAWK -I. -DHAVE_CONFIG_H $(DYN_FLAGS) +CFLAGS = $(CF) -DGAWK -I. -DHAVE_CONFIG_H # object files AWKOBJS1 = array$O builtin$O eval$O field$O floatcomp$O gawkmisc$O io$O main$O -AWKOBJS2 = ext$O msg$O node$O profile$O re$O replace$O version$O $(DYN_OBJ) -PAWKOBJS1 = array$O builtin$O eval_p$O field$O floatcomp$O gawkmisc$O io$O main$O -PAWKOBJS2 = ext$O msg$O node$O profile_p$O re$O replace$O version$O $(DYN_OBJ) -DAWKOBJS1 = array$O builtin$O debug$O eval_d$O field$O floatcomp$O gawkmisc$O io$O main$O -DAWKOBJS2 = ext$O msg$O node$O profile$O re$O replace$O version$O command$O $(DYN_OBJ) -AWKOBJS = $(AWKOBJS1) $(AWKOBJS2) +AWKOBJS2 = ext$O msg$O node$O profile$O re$O replace$O version$O symbol$O +AWKOBJS3 = debug$O cint_array$O int_array$O mpfr$O str_array$O command$O +AWKOBJS = $(AWKOBJS1) $(AWKOBJS2) $(AWKOBJS3) ALLOBJS = $(AWKOBJS) awkgram$O getid$O $(OBJ) @@ -192,8 +198,6 @@ ALLOBJS = $(AWKOBJS) awkgram$O getid$O $(OBJ) LIBOBJS= getopt$O getopt1$O dfa$O regex$O random$O GAWKOBJS = $(ALLOBJS) $(LIBOBJS) -PGAWKOBJS = $(PAWKOBJS1) $(PAWKOBJS2) $(LIBOBJS) awkgram$O getid$O $(OBJ) -DGAWKOBJS = $(DAWKOBJS1) $(DAWKOBJS2) $(LIBOBJS) awkgram$O getid$O $(OBJ) # clear out suffixes list # .SUFFIXES: @@ -203,52 +207,34 @@ DGAWKOBJS = $(DAWKOBJS1) $(DAWKOBJS2) $(LIBOBJS) awkgram$O getid$O $(OBJ) $(CC) -c $(CFLAGS) $< # rules to build gawk -all : gawk.exe pgawk.exe dgawk.exe +all : gawk.exe gawk.exe:: $(GAWKOBJS) $(RSP) $(DO_LNK) $(DO_BIND) -pgawk.exe:: $(PGAWKOBJS) $(PRSP) - $(DO_PLNK) - $(DO_PBIND) - -dgawk.exe:: $(DGAWKOBJS) $(DRSP) - $(DO_DLNK) - $(DO_DBIND) - $(RSPFILE) : $(GAWKOBJS) echo $(AWKOBJS1)$P > $@ echo $(AWKOBJS2)$P >> $@ echo awkgram$O getid$O $(OBJ) $(LIBOBJS)$P >> $@ -$(PRSPFILE) : $(PGAWKOBJS) - echo $(PAWKOBJS1)$P > $@ - echo $(PAWKOBJS2)$P >> $@ - echo awkgram$O getid$O $(OBJ) $(LIBOBJS)$P >> $@ - -$(DRSPFILE) : $(DGAWKOBJS) - echo $(DAWKOBJS1)$P > $@ - echo $(DAWKOBJS2)$P >> $@ - echo awkgram$O getid$O $(OBJ) $(LIBOBJS)$P >> $@ - # Notes to dependencies: # 1. The dependency on getopt.h is because unistd.h includes it, # and we have -I. on the compiler command line. unistd.h is # included by awk.h. # 2. custom.h is not mentioned because pc ports don't use it. -$(ALLOBJS) $(LIBOBJS) eval_p$O profile_p$O: \ +$(ALLOBJS) $(LIBOBJS): \ awk.h regex.h config.h gettext.h mbsupport.h protos.h dfa.h getopt.h builtin$O: floatmagic.h random.h popen.h -random$O: floatmagic.h random.h +random$O: random.h -debug$O: floatmagic.h +node$O: floatmagic.h command$O debug$O: cmd.h -dfa$O: xalloc.h +dfa$O: xalloc.h gawkmisc$O: pc/gawkmisc.pc @@ -258,9 +244,7 @@ io$O: popen.h regex$O: regcomp.c regexec.c regex_internal.h -eval_p$O: eval.c - -profile_p$O: profile.c +eval$O: interpret.h # A bug in ndmake requires the following rule awkgram$O: awk.h awkgram.c @@ -291,7 +275,7 @@ install2: gawk -v prefix=$(prefix) -f install.awk clean: - rm -rf gawk pgawk dgawk *.exe gawk.map *.o *.obj core a.out $(RSPFILE) $(PRSPFILE) $(DRSPFILE) $(DYN_EXP) + -rm -rf gawk *.exe gawk.map *.o *.obj core a.out $(RSPFILE) $(PRSPFILE) $(DRSPFILE) $(DYN_EXP) # cd doc && $(MAKE) clean # cd test && $(MAKE) clean # cd awklib && $(MAKE) clean diff --git a/pc/Makefile.tst b/pc/Makefile.tst index f14341c8..83a8a32a 100644 --- a/pc/Makefile.tst +++ b/pc/Makefile.tst @@ -67,7 +67,7 @@ AWK2 = '..\gawk.exe' AWKPROG = ../gawk.exe # Define PGAWK -PGAWK = ../pgawk.exe +PGAWK = ../gawk.exe -p # Set your cmp command here (you can use most versions of diff instead of cmp # if you don't want to convert the .ok files to the DOS CR/LF format). @@ -179,6 +179,7 @@ GAWK_EXT_TESTS = \ EXTRA_TESTS = inftest regtest INET_TESTS = inetdayu inetdayt inetechu inetecht MACHINE_TESTS = double1 double2 fmtspcl intformat +MPFR_TESTS = mpfrnr mpfrrnd mpfrieee mpfrexprange mpfrsort mpfrbigint LOCALE_CHARSET_TESTS = \ asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \ mbprintf1 mbprintf2 mbprintf3 rebt8b2 rtlenmb sort1 sprintfc @@ -226,6 +227,8 @@ inet: inetmesg $(INET_TESTS) machine-tests: $(MACHINE_TESTS) +mpfr-tests: $(MPFR_TESTS) + msg:: @echo "" @echo "Any output from $(CMP) is bad news, although some differences" @@ -353,7 +356,7 @@ argtest:: badargs:: @echo $@ - @-$(AWK) -f 2>&1 | grep -v patchlevel >_$@ + @-$(AWK) -f 2>&1 | GREP_OPTIONS='' grep -v patchlevel >_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ nonl:: @@ -789,6 +792,37 @@ exit: @echo $@ @-AWK="$(AWKPROG)" $(srcdir)/$@.sh > _$@ 2>&1 @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +mpfrieee: + @echo mpfrieee + @$(AWK) -M -vPREC=double -f $(srcdir)/$@.awk > _$@ 2>&1 + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +mpfrexprange: + @echo mpfrexprange + @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1 + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +mpfrrnd: + @echo mpfrrnd + @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1 + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +mpfrnr: + @echo mpfrnr + @$(AWK) -M -vPREC=113 -f $(srcdir)/$@.awk $(srcdir)/$@.in > _$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +mpfrsort: + @echo mpfrsort + @$(AWK) -M -vPREC=53 -f $(srcdir)/$@.awk > _$@ 2>&1 + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +mpfrbigint: + @echo mpfrbigint + @$(AWK) -M -f $(srcdir)/$@.awk > _$@ 2>&1 + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + Gt-dummy: # file Maketests, generated from Makefile.am by the Gentests program addcomma: diff --git a/pc/config.h b/pc/config.h index a9dac512..4893fe54 100644 --- a/pc/config.h +++ b/pc/config.h @@ -123,7 +123,7 @@ #define HAVE_LIBM 1 /* Define to 1 if you have a fully functional readline library. */ -#undef HAVE_LIBREADLINE +/* #undef HAVE_LIBREADLINE */ /* Define if you have the libsigsegv library. */ #undef HAVE_LIBSIGSEGV |