ROOTPATH = ../../../
-include $(ROOTPATH)Makefile.global
CC = ppc-morphos-gcc-9 -fno-strict-aliasing

SHELL	=	/bin/sh

##############################################################################

TARGET		=	
VERSION		=	51

##############################################################################

G_ROOT		=	$(ROOTPATH)
G_IPATH		=	-I./include -I$(G_ROOT)morphoswb/development/os-include/ -I$(G_ROOT)morphoswb/development/include/ -I$(G_ROOT)include/
G_DEFINES	=	-DUSE_INLINE_STDARG -D__MORPHOS__ -DSYSTEM_PRIVATE
G_OPTFLAGS	=	-noixemul -O2 -fomit-frame-pointer -fverbose-asm -mno-prototype -mcpu=604e -mregnames -Wall -Wformat -Wunused -Wuninitialized -Wconversion -Wstrict-prototypes -Werror-implicit-function-declaration -Wcomment -Wno-pointer-sign -Wno-deprecated-declarations

include $(ROOTPATH)SDK.global


APATH		=	-iasm:
AFLAGS		=	-M4000

##############################################################################

LIB		=	$(G_ROOT)lib/

##############################################################################

ifeq ($(shell ppc-morphos-gcc -dumpmachine), ppc-morphos)
LINK = @$(LD)
else
LINK = @$(LD) -r
endif

##############################################################################

all:	build_aros_lib build_morphos_lib dos.elf

##############################################################################

.SUFFIXES: .o$(TARGET)

.c.o$(TARGET):
	@echo "Making $@..."
	@$(CC) $(G_CFLAGS) $(G_OPTFLAGS) $(G_DEBUG) $(G_DEFINES) $(G_IPATH) -c -o $*.o $*.c

##############################################################################
##############################################################################
##############################################################################
##############################################################################
##############################################################################
##############################################################################
##############################################################################

SRC		=

OBJS	=	module.o$(TARGET) misc.o$(TARGET) mempool.o$(TARGET)

GLOBAL	=	dos_intern.h \
		$(G_ROOT)morphoswb/development/os-include/dos/dos.h		\
		$(G_ROOT)morphoswb/development/os-include/dos/dosextens.h	\
		$(G_ROOT)morphoswb/development/os-include/dos/dostags.h

misc.o$(TARGET):		misc.c $(GLOBAL)
module.o$(TARGET):		module.c $(GLOBAL) dos_version.h
mempool.o$(TARGET):		mempool.c $(GLOBAL) mempool.h

build_aros_lib:
	make -C aros_funcs

build_morphos_lib:
	make -C morphos_funcs

##############################################################################
#
# dos Elf Object
#
dos.elf:  $(OBJS) libmorphosfuncs.o libarosfuncs.o
	@echo "Making $@..."
	$(LINK) -fl libnix  $(OBJS) libarosfuncs.o libmorphosfuncs.o \
		-lstring -lmemblock -lconfigserver -lsyscall -lmessage -lsavl -lc -lmath -o dos.elf

bump:
	bumprev2 VERSION $(VERSION) FILE dos_version TAG dos.library ADD " 1995-`date +%Y` by AROS, Emmanuel Lesueur and Harry Sintonen"

dump:
	ppc-morphos-objdump --section-headers --all-headers --reloc --disassemble-all dos.elf >dos.elf.dump

##############################################################################
#
# convert includes
#
#CREATEINCLUDE:
#	(cd ../../emulinclude; ./geninclude.sh ../emulmodules/dosnewppc/includenew ../emulmodules/dosnewppc/includegcc)

##############################################################################
.PHONY: all install clean docs

install: all

install-build: all $(G_ROOT)build/modules/dos.elf

install-iso: all

$(G_ROOT)build/modules/dos.elf: dos.elf
	cp dos.elf $(G_ROOT)build/modules/
	cp dos.notes $(G_ROOT)build/modules/


docs:
	@echo "Making dos.doc..."
	$(AUTODOCINTERNAL) -o dos.doc --convert-comments --aros=dos.library $(addprefix aros_funcs/,$(filter-out $(notdir $(wildcard morphos_funcs/*.c)),$(notdir $(wildcard aros_funcs/*.c)))) $(wildcard morphos_funcs/*.c)

test:
	cp dos.elf $(G_ROOT)extmodules/

clean:
	find ./ -iname \*.o$(TARGET) -exec rm {} \;
	find ./ -iname \*.s -exec rm {} \;
	find ./ -iname \*.a -exec rm {} \;
	rm -f *.o dos.elf *.dump

sdk:
	@echo "Making dos.$(AUTODOCPOSTFIX)..."
	@$(AUTODOCINTERNAL) $(AUTODOCFLAGS) --aros=dos -o /tmp/dos.aros.$(AUTODOCPOSTFIX) --aros=dos.library $(wildcard aros_funcs/*.c) $(wildcard morphos_funcs/*.c)
	cat $(ROOTPATH)morphoswb/development/sdk/apldocdisclaimer.txt > dos.aros.$(AUTODOCPOSTFIX)
	cat /tmp/dos.aros.$(AUTODOCPOSTFIX) >> dos.aros.$(AUTODOCPOSTFIX)
	rm /tmp/dos.aros.$(AUTODOCPOSTFIX)
	#@$(ROOTPATH)morphoswb/development/tools/autodoc/internal.pl $(AUTODOCFLAGS) --aros=dos -o dos.$(AUTODOCPOSTFIX) --aros=dos.library $(wildcard morphos_funcs/*.c)
	@$(AROSDOC) dos.aros.$(AUTODOCPOSTFIX) dos.aros.$(AUTODOCPOSTFIX)
	#@$(AROSDOC) dos.$(AUTODOCPOSTFIX) dos.$(AUTODOCPOSTFIX)
	mkdir -p $(SDKPATH)$(SDKROOT)$(SDKDOCS)
	cp dos.aros.$(AUTODOCPOSTFIX) $(SDKPATH)$(SDKROOT)$(SDKDOCS)/dos.$(AUTODOCPOSTFIX)
	#cp dos.$(AUTODOCPOSTFIX) $(SDKPATH)$(SDKROOT)$(SDKDOCS)

source:
	tar --transform "s,^,dos.library/," -cf $(SOURCEPATH)dos.library.tar include aros_funcs dos_version.* makefile

