Use different object files for libs and plugins.

This allows building a shared and static lib at once.
This commit is contained in:
Jonathan Schleifer 2010-07-25 13:20:55 +02:00
parent f6125d9bb3
commit 03f94ad79c
2 changed files with 113 additions and 66 deletions

View file

@ -90,11 +90,14 @@ OBJS8 = ${OBJS7:.py=.pyc}
OBJS9 = ${OBJS8:.xpm=.o}
OBJS += ${OBJS9:.S=.o}
LIB_OBJS = ${OBJS:.o=.lib.o}
PLUGIN_OBJS = ${OBJS:.o=.plugin.o}
MO_FILES = ${LOCALES:.po=.mo}
.SILENT:
.SUFFIXES:
.SUFFIXES: .beam .c .cc .cxx .d .dep .erl .mo .m .mm .o .po .py .pyc .xpm .S
.SUFFIXES: .beam .c .cc .cxx .d .dep .erl .lib.o .mo .m .mm .o .plugin.o .po .py .pyc .xpm .S
.PHONY: all subdirs pre-depend depend install install-extra uninstall uninstall-extra clean distclean
all:
@ -169,14 +172,14 @@ ${PROG} ${PROG_NOINST}: ${EXT_DEPS} ${OBJS}
${LINK_FAILED}; \
fi
${LIB} ${LIB_NOINST}: ${EXT_DEPS} ${OBJS}
${LIB} ${LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS}
case $@ in \
*.a) \
${MAKE} ${MFLAGS} STATIC_LIB=${LIB} LIB= $@ || exit 1 \
;; \
*) \
${LINK_STATUS}; \
if ${LD} -o $@ ${OBJS} ${LIB_LDFLAGS} ${LDFLAGS} ${LIBS}; then \
if ${LD} -o $@ ${LIB_OBJS} ${LIB_LDFLAGS} ${LDFLAGS} ${LIBS}; then \
${LINK_OK}; \
else \
${LINK_FAILED}; \
@ -184,9 +187,9 @@ ${LIB} ${LIB_NOINST}: ${EXT_DEPS} ${OBJS}
;; \
esac
${PLUGIN} ${PLUGIN_NOINST}: ${EXT_DEPS} ${OBJS}
${PLUGIN} ${PLUGIN_NOINST}: ${EXT_DEPS} ${PLUGIN_OBJS}
${LINK_STATUS}
if ${LD} -o $@ ${OBJS} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}; then \
if ${LD} -o $@ ${PLUGIN_OBJS} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}; then \
${LINK_OK}; \
else \
${LINK_FAILED}; \
@ -210,6 +213,20 @@ locales: ${MO_FILES}
else \
${COMPILE_FAILED}; \
fi
.c.lib.o:
${COMPILE_LIB_STATUS}
if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
${COMPILE_LIB_OK}; \
else \
${COMPILE_LIB_FAILED}; \
fi
.c.plugin.o:
${COMPILE_PLUGIN_STATUS}
if ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
${COMPILE_PLUGIN_OK}; \
else \
${COMPILE_PLUGIN_FAILED}; \
fi
.cc.o .cxx.o:
${COMPILE_STATUS}
@ -218,6 +235,20 @@ locales: ${MO_FILES}
else \
${COMPILE_FAILED}; \
fi
.cc.lib.o .cxx.lib.o:
${COMPILE_LIB_STATUS}
if ${CXX} ${LIB_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
${COMPILE_LIB_OK}; \
else \
${COMPILE_LIB_FAILED}; \
fi
.cc.plugin.o .cxx.plugin.o:
${COMPILE_PLUGIN_STATUS}
if ${CXX} ${PLUGIN_CFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
${COMPILE_PLUGIN_OK}; \
else \
${COMPILE_PLUGIN_FAILED}; \
fi
.d.o:
${COMPILE_STATUS}
@ -250,6 +281,20 @@ locales: ${MO_FILES}
else \
${COMPILE_FAILED}; \
fi
.m.lib.o:
${COMPILE_LIB_STATUS}
if ${OBJC} ${LIB_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
${COMPILE_LIB_OK}; \
else \
${COMPILE_LIB_FAILED}; \
fi
.m.plugin.o:
${COMPILE_PLUGIN_STATUS}
if ${OBJC} ${PLUGIN_CFLAGS} ${OBJCFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
${COMPILE_PLUGIN_OK}; \
else \
${COMPILE_PLUGIN_FAILED}; \
fi
.mm.o:
${COMPILE_STATUS}
@ -258,6 +303,20 @@ locales: ${MO_FILES}
else \
${COMPILE_FAILED}; \
fi
.mm.lib.o:
${COMPILE_LIB_STATUS}
if ${OBJCXX} ${LIB_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
${COMPILE_LIB_OK}; \
else \
${COMPILE_LIB_FAILED}; \
fi
.mm.plugin.o:
${COMPILE_PLUGIN_STATUS}
if ${OBJCXX} ${PLUGIN_CFLAGS} ${OBJCXXFLAGS} ${OBJCFLAGS} ${CXXFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
${COMPILE_PLUGIN_OK}; \
else \
${COMPILE_PLUGIN_FAILED}; \
fi
.po.mo:
${COMPILE_STATUS}
@ -282,6 +341,20 @@ locales: ${MO_FILES}
else \
${COMPILE_FAILED}; \
fi
.xpm.lib.o:
${COMPILE_LIB_STATUS}
if ${CC} ${LIB_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \
${COMPILE_LIB_OK}; \
else \
${COMPILE_LIB_FAILED}; \
fi
.xpm.plugin.o:
${COMPILE_PLUGIN_STATUS}
if ${CC} ${PLUGIN_CFLAGS} ${CFLAGS} ${CPPFLAGS} -x c -c -o $@ $<; then \
${COMPILE_PLUGIN_OK}; \
else \
${COMPILE_PLUGIN_FAILED}; \
fi
.S.o:
${COMPILE_STATUS}
@ -290,6 +363,20 @@ locales: ${MO_FILES}
else \
${COMPILE_FAILED}; \
fi
.S.lib.o:
${COMPILE_LIB_STATUS}
if ${AS} ${LIB_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
${COMPILE_LIB_OK}; \
else \
${COMPILE_LIB_FAILED}; \
fi
.S.plugin.o:
${COMPILE_PLUGIN_STATUS}
if ${AS} ${PLUGIN_CFLAGS} ${ASFLAGS} ${CPPFLAGS} -c -o $@ $<; then \
${COMPILE_PLUGIN_OK}; \
else \
${COMPILE_PLUGIN_FAILED}; \
fi
install: ${LIB} ${STATIC_LIB} ${PLUGIN} ${PROG} install-extra
for i in ${SUBDIRS}; do \
@ -472,7 +559,7 @@ clean:
${DIR_LEAVE}; \
done
for i in ${DEPS} ${OBJS} ${PROG} ${PROG_NOINST} ${LIB} ${LIB_NOINST} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${CLEAN_LIB} ${MO_FILES} ${CLEAN}; do \
for i in ${DEPS} ${OBJS} ${LIB_OBJS} ${PLUGIN_OBJS} ${PROG} ${PROG_NOINST} ${LIB} ${LIB_NOINST} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${CLEAN_LIB} ${MO_FILES} ${CLEAN}; do \
if test -f $$i -o -d $$i; then \
if rm -fr $$i; then \
${DELETE_OK}; \
@ -507,6 +594,12 @@ DEPEND_FAILED = printf "\033[K\033[0;31mFailed to generate dependencies!\033[0m\
COMPILE_STATUS = printf "\033[K\033[0;33mCompiling \033[1;33m$<\033[0;33m...\033[0m\r"
COMPILE_OK = printf "\033[K\033[0;32mSuccessfully compiled \033[1;32m$<\033[0;32m.\033[0m\n"
COMPILE_FAILED = printf "\033[K\033[0;31mFailed to compile \033[1;31m$<\033[0;31m!\033[0m\n"; exit 1
COMPILE_LIB_STATUS = printf "\033[K\033[0;33mCompiling \033[1;33m$<\033[0;33m (lib)...\033[0m\r"
COMPILE_LIB_OK = printf "\033[K\033[0;32mSuccessfully compiled \033[1;32m$<\033[0;32m (lib).\033[0m\n"
COMPILE_LIB_FAILED = printf "\033[K\033[0;31mFailed to compile \033[1;31m$<\033[0;31m (lib)!\033[0m\n"; exit 1
COMPILE_PLUGIN_STATUS = printf "\033[K\033[0;33mCompiling \033[1;33m$<\033[0;33m (plugin)...\033[0m\r"
COMPILE_PLUGIN_OK = printf "\033[K\033[0;32mSuccessfully compiled \033[1;32m$<\033[0;32m (plugin).\033[0m\n"
COMPILE_PLUGIN_FAILED = printf "\033[K\033[0;31mFailed to compile \033[1;31m$<\033[0;31m (plugin)!\033[0m\n"; exit 1
LINK_STATUS = printf "\033[K\033[0;33mLinking \033[1;33m$@\033[0;33m...\033[0m\r"
LINK_OK = printf "\033[K\033[0;32mSuccessfully linked \033[1;32m$@\033[0;32m.\033[0m\n"
LINK_FAILED = printf "\033[K\033[0;31mFailed to link \033[1;31m$@\033[0;31m!\033[0m\n"; exit 1