annotate scripts/make.sh @ 1051:626cc2108480 draft

Allow shipped generated/help.h to still be used, until I rewrite the generator in C.
author Rob Landley <rob@landley.net>
date Thu, 05 Sep 2013 06:54:46 -0500
parents 223df8e9c694
children 82c5eb459a91
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
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
3 # Grab default values for $CFLAGS and such.
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
4
890
c7e7b159568d The host sort on many distros behaves stupidly, and sorts stuff in non-ascii order by default. Make it stop.
Rob Landley <rob@landley.net>
parents: 720
diff changeset
5 export LANG=c
233
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
6 source ./configure
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
7
1032
40d0c96a8e89 Add scripts/single.sh to build individual non-multiplexed standalone commands.
Rob Landley <rob@landley.net>
parents: 999
diff changeset
8 [ -z "$KCONFIG_CONFIG" ] && KCONFIG_CONFIG=".config"
40d0c96a8e89 Add scripts/single.sh to build individual non-multiplexed standalone commands.
Rob Landley <rob@landley.net>
parents: 999
diff changeset
9
40d0c96a8e89 Add scripts/single.sh to build individual non-multiplexed standalone commands.
Rob Landley <rob@landley.net>
parents: 999
diff changeset
10 if [ -z "$KCONFIG_CONFIG" ]
653
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 595
diff changeset
11 then
1032
40d0c96a8e89 Add scripts/single.sh to build individual non-multiplexed standalone commands.
Rob Landley <rob@landley.net>
parents: 999
diff changeset
12 echo "No $KCONFIG_CONFIG (see "make help" for configuration options)."
653
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 595
diff changeset
13 exit 1
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 595
diff changeset
14 fi
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 595
diff changeset
15
1032
40d0c96a8e89 Add scripts/single.sh to build individual non-multiplexed standalone commands.
Rob Landley <rob@landley.net>
parents: 999
diff changeset
16 echo "Make generated/config.h from $KCONFIG_CONFIG."
233
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
17
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
18 # This long and roundabout sed invocation is to make old versions of sed happy.
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
19 # New ones have '\n' so can replace one line with two without all the branches
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
20 # and tedious mucking about with hold space.
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
21
346
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
22 sed -n \
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
23 -e 's/^# CONFIG_\(.*\) is not set.*/\1/' \
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
24 -e 't notset' \
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
25 -e 's/^CONFIG_\(.*\)=y.*/\1/' \
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
26 -e 't isset' \
347
52e980b216d3 Convert non-bool config values (such as int) into config.h entries.
Rob Landley <rob@landley.net>
parents: 346
diff changeset
27 -e 's/^CONFIG_\([^=]*\)=\(.*\)/#define CFG_\1 \2/p' \
346
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
28 -e 'd' \
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
29 -e ':notset' \
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
30 -e 'h' \
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
31 -e 's/.*/#define CFG_& 0/p' \
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
32 -e 'g' \
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
33 -e 's/.*/#define USE_&(...)/p' \
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
34 -e 'd' \
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
35 -e ':isset' \
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
36 -e 'h' \
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
37 -e 's/.*/#define CFG_& 1/p' \
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
38 -e 'g' \
d0bf1df83c04 Re-wordwrap and reorder the .config->config.h sed script. (No real changes, just one command/line in a clearer order.)
Rob Landley <rob@landley.net>
parents: 321
diff changeset
39 -e 's/.*/#define USE_&(...) __VA_ARGS__/p' \
1032
40d0c96a8e89 Add scripts/single.sh to build individual non-multiplexed standalone commands.
Rob Landley <rob@landley.net>
parents: 999
diff changeset
40 $KCONFIG_CONFIG > generated/config.h || exit 1
233
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
41
674
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
42
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
43 echo "Extract configuration information from toys/*.c files..."
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
44 scripts/genconfig.sh
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
45
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
46 echo "Generate headers from toys/*/*.c..."
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
47
930
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
48 # Create a list of all the commands toybox can provide. Note that the first
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
49 # entry is out of order on purpose (the toybox multiplexer command must be the
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
50 # first element of the array). The rest must be sorted in alphabetical order
674
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
51 # for fast binary search.
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
52
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
53 echo "generated/newtoys.h"
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
54
1032
40d0c96a8e89 Add scripts/single.sh to build individual non-multiplexed standalone commands.
Rob Landley <rob@landley.net>
parents: 999
diff changeset
55 echo "USE_TOYBOX(NEWTOY(toybox, NULL, TOYFLAG_STAYROOT))" > generated/newtoys.h
674
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
56 sed -n -e 's/^USE_[A-Z0-9_]*(/&/p' toys/*/*.c \
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
57 | sed 's/\(.*TOY(\)\([^,]*\),\(.*\)/\2 \1\2,\3/' | sort -k 1,1 \
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
58 | sed 's/[^ ]* //' >> generated/newtoys.h
999
0af2375a8ef8 More grep cleanup, and make OPTSTR_command macros for use with OLDTOY()
Rob Landley <rob@landley.net>
parents: 965
diff changeset
59 sed -n 's/.*(NEWTOY(\([^,]*\), *\("[^,]*"\) *,.*/#define OPTSTR_\1\t\2/p' \
0af2375a8ef8 More grep cleanup, and make OPTSTR_command macros for use with OLDTOY()
Rob Landley <rob@landley.net>
parents: 965
diff changeset
60 generated/newtoys.h > generated/oldtoys.h
674
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
61
712
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
62 # Extract list of command letters from processed header file
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
63
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
64 function getflags()
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
65 {
930
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
66 FLX="$1"
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
67 shift
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
68 sed -n -e "s/.*TOY($FLX"',[ \t]*"\([^"]*\)"[ \t]*,.*)/\1/' \
712
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
69 -e 't keep;d;:keep' -e 's/^[<>=][0-9]//' -e 's/[?&^]//' \
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
70 -e 't keep' -e 's/[><=][0-9][0-9]*//g' -e 's/+.//g' \
1037
af1780148f7c Implement ls --color=auto, suggested by Rich Felker.
Rob Landley <rob@landley.net>
parents: 1032
diff changeset
71 -e 's/\[[^]]*\]//g' -e 's/[-?^:&#|@* ;]//g' "$@" -e 'p'
712
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
72 }
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
73
674
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
74 # Extract global structure definitions and flag definitions from toys/*/*.c
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
75
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
76 function getglobals()
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
77 {
712
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
78 # Run newtoys.h through the compiler's preprocessor to resolve USE macros
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
79 # against current config.
720
e2eb80481afc Use the specified compiler for preprocessing.
Rob Landley <rob@landley.net>
parents: 712
diff changeset
80 NEWTOYS="$(cat generated/config.h generated/newtoys.h | $CC -E - | sed 's/" *"//g')"
712
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
81
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
82 # Grab allyesconfig for comparison
720
e2eb80481afc Use the specified compiler for preprocessing.
Rob Landley <rob@landley.net>
parents: 712
diff changeset
83 ALLTOYS="$((sed '/USE_.*([^)]*)$/s/$/ __VA_ARGS__/' generated/config.h && cat generated/newtoys.h) | $CC -E - | sed 's/" *"//g')"
712
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
84
674
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
85 for i in toys/*/*.c
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
86 do
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
87 NAME="$(echo $i | sed 's@.*/\(.*\)\.c@\1@')"
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
88
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
89 echo -e "// $i\n"
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
90 sed -n -e '/^GLOBALS(/,/^)/b got;b;:got' \
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
91 -e 's/^GLOBALS(/struct '"$NAME"'_data {/' \
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
92 -e 's/^)/};/' -e 'p' $i
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
93
930
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
94 LONGFLAGS="$(echo "$NEWTOYS" | getflags "$NAME" -e 's/\(\(([^)]*)\)*\).*/\1/' -e 's/(//g' -e 's/)/ /g')"
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
95 FLAGS="$(echo "$NEWTOYS" | getflags "$NAME" -e 's/([^)]*)//g')"
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
96 ZFLAGS="$(echo "$ALLTOYS" | getflags "$NAME" -e 's/([^)]*)//g' -e 's/[-'"$FLAGS"']//g')"
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
97 LONGFLAGLEN="$(echo "$LONGFLAGS" | wc -w)"
712
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
98
674
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
99 echo "#ifdef FOR_${NAME}"
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
100 X=0
930
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
101 # Provide values for --longopts with no corresponding short flags
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
102 for i in $LONGFLAGS
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
103 do
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
104 X=$(($X+1))
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
105 echo -e "#define FLAG_$i\t(1<<$(($LONGFLAGLEN+${#FLAGS}-$X)))"
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
106 done
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
107
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
108 # Provide values for active flags
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
109 X=0
674
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
110 while [ $X -lt ${#FLAGS} ]
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
111 do
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
112 echo -ne "#define FLAG_${FLAGS:$X:1}\t"
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
113 X=$(($X+1))
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
114 echo "(1<<$((${#FLAGS}-$X)))"
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
115 done
930
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
116
39ac9e0ad6ad Generate FLAG_longopt macros for --longopts with no corresponding short option.
Rob Landley <rob@landley.net>
parents: 892
diff changeset
117 # Provide zeroes for inactive flags
712
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
118 X=0
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
119 while [ $X -lt ${#ZFLAGS} ]
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
120 do
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
121 echo "#define FLAG_${ZFLAGS:$X:1} 0"
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
122 X=$(($X+1))
a950dd960593 Cleanup i18n support (#ifdefectomy, move global init to process launch). Teach make.sh to emit "#define FLAG_x 0" for options inside disabled USE macros so we can unconditionally refer to them.
Rob Landley <rob@landley.net>
parents: 705
diff changeset
123 done
674
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
124 echo "#define TT this.${NAME}"
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
125 echo "#endif"
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
126 done
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
127 }
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
128
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
129 echo "generated/globals.h"
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
130
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
131 GLOBSTRUCT="$(getglobals)"
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
132 (
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
133 echo "$GLOBSTRUCT"
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
134 echo
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
135 echo "extern union global_union {"
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
136 echo "$GLOBSTRUCT" | sed -n 's/struct \(.*\)_data {/ struct \1_data \1;/p'
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
137 echo "} this;"
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
138 ) > generated/globals.h
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
139
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
140 echo "generated/help.h"
965
0d20619388b3 Juhani Haverinen pointed out that python 3 doesn't work with config2help.py, so you python2 binary until finishing the C rewrite.
Rob Landley <rob@landley.net>
parents: 963
diff changeset
141 # Only recreate generated/help.h if python2 is installed. Does not work with 3.
1050
223df8e9c694 make.sh: Fix probing for python2.x and be verbose in error reporting
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1037
diff changeset
142 PYTHON="$(which python2 || which python2.6 || which python2.7)"
223df8e9c694 make.sh: Fix probing for python2.x and be verbose in error reporting
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1037
diff changeset
143 if [ ! -z "$(grep 'CONFIG_TOYBOX_HELP=y' $KCONFIG_CONFIG)" ];
674
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
144 then
1050
223df8e9c694 make.sh: Fix probing for python2.x and be verbose in error reporting
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1037
diff changeset
145 if [ -z "$PYTHON" ];
223df8e9c694 make.sh: Fix probing for python2.x and be verbose in error reporting
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1037
diff changeset
146 then
1051
626cc2108480 Allow shipped generated/help.h to still be used, until I rewrite the generator in C.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
147 echo "Python 2.x required to rebuild generated/help.h"
626cc2108480 Allow shipped generated/help.h to still be used, until I rewrite the generator in C.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
148 # exit 1
1050
223df8e9c694 make.sh: Fix probing for python2.x and be verbose in error reporting
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1037
diff changeset
149 else
223df8e9c694 make.sh: Fix probing for python2.x and be verbose in error reporting
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1037
diff changeset
150 echo "Extract help text from Config.in."
223df8e9c694 make.sh: Fix probing for python2.x and be verbose in error reporting
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1037
diff changeset
151 "$PYTHON" scripts/config2help.py Config.in > generated/help.h || exit 1
223df8e9c694 make.sh: Fix probing for python2.x and be verbose in error reporting
Elie De Brauwer <eliedebrauwer@gmail.com>
parents: 1037
diff changeset
152 fi
674
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
153 fi
7e846e281e38 New build infrastructure to generate FLAG_ macros and TT alias, #define FOR_commandname before #including toys.h to trigger it. Rename DEFINE_GLOBALS() to just GLOBALS() (because I could never remember if it was DECLARE_GLOBALS). Convert existing commands to use new infrastructure, and replace optflag constants with FLAG_ macros where appropriate.
Rob Landley <rob@landley.net>
parents: 664
diff changeset
154
1032
40d0c96a8e89 Add scripts/single.sh to build individual non-multiplexed standalone commands.
Rob Landley <rob@landley.net>
parents: 999
diff changeset
155 # Extract a list of toys/*/*.c files to compile from the data in $KCONFIG_CONFIG
233
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
156
654
04feab07416c Teach build to compare toys/*/*.c against .config symbol names instead of stopping at first _ when assembling list of files to build, and convert - to _. This lets us have commands like switch_root or nbd-client.
Rob Landley <rob@landley.net>
parents: 653
diff changeset
157 # 1) Get a list of C files in toys/* and glue them together into a regex we can
04feab07416c Teach build to compare toys/*/*.c against .config symbol names instead of stopping at first _ when assembling list of files to build, and convert - to _. This lets us have commands like switch_root or nbd-client.
Rob Landley <rob@landley.net>
parents: 653
diff changeset
158 # feed to grep that will match any one of them (whole word, not substring).
04feab07416c Teach build to compare toys/*/*.c against .config symbol names instead of stopping at first _ when assembling list of files to build, and convert - to _. This lets us have commands like switch_root or nbd-client.
Rob Landley <rob@landley.net>
parents: 653
diff changeset
159 TOYFILES="^$(ls toys/*/*.c | sed -n 's@^.*/\(.*\)\.c$@\1@;s/-/_/g;H;${g;s/\n//;s/\n/$|^/gp}')\$"
04feab07416c Teach build to compare toys/*/*.c against .config symbol names instead of stopping at first _ when assembling list of files to build, and convert - to _. This lets us have commands like switch_root or nbd-client.
Rob Landley <rob@landley.net>
parents: 653
diff changeset
160
04feab07416c Teach build to compare toys/*/*.c against .config symbol names instead of stopping at first _ when assembling list of files to build, and convert - to _. This lets us have commands like switch_root or nbd-client.
Rob Landley <rob@landley.net>
parents: 653
diff changeset
161 # 2) Grab the XXX part of all CONFIG_XXX entries, removing everything after the
233
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
162 # second underline
654
04feab07416c Teach build to compare toys/*/*.c against .config symbol names instead of stopping at first _ when assembling list of files to build, and convert - to _. This lets us have commands like switch_root or nbd-client.
Rob Landley <rob@landley.net>
parents: 653
diff changeset
163 # 3) Sort the list, keeping only one of each entry.
04feab07416c Teach build to compare toys/*/*.c against .config symbol names instead of stopping at first _ when assembling list of files to build, and convert - to _. This lets us have commands like switch_root or nbd-client.
Rob Landley <rob@landley.net>
parents: 653
diff changeset
164 # 4) Convert to lower case.
04feab07416c Teach build to compare toys/*/*.c against .config symbol names instead of stopping at first _ when assembling list of files to build, and convert - to _. This lets us have commands like switch_root or nbd-client.
Rob Landley <rob@landley.net>
parents: 653
diff changeset
165 # 5) Remove any config symbol not recognized as a filename from step 1.
04feab07416c Teach build to compare toys/*/*.c against .config symbol names instead of stopping at first _ when assembling list of files to build, and convert - to _. This lets us have commands like switch_root or nbd-client.
Rob Landley <rob@landley.net>
parents: 653
diff changeset
166 # 6) Add "toys/*/" prefix and ".c" suffix.
233
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
167
1032
40d0c96a8e89 Add scripts/single.sh to build individual non-multiplexed standalone commands.
Rob Landley <rob@landley.net>
parents: 999
diff changeset
168 TOYFILES=$(sed -nre 's/^CONFIG_(.*)=y/\1/p' < "$KCONFIG_CONFIG" \
654
04feab07416c Teach build to compare toys/*/*.c against .config symbol names instead of stopping at first _ when assembling list of files to build, and convert - to _. This lets us have commands like switch_root or nbd-client.
Rob Landley <rob@landley.net>
parents: 653
diff changeset
169 | sort -u | tr A-Z a-z | grep -E "$TOYFILES" | sed 's@\(.*\)@toys/\*/\1.c@')
233
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
170
581
1e07220fd3b6 Probe available libraries to link --as-needed, avoiding "unknown libarary" errors.
Rob Landley <rob@landley.net>
parents: 572
diff changeset
171 echo "Library probe..."
1e07220fd3b6 Probe available libraries to link --as-needed, avoiding "unknown libarary" errors.
Rob Landley <rob@landley.net>
parents: 572
diff changeset
172
653
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 595
diff changeset
173 # We trust --as-needed to remove each library if we don't use any symbols
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 595
diff changeset
174 # out of it, this loop is because the compiler has no way to ignore a library
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 595
diff changeset
175 # that doesn't exist, so we have to detect and skip nonexistent libraries
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 595
diff changeset
176 # for it.
2986aa63a021 Move commands into "posix", "lsb", and "other" menus/directories.
Rob Landley <rob@landley.net>
parents: 595
diff changeset
177
581
1e07220fd3b6 Probe available libraries to link --as-needed, avoiding "unknown libarary" errors.
Rob Landley <rob@landley.net>
parents: 572
diff changeset
178 OPTLIBS="$(for i in util crypt m; do echo "int main(int argc, char *argv[]) {return 0;}" | ${CROSS_COMPILE}${CC} -xc - -o /dev/null -Wl,--as-needed -l$i > /dev/null 2>/dev/null && echo -l$i; done)"
1e07220fd3b6 Probe available libraries to link --as-needed, avoiding "unknown libarary" errors.
Rob Landley <rob@landley.net>
parents: 572
diff changeset
179
233
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
180 echo "Compile toybox..."
d4176f3f3835 Zap toys/Config.in and instead create generated/Config.in from contents of
Rob Landley <rob@landley.net>
parents:
diff changeset
181
472
f59b4b6bde5e Add V=1 support to make.
Rob Landley <rob@landley.net>
parents: 364
diff changeset
182 do_loudly()
f59b4b6bde5e Add V=1 support to make.
Rob Landley <rob@landley.net>
parents: 364
diff changeset
183 {
f59b4b6bde5e Add V=1 support to make.
Rob Landley <rob@landley.net>
parents: 364
diff changeset
184 [ ! -z "$V" ] && echo "$@"
f59b4b6bde5e Add V=1 support to make.
Rob Landley <rob@landley.net>
parents: 364
diff changeset
185 "$@"
f59b4b6bde5e Add V=1 support to make.
Rob Landley <rob@landley.net>
parents: 364
diff changeset
186 }
f59b4b6bde5e Add V=1 support to make.
Rob Landley <rob@landley.net>
parents: 364
diff changeset
187
512
9bcc288a1c54 Fix from Georgi Chorbadzhiyski to make cross compiling more robust.
Rob Landley <rob@landley.net>
parents: 472
diff changeset
188 do_loudly ${CROSS_COMPILE}${CC} $CFLAGS -I . -o toybox_unstripped $OPTIMIZE \
581
1e07220fd3b6 Probe available libraries to link --as-needed, avoiding "unknown libarary" errors.
Rob Landley <rob@landley.net>
parents: 572
diff changeset
189 main.c lib/*.c $TOYFILES -Wl,--as-needed $OPTLIBS || exit 1
512
9bcc288a1c54 Fix from Georgi Chorbadzhiyski to make cross compiling more robust.
Rob Landley <rob@landley.net>
parents: 472
diff changeset
190 do_loudly ${CROSS_COMPILE}${STRIP} toybox_unstripped -o toybox || exit 1
364
6df3ac5165fa The "strip" in gcc 4.4 doesn't set the executable bit on its output, despite what SUSv4 says it should do, so cope with buggy FSF tools.
Rob Landley <rob@landley.net>
parents: 347
diff changeset
191 # gcc 4.4's strip command is buggy, and doesn't set the executable bit on
6df3ac5165fa The "strip" in gcc 4.4 doesn't set the executable bit on its output, despite what SUSv4 says it should do, so cope with buggy FSF tools.
Rob Landley <rob@landley.net>
parents: 347
diff changeset
192 # its output the way SUSv4 suggests it do so.
472
f59b4b6bde5e Add V=1 support to make.
Rob Landley <rob@landley.net>
parents: 364
diff changeset
193 do_loudly chmod +x toybox || exit 1