Makefile.in
author Arnaud Lacombe <lacombar@gmail.com>
Tue Aug 03 06:17:51 2010 +0200 (2010-08-03)
changeset 2064 f5ebe8c429dc
parent 1994 a760d9cf03e0
child 2076 b58109b7b321
permissions -rw-r--r--
libc/uClibc: add uClibc 0.9.30.3

This version has been released a couple of month ago, but it never reached
crosstool-ng tree. This may be linked to the fact that the current 0.9.30.2,
once patched, has nothing much different from 0.9.30.3, released.

I'm not including any patch with this upgrade, on purpose.

Signed-off-by: Arnaud Lacombe <lacombar@gmail.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@182
    41
VERSION:= @@VERSION@@
yann@182
    42
BINDIR := @@BINDIR@@
yann@185
    43
LIBDIR := @@LIBDIR@@
yann@185
    44
DOCDIR := @@DOCDIR@@
yann@185
    45
MANDIR := @@MANDIR@@
yann@182
    46
DATE   := @@DATE@@
yann@285
    47
LOCAL  := @@LOCAL@@
yann@1141
    48
yann@1141
    49
# Paths found by ./configure
yann@1153
    50
install:= @@install@@
yann@1153
    51
bash   := @@bash@@
yann@1153
    52
grep   := @@grep@@
yann@1153
    53
make   := @@make@@
yann@1153
    54
sed    := @@sed@@
titus@1962
    55
libtool:= @@libtool@@
titus@1962
    56
objcopy:= @@objcopy@@
titus@1962
    57
objdump:= @@objdump@@
titus@1962
    58
readelf:= @@readelf@@
titus@1962
    59
patch  := @@patch@@
yann@1109
    60
yann@1109
    61
###############################################################################
yann@2026
    62
# Non-configure variables
yann@2026
    63
MAN_SECTION := 1
yann@2026
    64
MAN_SUBDIR := /man$(MAN_SECTION)
yann@2026
    65
yann@2026
    66
###############################################################################
yann@1109
    67
# Sanity checks
yann@1109
    68
yann@1109
    69
# Check if Makefile is up to date:
yann@1109
    70
Makefile: Makefile.in
yann@1109
    71
	@echo "$< did changed: you must re-run './configure'"
yann@1109
    72
	@false
yann@1109
    73
yann@1109
    74
# If installing with DESTDIR, check it's an absolute path
yann@1109
    75
ifneq ($(strip $(DESTDIR)),)
yann@1109
    76
  ifneq ($(DESTDIR),$(abspath /$(DESTDIR)))
yann@1109
    77
    $(error DESTDIR is not an absolute PATH: '$(DESTDIR)')
yann@1109
    78
  endif
yann@1109
    79
endif
yann@182
    80
yann@182
    81
###############################################################################
yann@182
    82
# Global make rules
yann@182
    83
yann@1156
    84
# If any extra MAKEFLAGS were added, re-run ourselves
yann@1156
    85
# See top of file for an explanation of why this is needed...
yann@1156
    86
ifneq ($(strip $(CT_MAKEFLAGS)),)
yann@1156
    87
yann@1156
    88
MAKEFLAGS += $(CT_MAKEFLAGS)
yann@1156
    89
build install clean distclean uninstall:
yann@1156
    90
	@$(MAKE) $@
yann@1156
    91
yann@1156
    92
else
yann@1156
    93
# There were no additional MAKEFLAGS to add, do the job
yann@1156
    94
yann@555
    95
TARGETS := bin lib doc man
yann@182
    96
yann@555
    97
build: $(patsubst %,build-%,$(TARGETS))
yann@182
    98
yann@1101
    99
install: build real-install
yann@555
   100
yann@555
   101
clean: $(patsubst %,clean-%,$(TARGETS))
yann@182
   102
yann@182
   103
distclean: clean
yann@554
   104
	@echo "  RM     'Makefile'"
yann@182
   105
	@rm -f Makefile
