annotate scripts/genconfig.sh @ 1260:0ce03bb85ebd draft

Probe for the existence of FIFREEZE and make fsfreeze depend on it.
author Rob Landley <rob@landley.net>
date Wed, 16 Apr 2014 07:49:32 -0500
parents 565980862743
children a302299dbb98
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
233
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
1 #!/bin/bash
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
2
239
4f1ca01db000 Fluff out hello.c to supply more example code as a skeleton for new commands,
Rob Landley <rob@landley.net>
parents: 233
diff changeset
3 # This has to be a separate file from scripts/make.sh so it can be called
4f1ca01db000 Fluff out hello.c to supply more example code as a skeleton for new commands,
Rob Landley <rob@landley.net>
parents: 233
diff changeset
4 # before menuconfig. (It's called again from scripts/make.sh just to be sure.)
4f1ca01db000 Fluff out hello.c to supply more example code as a skeleton for new commands,
Rob Landley <rob@landley.net>
parents: 233
diff changeset
5
233
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
6 mkdir -p generated
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
7
454
8f5780dd6da4 The unshare test needs $CC defined, source configure to get it.
Rob Landley <rob@landley.net>
parents: 426
diff changeset
8 source configure
8f5780dd6da4 The unshare test needs $CC defined, source configure to get it.
Rob Landley <rob@landley.net>
parents: 426
diff changeset
9
1260
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
10 # Probe for a single config symbol with a "compiles or not" test.
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
11 # Symbol name is first argument, flags second, feed C file to stdin
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
12 probesymbol()
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
13 {
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
14 ${CROSS_COMPILE}${CC} $CFLAGS -xc -o /dev/null $2 - 2>/dev/null
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
15 [ $? -eq 0 ] && DEFAULT=y || DEFAULT=n
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
16 rm a.out 2>/dev/null
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
17 echo -e "config $1\n\tbool" || exit 1
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
18 echo -e "\tdefault $DEFAULT\n" || exit 1
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
19 }
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
20
496
f0247cfc37f2 Don't mix the the probed symbols with the command symbols.
Rob Landley <rob@landley.net>
parents: 454
diff changeset
21 probeconfig()
233
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
22 {
426
8b0487639db9 Add autodetect for container support.
Rob Landley <rob@landley.net>
parents: 239
diff changeset
23 # Probe for container support on target
1260
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
24 probesymbol TOYBOX_CONTAINER << EOF
519
c6b3bd689d0a Fix build on slackware-current.
Georgi Chorbadzhiyski <gf@unixsol.org>
parents: 512
diff changeset
25 #include <linux/sched.h>
426
8b0487639db9 Add autodetect for container support.
Rob Landley <rob@landley.net>
parents: 239
diff changeset
26 int x=CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWNET;
552
7b85b0a0e9c0 Have probe for unshare test for actual unshare() function in libc.
Rob Landley <rob@landley.net>
parents: 519
diff changeset
27
7b85b0a0e9c0 Have probe for unshare test for actual unshare() function in libc.
Rob Landley <rob@landley.net>
parents: 519
diff changeset
28 int main(int argc, char *argv[]) { return unshare(x); }
426
8b0487639db9 Add autodetect for container support.
Rob Landley <rob@landley.net>
parents: 239
diff changeset
29 EOF
1260
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
30
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
31 probesymbol TOYBOX_FIFREEZE -c << EOF
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
32 #include <linux/fs.h>
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
33 #ifndef FIFREEZE
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
34 #error nope
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
35 #endif
0ce03bb85ebd Probe for the existence of FIFREEZE and make fsfreeze depend on it.
Rob Landley <rob@landley.net>
parents: 1259
diff changeset
36 EOF
496
f0247cfc37f2 Don't mix the the probed symbols with the command symbols.
Rob Landley <rob@landley.net>
parents: 454
diff changeset
37 }
552
7b85b0a0e9c0 Have probe for unshare test for actual unshare() function in libc.
Rob Landley <rob@landley.net>
parents: 519
diff changeset
38
496
f0247cfc37f2 Don't mix the the probed symbols with the command symbols.
Rob Landley <rob@landley.net>
parents: 454
diff changeset
39 genconfig()
f0247cfc37f2 Don't mix the the probed symbols with the command symbols.
Rob Landley <rob@landley.net>
parents: 454
diff changeset
40 {
653
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
41 # I could query the directory here, but I want to control the order
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
42 # and capitalization in the menu
740
f5ef67700a26 Add README file to each toys/ directory, teach build infrastructure to get fancy name from that. This means adding new directories shouldn't require touching build scripts.
Rob Landley <rob@landley.net>
parents: 653
diff changeset
43 for j in toys/*/README
233
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
44 do
747
68d6c1ce7bba Add stat submission to new "pending" directory, along with infrastructure to support pending.
Rob Landley <rob@landley.net>
parents: 740
diff changeset
45 DIR="$(dirname "$j")"
68d6c1ce7bba Add stat submission to new "pending" directory, along with infrastructure to support pending.
Rob Landley <rob@landley.net>
parents: 740
diff changeset
46
68d6c1ce7bba Add stat submission to new "pending" directory, along with infrastructure to support pending.
Rob Landley <rob@landley.net>
parents: 740
diff changeset
47 [ $(ls "$DIR" | wc -l) -lt 2 ] && continue
68d6c1ce7bba Add stat submission to new "pending" directory, along with infrastructure to support pending.
Rob Landley <rob@landley.net>
parents: 740
diff changeset
48
740
f5ef67700a26 Add README file to each toys/ directory, teach build infrastructure to get fancy name from that. This means adding new directories shouldn't require touching build scripts.
Rob Landley <rob@landley.net>
parents: 653
diff changeset
49 echo "menu \"$(head -n 1 $j)\""
233
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
50 echo
653
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
51
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
52 # extract config stanzas from each source file, in alphabetical order
740
f5ef67700a26 Add README file to each toys/ directory, teach build infrastructure to get fancy name from that. This means adding new directories shouldn't require touching build scripts.
Rob Landley <rob@landley.net>
parents: 653
diff changeset
53 for i in $(ls -1 $DIR/*.c)
653
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
54 do
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
55 # Grab the config block for Config.in
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
56 echo "# $i"
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
57 sed -n '/^\*\//q;/^config [A-Z]/,$p' $i || return 1
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
58 echo
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
59 done
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
60
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
61 echo endmenu
233
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
62 done
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
63 }
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
64
496
f0247cfc37f2 Don't mix the the probed symbols with the command symbols.
Rob Landley <rob@landley.net>
parents: 454
diff changeset
65 probeconfig > generated/Config.probed || rm generated/Config.probed
f0247cfc37f2 Don't mix the the probed symbols with the command symbols.
Rob Landley <rob@landley.net>
parents: 454
diff changeset
66 genconfig > generated/Config.in || rm generated/Config.in