annotate src/osdef.sh @ 25479:fbdfa533001c v8.2.3276

patch 8.2.3276: Vim9: exists() can only be evaluated at runtime Commit: https://github.com/vim/vim/commit/bb7ee7abe1ea1e60b8a5dadd2bed8cdbe4f3e8fb Author: Bram Moolenaar <Bram@vim.org> Date: Mon Aug 2 20:06:50 2021 +0200 patch 8.2.3276: Vim9: exists() can only be evaluated at runtime Problem: Vim9: exists() can only be evaluated at runtime. Solution: Evaluate at compile time for option name literals. (closes https://github.com/vim/vim/issues/8437)
author Bram Moolenaar <Bram@vim.org>
date Mon, 02 Aug 2021 20:15:03 +0200
parents befdf44737d1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1 #! /bin/sh
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2 #
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3 # osdef.sh -- copy osdef.h.in to osdef.h while removing declarations
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4 # found in the system header files. Caution: weird sed magic going on here.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5 # Warnings are printed if sed did not survive.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6 #
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 # (C) Michael Schroeder, Juergen Weigert
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8 #
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 # osdef.h.in has been split into osdef1.h.in and osdef2.h.in, because some
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10 # sed's could not handle the amount of commands (is 50 commands the limit?).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 #
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 # 31.10.95 jw.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 if test -z "$CC"; then
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15 CC=cc
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16 fi
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17 if test -z "$srcdir"; then
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18 srcdir=.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
19 fi
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20
19235
befdf44737d1 patch 8.2.0176: generating os headers does not work for Swedish
Bram Moolenaar <Bram@vim.org>
parents: 7722
diff changeset
21 # Make sure collation works as expected
befdf44737d1 patch 8.2.0176: generating os headers does not work for Swedish
Bram Moolenaar <Bram@vim.org>
parents: 7722
diff changeset
22 # swedish range [a-z] does not match 'w'
befdf44737d1 patch 8.2.0176: generating os headers does not work for Swedish
Bram Moolenaar <Bram@vim.org>
parents: 7722
diff changeset
23 export LC_COLLATE=C
befdf44737d1 patch 8.2.0176: generating os headers does not work for Swedish
Bram Moolenaar <Bram@vim.org>
parents: 7722
diff changeset
24 export LC_ALL=
befdf44737d1 patch 8.2.0176: generating os headers does not work for Swedish
Bram Moolenaar <Bram@vim.org>
parents: 7722
diff changeset
25
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 rm -f core* *.core
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 cat << EOF > osdef0.c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29 #ifndef __APPLE__
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 # define select select_declared_wrong
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32 #define tgetstr tgetstr_declared_wrong
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33 #include "auto/config.h"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34 #include "os_unix.h" /* bring in most header files, more follow below */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35 #include "os_unixx.h" /* bring in header files for os_unix.c */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37 #ifdef HAVE_TERMCAP_H
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 # include <termcap.h> /* only for term.c */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41 #ifdef HAVE_FCNTL_H
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 # include <fcntl.h> /* only used in a few files */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45 #ifdef HAVE_SYS_STATFS_H
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 # include <sys/types.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47 # include <sys/statfs.h> /* only for memfile.c */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50 #ifdef HAVE_X11
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51 # include <X11/Intrinsic.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53 EOF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54
5436
efa40be729c2 updated for version 7.4.068
Bram Moolenaar <bram@vim.org>
parents: 7
diff changeset
55 $CC -I. -I$srcdir -E osdef0.c >osdef0.cc
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57 # insert a space in front of each line, so that a function name at the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58 # start of the line is matched with "[)*, ]\1[ (]"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59 sed < osdef0.cc -e '/\(..*\)/s// \1/' > osdef0.ccc
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60
7722
c4f8b1d48f20 commit https://github.com/vim/vim/commit/e240c2da796531e807ea9df78bdbcc7b1012870c
Christian Brabandt <cb@256bit.org>
parents: 5436
diff changeset
61 sed < $srcdir/osdef1.h.in -n -e '/^extern/s@.*[)* ][)* ]*\([a-zA-Z_][a-zA-Z0-9_]*\)(.*@/[)*, ][(]*\1[)]*[ (]/i\\\
c4f8b1d48f20 commit https://github.com/vim/vim/commit/e240c2da796531e807ea9df78bdbcc7b1012870c
Christian Brabandt <cb@256bit.org>
parents: 5436
diff changeset
62 \\/\\[^a-zA-Z_\\]\1(\\/d@p' > osdef11.sed
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63
7722
c4f8b1d48f20 commit https://github.com/vim/vim/commit/e240c2da796531e807ea9df78bdbcc7b1012870c
Christian Brabandt <cb@256bit.org>
parents: 5436
diff changeset
64 sed < $srcdir/osdef2.h.in -n -e '/^extern/s@.*[)* ][)* ]*\([a-zA-Z_][a-zA-Z0-9_]*\)(.*@/[)*, ][(]*\1[)]*[ (]/i\\\
c4f8b1d48f20 commit https://github.com/vim/vim/commit/e240c2da796531e807ea9df78bdbcc7b1012870c
Christian Brabandt <cb@256bit.org>
parents: 5436
diff changeset
65 \\/\\[^a-zA-Z_\\]\1(\\/d@p' > osdef21.sed
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67 cat << EOF > osdef2.sed
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68 1i\\
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
69 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70 1i\\
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
71 * osdef.h is automagically created from osdef?.h.in by osdef.sh -- DO NOT EDIT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
72 1i\\
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
73 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
74 EOF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
75
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
76 cat osdef0.ccc | sed -n -f osdef11.sed >> osdef2.sed
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
77 sed -f osdef2.sed < $srcdir/osdef1.h.in > auto/osdef.h
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
78
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
79 cat osdef0.ccc | sed -n -f osdef21.sed > osdef2.sed
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
80 sed -f osdef2.sed < $srcdir/osdef2.h.in >> auto/osdef.h
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
81
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
82 rm osdef0.c osdef0.cc osdef0.ccc osdef11.sed osdef21.sed osdef2.sed
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
83
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
84 if test -f core*; then
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
85 file core*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 echo " Sorry, your sed is broken. Call the system administrator."
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87 echo " Meanwhile, you may try to compile Vim with an empty osdef.h file."
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
88 echo " If you compiler complains about missing prototypes, move the needed"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
89 echo " ones from osdef1.h.in and osdef2.h.in to osdef.h."
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
90 exit 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
91 fi
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
92 cat $srcdir/osdef1.h.in $srcdir/osdef2.h.in >osdefX.h.in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
93 if eval test "`diff auto/osdef.h osdefX.h.in | wc -l`" -eq 4; then
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
94 echo " Hmm, sed is very pessimistic about your system header files."
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
95 echo " But it did not dump core -- strange! Let's continue carefully..."
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96 echo " If this fails, you may want to remove offending lines from osdef.h"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97 echo " or try with an empty osdef.h file, if your compiler can do without"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
98 echo " function declarations."
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
99 fi
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
100 rm osdefX.h.in