Makefile.in
author "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
Fri Jan 13 12:24:55 2012 +0100 (2012-01-13)
changeset 2837 db26e387b70b
parent 2834 0a0410dd0cb0
child 2838 822af73497bf
permissions -rw-r--r--
cc/gcc: update Linaro GCC revisions to 2012.01

Update Linaro GCC with the latest available revisions.

Signed-off-by: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
yann@197
     1
# Makefile.in for building crosstool-NG
yann@182
     2
# This file serves as source for the ./configure operation
yann@182
     3
yann@1156
     4
# This series of test is here because GNU make 3.81 will *not* use MAKEFLAGS
yann@1156
     5
# to set additional flags in the current Makfile ( see:
yann@1156
     6
# http://savannah.gnu.org/bugs/?20501 ), although the make manual says it
yann@1156
     7
# should ( see: http://www.gnu.org/software/make/manual/make.html#Options_002fRecursion )
yann@1156
     8
# so we have to work it around by calling ourselves back if needed
yann@1156
     9
yann@1156
    10
# So why do we need not to use the built rules and variables? Because we
yann@1156
    11
# need to generate scripts/crosstool-NG.sh from scripts/crosstool-NG.sh.in
yann@1156
    12
# and there is a built-in implicit rule '%.sh:' that has neither a pre-requisite
yann@1156
    13
# nor a command associated, and that built-in implicit rule takes precedence
yann@1156
    14
# over our non-built-in implicit rule '%: %.in', below.
yann@1156
    15
yann@1156
    16
# CT_MAKEFLAGS will be used later, below...
yann@1156
    17
yann@1156
    18
# Do not print directories as we descend into them
yann@1156
    19
ifeq ($(filter --no-print-directory,$(MAKEFLAGS)),)
yann@1156
    20
CT_MAKEFLAGS += --no-print-directory
yann@1156
    21
endif
yann@1156
    22
yann@1156
    23
# Use neither builtin rules, nor builtin variables
yann@1156
    24
# Note: dual test, because if -R and -r are given on the command line
yann@1156
    25
# (who knows?), MAKEFLAGS contains 'Rr' instead of '-Rr', while adding
yann@1156
    26
# '-Rr' to MAKEFLAGS adds it literaly ( and does not add 'Rr' )
yann@1156
    27
ifeq ($(filter Rr,$(MAKEFLAGS)),)
yann@1156
    28
ifeq ($(filter -Rr,$(MAKEFLAGS)),)
yann@1156
    29
CT_MAKEFLAGS += -Rr
yann@1156
    30
endif # No -Rr
yann@1156
    31
endif # No Rr
yann@1156
    32
yann@1156
    33
# Remove any suffix rules
yann@1156
    34
.SUFFIXES:
yann@554
    35
yann@382
    36
all: Makefile build
yann@382
    37
yann@1047
    38
###############################################################################
yann@182
    39
# Configuration variables
yann@182
    40
yann@2834
    41
# Stuff found by ./configure
yann@2835
    42
export DATE            := @DATE@
yann@2835
    43
export LOCAL           := @enable_local@
yann@2835
    44
export PROG_SED        := @program_transform_name@
yann@2835
    45
export PACKAGE_TARNAME := @PACKAGE_TARNAME@
yann@2835
    46
export VERSION         := @PACKAGE_VERSION@
yann@2835
    47
export prefix          := @prefix@
yann@2835
    48
export exec_prefix     := @exec_prefix@
yann@2835
    49
export bindir          := @bindir@
yann@2835
    50
export libdir          := @libdir@@sublibdir@
yann@2835
    51
export docdir          := @docdir@@subdocdir@
yann@2835
    52
export mandir          := @mandir@
yann@2835
    53
export datarootdir     := @datarootdir@
yann@2835
    54
export install         := @INSTALL@
yann@2835
    55
export bash            := @_BASH@
yann@2835
    56
export grep            := @EGREP@
yann@2835
    57
export make            := @MAKE@
yann@2835
    58
export sed             := @SED@
yann@2835
    59
