#	$NetBSD$

.include <bsd.own.mk>
.include <bsd.sys.mk>

PROG=e32boot.ldd

SRCS=e32boot.cpp
OBJS=$(SRCS:R:S/$/.o/g)

IN=$(PROG:.ldd=.in)
MAP=$(PROG:.ldd=.map)

NOMAN=		#defined
BINMODE= 444

S=../../../../../

CPPFLAGS=-c -nostdinc -Werror -Wall -Wno-ctor-dtor-privacy
CPPFLAGS+=-march=armv4t -mapcs-32 -mshort-load-bytes -msoft-float
CPPFLAGS+=-O -fcheck-new -fvtable-thunks
CPPFLAGS+=-D__SYMBIAN32__ -D__PSISOFT32__ -D__GCC32__ -D__EPOC32__ -D__MARM__
CPPFLAGS+=-U_UNICODE
CPPFLAGS+=-I. -I../include/ -I- -I$(EXTERNAL_TOOLCHAIN)/include/

CFLAGS=
_CXXSEED=	# XXXXX

EPOC32_LIBRARY_PATH=$(EXTERNAL_TOOLCHAIN)/Release/marm/rel/
LIBS=$(EPOC32_LIBRARY_PATH)/ekern.lib $(EPOC32_LIBRARY_PATH)/euser.lib

EKERNID=100000ba	# XXXXX: ID for Logical Device Driver ?


all: $(PROG)

$(PROG): $(OBJS) $(IN)
	$(LD) -s --base-file $(PROG:.ldd=.bas) \
	    -o $@ --whole-archive $(IN) --no-whole-archive $(LIBS)
	TMP=. $(EXTERNAL_TOOLCHAIN)/bin/$(MACHINE_GNU_PLATFORM)-dlltool \
	    -S $(AS) \
	    --output-exp $(PROG:.ldd=.exp) --base-file $(PROG:.ldd=.bas) \
	    $(IN) $(LIBS)
	$(LD) -s -Map $(MAP) -o $@ $(PROG:.ldd=.exp) \
	    --whole-archive $(IN) --no-whole-archive $(LIBS)
	mv $@ $@.tmp
	$(EXTERNAL_TOOLCHAIN)/bin/petran $@.tmp $@ \
	    -nocall -uid1 0x10000079 -uid2 0x100000ae -uid3 0x00000000
	mv $@ $@.tmp
	sed -e "s/\(EKERN\[\)[0-9a-f]\{8\}\(\]\.EXE\)/\1$(EKERNID)\2/" $@.tmp > $@
	rm $@.tmp $(PROG:.ldd=.bas) $(PROG:.ldd=.exp)

$(IN): $(OBJS)
	$(AR) r $@ $(OBJS)
	$(RANLIB) $@


clean:
	rm -f $(PROG) $(OBJS) $(IN) $(MAP)
	rm -f $(PROG:.ldd=.bas) $(PROG:.ldd=.exp)

