| # 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. |
| |
| SHARED := 1 |
| |
| # for lib$(NAME).so and /usr/include/($NAME) and such |
| NAME := proc |
| |
| LIBVERSION := $(VERSION).$(SUBVERSION).$(MINORVERSION) |
| ABIVERSION := 0 |
| |
| 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 += ldconfig |
| LIBFLAGS := -DSHARED=1 $(FPIC) |
| # This is in gcc 3.5, but exported functions must be marked. |
| #LIBFLAGS += $(call check_gcc,-fvisibility=hidden,) |
| LIBPROC := proc/$(SONAME) |
| else |
| ALL += proc/$(ANAME) |
| #INSTALL += $(usr/lib)$(ANAME) |
| LIBFLAGS := -DSHARED=0 |
| 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 $@ |
| |
| LIB_X := COPYING module.mk library.map |
| TARFILES += $(LIBSRC) $(LIBHDR) $(addprefix proc/,$(LIB_X)) |
| |
| |
| # Clean away all output files, .depend, and symlinks. |
| # Use wildcards in case the version has changed. |
| CLEAN += proc/.depend proc/lib*.so* proc/lib*.a $(LIBOBJ) |
| DIRS += proc/ |
| |
| proc/$(ANAME): $(LIBOBJ) |
| $(AR) rcs $@ $^ |
| |
| #proc/$(SONAME): proc/library.map |
| proc/$(SONAME): $(LIBOBJ) |
| $(CC) $(ALL_CFLAGS) $(ALL_LDFLAGS) -shared -Wl,-soname,$(SONAME) -Wl,--version-script=proc/library.map -o $@ $^ -lc |
| |
| |
| # AUTOMATIC DEPENDENCY GENERATION -- GCC AND GNUMAKE DEPENDENT |
| proc/.depend: $(LIBSRC) $(LIBHDR) |
| $(strip $(CC) $(ALL_CPPFLAGS) $(LIB_CFLAGS) -MM -MG $(LIBSRC) > $@) |
| |
| ifneq ($(MAKECMDGOALS),clean) |
| ifneq ($(MAKECMDGOALS),tar) |
| ifneq ($(MAKECMDGOALS),extratar) |
| ifneq ($(MAKECMDGOALS),beta) |
| -include proc/.depend |
| endif |
| endif |
| endif |
| endif |
| |
| #################### install rules ########################### |
| |
| $(lib)$(SOFILE) : proc/$(SONAME) |
| $(install) --mode 775 $< $@ |
| |
| 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)$(ANAME) : proc/$(ANAME) |
| $(install) --mode a=r $< $@ |
| |
| # Junk anyway... supposed to go in /usr/include/$(NAME) |
| #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 $@ $< |