export libtool         := @LIBTOOL@
yann@2835
    60
export libtoolize      := @LIBTOOLIZE@
yann@2835
    61
export objcopy         := @OBJCOPY@
yann@2835
    62
export objdump         := @OBJDUMP@
yann@2835
    63
export readelf         := @READELF@
yann@2835
    64
export patch           := @PATCH@
yann@2835
    65
export CC              := @CC@
yann@2835
    66
export CPP             := @CPP@
yann@2835
    67
export CPPFLAGS        := @CPPFLAGS@
yann@2835
    68
export CFLAGS          := @CFLAGS@
yann@2835
    69
export LDFLAGS         := @LDFLAGS@
yann@2835
    70
export LIBS            := @LIBS@
yann@2835
    71
export curses_hdr      := @ac_ct_curses_hdr@
yann@2835
    72
export gettext         := @gettext@
yann@1109
    73
yann@2481
    74
# config options to push down to kconfig
yann@2834
    75
KCONFIG:= @kconfig_options@
yann@2481
    76
yann@1109
    77
###############################################################################
yann@2026
    78
# Non-configure variables
yann@2026
    79
MAN_SECTION := 1
yann@2026
    80
MAN_SUBDIR := /man$(MAN_SECTION)
yann@2026
    81
yann@2834
    82
PROG_NAME := $(shell echo 'ct-ng' |$(sed) -r -e '$(PROG_SED)' )
yann@2620
    83
yann@2026
    84
###############################################################################
yann@1109
    85
# Sanity checks
yann@1109
    86
yann@1109
    87
# Check if Makefile is up to date:
yann@1109
    88
Makefile: Makefile.in
yann@1109
    89
	@echo "$< did changed: you must re-run './configure'"
yann@1109
    90
	@false
yann@1109
    91
yann@1109
    92
# If installing with DESTDIR, check it's an absolute path
yann@1109
    93
ifneq ($(strip $(DESTDIR)),)
yann@1109
    94
  ifneq ($(DESTDIR),$(abspath /$(DESTDIR)))
yann@1109
    95
    $(error DESTDIR is not an absolute PATH: '$(DESTDIR)')
yann@1109
    96
  endif
yann@1109
    97
endif
yann@182
    98
yann@182
    99
###############################################################################
yann@182
   100
# Global make rules
yann@182
   101
yann@1156
   102
# If any extra MAKEFLAGS were added, re-run ourselves
yann@1156
   103
# See top of file for an explanation of why this is needed...
yann@1156
   104
ifneq ($(strip $(CT_MAKEFLAGS)),)
yann@1156
   105
yann@2505
   106
# Somehow, the new auto-completion for make in the recent distributions
yann@2505
   107
# trigger a behavior where our Makefile calls itself recursively, in a
yann@2505
   108
# never-ending loop (except on lack of ressources, swap, PIDs...)
yann@2505
   109
# Avoid this situation by cutting the recursion short at the first
yann@2505
   110
# level.
yann@2505
   111
# This has the side effect of only showing the real targets, and hiding our
yann@2505
   112
# internal ones. :-)
yann@2505
   113
ifneq ($(MAKELEVEL),0)
yann@2505
   114
$(error Recursion detected, bailing out...)
yann@2505
   115
endif
yann@2505
   116
yann@1156
   117
MAKEFLAGS += $(CT_MAKEFLAGS)
yann@2834
   118
build install clean distclean mrproper uninstall:
yann@1156
   119
	@$(MAKE) $@
yann@1156
   120
yann@1156
   121
else
yann@1156
   122
# There were no additional MAKEFLAGS to add, do the job
yann@1156
   123
yann@2835
   124
TARGETS := bin lib lib-kconfig doc man
yann@182
   125
yann@555
   126
build: $(patsubst %,build-%,$(TARGETS))
yann@182
   127
yann@1101
   128
install: build real-install
yann@555
   129
yann@555
   130
clean: $(patsubst %,clean-%,$(TARGETS))
yann@182
   131
yann@182
   132
