Makefile.in
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Wed Oct 02 20:06:18 2013 +0200 (2013-10-02)
branch1.19
changeset 3238 d39abd309eb7
parent 3223 58ca31386bfb
permissions -rw-r--r--
1.19: update version to 1.19.0+hg

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