########################################################### ### Makefile.subdir for the GNU PIC Library ### ### Copyright (C) 2005 by Raphael Neider ### ### The GNU PIC Library was originally designed and ### implemented by ### Vangelis Rokas ### ### It is currently maintained by ### Raphael Neider ### ### This file may be distributed under the terms of the the ### GNU General Public License (GPL). See COPYING for details. ### ### $Id$ ### include $(top_builddir)/Makefile.common SUBDIRS ?= MKLIB ?= # fallback: if builddir is not specified via the command line... builddir ?= build/$(patsubst $(shell cd $(top_builddir); pwd)/%,%,$(CURDIR)) C_SRC ?= $(notdir $(wildcard $(srcdir)/*.c)) S_SRC ?= $(notdir $(wildcard $(srcdir)/*.S)) OBJS ?= $(addprefix $(top_builddir)/$(builddir)/,$(C_SRC:.c=.o) $(S_SRC:.S=.o)) LIB_O ?= $(OBJS) ifneq (,$(strip $(MKLIB))) LIB_LIB = $(top_builddir)/$(builddir)/$(MKLIB) TARGETS ?= $(LIB_LIB) else LIB_LIB = #TARGETS ?= $(OBJS) endif .PHONY : all install clean clean-intermediate $(addprefix install,$(TARGETS)) ifndef SILENT ECHO=echo else ECHO=true endif all : install ifneq (,$(strip $(TARGETS))) $(addprefix install,$(TARGETS)): install% : % @-if [ -e "$<" ]; then \ [ -d "$(top_builddir)/$(installdir)" ] || $(MKDIR) "$(top_builddir)/$(installdir)"; \ $(ECHO) "[INSTALL] $(patsubst $(top_builddir)/$(builddir)/%,%,$<)"; \ [ ! -e "$<" ] || $(CP) "$<" "$(top_builddir)/$(installdir)"; \ fi # usually install $(LIB_LIB) or $(OBJS), race condition in "[ -d x ] || mkdir x" install : recurse $(OBJS) $(LIB_LIB) $(addprefix install,$(TARGETS)) else # used in subdirs like libc/ctype whose files # are contained in a parent's library install : recurse $(OBJS) $(LIB_LIB) endif clean : recurse @-echo "dummy" > .dummy $(Q)-$(RM) .dummy $(foreach suf,asm d p lst hex cod sym,$(OBJS:.o=.$(suf))) @-echo "dummy" > .dummy $(Q)-$(RM) .dummy $(OBJS) $(LIB_LIB) @-echo "dummy" > .dummy $(Q)-$(RM) .dummy $(TARGETS) @-echo "dummy" > .dummy $(Q)-$(RM) .dummy $(addprefix $(top_builddir)/$(installdir)/,$(notdir $(TARGETS))) $(Q)-[ ! -d "$(top_builddir)/$(builddir)" ] || $(RMDIR) "$(top_builddir)/$(builddir)" distclean : clean clean-intermediate : recurse @-echo "dummy" > .dummy $(Q)-$(RM) .dummy $(foreach suf,p lst hex cod sym,$(OBJS:.o=.$(suf))) include $(top_srcdir)/Makefile.rules