distclean: clean
yann@554
   133
	@echo "  RM     'Makefile'"
yann@182
   134
	@rm -f Makefile
yann@182
   135
yann@2834
   136
mrproper: distclean
yann@2834
   137
	@echo "  RM     'autostuff'"
yann@2834
   138
	@ rm -rf autom4te.cache config.log config.status configure
yann@2834
   139
yann@1048
   140
uninstall: real-uninstall
yann@182
   141
yann@182
   142
###############################################################################
yann@182
   143
# Specific make rules
yann@182
   144
yann@182
   145
#--------------------------------------
yann@182
   146
# Build rules
yann@182
   147
yann@2835
   148
build-bin: $(PROG_NAME)             \
yann@2835
   149
           scripts/crosstool-NG.sh  \
yann@2835
   150
           scripts/saveSample.sh    \
yann@2835
   151
           scripts/showTuple.sh
yann@1297
   152
	@chmod 755 $^
yann@182
   153
yann@2835
   154
build-lib: paths.mk             \
yann@2835
   155
           config/configure.in
yann@2835
   156
yann@2835
   157
build-lib-kconfig:
yann@2835
   158
	@$(MAKE) -C kconfig
yann@182
   159
yann@555
   160
build-doc:
yann@555
   161
yann@2620
   162
build-man: docs/$(PROG_NAME).1.gz
yann@309
   163
yann@2620
   164
docs/$(PROG_NAME).1.gz: docs/$(PROG_NAME).1
yann@554
   165
	@echo "  GZIP   '$@'"
yann@317
   166
	@gzip -c9 $< >$@
yann@182
   167
yann@2621
   168
define sed_it
yann@2621
   169
	@echo "  SED    '$@'"
yann@2834
   170
	@$(sed) -r -e 's,@@CT_BINDIR@@,$(bindir),g;'        \
yann@2834
   171
	           -e 's,@@CT_LIBDIR@@,$(libdir),g;'        \
yann@2834
   172
	           -e 's,@@CT_DOCDIR@@,$(docdir),g;'        \
yann@2834
   173
	           -e 's,@@CT_MANDIR@@,$(mandir),g;'        \
yann@2621
   174
	           -e 's,@@CT_PROG_NAME@@,$(PROG_NAME),g;'  \
yann@2621
   175
	           -e 's,@@CT_VERSION@@,$(VERSION),g;'	    \
yann@2621
   176
	           -e 's,@@CT_DATE@@,$(DATE),g;'            \
yann@2621
   177
	           -e 's,@@CT_make@@,$(make),g;'            \
yann@2621
   178
	           -e 's,@@CT_bash@@,$(bash),g;'            \
yann@2621
   179
	           $< >$@
yann@2621
   180
endef
yann@2621
   181
yann@2622
   182
docs/$(PROG_NAME).1: docs/ct-ng.1.in Makefile
yann@2622
   183
	$(call sed_it)
yann@2622
   184
yann@2623
   185
$(PROG_NAME): ct-ng.in Makefile
yann@2621
   186
	$(call sed_it)
yann@2621
   187
yann@470
   188
%: %.in Makefile
yann@2621
   189
	$(call sed_it)
yann@1153
   190
yann@1153
   191
# We create a script fragment that is parseable from inside a Makefile,
yann@1153
   192
# but also from inside a shell script, hence the reason why we don't
fr@1643
   193
# use := to set variables, although that will incur a (very small)
yann@1153
   194
# penalty from the Makefile that includes it (due to re-evaluation at
yann@1153
   195
# each call).
yann@2481
   196
paths.mk: FORCE
yann@1153
   197
	@echo "  GEN    '$@'"
