BIN_DIR := $(top_builddir)bin/ CLEAN_bin: $(do_rm) $(WRAPPER) $(BIN_DIR)env_check install-bin: $(WRAPPER) | $(DESTDIR)$(UCLIBCXX_RUNTIME_BINDIR) @$(call disp_install,$(call dirify,$(WRAPPER))) $(Q)$(INSTALL) -m 0755 $(WRAPPER) $(DESTDIR)$(UCLIBCXX_RUNTIME_BINDIR) # Rebuild wrapper whenever any of these vars change # Hardcoding these in the wrapper is arguably bad design but handy cmd_bin_env_check = CXX="$(CXX)" GEN_CFLAGS="$(GEN_CFLAGS)" GEN_CXXFLAGS="$(GEN_CXXFLAGS)" EH_CXXFLAGS="$(EH_CXXFLAGS)" UCLIBCXX_RUNTIME_INCLUDEDIR="$(UCLIBCXX_RUNTIME_INCLUDEDIR)" UCLIBCXX_RUNTIME_LIBDIR="$(UCLIBCXX_RUNTIME_LIBDIR)" manual.depends.dep += $(BIN_DIR)env_check $(BIN_DIR)env_check: FORCE @echo 'cmd_$(call variablify,$(call dirify,$(WRAPPER))) := $(cmd_bin_env_check)' > $@.new @echo '' >> $@.new @if cmp -s $@ $@.new ; then \ $(RM) $@.new ; \ else \ mv $@.new $@ ; \ $(RM) $(WRAPPER) ; \ fi define do_wrapper @$(disp_gen) $(Q)echo '#!/bin/sh' > $@.tmp $(Q)echo '' >> $@.tmp $(Q)echo 'WRAPPER_INCLUDEDIR="$${WRAPPER_INCLUDEDIR:=-I$(UCLIBCXX_RUNTIME_INCLUDEDIR)}"' >> $@.tmp $(Q)echo 'WRAPPER_LIBDIR="$${WRAPPER_LIBDIR:=-L$(UCLIBCXX_RUNTIME_LIBDIR)}"' >> $@.tmp $(Q)echo '' >> $@.tmp $(Q)echo 'WRAPPER_OPTIONS=""' >> $@.tmp $(Q)echo 'WRAPPER_LIBS="$(strip $(LIBS))"' >> $@.tmp $(Q)echo '' >> $@.tmp $(Q)echo 'WRAPPER_INCLIB="Y"' >> $@.tmp $(Q)echo 'for arg' >> $@.tmp $(Q)echo 'do' >> $@.tmp $(Q)echo ' case "$$arg" in' >> $@.tmp $(Q)echo ' -c|-E|-S) WRAPPER_INCLIB="N" ;;' >> $@.tmp $(Q)echo ' -static) [ "$$WRAPPER_LIBS" != "$(strip $(STATIC_LIBS))" ] && WRAPPER_LIBS="$(strip $(STATIC_LIBS))" ;;' >> $@.tmp $(Q)echo ' esac' >> $@.tmp $(Q)echo 'done' >> $@.tmp $(Q)echo 'if [ "$$WRAPPER_INCLIB" = "Y" ]' >> $@.tmp $(Q)echo 'then' >> $@.tmp $(Q)echo ' WRAPPER_OPTIONS="$$WRAPPER_OPTIONS -nodefaultlibs $$WRAPPER_LIBDIR -l$(LNAME) $$WRAPPER_LIBS"' >> $@.tmp $(Q)echo 'fi' >> $@.tmp $(Q)echo '' >> $@.tmp $(Q)echo '[ -n "$$V" ] && [ $$V -gt 1 ] && echo $(CXX) $(GEN_CFLAGS) $(GEN_CXXFLAGS) $(EH_CXXFLAGS) $$WRAPPER_INCLUDEDIR "$$@" $$WRAPPER_OPTIONS' >> $@.tmp $(Q)echo 'exec $(CXX) $(GEN_CFLAGS) $(GEN_CXXFLAGS) $(EH_CXXFLAGS) $$WRAPPER_INCLUDEDIR "$$@" $$WRAPPER_OPTIONS' >> $@.tmp $(Q)echo '' >> $@.tmp $(Q)chmod 0755 $@.tmp $(Q)mv $@.tmp $@ endef $(WRAPPER) $(BIN_DIR)env_check: $(BIN_DIR)Makefile.in $(WRAPPER): $(BIN_DIR)env_check $(if $(strip $(call compare_flags,$<) $(any-prereq)),$(do_wrapper))