#
-# Copyright (c) 1999, 2001 Silicon Graphics, Inc. All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of version 2 of the GNU General Public License as published
-# by the Free Software Fondation.
-#
-# This program is distributed in the hope that it would be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. Further, any license provided herein,
-# whether implied or otherwise, is limited to this program in accordance with
-# the express provisions of the GNU General Public License. Patent licenses,
-# if any, provided herein do not apply to combinations of this program with
-# other product or programs, or any other product whatsoever. This program is
-# distributed without any warranty that the program is delivered free of the
-# rightful claim of any third person by way of infringement or the like. See
-# the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write the Free Software Foundation, Inc., 59 Temple
-# Place - Suite 330, Boston MA 02111-1307, USA.
-# Common build rules for gmake
+# Copyright (c) 1999, 2001-2003 Silicon Graphics, Inc. All Rights Reserved.
#
ifndef _BUILDRULES_INCLUDED_
_BUILDRULES_INCLUDED_ = 1
include $(TOPDIR)/include/builddefs
+clean clobber : $(addsuffix -clean,$(SUBDIRS))
+ $(Q)rm -f $(DIRT)
+ $(Q)rm -fr .libs .ltdep .dep
+
+%-clean:
+ @echo "Cleaning $*"
+ $(Q)$(MAKE) $(MAKEOPTS) -q -C $* clean || $(MAKE) $(MAKEOPTS) -C $* clean
+
+# Never blow away subdirs
+ifdef SUBDIRS
+.PRECIOUS: $(SUBDIRS)
+.PHONY: $(SUBDIRS)
+
+$(SUBDIRS):
+ @echo "Building $@"
+ $(Q)$(MAKE) $(MAKEOPTS) -q -C $@ || $(MAKE) $(MAKEOPTS) -C $@
+endif
+
#
# Standard targets
#
-ifdef CMDTARGET
-$(CMDTARGET) : $(SUBDIRS) $(OBJECTS)
- $(CCF) -o $(CMDTARGET) $(LDFLAGS) $(OBJECTS) $(LDLIBS)
-$(CMDTARGET).static : $(SUBDIRS) $(OBJECTS)
- $(CCF) -static -o $(CMDTARGET).static $(LDFLAGS) $(OBJECTS) $(LDLIBS)
-endif
-ifdef LIBTARGET
-$(LIBTARGET) : $(SUBDIRS) $(OBJECTS)
- $(CC) $(LDFLAGS) -fPIC -shared -Wl,-soname,$(LIBTARGET) -o $(LIBTARGET) $(OBJECTS) $(LDLIBS)
+ifdef LTCOMMAND
+$(LTCOMMAND) : $(SUBDIRS) $(OBJECTS) $(LTDEPENDENCIES)
+ @echo " [LD] $*"
+ $(Q)$(LTLINK) -o $@ $(LDFLAGS) $(OBJECTS) $(LDLIBS)
endif
-ifdef STATICLIBTARGET
-$(STATICLIBTARGET) : $(SUBDIRS) $(OBJECTS)
- $(AR) crf $(STATICLIBTARGET) $?
+ifdef LTLIBRARY
+$(LTLIBRARY) : $(SUBDIRS) $(LTOBJECTS)
+ @echo " [LD] $*"
+ $(Q)$(LTLINK) $(LTLDFLAGS) -o $(LTLIBRARY) $(LTOBJECTS) $(LTLIBS)
+
+%.lo: %.c
+ @echo " [CC] $@"
+ $(Q)$(LTCOMPILE) -c $<
+else
+%.o: %.c
+ @echo " [CC] $@"
+ $(Q)$(CC) $(CFLAGS) -c $<
+
endif
-clean clobber : $(SUBDIRS)
- rm -f $(DIRT)
- $(SUBDIRS_MAKERULE)
+ifdef POTHEAD
+%.pot: $(XGETTEXTFILES)
+ $(XGETTEXT) --language=C --keyword=_ -o $@ $(XGETTEXTFILES)
-# Never blow away subdirs
-ifdef SUBDIRS
-.PRECIOUS: $(SUBDIRS)
-$(SUBDIRS):
- $(SUBDIRS_MAKERULE)
+# Generate temp .po files, to check whether translations need updating.
+# Not by default, due to gettext output differences between versions.
+%.po: $(POTHEAD)
+# $(MSGMERGE) -o $@.tmpo $@ $(POTHEAD)
+# if ! diff $@.tmpo $@ >/dev/null; then echo "$@ dated, see $@.tmpo"; fi
+
+%.mo: %.po
+ $(MSGFMT) -o $@ $<
endif
source :
$(SOURCE_MAKERULE)
-endif
+endif # _BUILDRULES_INCLUDED_
$(_FORCE):
-.PHONY : depend
+# dependency build is automatic, relies on gcc -MM to generate.
+.PHONY : depend ltdepend
-depend : $(CFILES) $(HFILES)
- $(SUBDIRS_MAKERULE)
- touch dep
- $(MAKEDEPEND) -fdep -- $(CFLAGS) -- $(CFILES)
+MAKEDEP := $(MAKEDEPEND) $(CFLAGS)
+
+ltdepend: .ltdep
+
+.ltdep: $(CFILES) $(HFILES)
+ @echo " [LTDEP]"
+ $(Q)[ -n "$(CFILES)" ] && \
+ $(MAKEDEP) $(CFILES) | $(SED) -e 's,^\([^:]*\)\.o,\1.lo,' > .ltdep
+
+depend: .dep
+
+.dep: $(CFILES) $(HFILES)
+ @echo " [DEP]"
+ $(Q)[ -n "$(CFILES)" ] && \
+ $(MAKEDEP) $(CFILES) | $(SED) -e 's,^\([^:]*\)\.o,\1,' > .dep
-# Include dep, but only if it exists
-ifeq ($(shell test -f dep && echo dep), dep)
-include dep
-endif