yann@1153
   198
	@(echo "export install=$(install)"; \
yann@1153
   199
	  echo "export bash=$(bash)";       \
yann@1153
   200
	  echo "export grep=$(grep)";       \
yann@1153
   201
	  echo "export make=$(make)";       \
yann@1153
   202
	  echo "export sed=$(sed)";         \
titus@1962
   203
	  echo "export libtool=$(libtool)"; \
titus@2626
   204
	  echo "export libtoolize=$(libtoolize)"; \
titus@1962
   205
	  echo "export objcopy=$(objcopy)"; \
titus@1962
   206
	  echo "export objdump=$(objdump)"; \
titus@1962
   207
	  echo "export readelf=$(readelf)"; \
titus@1962
   208
	  echo "export patch=$(patch)";     \
yann@1153
   209
	 ) >paths.mk
yann@182
   210
yann@2481
   211
config/configure.in: FORCE
yann@2481
   212
	@echo "  GEN    '$@'"
yann@2481
   213
	@{  printf "# Generated file, do not edit\n";            \
yann@2481
   214
	    printf "# Default values as found by ./configure\n"; \
yann@2481
   215
	    for var in $(KCONFIG); do                            \
yann@2481
   216
	        printf "\n";                                     \
yann@2481
   217
	        printf "config CONFIGURE_$${var%%=*}\n";         \
yann@2481
   218
	        if [ "$${var#*=}" = "y" ]; then                  \
yann@2631
   219
	            printf "    def_bool y\n";                   \
yann@2631
   220
	        else                                             \
yann@2631
   221
	            printf "    bool\n";                         \
yann@2481
   222
	        fi;                                              \
yann@2481
   223
	    done;                                                \
yann@2481
   224
	 } >$@
yann@2481
   225
yann@2481
   226
FORCE:
yann@2481
   227
yann@182
   228
#--------------------------------------
yann@182
   229
# Clean rules
yann@182
   230
yann@182
   231
clean-bin:
yann@2620
   232
	@echo "  RM     '$(PROG_NAME)'"
yann@2620
   233
	@rm -f $(PROG_NAME)
yann@1339
   234
	@echo "  RM     'scripts/crosstool-NG.sh'"
yann@1158
   235
	@rm -f scripts/crosstool-NG.sh
yann@1339
   236
	@echo "  RM     'scripts/saveSample.sh'"
yann@1186
   237
	@rm -f scripts/saveSample.sh
yann@1339
   238
	@echo "  RM     'scripts/showTuple.sh'"
yann@1336
   239
	@rm -f scripts/showTuple.sh
yann@182
   240
yann@182
   241
clean-lib:
yann@1154
   242
	@echo "  RM     'paths.mk'"
yann@1154
   243
	@rm -f paths.mk
yann@2481
   244
	@echo "  RM     'config/configure.in'"
yann@2481
   245
	@rm -f config/configure.in
yann@182
   246
yann@2835
   247
clean-lib-kconfig:
yann@2835
   248
	@$(MAKE) -C kconfig clean
yann@2835
   249
yann@182
   250
clean-doc:
yann@555
   251
yann@555
   252
clean-man:
yann@2620
   253
	@echo "  RM     'docs/$(PROG_NAME).1'"
yann@2620
   254
	@rm -f docs/$(PROG_NAME).1
yann@2620
   255
	@echo "  RM     'docs/$(PROG_NAME).1.gz'"
yann@2620
   256
	@rm -f docs/$(PROG_NAME).1.gz
yann@182
   257
yann@182
   258
#--------------------------------------
yann@554
   259
# Check for --local setup
yann@182
   260
yann@2834
   261
ifeq ($(strip $(LOCAL)),yes)
yann@1048
   262
yann@1101
   263
real-install:
yann@1297
   264
	@true
yann@1048
   265
yann@1048
   266
real-uninstall:
yann@1048
   267
	@true
yann@1048
   268
yann@1048
   269
else
yann@285
   270
yann@554
   271
#--------------------------------------
yann@554
   272
# Install rules
yann@554
   273
yann@1876
   274
real-install: $(patsubst %,install-%,$(TARGETS)) install-post
yann@1048
   275
yann@2834
   276
install-bin: $(DESTDIR)$(bindir)
yann@2620
   277
	@echo "  INST    '$(PROG_NAME)'"
yann@2834
   278
	@$(install) -m 755 $(PROG_NAME) "$(DESTDIR)$(bindir)/$(PROG_NAME)"