yann@182
   106
yann@1048
   107
uninstall: real-uninstall
yann@182
   108
yann@182
   109
###############################################################################
yann@182
   110
# Specific make rules
yann@182
   111
yann@182
   112
#--------------------------------------
yann@182
   113
# Build rules
yann@182
   114
yann@1336
   115
build-bin: ct-ng scripts/crosstool-NG.sh scripts/saveSample.sh scripts/showTuple.sh
yann@1297
   116
	@chmod 755 $^
yann@182
   117
yann@1153
   118
build-lib: paths.mk
yann@182
   119
yann@555
   120
build-doc:
yann@555
   121
yann@309
   122
build-man: docs/ct-ng.1.gz
yann@309
   123
yann@309
   124
docs/ct-ng.1.gz: docs/ct-ng.1
yann@554
   125
	@echo "  GZIP   '$@'"
yann@317
   126
	@gzip -c9 $< >$@
yann@182
   127
yann@470
   128
%: %.in Makefile
yann@554
   129
	@echo "  SED    '$@'"
yann@1153
   130
	@$(sed) -r -e 's,@@CT_BINDIR@@,$(BINDIR),g;'    \
yann@1153
   131
	           -e 's,@@CT_LIBDIR@@,$(LIBDIR),g;'    \
yann@1153
   132
	           -e 's,@@CT_DOCDIR@@,$(DOCDIR),g;'    \
yann@1153
   133
	           -e 's,@@CT_MANDIR@@,$(MANDIR),g;'    \
yann@1153
   134
	           -e 's,@@CT_VERSION@@,$(VERSION),g;'	\
yann@1153
   135
	           -e 's,@@CT_DATE@@,$(DATE),g;'        \
yann@1153
   136
	           -e 's,@@CT_make@@,$(make),g;'        \
yann@1156
   137
	           -e 's,@@CT_bash@@,$(bash),g;'        \
yann@1153
   138
	           $@.in >$@
yann@1153
   139
yann@1153
   140
# We create a script fragment that is parseable from inside a Makefile,
yann@1153
   141
# but also from inside a shell script, hence the reason why we don't
fr@1643
   142
# use := to set variables, although that will incur a (very small)
yann@1153
   143
# penalty from the Makefile that includes it (due to re-evaluation at
yann@1153
   144
# each call).
yann@1153
   145
paths.mk:
yann@1153
   146
	@echo "  GEN    '$@'"
yann@1153
   147
	@(echo "export install=$(install)"; \
yann@1153
   148
	  echo "export bash=$(bash)";       \
yann@1153
   149
	  echo "export grep=$(grep)";       \
yann@1153
   150
	  echo "export make=$(make)";       \
yann@1153
   151
	  echo "export sed=$(sed)";         \
titus@1962
   152
	  echo "export libtool=$(libtool)"; \
titus@1962
   153
	  echo "export objcopy=$(objcopy)"; \
titus@1962
   154
	  echo "export objdump=$(objdump)"; \
titus@1962
   155
	  echo "export readelf=$(readelf)"; \
titus@1962
   156
	  echo "export patch=$(patch)";     \
yann@1153
   157
	 ) >paths.mk
yann@182
   158
yann@182
   159
#--------------------------------------
yann@182
   160
# Clean rules
yann@182
   161
yann@182
   162
clean-bin:
yann@554
   163
	@echo "  RM     'ct-ng'"
yann@182
   164
	@rm -f ct-ng
yann@1339
   165
	@echo "  RM     'scripts/crosstool-NG.sh'"
yann@1158
   166
	@rm -f scripts/crosstool-NG.sh
yann@1339
   167
	@echo "  RM     'scripts/saveSample.sh'"
yann@1186
   168
	@rm -f scripts/saveSample.sh
yann@1339
   169
	@echo "  RM     'scripts/showTuple.sh'"
yann@1336
   170
	@rm -f scripts/showTuple.sh
yann@182
   171
