annotate scripts/genconfig.sh @ 956:caa05719070f

Start of TOYBOX_SINGLE support, for building standalone commands with no multiplexer.
author Rob Landley <rob@landley.net>
date Fri, 19 Jul 2013 02:03:02 -0500
parents a612857eb52d
children 565980862743
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
496
f0247cfc37f2 Don't mix the the probed symbols with the command symbols.
Rob Landley <rob@landley.net>
parents: 454
diff changeset
10 probeconfig()
233
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
11 {
426
8b0487639db9 Add autodetect for container support.
Rob Landley <rob@landley.net>
parents: 239
diff changeset
12 # Probe for container support on target
8b0487639db9 Add autodetect for container support.
Rob Landley <rob@landley.net>
parents: 239
diff changeset
13
8b0487639db9 Add autodetect for container support.
Rob Landley <rob@landley.net>
parents: 239
diff changeset
14 echo -e "# container support\nconfig TOYBOX_CONTAINER\n\tbool" || return 1
860
a612857eb52d Make genconfig use CFLAGS because building against a libc that isn't installed on the host may need --static to run the results.
Rob Landley <rob@landley.net>
parents: 813
diff changeset
15 ${CROSS_COMPILE}${CC} $CFLAGS -xc -o /dev/null - 2>/dev/null << EOF
519
c6b3bd689d0a Fix build on slackware-current.
Georgi Chorbadzhiyski <gf@unixsol.org>
parents: 512
diff changeset
16 #include <linux/sched.h>
426
8b0487639db9 Add autodetect for container support.
Rob Landley <rob@landley.net>
parents: 239
diff changeset
17 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
18
7b85b0a0e9c0 Have probe for unshare test for actual unshare() function in libc.
Rob Landley <rob@landley.net>
parents: 519
diff changeset
19 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
20 EOF
8b0487639db9 Add autodetect for container support.
Rob Landley <rob@landley.net>
parents: 239
diff changeset
21 [ $? -eq 0 ] && DEFAULT=y || DEFAULT=n
552
7b85b0a0e9c0 Have probe for unshare test for actual unshare() function in libc.
Rob Landley <rob@landley.net>
parents: 519
diff changeset
22 rm a.out 2>/dev/null
426
8b0487639db9 Add autodetect for container support.
Rob Landley <rob@landley.net>
parents: 239
diff changeset
23 echo -e "\tdefault $DEFAULT\n" || return 1
496
f0247cfc37f2 Don't mix the the probed symbols with the command symbols.
Rob Landley <rob@landley.net>
parents: 454
diff changeset
24 }
552
7b85b0a0e9c0 Have probe for unshare test for actual unshare() function in libc.
Rob Landley <rob@landley.net>
parents: 519
diff changeset
25
496
f0247cfc37f2 Don't mix the the probed symbols with the command symbols.
Rob Landley <rob@landley.net>
parents: 454
diff changeset
26 genconfig()
f0247cfc37f2 Don't mix the the probed symbols with the command symbols.
Rob Landley <rob@landley.net>
parents: 454
diff changeset
27 {
653
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
28 # 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
29 # 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
30 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
31 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
32 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
33
68d6c1ce7bba Add stat submission to new "pending" directory, along with infrastructure to support pending.
Rob Landley <rob@landley.net>
parents: 740
diff changeset
34 [ $(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
35
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
36 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
37 echo
653
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
38
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
39 # 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
40 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
41 do
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
42 # 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
43 echo "# $i"
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
44 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
45 echo
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
46 done
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
47
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 552
diff changeset
48 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
49 done
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
50 }
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
51
813
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
52 headerprobes()
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
53 {
860
a612857eb52d Make genconfig use CFLAGS because building against a libc that isn't installed on the host may need --static to run the results.
Rob Landley <rob@landley.net>
parents: 813
diff changeset
54 ${CROSS_COMPILE}${CC} $CFLAGS -xc -o /dev/null - 2>/dev/null << EOF
813
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
55 #include <fcntl.h>
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
56 #ifndef O_NOFOLLOW
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
57 #error posix 2008 was a while ago now
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
58 #endif
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
59 EOF
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
60 if [ $? -ne 0 ]
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
61 then
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
62 rm -f a.out
860
a612857eb52d Make genconfig use CFLAGS because building against a libc that isn't installed on the host may need --static to run the results.
Rob Landley <rob@landley.net>
parents: 813
diff changeset
63 ${CROSS_COMPILE}${CC} $CFLAGS -xc - 2>/dev/null << EOF
813
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
64 #include <stdio.h>
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
65 #include <sys/types.h>
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
66 #include <asm/fcntl.h>
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
67
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
68 int main(int argc, char *argv[])
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
69 {
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
70 printf("0x%x\n", O_NOFOLLOW);
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
71 }
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
72 EOF
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
73 X=$(./a.out) 2>/dev/null
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
74 rm -f a.out
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
75 echo "#define O_NOFOLLOW ${X:-0}"
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
76 fi
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
77 }
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
78
496
f0247cfc37f2 Don't mix the the probed symbols with the command symbols.
Rob Landley <rob@landley.net>
parents: 454
diff changeset
79 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
80 genconfig > generated/Config.in || rm generated/Config.in
813
52e69f6710ca Compile time probe to fish O_NOFOLLOW out of linux headers when fcntl doesn't conform to posix-2008.
Rob Landley <rob@landley.net>
parents: 747
diff changeset
81 headerprobes > generated/portability.h || rm generated/portability.h