yann@182
   279
yann@555
   280
# If one is hacking crosstool-NG, the patch set might change between any two
yann@555
   281
# installations of the same VERSION, thus the patches must be removed prior
yann@555
   282
# to being installed. It is simpler to remove the whole lib/ directory, as it
yann@555
   283
# is the goal of the install-lib rule to install the lib/ directory...
yann@2835
   284
install-lib: uninstall-lib          \
yann@2835
   285
             $(DESTDIR)$(libdir)    \
yann@2835
   286
             install-lib-main       \
yann@2835
   287
             install-lib-samples
yann@182
   288
yann@2835
   289
LIB_SUB_DIR := config contrib patches scripts
yann@2834
   290
$(patsubst %,install-lib-%-copy,$(LIB_SUB_DIR)): $(DESTDIR)$(libdir)
yann@1994
   291
	@echo "  INSTDIR '$(patsubst install-lib-%-copy,%,$(@))/'"
yann@1994
   292
	@tar cf - --exclude='*.sh.in' $(patsubst install-lib-%-copy,%,$(@)) \
yann@2834
   293
	 |(cd "$(DESTDIR)$(libdir)"; tar xf -)
yann@1994
   294
yann@1994
   295
# Huh? It seems we need at least one command to make this rule kick-in.
yann@1994
   296
install-lib-%: install-lib-%-copy; @true
yann@1994
   297
yann@1994
   298
# Huh? that one does not inherit the -opy dependency, above...
yann@1994
   299
install-lib-scripts: install-lib-scripts-copy
yann@2834
   300
	@chmod a+x $(DESTDIR)$(libdir)/scripts/crosstool-NG.sh
yann@2834
   301
	@chmod a+x $(DESTDIR)$(libdir)/scripts/saveSample.sh
yann@2834
   302
	@rm -f "$(DESTDIR)$(libdir)/scripts/addToolVersion.sh"
yann@1994
   303
yann@2834
   304
install-lib-main: $(DESTDIR)$(libdir) $(patsubst %,install-lib-%,$(LIB_SUB_DIR))
yann@1994
   305
	@echo "  INST    'steps.mk'"
yann@2834
   306
	@$(install) -m 644 steps.mk "$(DESTDIR)$(libdir)/steps.mk"
yann@1994
   307
	@echo "  INST    'paths.mk'"
yann@2834
   308
	@$(install) -m 644 paths.mk "$(DESTDIR)$(libdir)/paths.mk"
yann@182
   309
yann@182
   310
# Samples need a little love:
yann@425
   311
#  - change every occurrence of CT_TOP_DIR to CT_LIB_DIR
yann@2834
   312
install-lib-samples: $(DESTDIR)$(libdir) install-lib-main
yann@1994
   313
	@echo "  INSTDIR 'samples/'"
