shithub: cc65-plan9

ref: 2e2e412d056d214d103bceec96186b35ea45acd1
dir: /mkfiles/libsrc/mkfile.target/

View raw version

CA65FLAGS=
CC65FLAGS=-Or -Werror

# For native $O
</$cputype/mkfile

CC65_HOME=`{cleanname -d `{pwd} ..}

AR65=../src/ar65/$O.out
CA65=../src/ca65/$O.out
CC65=../src/cc65/$O.out
LD65=../src/cc65/$O.out

../src/%/$O.out:
	@{
		cd ../src
		objtype=$cputype mk $stem/$O.out
	}

EXTZP=\
	cbm510	\
	cbm610	\
	lynx

TARGETUTIL=\
	apple2		\
	apple2enh	\
	atari		\
	geos-apple

GEOSDIRS=\
	common		\
	conio		\
	disk		\
	dlgbox		\
	file		\
	graph		\
	memory		\
	menuicon	\
	mousesprite	\
	process		\
	runtime		\
	system

<defs/common.mk
<`{test -r defs/$TARGET.mk && echo defs/$TARGET.mk || echo /dev/null} # It needs a include name

SRCDIRS=\
	$SRCDIR	\
	`{~ $TARGET $CBMS && echo cbm}	\
	`{~ $TARGET $GEOS && for(dir in $GEOSDIRS) {test -d $TARGET/$dir && echo $TARGET/$dir; echo geos-common/$dir}}	\
	common		\
	conio		\
	dbg			\
	em			\
	joystick	\
	mouse		\
	runtime		\
	serial		\
	tgi			\
	zlib

SRC=`{walk $SRCDIRS | grep '\.[cs]$'}
# Can we do this with a single namelist instead?
OBJ=`{for(f in $SRC) echo $f | sed 's@\.[cs]$@.o@g'}

DEPS=${OBJ:%.o=%.d}

EXTRASRC=`{walk $SRCDIR | grep $SRCDIR/extra/^'.*\.s$'}
EXTRAOBJ=${EXTRASRC:$SRCDIR/extra/%.s=../lib/$TARGET-%.o}

DEPS=$DEPS ${EXTRAOBJ:../lib/%.o=$TARGET/%.d}

# TODO: Target tools

ZPOBJ=$TARGET/zeropage `{~ $TARGET $EXTZP && echo $TARGET/extzp.o}

all:V: $TARGET

# TODO: drvs

# FIXME: Dump temporary assembly under ../libwrk, with .s extension

%.o: %.s
	$CA65 -t $TARGET $CA65FLAGS --create-dep `{echo $target | sed 's@\.o$@\.d@g'} \
		-o $target $prereq

%.o: %.c
	$CC65 -t $TARGET $CC65FLAGS --create-dep `{echo $target | sed 's@\.o$@\.d@g'} \
		--dep-target $target -o `{echo $target | sed 's@\.o$@\.asm@g'} $prereq
	$CA65 -t $TARGET -o $target `{echo $target | sed 's@\.o$@\.asm@g'}

../lib/$TARGET-%.o: $SRCDIR/extra/%.s
	mkdir -p ../lib
	$CA65 -t $TARGET $CA65FLAGS \
		--create-dep `{echo $target | sed 's@^../lib/@'^$TARGET^'/@g;s@\.o$@.d@g'}

# TODO: Maintain that as an archive
../lib/$TARGET.lib: $OBJ
	$AR65 a $target $prereq

$TARGET:V: $EXTRAOBJ ../lib/$TARGET.lib