1 # This file gets included into the main Makefile, in the top directory.
3 # Ideally, we want something like this:
5 # /lib/libproc.so.w ELF soname ('w' is a digit, starting from 1)
6 # /lib/procps-x.y.z.so file itself (x.y.z is the procps version)
7 # /lib/libproc.so for linking, UNSUPPORTED
8 # /usr/lib/libproc.a for linking, UNSUPPORTED
9 # proc/libproc.so.w as above, if testing with LD_LIBRARY_PATH
10 # proc/whatever if testing with LD_PRELOAD
11 # proc/libproc.a for static build
13 # Without a stable ABI, there's no point in having any of that.
14 # Without a stable API, there's no point in having the *.a file.
16 # A new ELF soname is required for every big ABI change. To conserve
17 # numbers for future use, the ELF soname can be set equal to the
18 # file name until some future date when a stable ABI is declared.
22 # for lib$(NAME).so and /usr/include/($NAME) and such
25 LIBVERSION := $(VERSION).$(SUBVERSION).$(MINORVERSION)
28 SOFILE := lib$(NAME)-$(LIBVERSION).so
29 ifneq ($(ABIVERSION),0)
30 SOLINK := lib$(NAME).so
31 SONAME := lib$(NAME).so.$(ABIVERSION)
46 LIBFLAGS := -DSHARED=1 $(FPIC)
47 # This is in gcc 3.5, but exported functions must be marked.
48 #LIBFLAGS += $(call check_gcc,-fvisibility=hidden,)
49 LIBPROC := proc/$(SONAME)
52 #INSTALL += $(usr/lib)$(ANAME)
53 LIBFLAGS := -DSHARED=0
54 LIBPROC := proc/$(ANAME)
57 LIBSRC := $(wildcard proc/*.c)
58 LIBHDR := $(wildcard proc/*.h)
59 LIBOBJ := $(LIBSRC:.c=.o)
61 # Separate rule for this directory, to use -fpic or -fPIC
62 $(filter-out proc/version.o,$(LIBOBJ)): proc/%.o: proc/%.c
63 $(CC) -c $(ALL_CPPFLAGS) $(ALL_CFLAGS) $(LIBFLAGS) $< -o $@
65 LIB_X := COPYING module.mk library.map
66 TARFILES += $(LIBSRC) $(LIBHDR) $(addprefix proc/,$(LIB_X))
69 # Clean away all output files, .depend, and symlinks.
70 # Use wildcards in case the version has changed.
71 CLEAN += proc/.depend proc/lib*.so* proc/lib*.a $(LIBOBJ)
74 proc/$(ANAME): $(LIBOBJ)
77 #proc/$(SONAME): proc/library.map
78 proc/$(SONAME): $(LIBOBJ)
79 $(CC) $(ALL_CFLAGS) $(ALL_LDFLAGS) -shared -Wl,-soname,$(SONAME) -Wl,--version-script=proc/library.map -o $@ $^ -lc
82 # AUTOMATIC DEPENDENCY GENERATION -- GCC AND GNUMAKE DEPENDENT
83 proc/.depend: $(LIBSRC) $(LIBHDR)
84 $(strip $(CC) $(ALL_CPPFLAGS) $(LIB_CFLAGS) -MM -MG $(LIBSRC) > $@)
86 ifneq ($(MAKECMDGOALS),clean)
87 ifneq ($(MAKECMDGOALS),tar)
88 ifneq ($(MAKECMDGOALS),extratar)
89 ifneq ($(MAKECMDGOALS),beta)
96 #################### install rules ###########################
98 $(lib)$(SOFILE) : proc/$(SONAME)
99 $(install) --mode a=rx $< $@
101 ifneq ($(SOLINK),$(SOFILE))
102 .PHONY: $(lib)$(SOLINK)
103 $(lib)$(SOLINK) : $(lib)$(SOFILE)
104 cd $(lib) && $(ln_sf) $(SOFILE) $(SOLINK)
107 ifneq ($(SONAME),$(SOFILE))
108 .PHONY: $(lib)$(SONAME)
109 $(lib)$(SONAME) : $(lib)$(SOFILE)
110 cd $(lib) && $(ln_sf) $(SOFILE) $(SONAME)
114 ldconfig : $(lib)$(SONAME) $(lib)$(SOLINK)
117 $(usr/lib)$(ANAME) : proc/$(ANAME)
118 $(install) --mode a=r $< $@
120 # Junk anyway... supposed to go in /usr/include/$(NAME)
121 #INSTALL += $(addprefix $(include),$(HDRFILES))
123 #$(addprefix $(include),$(HDRFILES)): $(include)% : proc/%
124 #$(include)% : proc/%
125 # $(install) --mode a=r $< $@
127 ##################################################################
129 proc/version.o: proc/version.c proc/version.h
130 $(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) $(LIBFLAGS) -DVERSION=\"$(VERSION)\" -DSUBVERSION=\"$(SUBVERSION)\" -DMINORVERSION=\"$(MINORVERSION)\" -c -o $@ $<