Makefile文件  |  74行  |  1.93 KB

# This file gets included into the main Makefile, in the top directory.

# for lib$(NAME).so and /usr/include/($NAME) and such
NAME      :=  proc

SHARED := 1

SONAME    :=  lib$(NAME).so.$(LIBVERSION)

LIBSRC :=  $(wildcard proc/*.c)
LIBHDR :=  $(wildcard proc/*.h)
LIBOBJ :=  $(LIBSRC:.c=.o)

#ALL        += proc/lib$(NAME).a
#INSTALL    += $(usr/lib)/lib$(NAME).a # plus $(usr/include)$(NAME) gunk

ifeq ($(SHARED),1)
ALL        += proc/$(SONAME)
INSTALL    += $(lib)/$(SONAME)
FPIC       := -fpic
LIBPROC    := proc/$(SONAME)
else
ALL        += proc/lib$(NAME).a
LIBPROC    := proc/lib$(NAME).a
endif

# Separate rule for this directory, to use -fpic or -fPIC
$(filter-out proc/version.o,$(LIBOBJ)): proc/%.o: proc/%.c
	$(CC) -c $(CFLAGS) $(FPIC) $< -o $@

LIB_X := COPYING module.mk
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/lib$(NAME).a: $(LIBOBJ)
	$(AR) rcs $@ $^

proc/$(SONAME): $(LIBOBJ)
	$(CC) -shared -Wl,-soname,$(SONAME) -o $@ $^ -lc
	cd proc && $(ln_sf) $(SONAME) lib$(NAME).so


# AUTOMATIC DEPENDENCY GENERATION -- GCC AND GNUMAKE DEPENDENT
proc/.depend: $(LIBSRC) $(LIBHDR)
	$(strip $(CC) $(LIB_CFLAGS) -MM -MG $(LIBSRC) > $@)

ifneq ($(MAKECMDGOALS),clean)
ifneq ($(MAKECMDGOALS),tar)
-include proc/.depend
endif
endif


$(lib)/$(SONAME) : proc/$(SONAME)
	$(install) --mode a=rx --strip $< $@
	cd $(lib) && $(ln_sf) $(SONAME) lib$(NAME).so
	$(ldconfig)

#$(usr/lib)/lib$(NAME).a : proc/lib$(NAME).a
#	$(install) --mode a=r --strip $< $@

# Junk anyway... supposed to go in /usr/include/$(NAME)
#$(HDRFILES) ??? : $(addprefix proc/,$(HDRFILES)) ???
#	$(install) --mode a=r $< $@


proc/version.o:	proc/version.c proc/version.h
	$(CC) $(CFLAGS) $(FPIC) -DVERSION=\"$(VERSION)\" -DSUBVERSION=\"$(SUBVERSION)\" -DMINORVERSION=\"$(MINORVERSION)\" -c -o $@ $<