yann@182
   172
clean-lib:
yann@1154
   173
	@echo "  RM     'paths.mk'"
yann@1154
   174
	@rm -f paths.mk
yann@182
   175
yann@182
   176
clean-doc:
yann@555
   177
yann@555
   178
clean-man:
yann@554
   179
	@echo "  RM     'docs/ct-ng.1'"
yann@318
   180
	@rm -f docs/ct-ng.1
yann@554
   181
	@echo "  RM     'docs/ct-ng.1.gz'"
yann@318
   182
	@rm -f docs/ct-ng.1.gz
yann@182
   183
yann@182
   184
#--------------------------------------
yann@554
   185
# Check for --local setup
yann@182
   186
yann@1297
   187
ifeq ($(strip $(LOCAL)),y)
yann@1048
   188
yann@1101
   189
real-install:
yann@1297
   190
	@true
yann@1048
   191
yann@1048
   192
real-uninstall:
yann@1048
   193
	@true
yann@1048
   194
yann@1048
   195
else
yann@285
   196
yann@554
   197
#--------------------------------------
yann@554
   198
# Install rules
yann@554
   199
yann@1876
   200
real-install: $(patsubst %,install-%,$(TARGETS)) install-post
yann@1048
   201
yann@1047
   202
install-bin: $(DESTDIR)$(BINDIR)
yann@1994
   203
	@echo "  INST    'ct-ng'"
yann@1153
   204
	@$(install) -m 755 ct-ng "$(DESTDIR)$(BINDIR)/ct-ng"
yann@182
   205
yann@555
   206
# If one is hacking crosstool-NG, the patch set might change between any two
yann@555
   207
# installations of the same VERSION, thus the patches must be removed prior
yann@555
   208
# to being installed. It is simpler to remove the whole lib/ directory, as it
yann@555
   209
# is the goal of the install-lib rule to install the lib/ directory...
yann@1047
   210
install-lib: uninstall-lib $(DESTDIR)$(LIBDIR) install-lib-main install-lib-samples
yann@182
   211
yann@1994
   212
LIB_SUB_DIR := config contrib kconfig patches scripts
yann@1994
   213
$(patsubst %,install-lib-%-copy,$(LIB_SUB_DIR)): $(DESTDIR)$(LIBDIR)
yann@1994
   214
	@echo "  INSTDIR '$(patsubst install-lib-%-copy,%,$(@))/'"
yann@1994
   215
	@tar cf - --exclude='*.sh.in' $(patsubst install-lib-%-copy,%,$(@)) \
yann@1994
   216
	 |(cd "$(DESTDIR)$(LIBDIR)"; tar xf -)
yann@1994
   217
yann@1994
   218
# Huh? It seems we need at least one command to make this rule kick-in.
yann@1994
   219
install-lib-%: install-lib-%-copy; @true
yann@1994
   220
yann@1994
   221
# Huh? that one does not inherit the -opy dependency, above...
yann@1994
   222
install-lib-scripts: install-lib-scripts-copy
yann@1184
   223
	@chmod a+x $(DESTDIR)$(LIBDIR)/scripts/crosstool-NG.sh
yann@1186
   224
	@chmod a+x $(DESTDIR)$(LIBDIR)/scripts/saveSample.sh
yann@1101
   225
	@rm -f "$(DESTDIR)$(LIBDIR)/scripts/addToolVersion.sh"
yann@1994
   226
yann@1994
   227
install-lib-main: $(DESTDIR)$(LIBDIR) $(patsubst %,install-lib-%,$(LIB_SUB_DIR))
yann@1994
   228
	@echo "  INST    'steps.mk'"
yann@1153
   229
	@$(install) -m 644 steps.mk "$(DESTDIR)$(LIBDIR)/steps.mk"
yann@1994
   230
	@echo "  INST    'paths.mk'"
yann@1153
   231
	@$(install) -m 644 paths.mk "$(DESTDIR)$(LIBDIR)/paths.mk"
