-# Google "recursive make considered harmful" for how this works.
+# This file gets included into the main Makefile, in the top directory.
-SRC += $(wildcard proc/*.c) $(wildcard proc/*.c)
+NAME := proc
-------
+LIBSRC += $(wildcard proc/*.c)
-# PROJECT SPECIFIC MACROS
-NAME = proc
+SONAME := lib$(NAME).so.$(LIBVERSION)
-# INSTALLATION OPTIONS
-TOPDIR = /usr
-HDRDIR = $(TOPDIR)/include/$(NAME)# where to put .h files
-LIBDIR = $(TOPDIR)/lib# where to put library files
-SHLIBDIR = /lib# where to put shared library files
-HDROWN = $(OWNERGROUP) # owner of header files
-LIBOWN = $(OWNERGROUP) # owner of library files
-INSTALL = install
+ALL += proc/lib$(NAME).a
+INSTALL += $(lib)/lib$(NAME).a
+LIB_CFLAGS := $(CFLAGS)
-SRC = $(sort $(wildcard *.c) $(filter %.c,$(RCSFILES)))
-HDR = $(sort $(wildcard *.h) $(filter %.h,$(RCSFILES)))
-OBJ = $(SRC:.c=.o)
+ifeq ($(SHARED),1)
+ALL += proc/$(SONAME)
+INSTALL += $(lib)/$(SONAME)
+LIB_CFLAGS += -fpic
+endif
+# clean away all output files, .depend, and symlinks
+CLEAN += $(addprefix proc/,$(ALL) .depend)
-SONAME = lib$(NAME).so.$(LIBVERSION)
+------
+
+# INSTALLATION OPTIONS
+HDRDIR := /usr/include/$(NAME)# where to put .h files
+LIBDIR := /usr/lib# where to put library files
+HDROWN := $(OWNERGROUP) # owner of header files
+LIBOWN := $(OWNERGROUP) # owner of library files
+INSTALL := install
+
+SRC := $(sort $(wildcard *.c) $(filter %.c,$(RCSFILES)))
+HDR := $(sort $(wildcard *.h) $(filter %.h,$(RCSFILES)))
+OBJ := $(SRC:.c=.o)
-ifeq ($(SHARED),1)
-CFLAGS += -fpic
-all: lib$(NAME).a $(SONAME)
-else
-all: lib$(NAME).a
-endif
-lib$(NAME).a: $(OBJ)
+proc/lib$(NAME).a: $(OBJ)
$(AR) rcs $@ $^
-$(SONAME): $(OBJ)
+proc/$(SONAME): $(OBJ)
gcc -shared -Wl,-soname,$(SONAME) -o $@ $^ -lc
ln -sf $(SONAME) lib$(NAME).so
# AUTOMATIC DEPENDENCY GENERATION -- GCC AND GNUMAKE DEPENDENT
.depend:
- $(strip $(CC) $(CFLAGS) -MM -MG $(SRC) > .depend)
+ $(strip $(CC) $(LIB_CFLAGS) -MM -MG $(SRC) > .depend)
-include .depend
# INSTALLATION
install: all
if ! [ -d $(HDRDIR) ] ; then mkdir $(HDRDIR) ; fi
- $(INSTALL) $(HDROWN) $(HDR) $(TOPDIR)/include/$(NAME)
+ $(INSTALL) $(HDROWN) $(HDR) /usr/include/$(NAME)
$(INSTALL) $(LIBOWN) lib$(NAME).a $(LIBDIR)
ifeq ($(SHARED),1)
$(INSTALL) $(LIBOWN) $(SONAME) $(SHLIBDIR)
# CUSTOM c -> o rule so that command-line has minimal whitespace
%.o : %.c
- $(strip $(CC) $(CFLAGS) -c $<)
+ $(strip $(CC) $(LIB_CFLAGS) -c $<)
version.o: version.c version.h
ifdef MINORVERSION
- $(strip $(CC) $(CFLAGS) -DVERSION=\"$(VERSION)\" -DSUBVERSION=\"$(SUBVERSION)\" -DMINORVERSION=\"$(MINORVERSION)\" -c version.c)
+ $(strip $(CC) $(LIB_CFLAGS) -DVERSION=\"$(VERSION)\" -DSUBVERSION=\"$(SUBVERSION)\" -DMINORVERSION=\"$(MINORVERSION)\" -c version.c)
else
- $(strip $(CC) $(CFLAGS) -DVERSION=\"$(VERSION)\" -DSUBVERSION=\"$(SUBVERSION)\" -c version.c)
+ $(strip $(CC) $(LIB_CFLAGS) -DVERSION=\"$(VERSION)\" -DSUBVERSION=\"$(SUBVERSION)\" -c version.c)
endif
-INSTALL += install_ps
+# This file gets included into the main Makefile, in the top directory.
------
+INSTALL += $(bin)ps
-all: ps
+# a file to remove
+CLEAN += ps/ps
+
+# a directory for cleaning
+DIRS += ps
+
+# a file to create
+ALL += ps/ps
ps: escape.o global.o help.o select.o sortformat.o output.o parser.o display.o
$(CC) -o ps escape.o global.o help.o select.o sortformat.o output.o parser.o display.o -L../proc -lproc
stacktrace.o: stacktrace.c
-install: ps
+$(bin)ps: ps
install $(OWNERGROUP) --mode a=rx --strip ps $(BINDIR)/ps
install $(OWNERGROUP) --mode a=r ps.1 $(MAN1DIR)/ps.1
-rm -f $(DESTDIR)/var/catman/cat1/ps.1.gz $(DESTDIR)/var/man/cat1/ps.1.gz
-
-clean:
- rm -f *.o DEADJOE *~ core ps gmon.out