Add support for building MorphOS libraries

This commit is contained in:
Jonathan Schleifer 2017-07-08 22:10:28 +02:00
parent 060bcd3202
commit 1884d1beab
No known key found for this signature in database
GPG key ID: 28D65178B37F33E3

View file

@ -104,20 +104,21 @@ OBJS11 = ${OBJS10:.S=.o}
OBJS += ${OBJS11:.xpm=.o} OBJS += ${OBJS11:.xpm=.o}
LIB_OBJS = ${OBJS:.o=.lib.o} LIB_OBJS = ${OBJS:.o=.lib.o}
MORPHOS_LIB_OBJS = ${OBJS:.o=.moslib.o}
PLUGIN_OBJS = ${OBJS:.o=.plugin.o} PLUGIN_OBJS = ${OBJS:.o=.plugin.o}
MO_FILES = ${LOCALES:.po=.mo} MO_FILES = ${LOCALES:.po=.mo}
.SILENT: .SILENT:
.SUFFIXES: .SUFFIXES:
.SUFFIXES: .beam .c .c.dep .cc .cc.dep .class .cxx .cxx.dep .d .erl .lib.o .java .mo .m .m.dep .mm .mm.dep .o .plugin.o .po .py .pyc .rc .S .S.dep .xpm .SUFFIXES: .beam .c .c.dep .cc .cc.dep .class .cxx .cxx.dep .d .erl .lib.o .java .mo .m .m.dep .mm .mm.dep .moslib.o .o .plugin.o .po .py .pyc .rc .S .S.dep .xpm
.PHONY: all subdirs subdirs-after pre-depend depend install install-extra uninstall uninstall-extra clean distclean locales ${SUBDIRS} ${SUBDIRS_AFTER} .PHONY: all subdirs subdirs-after pre-depend depend install install-extra uninstall uninstall-extra clean distclean locales ${SUBDIRS} ${SUBDIRS_AFTER}
all: all:
${MAKE} pre-all ${MAKE} pre-all
${MAKE} subdirs ${MAKE} subdirs
${MAKE} depend ${MAKE} depend
${MAKE} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST} ${SHARED_LIB} ${SHARED_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${PROG} ${PROG_NOINST} ${JARFILE} locales ${MAKE} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${STATIC_PIC_LIB} ${STATIC_PIC_LIB_NOINST} ${SHARED_LIB} ${SHARED_LIB_NOINST} ${MORPHOS_LIB} ${MORPHOS_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${PROG} ${PROG_NOINST} ${JARFILE} locales
${MAKE} subdirs-after ${MAKE} subdirs-after
${MAKE} post-all ${MAKE} post-all
@ -187,27 +188,27 @@ depend: pre-depend ${SRCS}
.c.c.dep: .c.c.dep:
${CPP} ${CPPFLAGS} ${CFLAGS} -M $< | \ ${CPP} ${CPPFLAGS} ${CFLAGS} -M $< | \
sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.plugin.o:/' >$@ || \ sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.moslib.o \1.plugin.o:/' >$@ || \
{ rm -f $@; false; } { rm -f $@; false; }
.cc.cc.dep .cxx.cxx.dep: .cc.cc.dep .cxx.cxx.dep:
${CPP} ${CPPFLAGS} ${CXXFLAGS} -M $< | \ ${CPP} ${CPPFLAGS} ${CXXFLAGS} -M $< | \
sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.plugin.o:/' >$@ || \ sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.moslib.o \1.plugin.o:/' >$@ || \
{ rm -f $@; false; } { rm -f $@; false; }
.m.m.dep: .m.m.dep:
${CPP} ${CPPFLAGS} ${OBJCFLAGS} -M $< | \ ${CPP} ${CPPFLAGS} ${OBJCFLAGS} -M $< | \
sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.plugin.o:/' >$@ || \ sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.moslib.o \1.plugin.o:/' >$@ || \
{ rm -f $@; false; } { rm -f $@; false; }
.mm.mm.dep: .mm.mm.dep:
${CPP} ${CPPFLAGS} ${OBJCXXFLAGS} -M $< | \ ${CPP} ${CPPFLAGS} ${OBJCPPFLAGS} -M $< | \
sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.plugin.o:/' >$@ || \ sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.moslib.o \1.plugin.o:/' >$@ || \
{ rm -f $@; false; } { rm -f $@; false; }
.S.S.dep: .S.S.dep:
${CPP} ${CPPFLAGS} ${ASFLAGS} -M $< | \ ${CPP} ${CPPFLAGS} ${ASFLAGS} -M $< | \
sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.plugin.o:/' >$@ || \ sed 's/^\([^\.]*\)\.o:/\1.o \1.lib.o \1.moslib.o \1.plugin.o:/' >$@ || \
{ rm -f $@; false; } { rm -f $@; false; }
pre-depend: pre-depend:
@ -273,6 +274,42 @@ ${SHARED_LIB} ${SHARED_LIB_NOINST}: ${EXT_DEPS} ${LIB_OBJS} ${LIB_OBJS_EXTRA}
rm -fr $$dir; \ rm -fr $$dir; \
done done
${MORPHOS_LIB} ${MORPHOS_LIB_NOINST}: ${EXT_DEPS} ${MORPHOS_LIB_OBJS} ${MORPHOS_LIB_OBJS_EXTRA}
${LINK_STATUS}
out="$@"; \
objs=""; \
ars=""; \
for i in ${MORPHOS_LIB_OBJS} ${MORPHOS_LIB_OBJS_EXTRA}; do \
case $$i in \
*.a) \
ars="$$ars $$i" \
;; \
*.o) \
objs="$$objs $$i" \
;; \
esac \
done; \
for i in $$ars; do \
dir=".$$(echo $$i | sed 's/\//_/g').objs"; \
rm -fr $$dir; \
mkdir -p $$dir; \
cd $$dir; \
${AR} x ../$$i; \
for j in *.o; do \
objs="$$objs $$dir/$$j"; \
done; \
cd ..; \
done; \
if ${LD} -o $@ $$objs -nostartfiles ${LDFLAGS} ${LIBS}; then \
${LINK_OK}; \
else \
${LINK_FAILED}; \
fi; \
for i in $$ars; do \
dir=".$$(echo $$i | sed 's/\//_/g').objs"; \
rm -fr $$dir; \
done
${PLUGIN} ${PLUGIN_NOINST}: ${EXT_DEPS} ${PLUGIN_OBJS} ${PLUGIN} ${PLUGIN_NOINST}: ${EXT_DEPS} ${PLUGIN_OBJS}
${LINK_STATUS} ${LINK_STATUS}
out="$@"; \ out="$@"; \
@ -405,6 +442,15 @@ locales: ${MO_FILES}
else \ else \
${COMPILE_LIB_FAILED}; \ ${COMPILE_LIB_FAILED}; \
fi fi
.c.moslib.o:
${COMPILE_MOSLIB_STATUS}
in="$<"; \
out="$@"; \
if ${CC} -mbaserel32 ${CFLAGS} ${CPPFLAGS} ${CFLAGS_$@} -c -o $@ $<; then \
${COMPILE_MOSLIB_OK}; \
else \
${COMPILE_MOSLIB_FAILED}; \
fi
.c.plugin.o: .c.plugin.o:
${COMPILE_PLUGIN_STATUS} ${COMPILE_PLUGIN_STATUS}
in="$<"; \ in="$<"; \
@ -433,6 +479,15 @@ locales: ${MO_FILES}
else \ else \
${COMPILE_LIB_FAILED}; \ ${COMPILE_LIB_FAILED}; \
fi fi
.cc.moslib.o .cxx.moslib.o:
${COMPILE_MOSLIB_STATUS}
in="$<"; \
out="$@"; \
if ${CXX} -mbaserel32 ${CXXFLAGS} ${CPPFLAGS} ${CXXFLAGS_$@} -c -o $@ $<; then \
${COMPILE_MOSLIB_OK}; \
else \
${COMPILE_MOSLIB_FAILED}; \
fi
.cc.plugin.o .cxx.plugin.o: .cc.plugin.o .cxx.plugin.o:
${COMPILE_PLUGIN_STATUS} ${COMPILE_PLUGIN_STATUS}
in="$<"; \ in="$<"; \
@ -499,6 +554,15 @@ locales: ${MO_FILES}
else \ else \
${COMPILE_LIB_FAILED}; \ ${COMPILE_LIB_FAILED}; \
fi fi
.m.moslib.o:
${COMPILE_MOSLIB_STATUS}
in="$<"; \
out="$@"; \
if ${OBJC} -mbaserel32 ${OBJCFLAGS} ${CPPFLAGS} ${OBJCFLAGS_$@} -c -o $@ $<; then \
${COMPILE_MOSLIB_OK}; \
else \
${COMPILE_MOSLIB_FAILED}; \
fi
.m.plugin.o: .m.plugin.o:
${COMPILE_PLUGIN_STATUS} ${COMPILE_PLUGIN_STATUS}
in="$<"; \ in="$<"; \
@ -527,6 +591,15 @@ locales: ${MO_FILES}
else \ else \
${COMPILE_LIB_FAILED}; \ ${COMPILE_LIB_FAILED}; \
fi fi
.mm.moslib.o:
${COMPILE_MOSLIB_STATUS}
in="$<"; \
out="$@"; \
if ${OBJCXX} -mbaserel32 ${OBJCXXFLAGS} ${CPPFLAGS} ${OBJCXXFLAGS_$@} -c -o $@ $<; then \
${COMPILE_MOSLIB_OK}; \
else \
${COMPILE_MOSLIB_FAILED}; \
fi
.mm.plugin.o: .mm.plugin.o:
${COMPILE_PLUGIN_STATUS} ${COMPILE_PLUGIN_STATUS}
in="$<"; \ in="$<"; \
@ -567,7 +640,7 @@ locales: ${MO_FILES}
${COMPILE_FAILED}; \ ${COMPILE_FAILED}; \
fi fi
.S.o: .S.o .S.moslib.o:
${COMPILE_STATUS} ${COMPILE_STATUS}
in="$<"; \ in="$<"; \
out="$@"; \ out="$@"; \
@ -613,6 +686,15 @@ locales: ${MO_FILES}
else \ else \
${COMPILE_LIB_FAILED}; \ ${COMPILE_LIB_FAILED}; \
fi fi
.xpm.moslib.o:
${COMPILE_MOSLIB_STATUS}
in="$<"; \
out="$@"; \
if ${CC} -mbasel32 ${CFLAGS} ${CPPFLAGS} ${CFLAGS_$@} -x c -c -o $@ $<; then \
${COMPILE_MOSLIB_OK}; \
else \
${COMPILE_MOSLIB_FAILED}; \
fi
.xpm.plugin.o: .xpm.plugin.o:
${COMPILE_PLUGIN_STATUS} ${COMPILE_PLUGIN_STATUS}
in="$<"; \ in="$<"; \
@ -876,6 +958,9 @@ COMPILE_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_
COMPILE_LIB_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF3@ (lib)...@TERM_SGR0@\r" "$<" COMPILE_LIB_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF3@ (lib)...@TERM_SGR0@\r" "$<"
COMPILE_LIB_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF2@ (lib).@TERM_SGR0@\n" "$<" COMPILE_LIB_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF2@ (lib).@TERM_SGR0@\n" "$<"
COMPILE_LIB_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF1@ (lib)!@TERM_SGR0@\n" "$<"; exit $$err COMPILE_LIB_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF1@ (lib)!@TERM_SGR0@\n" "$<"; exit $$err
COMPILE_MOSLIB_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF3@ (moslib)...@TERM_SGR0@\r" "$<"
COMPILE_MOSLIB_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF2@ (moslib).@TERM_SGR0@\n" "$<"
COMPILE_MOSLIB_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF1@ (moslib)!@TERM_SGR0@\n" "$<"; exit $$err
COMPILE_PLUGIN_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF3@ (plugin)...@TERM_SGR0@\r" "$<" COMPILE_PLUGIN_STATUS = printf "@TERM_EL@@TERM_SETAF3@Compiling @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF3@ (plugin)...@TERM_SGR0@\r" "$<"
COMPILE_PLUGIN_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF2@ (plugin).@TERM_SGR0@\n" "$<" COMPILE_PLUGIN_OK = printf "@TERM_EL@@TERM_SETAF2@Successfully compiled @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF2@ (plugin).@TERM_SGR0@\n" "$<"
COMPILE_PLUGIN_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF1@ (plugin)!@TERM_SGR0@\n" "$<"; exit $$err COMPILE_PLUGIN_FAILED = err=$$?; printf "@TERM_EL@@TERM_SETAF1@Failed to compile @TERM_BOLD@%s@TERM_SGR0@@TERM_SETAF1@ (plugin)!@TERM_SGR0@\n" "$<"; exit $$err