yann@2577
   314
	@for samp_dir in samples/*/; do                                         \
yann@2834
   315
	     mkdir -p "$(DESTDIR)$(libdir)/$${samp_dir}";                       \
yann@2422
   316
	     $(sed) -r -e 's:\$$\{CT_TOP_DIR\}:\$$\{CT_LIB_DIR\}:;'             \
yann@2422
   317
	               -e 's:^(CT_WORK_DIR)=.*:\1="\$${CT_TOP_DIR}/.build":;'   \
yann@2577
   318
	            $${samp_dir}/crosstool.config                               \
yann@2834
   319
	            >"$(DESTDIR)$(libdir)/$${samp_dir}/crosstool.config";       \
yann@2577
   320
	     $(install) -m 644 "$${samp_dir}/reported.by"                       \
yann@2834
   321
	                       "$(DESTDIR)$(libdir)/$${samp_dir}";              \
yann@2577
   322
	     for libc_cfg in "$${samp_dir}/"*libc*.config; do                   \
yann@2577
   323
	         [ -f "$${libc_cfg}" ] || continue;                             \
yann@2577
   324
	         $(install) -m 644 "$${libc_cfg}"                               \
yann@2834
   325
	                           "$(DESTDIR)$(libdir)/$${samp_dir}";          \
yann@2577
   326
	     done;                                                              \
yann@182
   327
	 done
yann@2834
   328
	@$(install) -m 644 samples/samples.mk "$(DESTDIR)$(libdir)/samples/samples.mk"
yann@182
   329
yann@2835
   330
KCONFIG_FILES := conf mconf nconf kconfig.mk
yann@2835
   331
install-lib-kconfig: $(DESTDIR)$(libdir) install-lib-main
yann@2835
   332
	@echo "  INST    'kconfig/'"
yann@2835
   333
	@for f in $(KCONFIG_FILES); do                                      \
yann@2835
   334
	    install -D "kconfig/$${f}" "$(DESTDIR)$(libdir)/kconfig/$${f}"; \
yann@2835
   335
	 done
yann@2835
   336
yann@2834
   337
install-doc: $(DESTDIR)$(docdir)
yann@2076
   338
	@echo "  INST    'docs/*.txt'"
yann@2076
   339
	@for doc_file in docs/*.txt; do                              \
yann@2834
   340
	     $(install) -m 644 "$${doc_file}" "$(DESTDIR)$(docdir)"; \
yann@182
   341
	 done
yann@249
   342
yann@2834
   343
install-man: $(DESTDIR)$(mandir)$(MAN_SUBDIR)
yann@2620
   344
	@echo "  INST    '$(PROG_NAME).1.gz'"
yann@2834
   345
	@$(install) -m 644 docs/$(PROG_NAME).1.gz "$(DESTDIR)$(mandir)$(MAN_SUBDIR)"
yann@182
   346
yann@2834
   347
$(sort $(DESTDIR)$(bindir) $(DESTDIR)$(libdir) $(DESTDIR)$(docdir) $(DESTDIR)$(mandir)$(MAN_SUBDIR)):
yann@1994
   348
	@echo "  MKDIR   '$@/'"
yann@1153
   349
	@$(install) -m 755 -d "$@"
yann@182
   350
yann@1876
   351
install-post:
yann@1876
   352
	@echo
yann@2620
   353
	@echo "For auto-completion, do not forget to install '$(PROG_NAME).comp' into"
yann@1994
   354
	@echo "your bash completion directory (usually /etc/bash_completion.d)"
yann@182
   355
yann@182
   356
#--------------------------------------
yann@182
   357
# Uninstall rules
yann@182
   358
yann@1048
   359
real-uninstall: $(patsubst %,uninstall-%,$(TARGETS))
yann@1048
   360
yann@554
   361
uninstall-bin:
yann@2834
   362
	@echo "  RM      '$(DESTDIR)$(bindir)/$(PROG_NAME)'"
yann@2834
   363
	@rm -f "$(DESTDIR)$(bindir)/$(PROG_NAME)"
yann@182
   364
yann@554
   365
uninstall-lib:
yann@2834
   366
	@echo "  RMDIR   '$(DESTDIR)$(libdir)/'"
yann@2834
   367
	@rm -rf "$(DESTDIR)$(libdir)"
yann@298
   368
yann@554
   369
uninstall-doc:
yann@2834
   370
	@echo "  RMDIR   '$(DESTDIR)$(docdir)/'"
yann@2834
   371
	@rm -rf "$(DESTDIR)$(docdir)"
yann@554
   372
yann@554
   373
uninstall-man:
yann@2834
   374
	@echo "  RM      '$(DESTDIR)$(mandir)$(MAN_SUBDIR)/$(PROG_NAME).1.gz'"
yann@2834
   375
	@rm -f "$(DESTDIR)$(mandir)$(MAN_SUBDIR)/$(PROG_NAME).1"{,.gz}
yann@1048
   376
yann@1048
   377
endif # Not --local
yann@1156
   378
yann@1156
   379
endif # No extra MAKEFLAGS were added
michael@2694
   380
michael@2694
   381
.PHONY: build $(patsubst %,build-%,$(TARGETS)) install