1 | From: courierdavid@hotmail.com
|
---|
2 | Newsgroups: comp.lang.awk
|
---|
3 | Subject: Re: Compiling gawk extensions under Cygwin
|
---|
4 | Date: 14 Mar 2005 20:47:09 -0800
|
---|
5 | Organization: http://groups.google.com
|
---|
6 | Lines: 67
|
---|
7 | Message-ID: <1110862029.175727.109280@o13g2000cwo.googlegroups.com>
|
---|
8 | References: <1e4e8dbe.0501140813.18248833@posting.google.com>
|
---|
9 | <u62nb2-pro.ln1@news.heiming.de>
|
---|
10 | NNTP-Posting-Host: 194.237.142.24
|
---|
11 | Mime-Version: 1.0
|
---|
12 | Content-Type: text/plain; charset="iso-8859-1"
|
---|
13 | X-Trace: posting.google.com 1110862033 8921 127.0.0.1 (15 Mar 2005 04:47:13 GMT)
|
---|
14 | X-Complaints-To: groups-abuse@google.com
|
---|
15 | NNTP-Posting-Date: Tue, 15 Mar 2005 04:47:13 +0000 (UTC)
|
---|
16 | User-Agent: G2/0.2
|
---|
17 | Complaints-To: groups-abuse@google.com
|
---|
18 | Injection-Info: o13g2000cwo.googlegroups.com; posting-host=194.237.142.24;
|
---|
19 | posting-account=Iz4C5wwAAABx1yG_ft8eEAI99Wu1Tku1
|
---|
20 | Path: news.012.net.il!seanews2.seabone.net!newsfeed.albacom.net!news.mailgate.org!newsfeed.stueberl.de!proxad.net!64.233.160.134.MISMATCH!postnews.google.com!o13g2000cwo.googlegroups.com!not-for-mail
|
---|
21 | Xref: news.012.net.il comp.lang.awk:21835
|
---|
22 |
|
---|
23 | Thanks for your help there Michael. I wouldn't have thought of that one
|
---|
24 | myself without your help :-)
|
---|
25 |
|
---|
26 | Anyway - for those who must stick with Cygwin here's a method that
|
---|
27 | works using the mingw32 makefiles and some modifications:
|
---|
28 |
|
---|
29 | Basically you need to extract all exportable symbol names from the
|
---|
30 | gawk.exe file into a text file and then create a dummy library file
|
---|
31 | which we can link against on Cygwin. You then throw the library file
|
---|
32 | away because in reality we use the gawk.exe file as the provider of
|
---|
33 | those functions.
|
---|
34 |
|
---|
35 | 1. First grab the gawk source, e.g. gawk-3.1.4.tar.bz2 and decompress
|
---|
36 | it.
|
---|
37 | 2. Move to the gawk-3.1.4 directory you just created.
|
---|
38 | 3. cp pc/* . (copy the pc directory into the main one)
|
---|
39 | 4. edit makefile - uncomment lines "DYN_FLAGS", "DYN_EXP", "DYN_OBJ"
|
---|
40 | and "DYN_MAKEXP=$(DMEmingw32)
|
---|
41 | 5. make mingw32 (make a gawk.exe)
|
---|
42 | 6. run "gcc -o gawk.exe array.o builtin.o eval.o field.o gawkmisc.o
|
---|
43 | io.o main.o ext.o msg.o node.o profile.o re.o version.o dlfcn.o
|
---|
44 | gawk.exp awkgram.o getid.o popen.o getopt.o getopt1.o dfa.o regex.o
|
---|
45 | random.o" (i.e. remove the -s from the compile command from the
|
---|
46 | makefile so the symbols are left in gawk.exe)
|
---|
47 |
|
---|
48 | now export all symbols from gawk.exe into foo.def so that we can put
|
---|
49 | these in our library
|
---|
50 | 7. echo EXPORTS > foo.def
|
---|
51 | 8. nm gawk.exe | grep -E ' [TBD] _' | sed 's/.* [TBD] _//' >> foo.def
|
---|
52 | 9. cp foo.def gawkw32.def
|
---|
53 |
|
---|
54 | build the new library with all symbols included
|
---|
55 | 10. make mingw32
|
---|
56 |
|
---|
57 | Now you will see a file "libgawk.a" which you can link against to
|
---|
58 | create extensions. For example to build an extension called "file" run:
|
---|
59 |
|
---|
60 | gcc -shared -dll -DHAVE_CONFIG_H -I . extension/file.c -o file.dll -L .
|
---|
61 | -lgawk
|
---|
62 |
|
---|
63 | Then you can load it in gawk using the expression:
|
---|
64 |
|
---|
65 | extension("./file.dll", "dlload");
|
---|
66 |
|
---|
67 | You must use the gawk you compiled from source though. It won't work
|
---|
68 | with any other gawk unfortunately :-( But that's OK because the
|
---|
69 | stripped gawk is not too big in size.
|
---|
70 |
|
---|
71 | Cheers,
|
---|
72 | Dave.
|
---|
73 |
|
---|
74 | Michael Heiming wrote:
|
---|
75 | > In comp.lang.awk David Smith <courierdavid@hotmail.com>:
|
---|
76 | > > Has anyone managed to compile gawk extensions (such as "filefuncs")
|
---|
77 | > > under Cygwin?
|
---|
78 | >
|
---|
79 | > Solution is pretty simple, install a real OS, Linux/*BSD or any
|
---|
80 | > other unix and this and further problems won't happen.
|
---|
81 | >
|
---|
82 | > Good luck
|
---|
83 | >
|
---|
84 | > --
|
---|
85 | > Michael Heiming (X-PGP-Sig > GPG-Key ID: EDD27B94)
|
---|
86 | > mail: echo zvpunry@urvzvat.qr | perl -pe 'y/a-z/n-za-m/'
|
---|
87 | > #bofh excuse 242: Software uses US measurements, but the OS
|
---|
88 | > is in metric...
|
---|