_rules-prog.mk 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. ifeq (1,$(words $(TARGET)))
  2. SRCS := $(if $(SRCS_$(TARGET)),$(SRCS_$(TARGET)),$(SRCS))
  3. endif
  4. VPATH := $(TOP_DIR)/$(MODULE_NAME)
  5. SRCS ?= $(foreach M,*.c */*.c */*/*.c,$(wildcard $(TOP_DIR)/$(MODULE_NAME)/$(M))) $(wildcard *.c)
  6. OBJS := $(SRCS:.c=.o)
  7. OBJS := $(subst $(TOP_DIR)/$(MODULE_NAME)/,,$(OBJS))
  8. ifdef SRCS_PATTERN
  9. PROG_LIST := $(foreach M,$(SRCS_PATTERN),$(shell ls $(TOP_DIR)/$(MODULE_NAME)/$(M) 2>/dev/null))
  10. SRCS := $(PROG_LIST)
  11. OBJS := $(PROG_LIST:.c=.o)
  12. OBJS := $(subst $(TOP_DIR)/$(MODULE_NAME)/,,$(OBJS))
  13. endif
  14. ifdef TARGET
  15. ifneq (modinfo,$(MAKECMDGOALS))
  16. ifneq (clean,$(MAKECMDGOALS))
  17. sinclude $(OBJS:.o=.d)
  18. endif
  19. endif
  20. ifdef LIBA_TARGET
  21. $(TARGET): $(LIBA_TARGET)
  22. ifeq (,$(filter $(MODULE_NAME),$(COMP_LIB_COMPONENTS)))
  23. LDFLAGS := -l$(subst .a,,$(subst lib,,$(LIBA_TARGET))) $(LDFLAGS)
  24. endif
  25. endif
  26. ifdef LIBSO_TARGET
  27. $(TARGET): $(LIBSO_TARGET)
  28. LDFLAGS := -l$(subst .so,,$(subst lib,,$(LIBSO_TARGET))) $(LDFLAGS)
  29. endif
  30. LDFLAGS += $(sort $(CONFIG_ENV_LDFLAGS))
  31. ifneq (,$(filter %.cpp %.cc,$(SRCS)))
  32. CCLD := $(CXX)
  33. else
  34. CCLD := $(CC)
  35. endif
  36. ifeq (1,$(words $(TARGET)))
  37. $(TARGET): $(OBJS) FORCE
  38. $(call Inspect_Env,$(WATCHED_VARS))
  39. $(Q)$(MAKE) comp-lib 2>/dev/null || true
  40. $(Q) \
  41. ( \
  42. if [ "$(strip $(CC))" = "gcc" -o "$(strip $(CC))" = "i686-w64-mingw32-gcc" ] \
  43. || [ "$(filter -D_PLATFORM_IS_LINUX_,$(CFLAGS))" != "" ] \
  44. || [ "$(filter -D_PLATFORM_IS_WINDOWS_,$(CFLAGS))" != "" ]; then \
  45. $(call Brief_Log,"LD"); \
  46. mkdir -p $(OUTPUT_DIR)${bindir}; \
  47. $(CCLD) $(CFLAGS) -o $@ \
  48. $(RPATH_CFLAGS) \
  49. $(OBJS) \
  50. $(LDFLAGS) && \
  51. cp -f $@ $(OUTPUT_DIR)${bindir}; \
  52. fi; \
  53. )
  54. else
  55. $(foreach t,$(sort $(TARGET)),$(t)): FORCE
  56. $(Q)$(MAKE) TARGET=$@ OBJS="$(SRCS_$@:.c=.o)"
  57. endif
  58. endif # ifdef TARGET