Files
pig2014 d068332b88 feat: initial commit
Code is from cxx.uclibc.org, modified by catty to implement c++17
features
2025-03-26 09:29:24 +08:00

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))