d068332b88
Code is from cxx.uclibc.org, modified by catty to implement c++17 features
58 lines
2.4 KiB
Makefile
58 lines
2.4 KiB
Makefile
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))
|
|
|