xref: /illumos-gate/usr/src/cmd/bhyve/Makefile (revision 311330e6823a3a919ff127757c2f0cf9eb17aa0e)
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