Makefile.mk 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. PWDDIR = $(shell pwd)
  2. OBJDIR = $(PWDDIR)/obj
  3. BINDIR = $(PWDDIR)/bin
  4. LIBDIR = $(PWDDIR)/lib
  5. TARGET = $(shell basename $(PWDDIR))
  6. AS = as
  7. CC = gcc
  8. CPP = g++
  9. AR = ar
  10. LD = ld
  11. OBJCOPY = objcopy
  12. OBJDUMP = objdump
  13. MAKE = make
  14. ASFLAGS = -D -g -I$(PWDDIR)
  15. CCFLAGS = -O3 -c -ffunction-sections -fdata-sections -I$(PWDDIR)
  16. CPPFLAGS = -O3 -c -ffunction-sections -fdata-sections -I$(PWDDIR)
  17. ARFLAGS = rcsv
  18. LDFLAGS = -L$(LIBDIR) -lm -lc
  19. EXCNAME = $(TARGET)
  20. LIBNAME = lib$(TARGET)
  21. DLLNAME = dll$(TARGET)
  22. ASFILES = $(wildcard *.S)
  23. CCFILES = $(wildcard *.c)
  24. CPPFILES = $(wildcard *.cpp)
  25. ASOBJS = $(patsubst %.c, $(OBJDIR)/%.o, $(ASFILES))
  26. CCOBJS = $(patsubst %.c, $(OBJDIR)/%.o, $(CCFILES))
  27. CPPOBJS = $(patsubst %.cpp, $(OBJDIR)/%.o, $(CPPFILES))
  28. ALLOBJS = $(ASOBJS) $(CCOBJS) $(CPPOBJS)
  29. all:$(ALLOBJS)
  30. # @echo $(TARGET)
  31. $(MAKE) -C liblog
  32. $(MAKE) -C libocpp
  33. $(MAKE) -C libtimer
  34. $(LD) $(LDFLAGS) -o $(BINDIR)/$(EXCNAME).elf $(ALLOBJS)
  35. .PHONY:$(LIBNAME)
  36. $(LIBNAME):$(ALLOBJS)
  37. $(AR) $(ARFLAGS) $(LIBDIR)/$(LIBNAME).a $(ALLOBJS)
  38. .PHONY:$(DLLNAME)
  39. $(DLLNAME):$(ALLOBJS)
  40. $(CC) $(LDFLAGS) $(ALLOBJS) -shared -o $(BINDIR)/$(DLLNAME).so
  41. $(OBJDIR)/%.o : %.S
  42. $(AS) $(ASFLAGS) $< -o $@
  43. $(OBJDIR)/%.o : %.c
  44. $(CC) $(CCFLAGS) $< -o $@
  45. $(OBJDIR)/%.o : %.cpp
  46. $(CPP) $(CPPFLAGS) $< -o $@
  47. .PHONY : clean
  48. clean:
  49. rm -f $(BINDIR)/*app_*.bin $(BINDIR)/*.elf $(BINDIR)/*.dis $(BINDIR)/*.map $(BINDIR)/*.c $(OBJDIR)/*.o