use implicit rules for many things rather than hardcoding our own
This commit is contained in:
parent
f5fb796619
commit
112fbde453
1
src/.gitignore
vendored
1
src/.gitignore
vendored
@ -1,6 +1,7 @@
|
|||||||
.depend
|
.depend
|
||||||
rc
|
rc
|
||||||
*.[oa]
|
*.[oa]
|
||||||
|
*.lo
|
||||||
*.so
|
*.so
|
||||||
*.so.*
|
*.so.*
|
||||||
version.h
|
version.h
|
||||||
|
48
src/Makefile
48
src/Makefile
@ -10,6 +10,7 @@ AR ?= ar
|
|||||||
RANLIB ?= ranlib
|
RANLIB ?= ranlib
|
||||||
CFLAGS += -O2 -pipe
|
CFLAGS += -O2 -pipe
|
||||||
LDFLAGS += -L.
|
LDFLAGS += -L.
|
||||||
|
PICFLAG = -fPIC
|
||||||
|
|
||||||
# GNU Make way of detecting gcc flags we can use
|
# GNU Make way of detecting gcc flags we can use
|
||||||
check_gcc=$(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; \
|
check_gcc=$(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; \
|
||||||
@ -61,7 +62,7 @@ ULIB_TARGETS = libeinfo.a librc.a
|
|||||||
SBIN_TARGETS = rc
|
SBIN_TARGETS = rc
|
||||||
SYS_WHITELIST = env_whitelist
|
SYS_WHITELIST = env_whitelist
|
||||||
|
|
||||||
TARGET = $(LIB_TARGETS) $(BIN_TARGETS) $(SBIN_TARGETS)
|
TARGET = $(LIB_TARGETS) $(ULIB_TARGETS) $(BIN_TARGETS) $(SBIN_TARGETS)
|
||||||
|
|
||||||
RC_BINLINKS = einfon einfo ewarnn ewarn eerrorn eerror ebegin eend ewend \
|
RC_BINLINKS = einfon einfo ewarnn ewarn eerrorn eerror ebegin eend ewend \
|
||||||
eindent eoutdent esyslog eval_ecolors \
|
eindent eoutdent esyslog eval_ecolors \
|
||||||
@ -104,32 +105,39 @@ version.h:
|
|||||||
echo "#define BRANDING \"${BRANDING}\"" >> version.h; \
|
echo "#define BRANDING \"${BRANDING}\"" >> version.h; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$(LIBEINFOOBJS):
|
.SUFFIXES: .lo
|
||||||
$(CC) $(CPPFLAGS) $(CPPFLAGS_LIBEINFO) $(CFLAGS) -fPIC -c $<
|
.c.lo:
|
||||||
$(LIBEINFOSO): einfo.map $(LIBEINFOOBJS)
|
$(CC) $(CFLAGS) $(CPPFLAGS) $(PICFLAG) -c $< -o $@
|
||||||
$(CC) $(LDFLAGS) -fPIC -shared \
|
.o.a:
|
||||||
|
$(AR) rc $@.tmp $^
|
||||||
|
$(RANLIB) $@.tmp
|
||||||
|
mv $@.tmp $@
|
||||||
|
|
||||||
|
LIBEINFOOBJS_SO = $(LIBEINFOOBJS:.o=.lo)
|
||||||
|
$(LIBEINFOOBJS): CPPFLAGS += $(CPPFLAGS_LIBEINFO)
|
||||||
|
$(LIBEINFOOBJS_SO): CPPFLAGS += $(CPPFLAGS_LIBEINFO)
|
||||||
|
$(LIBEINFOSO): einfo.map $(LIBEINFOOBJS_SO)
|
||||||
|
$(CC) $(LDFLAGS) $(PICFLAG) -shared \
|
||||||
-Wl,-soname,$(LIBEINFOSO) \
|
-Wl,-soname,$(LIBEINFOSO) \
|
||||||
-Wl,-version-script einfo.map \
|
-Wl,-version-script einfo.map \
|
||||||
-o $(LIBEINFOSO) $(LIBEINFOOBJS) $(LDLIBS_LIBEINFO)
|
-o $(LIBEINFOSO) $(LIBEINFOOBJS_SO) $(LDLIBS_LIBEINFO)
|
||||||
ln -sf $(LIBEINFOSO) libeinfo.so
|
ln -sf $(LIBEINFOSO) libeinfo.so
|
||||||
$(AR) rc libeinfo.a $(LIBEINFOOBJS)
|
libeinfo.a: $(LIBEINFOOBJS)
|
||||||
$(RANLIB) libeinfo.a
|
|
||||||
|
|
||||||
$(LIBRCOBJS):
|
LIBRCOBJS_SO = $(LIBRCOBJS:.o=.lo)
|
||||||
$(CC) $(CPPFLAGS) $(CFLAGS) -fPIC -c $<
|
$(LIBRCSO): rc.map $(LIBRCOBJS_SO)
|
||||||
$(LIBRCSO): rc.map $(LIBRCOBJS)
|
$(CC) $(LDFLAGS) $(PICFLAG) -shared \
|
||||||
$(CC) $(LDFLAGS) -fPIC -shared \
|
|
||||||
-Wl,-soname,$(LIBRCSO) \
|
-Wl,-soname,$(LIBRCSO) \
|
||||||
-Wl,-version-script rc.map \
|
-Wl,-version-script rc.map \
|
||||||
-o $(LIBRCSO) $(LIBRCOBJS) $(LDLIBS_LIBRC)
|
-o $(LIBRCSO) $(LIBRCOBJS_SO) $(LDLIBS_LIBRC)
|
||||||
ln -sf $(LIBRCSO) librc.so
|
ln -sf $(LIBRCSO) librc.so
|
||||||
$(AR) rc librc.a $(LIBRCOBJS)
|
librc.a: $(LIBRCOBJS)
|
||||||
$(RANLIB) librc.a
|
|
||||||
|
|
||||||
$(RCOBJS):
|
$(RCOBJS): version.h
|
||||||
$(CC) $(CPPFLAGS) $(CPPFLAGS_SSD) $(CFLAGS) -c $<
|
$(RCOBJS): CPPFLAGS += $(CPPFLAGS_SSD)
|
||||||
rc: version.h $(LIBEINFOSO) $(LIBRCSO) $(RCOBJS)
|
rc: $(RCOBJS)
|
||||||
$(CC) $(LDFLAGS) $(BIN_LDFLAGS) -o rc $(RCOBJS) $(LDLIBS_RC)
|
rc: LDLIBS += $(LDLIBS_RC) $(LIBEINFOSO) $(LIBRCSO)
|
||||||
|
rc: LDFLAGS += $(BIN_LDFLAGS)
|
||||||
|
|
||||||
$(ALL_LINKS): rc
|
$(ALL_LINKS): rc
|
||||||
ln -sf rc $@
|
ln -sf rc $@
|
||||||
@ -166,7 +174,7 @@ clean:: clean-links
|
|||||||
echo > .depend
|
echo > .depend
|
||||||
touch -r Makefile .depend
|
touch -r Makefile .depend
|
||||||
rm -f $(TARGET) version.h
|
rm -f $(TARGET) version.h
|
||||||
rm -f *.o *~ *.core *.so *.a
|
rm -f *.lo *.o *~ *.core *.so *.a
|
||||||
|
|
||||||
check:
|
check:
|
||||||
$(MAKE) -C test $@
|
$(MAKE) -C test $@
|
||||||
|
Loading…
x
Reference in New Issue
Block a user