]> granicus.if.org Git - procps-ng/commitdiff
New lib/* names. Fixed .PHONY for lib build.
authoralbert <>
Tue, 20 Jul 2004 03:12:41 +0000 (03:12 +0000)
committeralbert <>
Tue, 20 Jul 2004 03:12:41 +0000 (03:12 +0000)
Makefile
proc/module.mk

index 1a56d504db76a6a92261fcafc29c9af0204c83df..2519179df69428ba7ff24d156c3eafa12ae17337 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -18,9 +18,8 @@
 
 VERSION      := 3
 SUBVERSION   := 2
-MINORVERSION := 2
-TARVERSION   := 3.2.2
-LIBVERSION   := 3.2.2
+MINORVERSION := 3
+TARVERSION   := $(VERSION).$(SUBVERSION).$(MINORVERSION)
 
 ############ vars
 
@@ -40,8 +39,6 @@ usr/proc/bin             := $(DESTDIR)/usr/bin/
 man1                     := $(DESTDIR)/usr/share/man/man1/
 man5                     := $(DESTDIR)/usr/share/man/man5/
 man8                     := $(DESTDIR)/usr/share/man/man8/
-etc/X11/applnk/Utilities := $(DESTDIR)/etc/X11/applnk/Utilities/
-usr/X11R6/bin            := $(DESTDIR)/usr/X11R6/bin/
 lib                      := $(DESTDIR)/$(lib64)/
 usr/lib                  := $(DESTDIR)/usr/$(lib64)/
 usr/include              := $(DESTDIR)/usr/include/
index 3afe56f59af2c611fa669667b08540db7f27d8fa..929ea2af883bff7fb71bac75c3eff0fc64f23b3a 100644 (file)
@@ -1,32 +1,63 @@
 # This file gets included into the main Makefile, in the top directory.
 
+# Ideally, we want something like this:
+#
+# /lib/libproc.so.w        ELF soname ('w' is a digit, starting from 1)
+# /lib/procps-x.y.z.so     file itself (x.y.z is the procps version)
+# /lib/libproc.so          for linking, UNSUPPORTED
+# /usr/lib/libproc.a       for linking, UNSUPPORTED
+# proc/libproc.so.w        as above, if testing with LD_LIBRARY_PATH
+# proc/whatever            if testing with LD_PRELOAD
+# proc/libproc.a           for static build
+#
+# Without a stable ABI, there's no point in having any of that.
+# Without a stable API, there's no point in having the *.a file.
+#
+# A new ELF soname is required for every big ABI change. To conserve
+# numbers for future use, the ELF soname can be set equal to the
+# file name until some future date when a stable ABI is declared.
+
 # for lib$(NAME).so and /usr/include/($NAME) and such
-NAME      :=  proc
+NAME       :=  proc
 
-SHARED := 1
+SHARED     := 1
 
-SONAME    :=  lib$(NAME).so.$(LIBVERSION)
+###########
 
-LIBSRC :=  $(wildcard proc/*.c)
-LIBHDR :=  $(wildcard proc/*.h)
-LIBOBJ :=  $(LIBSRC:.c=.o)
+LIBVERSION := $(VERSION).$(SUBVERSION).$(MINORVERSION)
+ABIVERSION := 1
 
-#ALL        += proc/lib$(NAME).a
-#INSTALL    += $(usr/lib)/lib$(NAME).a # plus $(usr/include)$(NAME) gunk
+SOFILE     := lib$(NAME)-$(LIBVERSION).so
+ifneq ($(ABIVERSION),0)
+SOLINK     := lib$(NAME).so
+SONAME     := lib$(NAME).so.$(ABIVERSION)
+else
+SONAME     := $(SOFILE)
+SOLINK     := $(SOFILE)
+endif
+
+ANAME      := lib$(NAME).a
+
+############
 
 FPIC       := -fpic
 
 ifeq ($(SHARED),1)
 ALL        += proc/$(SONAME)
-INSTALL    += $(lib)/$(SONAME)
+INSTALL    += ldconfig
 LIBFLAGS   := -DSHARED=1 $(FPIC)
 LIBPROC    := proc/$(SONAME)
 else
-ALL        += proc/lib$(NAME).a
+ALL        += proc/$(ANAME)
+#INSTALL    += $(usr/lib)$(ANAME)
 LIBFLAGS   := -DSHARED=0
-LIBPROC    := proc/lib$(NAME).a
+LIBPROC    := proc/$(ANAME)
 endif
 
+LIBSRC :=  $(wildcard proc/*.c)
+LIBHDR :=  $(wildcard proc/*.h)
+LIBOBJ :=  $(LIBSRC:.c=.o)
+
 # Separate rule for this directory, to use -fpic or -fPIC
 $(filter-out proc/version.o,$(LIBOBJ)): proc/%.o: proc/%.c
        $(CC) -c $(ALL_CPPFLAGS) $(ALL_CFLAGS) $(LIBFLAGS) $< -o $@
@@ -40,14 +71,12 @@ TARFILES += $(LIBSRC) $(LIBHDR) $(addprefix proc/,$(LIB_X))
 CLEAN += proc/.depend proc/lib*.so* proc/lib*.a $(LIBOBJ)
 DIRS  += proc/
 
-proc/lib$(NAME).a: $(LIBOBJ)
+proc/$(ANAME): $(LIBOBJ)
        $(AR) rcs $@ $^
 
-.PHONY: proc/$(SONAME)
 #proc/$(SONAME): proc/library.map
 proc/$(SONAME): $(LIBOBJ)
        $(CC) -shared -Wl,-soname,$(SONAME) -Wl,--version-script=proc/library.map -o $@ $^ -lc
-       cd proc && $(ln_sf) $(SONAME) lib$(NAME).so
 
 
 # AUTOMATIC DEPENDENCY GENERATION -- GCC AND GNUMAKE DEPENDENT
@@ -62,19 +91,38 @@ endif
 endif
 endif
 
+#################### install rules ###########################
 
-$(lib)/$(SONAME) : proc/$(SONAME)
+$(lib)$(SOFILE) : proc/$(SONAME)
        $(install) --mode a=rx $< $@
-       cd $(lib) && $(ln_sf) $(SONAME) lib$(NAME).so
+
+ifneq ($(SOLINK),$(SOFILE))
+.PHONY: $(lib)$(SOLINK)
+$(lib)$(SOLINK) : $(lib)$(SOFILE)
+       cd $(lib) && $(ln_sf) $(SOFILE) $(SOLINK)
+endif
+
+ifneq ($(SONAME),$(SOFILE))
+.PHONY: $(lib)$(SONAME)
+$(lib)$(SONAME) : $(lib)$(SOFILE)
+       cd $(lib) && $(ln_sf) $(SOFILE) $(SONAME)
+endif
+
+.PHONY: ldconfig
+ldconfig : $(lib)$(SONAME) $(lib)$(SOLINK)
        $(ldconfig)
 
-#$(usr/lib)/lib$(NAME).a : proc/lib$(NAME).a
-#      $(install) --mode a=r $< $@
+$(usr/lib)$(ANAME) : proc/$(ANAME)
+       $(install) --mode a=r $< $@
 
 # Junk anyway... supposed to go in /usr/include/$(NAME)
-#$(HDRFILES) ??? : $(addprefix proc/,$(HDRFILES)) ???
+#INSTALL += $(addprefix $(include),$(HDRFILES))
+#
+#$(addprefix $(include),$(HDRFILES)): $(include)% : proc/%
+#$(include)% : proc/%
 #      $(install) --mode a=r $< $@
 
+##################################################################
 
 proc/version.o:        proc/version.c proc/version.h
        $(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) $(LIBFLAGS) -DVERSION=\"$(VERSION)\" -DSUBVERSION=\"$(SUBVERSION)\" -DMINORVERSION=\"$(MINORVERSION)\" -c -o $@ $<