# Makefile.in for building crosstool-NG # This file serves as source for the ./configure operation MAKEFLAGS += --no-print-directory --no-builtin-rules all: Makefile build ############################################################################### # Configuration variables VERSION:= @@VERSION@@ BINDIR := @@BINDIR@@ LIBDIR := @@LIBDIR@@ DOCDIR := @@DOCDIR@@ MANDIR := @@MANDIR@@ DATE := @@DATE@@ LOCAL := @@LOCAL@@ # Paths found by ./configure CT_install:=@@install@@ CT_make :=@@make@@ CT_bash :=@@bash@@ CT_grep :=@@grep@@ CT_awk :=@@awk@@ CT_sed :=@@sed@@ ############################################################################### # Sanity checks # Check if Makefile is up to date: Makefile: Makefile.in @echo "$< did changed: you must re-run './configure'" @false # If installing with DESTDIR, check it's an absolute path ifneq ($(strip $(DESTDIR)),) ifneq ($(DESTDIR),$(abspath /$(DESTDIR))) $(error DESTDIR is not an absolute PATH: '$(DESTDIR)') endif endif ############################################################################### # Global make rules TARGETS := bin lib doc man build: $(patsubst %,build-%,$(TARGETS)) install: build real-install clean: $(patsubst %,clean-%,$(TARGETS)) distclean: clean @echo " RM 'Makefile'" @rm -f Makefile uninstall: real-uninstall ############################################################################### # Specific make rules #-------------------------------------- # Build rules build-bin: ct-ng build-lib: build-doc: build-man: docs/ct-ng.1.gz docs/ct-ng.1.gz: docs/ct-ng.1 @echo " GZIP '$@'" @gzip -c9 $< >$@ %: %.in Makefile @echo " SED '$@'" @$(CT_sed) -r -e 's,@@CT_BINDIR@@,$(BINDIR),g;' \ -e 's,@@CT_LIBDIR@@,$(LIBDIR),g;' \ -e 's,@@CT_DOCDIR@@,$(DOCDIR),g;' \ -e 's,@@CT_MANDIR@@,$(MANDIR),g;' \ -e 's,@@CT_VERSION@@,$(VERSION),g;' \ -e 's,@@CT_DATE@@,$(DATE),g;' \ -e 's,@@CT_install@@,$(CT_install),g;' \ -e 's,@@CT_make@@,$(CT_make),g;' \ -e 's,@@CT_bash@@,$(CT_bash),g;' \ -e 's,@@CT_grep@@,$(CT_grep),g;' \ -e 's,@@CT_awk@@,$(CT_awk),g;' \ -e 's,@@CT_sed@@,$(CT_sed),g;' \ $@.in >$@ #-------------------------------------- # Clean rules clean-bin: @echo " RM 'ct-ng'" @rm -f ct-ng clean-lib: clean-doc: clean-man: @echo " RM 'docs/ct-ng.1'" @rm -f docs/ct-ng.1 @echo " RM 'docs/ct-ng.1.gz'" @rm -f docs/ct-ng.1.gz #-------------------------------------- # Check for --local setup ifeq ($(strip $(LOCAL)),1) real-install: @echo " CHMOD 'ct-ng'" @chmod a+x ct-ng real-uninstall: @true else #-------------------------------------- # Install rules real-install: $(patsubst %,install-%,$(TARGETS)) install-bin: $(DESTDIR)$(BINDIR) @echo " INST 'ct-ng'" @$(CT_install) -m 755 ct-ng "$(DESTDIR)$(BINDIR)/ct-ng" # If one is hacking crosstool-NG, the patch set might change between any two # installations of the same VERSION, thus the patches must be removed prior # to being installed. It is simpler to remove the whole lib/ directory, as it # is the goal of the install-lib rule to install the lib/ directory... install-lib: uninstall-lib $(DESTDIR)$(LIBDIR) install-lib-main install-lib-samples install-lib-main: $(DESTDIR)$(LIBDIR) @for src_dir in config kconfig patches scripts; do \ echo " INST '$${src_dir}/'"; \ tar cf - --exclude=.svn $${src_dir} |(cd "$(DESTDIR)$(LIBDIR)"; tar xf -); \ done @rm -f "$(DESTDIR)$(LIBDIR)/scripts/addToolVersion.sh" @echo " INST 'steps.mk'" @$(CT_install) -m 644 steps.mk "$(DESTDIR)$(LIBDIR)/steps.mk" # Samples need a little love: # - change every occurrence of CT_TOP_DIR to CT_LIB_DIR install-lib-samples: $(DESTDIR)$(LIBDIR) install-lib-main @echo " INST 'samples/'" @tar cf - --exclude=.svn samples |(cd "$(DESTDIR)$(LIBDIR)"; tar xf -) @for samp_file in "$(DESTDIR)$(LIBDIR)/samples/"*"/crosstool.config"; do \ $(CT_sed) -r -i -e 's,\$$\{CT_TOP_DIR\},\$$\{CT_LIB_DIR\},g;' $${samp_file}; \ $(CT_sed) -r -i -e 's,^(CT_WORK_DIR)=.*,\1="\$${CT_TOP_DIR}/targets",;' $${samp_file}; \ done install-doc: $(DESTDIR)$(DOCDIR) @for doc_file in docs/CREDITS docs/overview.txt; do \ echo " INST '$${doc_file}'"; \ $(CT_install) -m 644 "$${doc_file}" "$(DESTDIR)$(DOCDIR)"; \ done install-man: $(DESTDIR)$(MANDIR) @echo " INST 'ct-ng.1.gz'" @$(CT_install) -m 644 docs/ct-ng.1.gz "$(DESTDIR)$(MANDIR)" $(sort $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(DOCDIR) $(DESTDIR)$(MANDIR)): @echo " MKDIR '$@'" @$(CT_install) -m 755 -d "$@" #-------------------------------------- # Uninstall rules real-uninstall: $(patsubst %,uninstall-%,$(TARGETS)) uninstall-bin: @echo " RM '$(DESTDIR)$(BINDIR)/ct-ng'" @rm -f "$(DESTDIR)$(BINDIR)/ct-ng" uninstall-lib: @echo " RMDIR '$(DESTDIR)$(LIBDIR)/'" @rm -rf "$(DESTDIR)$(LIBDIR)" uninstall-doc: @echo " RMDIR '$(DESTDIR)$(DOCDIR)/'" @rm -rf "$(DESTDIR)$(DOCDIR)" uninstall-man: @echo " RM '$(DESTDIR)$(MANDIR)/ct-ng.1.gz'" @rm -f "$(DESTDIR)$(MANDIR)/ct-ng.1"{,.gz} endif # Not --local