steps.mk
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon Mar 29 00:15:32 2010 +0200 (2010-03-29)
changeset 1864 758d5137fe87
parent 1811 35cf5e2f110a
child 1876 a6a4beab3125
permissions -rw-r--r--
scripts/populate: optimise search loop

Curently, populate will iterate over all ELF (shared objects|executables)
to look for missing NEEDED DSOs, adding to the list at every iterations
of the search loop.

Instead of looking again at previously handled ELF files, recursively
resolve every ELf files.

Also, in case there are a whole lot of files (more than the shell can
accept as arguments list, or creating a command line longer than the
shell can cope with), use a temporary file with the list of files
to search for missing dependencies.
     1 # Makefile for each steps
     2 # Copyright 2006 Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
     3 
     4 # ----------------------------------------------------------
     5 # This is the steps help entry
     6 
     7 help-build::
     8 	@echo  '  list-steps         - List all build steps'
     9 
    10 help-env::
    11 	@echo  '  STOP               - Stop the build just after this step'
    12 	@echo  '  RESTART            - Restart the build just before this step'
    13 
    14 # ----------------------------------------------------------
    15 # The steps list
    16 
    17 # Please keep the last line with a '\' and keep the following empy line:
    18 # it helps when diffing and merging.
    19 CT_STEPS := libc_check_config   \
    20             kernel_headers      \
    21             gmp                 \
    22             mpfr                \
    23             ppl                 \
    24             cloog               \
    25             mpc                 \
    26             libelf              \
    27             binutils            \
    28             elf2flt             \
    29             sstrip              \
    30             cc_core_pass_1      \
    31             libc_headers        \
    32             libc_start_files    \
    33             cc_core_pass_2      \
    34             libc                \
    35             cc                  \
    36             libc_finish         \
    37             gmp_target          \
    38             mpfr_target         \
    39             libelf_target       \
    40             binutils_target     \
    41             debug               \
    42             finish              \
    43 
    44 # Make the list available to sub-processes (scripts/crosstool-NG.sh needs it)
    45 export CT_STEPS
    46 
    47 # Print the steps list
    48 PHONY += list-steps
    49 list-steps:
    50 	@echo  'Available build steps, in order:'
    51 	@for step in $(CT_STEPS); do    \
    52 	     echo "  - $${step}";       \
    53 	 done
    54 	@echo  'Use "<step>" as action to execute only that step.'
    55 	@echo  'Use "+<step>" as action to execute up to that step.'
    56 	@echo  'Use "<step>+" as action to execute from that step onward.'
    57 
    58 # ----------------------------------------------------------
    59 # This part deals with executing steps
    60 
    61 $(CT_STEPS):
    62 	$(SILENT)$(MAKE) -rf $(CT_NG) V=$(V) RESTART=$@ STOP=$@ build
    63 
    64 $(patsubst %,+%,$(CT_STEPS)):
    65 	$(SILENT)$(MAKE) -rf $(CT_NG) V=$(V) STOP=$(patsubst +%,%,$@) build
    66 
    67 $(patsubst %,%+,$(CT_STEPS)):
    68 	$(SILENT)$(MAKE) -rf $(CT_NG) V=$(V) RESTART=$(patsubst %+,%,$@) build