yann@182
   232
yann@182
   233
# Samples need a little love:
yann@425
   234
#  - change every occurrence of CT_TOP_DIR to CT_LIB_DIR
yann@1047
   235
install-lib-samples: $(DESTDIR)$(LIBDIR) install-lib-main
yann@1994
   236
	@echo "  INSTDIR 'samples/'"
yann@1576
   237
	@tar cf - samples |(cd "$(DESTDIR)$(LIBDIR)"; tar xf -)
yann@1141
   238
	@for samp_file in "$(DESTDIR)$(LIBDIR)/samples/"*"/crosstool.config"; do                    \
yann@1153
   239
	     $(sed) -r -i -e 's,\$$\{CT_TOP_DIR\},\$$\{CT_LIB_DIR\},g;' $${samp_file};           \
yann@1153
   240
	     $(sed) -r -i -e 's,^(CT_WORK_DIR)=.*,\1="\$${CT_TOP_DIR}/targets",;' $${samp_file}; \
yann@182
   241
	 done
yann@182
   242
yann@1047
   243
install-doc: $(DESTDIR)$(DOCDIR)
yann@1141
   244
	@for doc_file in docs/CREDITS docs/overview.txt; do             \
yann@1994
   245
	     echo "  INST    '$${doc_file}'";                           \
yann@1153
   246
	     $(install) -m 644 "$${doc_file}" "$(DESTDIR)$(DOCDIR)"; \
yann@182
   247
	 done
yann@249
   248
yann@2026
   249
install-man: $(DESTDIR)$(MANDIR)$(MAN_SUBDIR)
yann@1994
   250
	@echo "  INST    'ct-ng.1.gz'"
yann@2026
   251
	@$(install) -m 644 docs/ct-ng.1.gz "$(DESTDIR)$(MANDIR)$(MAN_SUBDIR)"
yann@182
   252
yann@2026
   253
$(sort $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(DOCDIR) $(DESTDIR)$(MANDIR)$(MAN_SUBDIR)):
yann@1994
   254
	@echo "  MKDIR   '$@/'"
yann@1153
   255
	@$(install) -m 755 -d "$@"
yann@182
   256
yann@1876
   257
install-post:
yann@1876
   258
	@echo
yann@1994
   259
	@echo "For auto-completion, do not forget to install 'ct-ng.comp' into"
yann@1994
   260
	@echo "your bash completion directory (usually /etc/bash_completion.d)"
yann@182
   261
yann@182
   262
#--------------------------------------
yann@182
   263
# Uninstall rules
yann@182
   264
yann@1048
   265
real-uninstall: $(patsubst %,uninstall-%,$(TARGETS))
yann@1048
   266
yann@554
   267
uninstall-bin:
yann@1994
   268
	@echo "  RM      '$(DESTDIR)$(BINDIR)/ct-ng'"
yann@1047
   269
	@rm -f "$(DESTDIR)$(BINDIR)/ct-ng"
yann@182
   270
yann@554
   271
uninstall-lib:
yann@1994
   272
	@echo "  RMDIR   '$(DESTDIR)$(LIBDIR)/'"
yann@1047
   273
	@rm -rf "$(DESTDIR)$(LIBDIR)"
yann@298
   274
yann@554
   275
uninstall-doc:
yann@1994
   276
	@echo "  RMDIR   '$(DESTDIR)$(DOCDIR)/'"
yann@1047
   277
	@rm -rf "$(DESTDIR)$(DOCDIR)"
yann@554
   278
yann@554
   279
uninstall-man:
yann@1994
   280
	@echo "  RM      '$(DESTDIR)$(MANDIR)/ct-ng.1.gz'"
yann@1047
   281
	@rm -f "$(DESTDIR)$(MANDIR)/ct-ng.1"{,.gz}
yann@1048
   282
yann@1048
   283
endif # Not --local
yann@1156
   284
yann@1156
   285
endif # No extra MAKEFLAGS were added