steps.mk
author Oron Peled <oron@actcom.co.il>
Mon Aug 03 00:49:25 2009 +0200 (2009-08-03)
branch1.4
changeset 1456 94fc77c37418
parent 1143 eee9e8de51e3
child 1324 48c12c696778
permissions -rw-r--r--
[complib:mpfr] Fix building MPFR in some weird cases

The tmul test uses a compiled-in input file in $(srcdir).
The problem is that the Makefile passes it unquoted. The C code
tries to stringify it using clever macros, which may *usually* work.

In my case the source directory was named:
.../toolchain-powerpc-e500v2-linux-gnuspe-1.0-2.fc10/.../tests
And guess what? During testing I found out the program fails because
it tries to open:
.../toolchain-powerpc-e500v2-1-gnuspe-1.0-2.fc10/.../tests

Yes, CPP tokenized the macro before stringifying it and not surprisingly
the 'linux' part was converted to 1.
[on Fedora-10: cpp (GCC) 4.3.2 20081105 (Red Hat 4.3.2-7)]

So the attached patch simplify the macros and pass the path as string
from the Makefile.

Manually backported from 1449:8ad2773e7ae3
     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             binutils            \
    24             cc_core_pass_1      \
    25             libc_headers        \
    26             libc_start_files    \
    27             cc_core_pass_2      \
    28             libc                \
    29             cc                  \
    30             libc_finish         \
    31             gmp_target          \
    32             mpfr_target         \
    33             binutils_target     \
    34             tools               \
    35             debug               \
    36             finish              \
    37 
    38 # Make the list available to sub-processes (scripts/crosstool-NG.sh needs it)
    39 export CT_STEPS
    40 
    41 # Print the steps list
    42 PHONY += list-steps
    43 list-steps:
    44 	@echo  'Available build steps, in order:'
    45 	@for step in $(CT_STEPS); do    \
    46 	     echo "  - $${step}";       \
    47 	 done
    48 	@echo  'Use "<step>" as action to execute only that step.'
    49 	@echo  'Use "+<step>" as action to execute up to that step.'
    50 	@echo  'Use "<step>+" as action to execute from that step onward.'
    51 
    52 # ----------------------------------------------------------
    53 # This part deals with executing steps
    54 
    55 $(CT_STEPS):
    56 	$(SILENT)$(MAKE) -rf $(CT_NG) V=$(V) RESTART=$@ STOP=$@ build
    57 
    58 $(patsubst %,+%,$(CT_STEPS)):
    59 	$(SILENT)$(MAKE) -rf $(CT_NG) V=$(V) STOP=$(patsubst +%,%,$@) build
    60 
    61 $(patsubst %,%+,$(CT_STEPS)):
    62 	$(SILENT)$(MAKE) -rf $(CT_NG) V=$(V) RESTART=$(patsubst %+,%,$@) build