yann@197: # Makefile.in for building crosstool-NG yann@182: # This file serves as source for the ./configure operation yann@182: yann@554: MAKEFLAGS += --no-print-directory --no-builtin-rules yann@554: yann@382: all: Makefile build yann@382: yann@382: # Check if Makefile is up to date: yann@382: Makefile: Makefile.in yann@382: @echo "$< did changed: you must re-run './configure'" yann@382: @false yann@182: yann@182: ############################################################################### yann@182: # Configuration variables yann@182: yann@182: VERSION:= @@VERSION@@ yann@182: BINDIR := @@BINDIR@@ yann@185: LIBDIR := @@LIBDIR@@ yann@185: DOCDIR := @@DOCDIR@@ yann@185: MANDIR := @@MANDIR@@ yann@182: DATE := @@DATE@@ yann@285: LOCAL := @@LOCAL@@ yann@285: MAKE := $(shell which $(MAKE) || type -p $(MAKE) || echo /usr/bin/make) yann@182: yann@182: ############################################################################### yann@182: # Global make rules yann@182: yann@555: TARGETS := bin lib doc man yann@182: yann@555: build: $(patsubst %,build-%,$(TARGETS)) yann@182: yann@555: install: local-test build $(patsubst %,install-%,$(TARGETS)) yann@555: yann@555: clean: $(patsubst %,clean-%,$(TARGETS)) yann@182: yann@182: distclean: clean yann@554: @echo " RM 'Makefile'" yann@182: @rm -f Makefile yann@182: yann@555: uninstall: local-test $(patsubst %,uninstall-%,$(TARGETS)) yann@182: yann@182: ############################################################################### yann@182: # Specific make rules yann@182: yann@182: #-------------------------------------- yann@182: # Build rules yann@182: yann@182: build-bin: ct-ng yann@554: @echo " CHMOD '$<'" yann@318: @chmod a+x $< yann@182: yann@182: build-lib: yann@182: yann@555: build-doc: yann@555: yann@309: build-man: docs/ct-ng.1.gz yann@309: yann@309: docs/ct-ng.1.gz: docs/ct-ng.1 yann@554: @echo " GZIP '$@'" yann@317: @gzip -c9 $< >$@ yann@182: yann@470: %: %.in Makefile yann@554: @echo " SED '$@'" yann@182: @sed -r -e 's,@@CT_MAKE@@,$(MAKE),g;' \ yann@182: -e 's,@@CT_BINDIR@@,$(BINDIR),g;' \ yann@182: -e 's,@@CT_LIBDIR@@,$(LIBDIR),g;' \ yann@182: -e 's,@@CT_DOCDIR@@,$(DOCDIR),g;' \ yann@182: -e 's,@@CT_MANDIR@@,$(MANDIR),g;' \ yann@182: -e 's,@@CT_VERSION@@,$(VERSION),g;' \ yann@182: -e 's,@@CT_DATE@@,$(DATE),g;' \ yann@182: $@.in >$@ yann@182: yann@182: #-------------------------------------- yann@182: # Clean rules yann@182: yann@182: clean-bin: yann@554: @echo " RM 'ct-ng'" yann@182: @rm -f ct-ng yann@182: yann@182: clean-lib: yann@182: yann@182: clean-doc: yann@555: yann@555: clean-man: yann@554: @echo " RM 'docs/ct-ng.1'" yann@318: @rm -f docs/ct-ng.1 yann@554: @echo " RM 'docs/ct-ng.1.gz'" yann@318: @rm -f docs/ct-ng.1.gz yann@182: yann@182: #-------------------------------------- yann@554: # Check for --local setup yann@182: yann@425: # If using locally, don't install yann@554: local-test: yann@296: @if [ "$(LOCAL)" = "1" ]; then \ yann@296: echo "You're using local copy as runtime. You can't (un)install."; \ yann@296: false; \ yann@285: fi yann@285: yann@554: #-------------------------------------- yann@554: # Install rules yann@554: yann@553: install-bin: $(BINDIR) yann@554: @echo " INST 'ct-ng'" yann@554: @install -m 755 ct-ng "$(BINDIR)/ct-ng" yann@182: yann@555: # If one is hacking crosstool-NG, the patch set might change between any two yann@555: # installations of the same VERSION, thus the patches must be removed prior yann@555: # to being installed. It is simpler to remove the whole lib/ directory, as it yann@555: # is the goal of the install-lib rule to install the lib/ directory... yann@553: install-lib: uninstall-lib $(LIBDIR) install-lib-main install-lib-samples yann@182: yann@553: install-lib-main: $(LIBDIR) yann@554: @for src_dir in arch config kconfig patches scripts tools; do \ yann@554: echo " INST '$${src_dir}/'"; \ yann@554: tar cf - --exclude=.svn $${src_dir} |(cd "$(LIBDIR)"; tar xf -); \ yann@182: done yann@554: @rm -f "$(LIBDIR)/tools/addToolVersion.sh" yann@554: @echo " INST 'steps.mk'" yann@554: @install -m 644 steps.mk "$(LIBDIR)/steps.mk" yann@182: yann@182: # Samples need a little love: yann@425: # - change every occurrence of CT_TOP_DIR to CT_LIB_DIR yann@553: install-lib-samples: $(LIBDIR) install-lib-main yann@554: @echo " INST 'samples/'" yann@554: @tar cf - --exclude=.svn samples |(cd "$(LIBDIR)"; tar xf -) yann@632: @for samp_file in "$(LIBDIR)/samples/"*"/crosstool.config"; do \ yann@632: sed -r -i -e 's,\$$\{CT_TOP_DIR\},\$$\{CT_LIB_DIR\},g;' $${samp_file}; \ yann@632: sed -r -i -e 's,^(CT_WORK_DIR)=.*,\1="\$${CT_TOP_DIR}/targets",;' $${samp_file}; \ yann@182: done yann@182: yann@553: install-doc: $(DOCDIR) yann@554: @for doc_file in docs/CREDITS docs/overview.txt; do \ yann@554: echo " INST '$${doc_file}'"; \ yann@554: install -m 644 "$${doc_file}" "$(DOCDIR)"; \ yann@182: done yann@249: yann@553: install-man: $(MANDIR) yann@554: @echo " INST 'ct-ng.1.gz'" yann@554: @install -m 644 docs/ct-ng.1.gz "$(MANDIR)" yann@182: yann@556: $(sort $(BINDIR) $(LIBDIR) $(DOCDIR) $(MANDIR)): yann@554: @echo " MKDIR '$@'" yann@554: @install -m 755 -d "$@" yann@182: yann@182: yann@182: #-------------------------------------- yann@182: # Uninstall rules yann@182: yann@554: uninstall-bin: yann@555: @echo " RM '$(BINDIR)/ct-ng'" yann@554: @rm -f "$(BINDIR)/ct-ng" yann@182: yann@554: uninstall-lib: yann@556: @echo " RMDIR '$(LIBDIR)/'" yann@554: @rm -rf "$(LIBDIR)" yann@298: yann@554: uninstall-doc: yann@556: @echo " RMDIR '$(DOCDIR)/'" yann@554: @rm -rf "$(DOCDIR)" yann@554: yann@554: uninstall-man: yann@555: @echo " RM '$(MANDIR)/ct-ng.1.gz'" yann@554: @rm -f "$(MANDIR)/ct-ng.1"{,.gz}