openblt

a hobby OS from the late 90s
git clone http://frotz.net/git/openblt.git
Log | Files | Refs | LICENSE

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