#
# nono
# Copyright (C) 2020 nono project
# Licensed under nono-license.txt
#

#
# VM
#

.include "../Makefile.inc"

TARGETS=	libnnvm.a
.if !defined(RELEASE)
TARGETS+=	test_busio test_windrv
.endif

CXXSRCS=	\
	adpcm.cpp	\
	areaset.cpp	\
	bankram.cpp	\
	bootloader.cpp	\
	bt45x.cpp	\
	cgrom.cpp	\
	cmmu.cpp	\
	console.cpp	\
	crtc.cpp	\
	crtc2.cpp	\
	device.cpp	\
	dipsw.cpp	\
	dmac.cpp	\
	ethernet.cpp	\
	event.cpp	\
	extarea.cpp	\
	extram.cpp	\
	fdc.cpp	\
	fdd.cpp	\
	fuserom.cpp	\
	goldfish_pic.cpp	\
	goldfish_rtc.cpp	\
	goldfish_timer.cpp	\
	goldfish_tty.cpp	\
	gvram.cpp	\
	human68k.cpp	\
	iodevstream.cpp	\
	interrupt.cpp	\
	iplrom30.cpp	\
	kbc.cpp	\
	keyboard.cpp	\
	lance.cpp	\
	lcd.cpp	\
	lunafb.cpp	\
	lunakbd.cpp	\
	mainbus.cpp	\
	mainbus_luna.cpp	\
	mainbus_news.cpp	\
	mainbus_virt68k.cpp	\
	mainbus_x68k.cpp	\
	mainram.cpp	\
	mfp.cpp	\
	mk48t02.cpp	\
	mpscc.cpp	\
	mpu.cpp	\
	mpu64180.cpp	\
	mpu680x0.cpp	\
	mpu88xx0.cpp	\
	msxdos.cpp	\
	nereid.cpp	\
	newsctlr.cpp	\
	newsfb.cpp	\
	newsio.cpp	\
	nmi.cpp	\
	opm.cpp	\
	partialram.cpp	\
	pedec.cpp	\
	pio.cpp	\
	planevram.cpp	\
	pluto.cpp	\
	power.cpp	\
	printer.cpp	\
	prom.cpp	\
	qemusysctlr.cpp	\
	renderer.cpp	\
	rom.cpp	\
	romemu.cpp	\
	romemu_luna.cpp	\
	romemu_luna1.cpp	\
	romemu_luna88k.cpp	\
	romemu_news.cpp	\
	romemu_virt68k.cpp	\
	romemu_x68k.cpp	\
	romimg_x68k.cpp	\
	rp5c15.cpp	\
	rtc.cpp	\
	rtl8019as.cpp	\
	scc.cpp	\
	scheduler.cpp	\
	scsi.cpp	\
	scsibus.cpp	\
	scsicmd.cpp	\
	scsidev.cpp	\
	scsidomain.cpp	\
	sio.cpp	\
	spc.cpp	\
	sprite.cpp	\
	sram.cpp	\
	ssg.cpp	\
	subram.cpp	\
	syncer.cpp	\
	sysclk.cpp	\
	sysctlr.cpp	\
	sysport.cpp	\
	tas.cpp	\
	thread.cpp	\
	tvram.cpp	\
	ufs.cpp	\
	uimessage.cpp	\
	v68kio.cpp	\
	videoctlr.cpp	\
	virtio_base.cpp	\
	virtio_block.cpp	\
	virtio_def.cpp	\
	virtio_entropy.cpp	\
	virtio_net.cpp	\
	virtio_scsi.cpp	\
	vm.cpp	\
	vm_luna.cpp	\
	vm_news.cpp	\
	vm_virt68k.cpp	\
	vm_x68k.cpp	\
	windrv.cpp	\
	x68kio.cpp	\
	x68kkbd.cpp	\
	xpbus.cpp	\

.if "${HOST_HAS_AVX2}" == "yes"
CXXSRCS+=	accel_avx2.cpp
CXXFLAGS.accel_avx2.cpp+=	-mavx2
.endif
.if "${HOST_HAS_NEON}" == "yes"
CXXSRCS+=	accel_neon.cpp
.endif

CXXSRCS_test=	\
	test_busio.cpp	\
	test_tool.cpp	\
	test_windrv.cpp	\

CXXSRCS_all=	${CXXSRCS} ${CXXSRCS_test}

OBJS=	${CXXSRCS:.cpp=.o}

CLEANFILES+=	gencgrom

libnnvm.a:	${OBJS}
	rm -f $@
	${AR} r $@ $>
	${RANLIB} $@

test_busio:	test_busio.o
	${CXX} ${LDFLAGS} -o $@ $>

test_ethernet:	test_ethernet.o ../lib/libnnlib.a
	${CXX} ${LDFLAGS} -o $@ $>

test_ethernet.o:	test_ethernet.cpp ethernet.cpp

# LIBS は libbsd のため。
test_windrv:	test_windrv.o ../lib/libnnlib.a
	${CXX} ${LDFLAGS} -o $@ $> ${LIBS}

.include "../Makefile.rule"
