1bf21cd93STycho Nightingale# 2bf21cd93STycho Nightingale# This file and its contents are supplied under the terms of the 3bf21cd93STycho Nightingale# Common Development and Distribution License ("CDDL"), version 1.0. 4bf21cd93STycho Nightingale# You may only use this file in accordance with the terms of version 5bf21cd93STycho Nightingale# 1.0 of the CDDL. 6bf21cd93STycho Nightingale# 7bf21cd93STycho Nightingale# A full copy of the text of the CDDL should have accompanied this 8bf21cd93STycho Nightingale# source. A copy of the CDDL is also available via the Internet at 9bf21cd93STycho Nightingale# http://www.illumos.org/license/CDDL. 10bf21cd93STycho Nightingale# 11bf21cd93STycho Nightingale 12bf21cd93STycho Nightingale# 13bf21cd93STycho Nightingale# Copyright 2014 Pluribus Networks Inc. 1426624470SAndy Fiddaman# Copyright 2020 Joyent, Inc. 15e0c0d44eSPatrick Mooney# Copyright 2020 Oxide Computer Company 16*311330e6SAndy Fiddaman# Copyright 2022 OmniOS Community Edition (OmniOSce) Association. 17bf21cd93STycho Nightingale# 18bf21cd93STycho Nightingale 19bf21cd93STycho NightingalePROG = bhyve 20bf21cd93STycho Nightingale 21bf21cd93STycho Nightingaleinclude ../Makefile.cmd 224c87aefeSPatrick Mooneyinclude ../Makefile.cmd.64 234c87aefeSPatrick Mooneyinclude ../Makefile.ctf 24bf21cd93STycho Nightingale 254c87aefeSPatrick MooneySUBDIRS = test 26bf21cd93STycho Nightingale 27bf21cd93STycho Nightingaleall := TARGET = all 28bf21cd93STycho Nightingaleinstall := TARGET = install 29bf21cd93STycho Nightingaleclean := TARGET = clean 30bf21cd93STycho Nightingaleclobber := TARGET = clobber 31bf21cd93STycho Nightingale 324c87aefeSPatrick MooneySRCS = acpi.c \ 334c87aefeSPatrick Mooney atkbdc.c \ 344c87aefeSPatrick Mooney bhyvegc.c \ 354c87aefeSPatrick Mooney bhyverun.c \ 364c87aefeSPatrick Mooney block_if.c \ 374c87aefeSPatrick Mooney bootrom.c \ 384c87aefeSPatrick Mooney console.c \ 392b948146SAndy Fiddaman config.c \ 404c87aefeSPatrick Mooney fwctl.c \ 414c87aefeSPatrick Mooney gdb.c \ 424c87aefeSPatrick Mooney inout.c \ 434c87aefeSPatrick Mooney ioapic.c \ 444c87aefeSPatrick Mooney mem.c \ 454c87aefeSPatrick Mooney mevent.c \ 464c87aefeSPatrick Mooney mptbl.c \ 47069b2ef0SAndy Fiddaman net_backends.c \ 4884659b24SMichael Zeller net_utils.c \ 494c87aefeSPatrick Mooney pci_ahci.c \ 504c87aefeSPatrick Mooney pci_e82545.c \ 514c87aefeSPatrick Mooney pci_emul.c \ 524c87aefeSPatrick Mooney pci_fbuf.c \ 534c87aefeSPatrick Mooney pci_hostbridge.c \ 544c87aefeSPatrick Mooney pci_irq.c \ 554c87aefeSPatrick Mooney pci_lpc.c \ 564c87aefeSPatrick Mooney pci_nvme.c \ 574c87aefeSPatrick Mooney pci_passthru.c \ 584c87aefeSPatrick Mooney pci_uart.c \ 59aa693e99SJason King pci_virtio_9p.c \ 604c87aefeSPatrick Mooney pci_virtio_block.c \ 614c87aefeSPatrick Mooney pci_virtio_console.c \ 624c87aefeSPatrick Mooney pci_virtio_net.c \ 634c87aefeSPatrick Mooney pci_virtio_rnd.c \ 64b22a70abSPatrick Mooney pci_virtio_viona.c \ 654c87aefeSPatrick Mooney pci_xhci.c \ 666960cd89SAndy Fiddaman pctestdev.c \ 674c87aefeSPatrick Mooney pm.c \ 684c87aefeSPatrick Mooney post.c \ 692817ebc2SAndy Fiddaman privileges.c \ 704c87aefeSPatrick Mooney ps2kbd.c \ 714c87aefeSPatrick Mooney ps2mouse.c \ 724c87aefeSPatrick Mooney rfb.c \ 734c87aefeSPatrick Mooney rtc.c \ 744c87aefeSPatrick Mooney smbiostbl.c \ 754c87aefeSPatrick Mooney sockstream.c \ 764c87aefeSPatrick Mooney task_switch.c \ 774c87aefeSPatrick Mooney uart_emul.c \ 784c87aefeSPatrick Mooney usb_emul.c \ 794c87aefeSPatrick Mooney usb_mouse.c \ 804c87aefeSPatrick Mooney vga.c \ 814c87aefeSPatrick Mooney virtio.c \ 82154972afSPatrick Mooney vmgenc.c \ 834c87aefeSPatrick Mooney xmsr.c \ 844c87aefeSPatrick Mooney spinup_ap.c \ 854c87aefeSPatrick Mooney iov.c \ 864c87aefeSPatrick Mooney bhyve_sol_glue.c 874c87aefeSPatrick Mooney 88154972afSPatrick Mooney# We are not yet performing instruction emulation in userspace, so going to the 89154972afSPatrick Mooney# trouble of fixing the header tangle for this is not worth the complexity. 90154972afSPatrick Mooney #kernemu_dev.c \ 91154972afSPatrick Mooney 924c87aefeSPatrick Mooney# The virtio-scsi driver appears to include a slew of materials from FreeBSD's 934c87aefeSPatrick Mooney# native SCSI implementation. We will omit that complexity for now. 944c87aefeSPatrick Mooney #ctl_util.c \ 954c87aefeSPatrick Mooney #ctl_scsi_all.c \ 964c87aefeSPatrick Mooney #pci_virtio_scsi.c \ 974c87aefeSPatrick Mooney 9884659b24SMichael Zeller# The audio backend in FreeBSD is different than the one found in audio_oss.h 9984659b24SMichael Zeller #audio.c \ 10084659b24SMichael Zeller #hda_codec.c \ 10184659b24SMichael Zeller #pci_hda.c \ 10284659b24SMichael Zeller 103b0de25cbSAndy Fiddaman# The virtio input device expects to link to a FreeBSD /dev/input/eventX device 104b0de25cbSAndy Fiddaman #pci_virtio_input.c \ 105b0de25cbSAndy Fiddaman 1064c87aefeSPatrick MooneyOBJS = $(SRCS:.c=.o) 1074c87aefeSPatrick Mooney 1084c87aefeSPatrick MooneyMEVENT_TEST_PROG = mevent_test 1094c87aefeSPatrick MooneyMEVENT_TEST_SRCS = mevent.c mevent_test.c 1104c87aefeSPatrick MooneyMEVENT_TEST_OBJS = $(MEVENT_TEST_SRCS:.c=.o) 1114c87aefeSPatrick Mooney 112*311330e6SAndy FiddamanCLEANFILES = $(OBJS) $(MEVENT_TEST_OBJS) 113*311330e6SAndy FiddamanCLOBBERFILES = $(PROG) $(MEVENT_TEST_PROG) 1144c87aefeSPatrick Mooney 115069b2ef0SAndy FiddamanCFLAGS += $(CCVERBOSE) 116069b2ef0SAndy FiddamanCFLAGS += -_gcc=-Wimplicit-function-declaration -_gcc=-Wno-parentheses 117d0b3c59bSPatrick MooneyCPPFLAGS = -I$(COMPAT)/bhyve -I$(CONTRIB)/bhyve \ 118d0b3c59bSPatrick Mooney -I$(COMPAT)/bhyve/amd64 -I$(CONTRIB)/bhyve/amd64 \ 119d0b3c59bSPatrick Mooney -I$(CONTRIB)/bhyve/dev/usb/controller \ 120d0b3c59bSPatrick Mooney -I$(CONTRIB)/bhyve/dev/mii \ 121aa693e99SJason King -I$(SRC)/lib/lib9p/common \ 1224c87aefeSPatrick Mooney -I$(SRC)/uts/common/io/e1000api \ 1234c87aefeSPatrick Mooney $(CPPFLAGS.master) \ 1244c87aefeSPatrick Mooney -I$(SRC)/uts/i86pc/io/vmm \ 1254c87aefeSPatrick Mooney -I$(SRC)/uts/common \ 1264c87aefeSPatrick Mooney -I$(SRC)/uts/i86pc \ 1274c87aefeSPatrick Mooney -DWITHOUT_CAPSICUM 1284c87aefeSPatrick Mooney 1294c87aefeSPatrick Mooneypci_nvme.o := CERRWARN += -_gcc=-Wno-pointer-sign 1302b948146SAndy Fiddamanpci_nvme.o := CERRWARN += -_gcc10=-Wno-address-of-packed-member 131a73f8412SToomas Soomepci_nvme.o := CERRWARN += -_gcc11=-Wno-address-of-packed-member 132154972afSPatrick Mooneypci_nvme.o := SMOFF += kmalloc_wrong_size 1334c87aefeSPatrick Mooney 1342b948146SAndy Fiddamanpci_passthru.o := CERRWARN += -_gcc10=-Wno-address-of-packed-member 135a73f8412SToomas Soomepci_passthru.o := CERRWARN += -_gcc11=-Wno-address-of-packed-member 1362b948146SAndy Fiddaman 137aa693e99SJason Kingpci_virtio_9p.o := SMOFF += kmalloc_wrong_size 138aa693e99SJason King 1392b948146SAndy Fiddamanpci_xhci.o := CERRWARN += -_gcc10=-Wno-address-of-packed-member 140a73f8412SToomas Soomepci_xhci.o := CERRWARN += -_gcc11=-Wno-address-of-packed-member 1412b948146SAndy Fiddaman 1424c87aefeSPatrick MooneySMOFF += all_func_returns,leaks,no_if_block 1434c87aefeSPatrick Mooney 1444c87aefeSPatrick Mooney# Force c99 for everything 1454c87aefeSPatrick MooneyCSTD= $(CSTD_GNU99) 1464c87aefeSPatrick Mooney 14726624470SAndy Fiddaman$(PROG) := LDLIBS += \ 148aa693e99SJason King -l9p \ 14926624470SAndy Fiddaman -lsocket \ 15026624470SAndy Fiddaman -lnsl \ 15126624470SAndy Fiddaman -ldlpi \ 15226624470SAndy Fiddaman -ldladm \ 15326624470SAndy Fiddaman -lmd \ 1542b948146SAndy Fiddaman -lnvpair \ 155b0de25cbSAndy Fiddaman -lproc \ 15626624470SAndy Fiddaman -lcrypto \ 15726624470SAndy Fiddaman -luuid \ 15826624470SAndy Fiddaman -lvmmapi \ 15926624470SAndy Fiddaman -lz 16026624470SAndy FiddamanNATIVE_LIBS += libz.so libcrypto.so 161b0de25cbSAndy Fiddaman$(MEVENT_TEST_PROG) := LDLIBS += -lsocket -lproc 16290d74ed6SAndy Fiddaman$(PROG) := LDFLAGS += $(ZASLR) 1634c87aefeSPatrick Mooney 164bf21cd93STycho Nightingale.KEEP_STATE: 165bf21cd93STycho Nightingale 1664c87aefeSPatrick Mooneyall: $(PROG) $(MEVENT_TEST_PROG) $(SUBDIRS) 167bf21cd93STycho Nightingale 1684c87aefeSPatrick Mooney$(PROG): $(OBJS) 1694c87aefeSPatrick Mooney $(LINK.c) -o $@ $(OBJS) $(LDFLAGS) $(LDLIBS) 1704c87aefeSPatrick Mooney $(POST_PROCESS) 1714c87aefeSPatrick Mooney 1724c87aefeSPatrick Mooney$(MEVENT_TEST_PROG): $(MEVENT_TEST_OBJS) 1734c87aefeSPatrick Mooney $(LINK.c) -o $@ $(MEVENT_TEST_OBJS) $(LDFLAGS) $(LDLIBS) 1744c87aefeSPatrick Mooney 1754c87aefeSPatrick Mooneyinstall: all $(ROOTUSRSBINPROG) $(SUBDIRS) 1764c87aefeSPatrick Mooney 1774c87aefeSPatrick Mooneyclean: $(SUBDIRS) 178*311330e6SAndy Fiddaman $(RM) $(CLEANFILES) 1794c87aefeSPatrick Mooney 1804c87aefeSPatrick Mooneyclobber: clean $(SUBDIRS) 1814c87aefeSPatrick Mooney $(RM) $(CLOBBERFILES) 1824c87aefeSPatrick Mooney 183bf21cd93STycho Nightingale$(SUBDIRS): FRC 1844c87aefeSPatrick Mooney @cd $@; pwd; $(MAKE) $(TARGET) 185bf21cd93STycho Nightingale 186bf21cd93STycho NightingaleFRC: 187