ROOTPATH=../../../
SAVL=$(ROOTPATH)lib/libsavl
-include $(ROOTPATH)SDK.global

CCS:=CC="gcc -std=gnu89"

ifeq ($(shell uname),MorphOS)
CCS:=CC=ppc-morphos-gcc-2.95.3 NATIVE_CC=ppc-morphos-gcc-2.95.3 CCPPC=ppc-morphos-gcc-2.95.3
endif

.PHONY: all clean install startup-and-libc install-startup-and-libc

all: Makefile /gg/ppc-morphos/lib/libsavl.a
	@make -f Makefile

ifneq ($(shell uname),MorphOS)
/gg/ppc-morphos/lib/libsavl.a:
	$(MAKE) -C $(SAVL) /gg/ppc-morphos/lib/libsavl.a
endif

Makefile: Makefile.in db/Makefile.in general/Makefile.in glue/Makefile.in ixnet/Makefile.in library/Makefile.in libsrc/Makefile.in man/Makefile.in net/Makefile.in stack/Makefile.in static/Makefile.in stdio/Makefile.in stdlib/Makefile.in string/Makefile.in utils/Makefile.in
	@echo "Running configure script.."
	@chmod u+x configure
	@$(CCS) ./configure --enable-ppc --disable-m68k --disable-cat --with-cpu=powerpc.604e --prefix=/gg

clean:
ifeq ($(wildcard Makefile),Makefile)
	@make -f Makefile clean
	rm -f .build-startup-and-libc config.cache config.log config.status
	rm -f db/Makefile gdtoa/Makefile general/Makefile glue/Makefile ixnet/Makefile library/Makefile libsrc/Makefile libsrc/version.h man/Makefile math/Makefile net/Makefile stack/Makefile static/Makefile stdio/Makefile stdlib/Makefile string/Makefile utils/Makefile utils/version.h wchar/Makefile Makefile
else
	@echo "This is no real makefile.. just a fallback. Build ixemul yourself"
endif

# yes, this is a bit fugly but else we have a chicken and egg issue in crossbuild where libsavl.a can't be built
.build-startup-and-libc: Makefile
	@make -f Makefile all-but-library-and-ixnet
	@touch $@

startup-and-libc: .build-startup-and-libc

install-startup-and-libc: .build-startup-and-libc
	mkdir -p /gg/ppc-morphos/lib/libb32
	cp libsrc/crt0*.o libsrc/scrt0*.o libsrc/lcrt0*.o /gg/ppc-morphos/lib
	cp libsrc/libc.a /gg/ppc-morphos/lib
	cp libsrc/libb32c.a /gg/ppc-morphos/lib/libb32/libc.a

install: all install-startup-and-libc
ifeq ($(shell uname), MorphOS)
	ppc-morphos-strip --remove-section=.comment -o /sys/morphos/libs/ixemul.library library/powerpc/604e/morphos/ixemul.library
	ppc-morphos-strip --remove-section=.comment -o /sys/morphos/libs/ixnet.library ixnet/powerpc/morphos/ixnet.library
	ppc-morphos-strip --remove-section=.comment -o /sys/morphos/L/ixpipe-handler utils/ixpipe-handler
	cp utils/ixpipe /sys/morphos/Devs/DOSDrivers/IXPIPE
endif

install-iso: all
	mkdir -p $(ISOPATH)MorphOS/Libs $(ISOPATH)MorphOS/L $(ISOPATH)MorphOS/Devs/DOSDrivers
	ppc-morphos-strip --remove-section=.comment -o $(ISOPATH)MorphOS/Libs/ixemul.library library/powerpc/604e/morphos/ixemul.library
	ppc-morphos-strip --remove-section=.comment -o $(ISOPATH)MorphOS/Libs/ixnet.library ixnet/powerpc/morphos/ixnet.library
	ppc-morphos-strip --remove-section=.comment -o $(ISOPATH)MorphOS/L/ixpipe-handler utils/ixpipe-handler
	cp utils/ixpipe $(ISOPATH)MorphOS/Devs/DOSDrivers/IXPIPE

sdk: all
	mkdir -p $(SDKPATH)$(SDKROOT)$(SDKGG)bin
	mkdir -p $(SDKPATH)$(SDKROOT)$(SDKGG)ppc-morphos/lib/libb32
	cp libsrc/crt0*.o libsrc/scrt0*.o libsrc/lcrt0*.o $(SDKPATH)$(SDKROOT)$(SDKGG)ppc-morphos/lib/
	cp libsrc/libc.a $(SDKPATH)$(SDKROOT)$(SDKGG)ppc-morphos/lib/
	cp libsrc/libb32c.a $(SDKPATH)$(SDKROOT)$(SDKGG)ppc-morphos/lib/libb32/libc.a
	cp utils/ipcrm utils/ipcs utils/ixprefs utils/ixrun utils/ixstack utils/tzselect $(SDKPATH)$(SDKROOT)$(SDKGG)bin/

sdksource:
	mkdir -p $(SRCPATH)/ixemul
	cp -a * $(SRCPATH)/ixemul
	rm -rf $(SRCPATH)/ixemul/db/morphos $(SRCPATH)/ixemul/db/morphos-rel32 $(SRCPATH)/ixemul/gdtoa/powerpc $(SRCPATH)/ixemul/general/powerpc $(SRCPATH)/ixemul/glue/morphos $(SRCPATH)/ixemul/glue/morphos-rel32 $(SRCPATH)/ixemul/ixnet/powerpc $(SRCPATH)/ixemul/library/powerpc $(SRCPATH)/ixemul/math/powerpc $(SRCPATH)/ixemul/net/morphos $(SRCPATH)/ixemul/net/morphos-rel32 $(SRCPATH)/ixemul/stack/morphos $(SRCPATH)/ixemul/stack/morphos-rel32 $(SRCPATH)/ixemul/static/morphos $(SRCPATH)/ixemul/static/morphos-rel32 $(SRCPATH)/ixemul/stdio/powerpc $(SRCPATH)/ixemul/stdlib/powerpc $(SRCPATH)/ixemul/string/powerpc $(SRCPATH)/ixemul/wchar/powerpc
	-find $(SRCPATH)/ixemul -iname CVS -exec rm -rf {} \;
	-find $(SRCPATH)/ixemul -iname *.o -exec rm -rf {} \;

source:
	(cd .. && tar --transform "s,^ixemul,&.library," -cf $(SOURCEPATH)ixemul.library.tar ixemul)

