makefile.output 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. LIB_SDK_TARGET := libiot_sdk.a
  2. LIB_HAL_TARGET := libiot_hal.a
  3. ###############################################################################
  4. # Compiler
  5. CC := gcc
  6. AR := ar
  7. ###############################################################################
  8. # Path definitions
  9. TOPDIR := .
  10. BLDDIR := build
  11. SRCDIR := eng
  12. EXPDIR := examples
  13. HDRDIR := $(shell find $(SRCDIR) -type d)
  14. PROG_TARGET := $(shell ls $(EXPDIR) 2>/dev/null|grep example|sed 's:\.c::g;s:_:-:g')
  15. PROG_TARGET := $(foreach V,$(PROG_TARGET),$(BLDDIR)/$(V))
  16. ###############################################################################
  17. # Application source files
  18. SOURCE_FILES_C := $(shell find $(SRCDIR) -name "*.c" -not -path "*wrappers*")
  19. WRAPPER_IMPL_C := $(shell find $(SRCDIR) -name "*.c" -path "*wrappers*")
  20. ###############################################################################
  21. # Standard application lib/header search paths
  22. CFLAGS := $(addprefix -I,$(HDRDIR))
  23. LDFLAGS := -L$(BLDDIR) -liot_sdk -liot_hal -lpthread -lrt
  24. ###############################################################################
  25. # Dependency rules
  26. LIB_OBJS := $(SOURCE_FILES_C:.c=.o)
  27. LIB_OBJS := $(subst $(SRCDIR),$(BLDDIR),$(LIB_OBJS))
  28. HAL_OBJS := $(WRAPPER_IMPL_C:.c=.o)
  29. HAL_OBJS := $(subst $(SRCDIR),$(BLDDIR),$(HAL_OBJS))
  30. .PHONY: prepare all clean prog
  31. all: prepare $(BLDDIR)/$(LIB_SDK_TARGET) $(BLDDIR)/$(LIB_HAL_TARGET)
  32. prog: all $(PROG_TARGET)
  33. prepare:
  34. -@mkdir -p $(BLDDIR)
  35. $(BLDDIR)/$(LIB_SDK_TARGET): $(LIB_OBJS)
  36. @echo "o Archiving $@ ..."
  37. @$(AR) -rcs $@ $^
  38. $(BLDDIR)/$(LIB_HAL_TARGET): $(HAL_OBJS)
  39. @echo "o Archiving $@ ..."
  40. @$(AR) -rcs $@ $^
  41. $(PROG_TARGET): $(BLDDIR)/$(LIB_SDK_TARGET) $(BLDDIR)/$(LIB_HAL_TARGET)
  42. @echo "+ Linking $@ ..."
  43. @$(CC) -o $@ $(shell echo $@".c"|sed 's:$(BLDDIR):$(EXPDIR):g;s:-:_:g') $(CFLAGS) $(LDFLAGS)
  44. $(BLDDIR)/%.o: $(SRCDIR)/%.c
  45. @echo ": Compiling $< ..."
  46. @mkdir -p $(shell dirname $@)
  47. @$(CC) -o $@ -c $< $(CFLAGS)
  48. clean:
  49. @rm -rf $(BLDDIR)