aboutsummaryrefslogtreecommitdiffstats
path: root/pc
diff options
context:
space:
mode:
Diffstat (limited to 'pc')
-rw-r--r--pc/ChangeLog13
-rw-r--r--pc/Makefile2
-rw-r--r--pc/Makefile.ext75
-rw-r--r--pc/Makefile.tst31
4 files changed, 107 insertions, 14 deletions
diff --git a/pc/ChangeLog b/pc/ChangeLog
index eeae9767..2c246fc2 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,16 @@
+2013-05-14 Eli Zaretskii <eliz@gnu.org>
+
+ * Makefile.tst (AWK): Set AWKLIBPATH so extensions could be found.
+ (LS): New variable.
+ (check): Add back shlib-tests and shlib-msg-end.
+ (readdir): Add a warning regarding inode reporting by ls.exe.
+ (fts, fork, fork2): Add message about expected failure on MinGW.
+
+ * Makefile (install): Install the extensions.
+ (install-strip): Likewise.
+
+ * Makefile.ext: New file.
+
2013-05-09 Arnold D. Robbins <arnold@skeeve.com>
* 4.1.0: Release tar ball made.
diff --git a/pc/Makefile b/pc/Makefile
index b2344460..4152ed24 100644
--- a/pc/Makefile
+++ b/pc/Makefile
@@ -263,6 +263,7 @@ alloca$O: alloca.c
install: install$(install)
+ -$(MAKE) -C extension install-extensions
install1:
echo extproc sh $(prefix)/bin/igawk.cmd > igawk.cmd
@@ -286,6 +287,7 @@ install2:
install-strip: install$(install)
strip "$(prefix)/bin"/*.exe
+ -$(MAKE) -C extension $@
clean:
-rm -rf gawk *.exe gawk.map *.o *.obj core a.out $(RSPFILE) $(PRSPFILE) $(DRSPFILE) $(DYN_EXP)
diff --git a/pc/Makefile.ext b/pc/Makefile.ext
new file mode 100644
index 00000000..8971014b
--- /dev/null
+++ b/pc/Makefile.ext
@@ -0,0 +1,75 @@
+# extension/Makefile for the MinGW build
+#
+# Copyright (C) 2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+prefix = c:/gnu
+pkgdatadir = $(prefix)/lib/awk
+pkgextensiondir = $(prefix)/lib/gawk
+includedir = $(prefix)/include
+libdir = $(prefix)/lib
+datadir = $(prefix)/share
+pkgdatadir = $(datadir)/gawk-extensions
+pkgincludedir = $(includedir)/gawk-extensions
+pkglibdir = $(libdir)/gawk-extensions
+pkglibexecdir = $(libexecdir)/gawk-extensions
+
+SOEXT = dll
+SIMPLE_EXTENSIONS = inplace.$(SOEXT) ordchr.$(SOEXT) readfile.$(SOEXT)\
+ revoutput.$(SOEXT) revtwoway.$(SOEXT) testext.$(SOEXT)
+ALL_EXTENSIONS = filefuncs.$(SOEXT) fnmatch.$(SOEXT) inplace.$(SOEXT)\
+ ordchr.$(SOEXT) readdir.$(SOEXT) readfile.$(SOEXT) revoutput.$(SOEXT)\
+ revtwoway.$(SOEXT) rwarray.$(SOEXT) testext.$(SOEXT) time.$(SOEXT)
+
+extensions: $(ALL_EXTENSIONS)
+
+fnmatch.$(SOEXT): fnmatch.c
+ gcc -I.. -I../missing_d -DHAVE_FNMATCH_H -shared -gdwarf-2 -g3 -o $@ fnmatch.c
+
+readdir.$(SOEXT): readdir.c gawkdirfd.h
+ gcc -I.. -DHAVE_DIRENT_H -shared -gdwarf-2 -g3 -o $@ readdir.c
+
+rwarray.$(SOEXT): rwarray.c
+ gcc -I.. -shared -gdwarf-2 -g3 -o $@ rwarray.c -lws2_32
+
+filefuncs.$(SOEXT): filefuncs.c stack.c stack.h gawkfts.h
+ gcc -I.. -shared -gdwarf-2 -g3 -o $@ filefuncs.c stack.c
+
+time.$(SOEXT): time.c
+ gcc -DHAVE_GETSYSTEMTIMEASFILETIME -I.. -shared -gdwarf-2 -g3 -o $@ time.c
+
+$(SIMPLE_EXTENSIONS):
+ gcc -I.. -shared -gdwarf-2 -g3 -o $@ $(@:.$(SOEXT)=.c)
+
+$(ALL_EXTENSIONS): ../gawkapi.h ../gettext.h
+
+inplace.$(SOEXT): inplace.c
+ordchr.$(SOEXT): ordchr.c
+readfile.$(SOEXT): readfile.c
+revoutput.$(SOEXT): revoutput.c
+rwarray.$(SOEXT): rwarray.c
+testext.$(SOEXT): testext.c
+time.$(SOEXT): time.c
+
+# This must not be called 'install' because there's a file INSTALL,
+# and case-insensitive filesystems will gladly accept it.
+install-extensions:
+ -mkdir "$(pkgextensiondir)"
+ cp *.$(SOEXT) "$(pkgextensiondir)"
+ -mkdir "$(prefix)/share/man/man3"
+ cp *.3am "$(prefix)/share/man/man3"
+
+install-strip: install-extensions
+ strip --strip-unneeded "$(pkgextensiondir)"/*.$(SOEXT)
+
+clean:
+ -rm -f *.$(SOEXT)
+
diff --git a/pc/Makefile.tst b/pc/Makefile.tst
index dff0cacb..cc188fda 100644
--- a/pc/Makefile.tst
+++ b/pc/Makefile.tst
@@ -60,11 +60,16 @@
SHELL = /bin/sh
# Point to gawk
-AWK = ../gawk.exe
+AWK = AWKLIBPATH=../extension ../gawk.exe
# Also point to gawk but for DOS commands needing backslashes. We need
# the forward slash version too or 'arrayparam' fails.
AWK2 = '..\gawk.exe'
AWKPROG = ../gawk.exe
+# Point $(LS) to a version of ls.exe that reports true Windows file
+# index numbers, because this is what the readdir test expects.
+# Otherwise, the readdir test will fail. (The MSYS ls.exe doesn't
+# report full index values.)
+LS = ls.exe
# Define PGAWK
PGAWK = ../gawk.exe -p
@@ -100,12 +105,13 @@ CP = cp
#CP = : && command -c copy
#CP = command.com /c copy
-MV = cmd.exe /c ren
+#MV = cmd.exe /c ren
+MV = mv
-#MKDIR = mkdir
+MKDIR = mkdir
#MKDIR = gmkdir
#MKDIR = : && command -c mkdir
-MKDIR = command.com /c mkdir
+#MKDIR = command.com /c mkdir
# Set your unix-style date function here
#DATE = date
@@ -237,13 +243,10 @@ check: msg \
extend-msg-start gawk-extensions extend-msg-end \
machine-msg-start machine-tests machine-msg-end \
charset-msg-start charset-tests charset-msg-end \
- shlib-msg-start \
+ shlib-msg-start shlib-tests shlib-msg-end \
mpfr-msg-start mpfr-tests mpfr-msg-end \
pass-fail
-# Removed from 'check': shlib-tests shlib-msg-end
-# FIXME: add back when the extensions are built by default.
-
basic: $(BASIC_TESTS)
unix-tests: $(UNIX_TESTS)
@@ -1007,17 +1010,15 @@ readdir:
echo If it does, try rerunning on an ext'[234]' filesystem. ; \
fi
@echo $@
+ @echo This test may fail if $(LS) does not report full Windows file index as the inode
@$(AWK) -f $(srcdir)/readdir.awk $(top_srcdir) > _$@
- @ls -afli $(top_srcdir) | sed 1d | $(AWK) -f $(srcdir)/readdir0.awk -v extout=_$@ > $@.ok
+ @$(LS) -afli $(top_srcdir) | sed 1d | $(AWK) -f $(srcdir)/readdir0.awk -v extout=_$@ > $@.ok
@-$(CMP) $@.ok _$@ && rm -f $@.ok _$@
fts:
- @if [ "`uname`" = IRIX ]; then \
- echo This test may fail on IRIX systems when run on an NFS filesystem.; \
- echo If it does, try rerunning on an xfs filesystem. ; \
- fi
@echo $@
- @$(AWK) -f $(srcdir)/fts.awk
+ @echo Expect $@ to fail with MinGW because function 'fts' is not defined.
+ @-$(AWK) -f $(srcdir)/fts.awk
@-$(CMP) $@.ok _$@ && rm -f $@.ok _$@
charasbytes:
@@ -2362,11 +2363,13 @@ filefuncs:
fork:
@echo $@
+ @echo Expect $@ to fail with MinGW because fork.dll is not available
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
fork2:
@echo $@
+ @echo Expect $@ to fail with MinGW because fork.dll is not available
@AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@