PWDDIR = $(shell pwd) OBJDIR = $(PWDDIR)/obj BINDIR = $(PWDDIR)/bin LIBDIR = $(PWDDIR)/lib TARGET = $(shell basename $(PWDDIR)) AS = as CC = gcc CPP = g++ AR = ar LD = ld OBJCOPY = objcopy OBJDUMP = objdump MAKE = make ASFLAGS = -D -g -I$(PWDDIR) CCFLAGS = -O3 -c -ffunction-sections -fdata-sections -I$(PWDDIR) CPPFLAGS = -O3 -c -ffunction-sections -fdata-sections -I$(PWDDIR) ARFLAGS = rcsv LDFLAGS = -L$(LIBDIR) -lm -lc EXCNAME = $(TARGET) LIBNAME = lib$(TARGET) DLLNAME = dll$(TARGET) ASFILES = $(wildcard *.S) CCFILES = $(wildcard *.c) CPPFILES = $(wildcard *.cpp) ASOBJS = $(patsubst %.c, $(OBJDIR)/%.o, $(ASFILES)) CCOBJS = $(patsubst %.c, $(OBJDIR)/%.o, $(CCFILES)) CPPOBJS = $(patsubst %.cpp, $(OBJDIR)/%.o, $(CPPFILES)) ALLOBJS = $(ASOBJS) $(CCOBJS) $(CPPOBJS) all:$(ALLOBJS) # @echo $(TARGET) $(MAKE) -C liblog $(MAKE) -C libocpp $(MAKE) -C libtimer $(LD) $(LDFLAGS) -o $(BINDIR)/$(EXCNAME).elf $(ALLOBJS) .PHONY:$(LIBNAME) $(LIBNAME):$(ALLOBJS) $(AR) $(ARFLAGS) $(LIBDIR)/$(LIBNAME).a $(ALLOBJS) .PHONY:$(DLLNAME) $(DLLNAME):$(ALLOBJS) $(CC) $(LDFLAGS) $(ALLOBJS) -shared -o $(BINDIR)/$(DLLNAME).so $(OBJDIR)/%.o : %.S $(AS) $(ASFLAGS) $< -o $@ $(OBJDIR)/%.o : %.c $(CC) $(CCFLAGS) $< -o $@ $(OBJDIR)/%.o : %.cpp $(CPP) $(CPPFLAGS) $< -o $@ .PHONY : clean clean: rm -f $(BINDIR)/*app_*.bin $(BINDIR)/*.elf $(BINDIR)/*.dis $(BINDIR)/*.map $(BINDIR)/*.c $(OBJDIR)/*.o