Mercurial > hg > toybox
annotate scripts/genconfig.sh @ 911:accabaaac666
stat: Separate stat and statfs
author | Felix Janda <felix.janda@posteo.de> |
---|---|
date | Sun, 26 May 2013 09:48:13 +0200 |
parents | a612857eb52d |
children | 565980862743 |
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 |