make.actions (2876B)
1 # 2 # For inclusion at the end of a makefile 3 # 4 5 ifeq ($(QUIET),true) 6 SHUSH := @ 7 endif 8 9 # If OBJS unspecified, convert SRCS into OBJS 10 # 11 ifeq ($(OBJS),) 12 OBJS := $(SRCS_TO_OBJS) 13 endif 14 15 DEPS := $(OBJS:.o=.d) 16 include $(DEPS) 17 18 ifneq ($(LIBRARY),) 19 $(LIBRARY): $(OBJS) 20 ifeq ($(QUIET),true) 21 @echo "### Linking: $@" 22 endif 23 @rm -f $(LIBRARY) 24 $(SHUSH)$(AR) cr $(LIBRARY) $(OBJS) $(LIBOBJS) 25 endif 26 27 ifneq ($(SHLIB),) 28 ifeq ($(origin SHLIB_MAJOR), undefined) 29 SHLIB_NAME := $(SHLIB) 30 SHLIB_SONAME := 31 else 32 ifeq ($(origin SHLIB_MINOR), undefined) 33 SHLIB_NAME := $(SHLIB).$(SHLIB_MAJOR) 34 else 35 SHLIB_NAME := $(SHLIB).$(SHLIB_MAJOR).$(SHLIB_MINOR) 36 endif 37 SHLIB_SONAME := -soname $(SHLIB).$(SHLIB_MAJOR) 38 endif 39 $(SHLIB_NAME): $(OBJS) 40 ifeq ($(QUIET),true) 41 @echo "### Linking: $@" 42 endif 43 $(SHUSH)$(LD) -Bshareable -o $(SHLIB_NAME) $(SHLIB_SONAME) $(OBJS) $(LIBBASE) $(LIBS) 44 ifneq ($(SHLIB), $(SHLIB_NAME)) 45 ln -sf $(SHLIB_NAME) $(SHLIB) 46 endif 47 endif 48 49 ifneq ($(BINARY),) 50 $(BINARY): $(OBJS) 51 ifeq ($(QUIET),true) 52 @echo "### Linking: $@" 53 endif 54 $(SHUSH)$(LD) -dN -Ttext $(ENTRY) -o $(BINARY) $(CRT0) $(OBJS) $(LIBBASE) $(LIBS) 55 ifeq ($(STRIP),true) 56 $(SHUSH)$(CP) $(BINARY).bin $(BINARY).debug 57 $(SHUSH)$(ST) $(BINARY).bin 58 endif 59 endif 60 61 subdirs:: 62 ifneq ($(SUBDIRS),) 63 ifeq ($(BUILDLOG),) 64 @for i in $(SUBDIRS) ; \ 65 do echo "--- Directory: $$i"; \ 66 $(MAKE) -C $$i ; \ 67 done 68 else 69 @for i in $(SUBDIRS) ; \ 70 do echo "--- Directory: $$i"; \ 71 export BUILDLOG=$(BUILDLOG) ; \ 72 if $(MAKE) -C $$i ; then \ 73 echo "OKAY `pwd`/$$i" >> $(BUILDLOG); \ 74 else \ 75 echo "FAIL `pwd`/$$i" >> $(BUILDLOG); \ 76 fi ; \ 77 done 78 endif 79 endif 80 81 subclean:: 82 ifneq ($(SUBDIRS),) 83 @for i in $(SUBDIRS) ; \ 84 do echo "--- Cleaning: $$i"; \ 85 $(MAKE) -C $$i clean ; \ 86 done 87 endif 88 89 all:: check_path $(PRETARGETS) subdirs $(BINARY) $(LIBRARY) $(SHLIB_NAME) $(TARGETS) 90 91 clean:: check_path subclean 92 @rm -f $(OBJS) $(LIBOBJS) $(BINARY) $(LIBRARY) $(SHLIB) $(SHLIB_NAME) $(PRETARGETS) $(TARGETS) *.debug *.d 93 94 realclean:: clean 95 @rm -f *.d 96 97 ############################################# 98 # rules for compilation of individual files 99 ############################################# 100 DEP_FLAGS := -M -MG $(CFLAGS) 101 102 %.o: %.cpp 103 ifeq ($(QUIET),true) 104 @echo "### Compiling: $<" 105 endif 106 $(SHUSH)$(C++) $(CXXFLAGS) -c $< 107 108 %.o: %.c 109 ifeq ($(QUIET),true) 110 @echo "### Compiling: $<" 111 endif 112 $(SHUSH)$(CC) $(CFLAGS) -c $< 113 114 %.o: %.S 115 ifeq ($(QUIET),true) 116 @echo "### Assembling: $<" 117 endif 118 $(SHUSH)$(CC) $(CFLAGS) -S -o $@ $< 119 120 %.o: %.S 121 ifeq ($(QUIET),true) 122 @echo "### Assembling: $<" 123 endif 124 $(SHUSH)$(CC) $(CFLAGS) -D__ASM__ -c $< 125 126 %.d: %.c 127 ifeq ($(QUIET),true) 128 @echo "### MakeDeps: $<" 129 endif 130 $(SHUSH)$(CC) $(DEP_FLAGS) $< > $@ 131 132 %.d: %.S 133 ifeq ($(QUIET),true) 134 @echo "### MakeDeps: $<" 135 endif 136 $(SHUSH)$(CC) -D__ASM__ $(DEP_FLAGS) $< > $@ 137 138 %.d: %.cpp 139 ifeq ($(QUIET),true) 140 @echo "### MakeDeps: $<" 141 endif 142 $(SHUSH)$(C++) $(DEP_FLAGS) $< > $@ 143