xref: /illumos-gate/usr/src/cmd/bhyve/Makefile (revision 32640292)
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
16311330e6SAndy 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			\
33*32640292SAndy Fiddaman	acpi_device.c		\
344c87aefeSPatrick Mooney	atkbdc.c		\
3559d65d31SAndy Fiddaman	basl.c			\
364c87aefeSPatrick Mooney	bhyvegc.c		\
374c87aefeSPatrick Mooney	bhyverun.c		\
384c87aefeSPatrick Mooney	block_if.c		\
394c87aefeSPatrick Mooney	bootrom.c		\
402b948146SAndy Fiddaman	config.c		\
41*32640292SAndy Fiddaman	console.c		\
42*32640292SAndy Fiddaman	crc16.c			\
43*32640292SAndy Fiddaman	e820.c			\
444c87aefeSPatrick Mooney	fwctl.c			\
454c87aefeSPatrick Mooney	gdb.c			\
4659d65d31SAndy Fiddaman	hexdump.c		\
474c87aefeSPatrick Mooney	inout.c			\
484c87aefeSPatrick Mooney	ioapic.c		\
49*32640292SAndy Fiddaman	iov.c			\
504c87aefeSPatrick Mooney	mem.c			\
514c87aefeSPatrick Mooney	mevent.c		\
524c87aefeSPatrick Mooney	mptbl.c			\
53069b2ef0SAndy Fiddaman	net_backends.c		\
5484659b24SMichael Zeller	net_utils.c		\
554c87aefeSPatrick Mooney	pci_ahci.c		\
564c87aefeSPatrick Mooney	pci_e82545.c		\
574c87aefeSPatrick Mooney	pci_emul.c		\
584c87aefeSPatrick Mooney	pci_fbuf.c		\
594c87aefeSPatrick Mooney	pci_hostbridge.c	\
604c87aefeSPatrick Mooney	pci_irq.c		\
614c87aefeSPatrick Mooney	pci_lpc.c		\
624c87aefeSPatrick Mooney	pci_nvme.c		\
634c87aefeSPatrick Mooney	pci_passthru.c		\
644c87aefeSPatrick Mooney	pci_uart.c		\
65aa693e99SJason King	pci_virtio_9p.c		\
664c87aefeSPatrick Mooney	pci_virtio_block.c	\
674c87aefeSPatrick Mooney	pci_virtio_console.c	\
684c87aefeSPatrick Mooney	pci_virtio_net.c	\
694c87aefeSPatrick Mooney	pci_virtio_rnd.c	\
70b22a70abSPatrick Mooney	pci_virtio_viona.c	\
714c87aefeSPatrick Mooney	pci_xhci.c		\
726960cd89SAndy Fiddaman	pctestdev.c		\
734c87aefeSPatrick Mooney	pm.c			\
744c87aefeSPatrick Mooney	post.c			\
752817ebc2SAndy Fiddaman	privileges.c		\
764c87aefeSPatrick Mooney	ps2kbd.c		\
774c87aefeSPatrick Mooney	ps2mouse.c		\
78*32640292SAndy Fiddaman	qemu_fwcfg.c		\
79*32640292SAndy Fiddaman	qemu_loader.c		\
804c87aefeSPatrick Mooney	rfb.c			\
814c87aefeSPatrick Mooney	rtc.c			\
824c87aefeSPatrick Mooney	smbiostbl.c		\
834c87aefeSPatrick Mooney	sockstream.c		\
84*32640292SAndy Fiddaman	spinup_ap.c		\
854c87aefeSPatrick Mooney	task_switch.c		\
86*32640292SAndy Fiddaman	tpm_device.c		\
87*32640292SAndy Fiddaman	tpm_emul_passthru.c	\
88*32640292SAndy Fiddaman	tpm_intf_crb.c		\
89*32640292SAndy Fiddaman	tpm_ppi_qemu.c		\
904c87aefeSPatrick Mooney	uart_emul.c		\
914c87aefeSPatrick Mooney	usb_emul.c		\
924c87aefeSPatrick Mooney	usb_mouse.c		\
934c87aefeSPatrick Mooney	vga.c			\
944c87aefeSPatrick Mooney	virtio.c		\
95154972afSPatrick Mooney	vmgenc.c		\
964c87aefeSPatrick Mooney	xmsr.c			\
974c87aefeSPatrick Mooney	bhyve_sol_glue.c
984c87aefeSPatrick Mooney
99154972afSPatrick Mooney# We are not yet performing instruction emulation in userspace, so going to the
100154972afSPatrick Mooney# trouble of fixing the header tangle for this is not worth the complexity.
101154972afSPatrick Mooney	#kernemu_dev.c		\
102154972afSPatrick Mooney
103b0de25cbSAndy Fiddaman# The virtio-scsi driver appears to include a slew of materials from FreeBSD's
1044c87aefeSPatrick Mooney# native SCSI implementation.  We will omit that complexity for now.
1054c87aefeSPatrick Mooney	#ctl_util.c		\
1064c87aefeSPatrick Mooney	#ctl_scsi_all.c		\
1074c87aefeSPatrick Mooney	#pci_virtio_scsi.c	\
1084c87aefeSPatrick Mooney
10984659b24SMichael Zeller# The audio backend in FreeBSD is different than the one found in audio_oss.h
11084659b24SMichael Zeller	#audio.c		\
11184659b24SMichael Zeller	#hda_codec.c		\
11284659b24SMichael Zeller	#pci_hda.c		\
11384659b24SMichael Zeller
114b0de25cbSAndy Fiddaman# The virtio input device expects to link to a FreeBSD /dev/input/eventX device
115b0de25cbSAndy Fiddaman	#pci_virtio_input.c	\
116b0de25cbSAndy Fiddaman
1174c87aefeSPatrick MooneyOBJS = $(SRCS:.c=.o)
1184c87aefeSPatrick Mooney
1194c87aefeSPatrick MooneyMEVENT_TEST_PROG = mevent_test
1204c87aefeSPatrick MooneyMEVENT_TEST_SRCS = mevent.c mevent_test.c
1214c87aefeSPatrick MooneyMEVENT_TEST_OBJS = $(MEVENT_TEST_SRCS:.c=.o)
1224c87aefeSPatrick Mooney
123311330e6SAndy FiddamanCLEANFILES =	$(OBJS) $(MEVENT_TEST_OBJS)
124311330e6SAndy FiddamanCLOBBERFILES =	$(PROG) $(MEVENT_TEST_PROG)
1254c87aefeSPatrick Mooney
126069b2ef0SAndy FiddamanCFLAGS +=	$(CCVERBOSE)
12759d65d31SAndy FiddamanCFLAGS +=	-_gcc=-Wimplicit-function-declaration
128d0b3c59bSPatrick MooneyCPPFLAGS =	-I$(COMPAT)/bhyve -I$(CONTRIB)/bhyve \
129d0b3c59bSPatrick Mooney		-I$(COMPAT)/bhyve/amd64 -I$(CONTRIB)/bhyve/amd64 \
130d0b3c59bSPatrick Mooney		-I$(CONTRIB)/bhyve/dev/usb/controller \
131d0b3c59bSPatrick Mooney		-I$(CONTRIB)/bhyve/dev/mii \
132aa693e99SJason King		-I$(SRC)/lib/lib9p/common \
1334c87aefeSPatrick Mooney		-I$(SRC)/uts/common/io/e1000api \
1344c87aefeSPatrick Mooney		$(CPPFLAGS.master) \
1357c8c0b82SPatrick Mooney		-I$(SRC)/uts/intel/io/vmm \
1364c87aefeSPatrick Mooney		-I$(SRC)/uts/common \
1377c8c0b82SPatrick Mooney		-I$(SRC)/uts/intel \
138*32640292SAndy Fiddaman		-DWITHOUT_CAPSICUM \
139*32640292SAndy Fiddaman		-DOPENSSL_API_COMPAT=0x10100000L
1404c87aefeSPatrick Mooney
14159d65d31SAndy FiddamanSMOFF += all_func_returns
1421aa1f41fSAndy Fiddamanrfb.o := SMOFF=
1431aa1f41fSAndy Fiddaman
1444c87aefeSPatrick Mooney# Force c99 for everything
1454c87aefeSPatrick MooneyCSTD=		$(CSTD_GNU99)
1464c87aefeSPatrick Mooney
14726624470SAndy Fiddaman$(PROG) := LDLIBS += \
148aa693e99SJason King	-l9p \
1491aa1f41fSAndy Fiddaman	-lcmdutils \
1501aa1f41fSAndy Fiddaman	-lcrypto \
15126624470SAndy Fiddaman	-ldladm \
1521aa1f41fSAndy Fiddaman	-ldlpi \
1531aa1f41fSAndy Fiddaman	-lidspace \
15426624470SAndy Fiddaman	-lmd \
1551aa1f41fSAndy Fiddaman	-lnsl \
1562b948146SAndy Fiddaman	-lnvpair \
1571aa1f41fSAndy Fiddaman	-lsocket \
1581aa1f41fSAndy Fiddaman	-lumem \
15926624470SAndy Fiddaman	-luuid \
16026624470SAndy Fiddaman	-lvmmapi \
16126624470SAndy Fiddaman	-lz
16226624470SAndy FiddamanNATIVE_LIBS += libz.so libcrypto.so
163e8d71297SAndy Fiddaman$(MEVENT_TEST_PROG) := LDLIBS += -lsocket
16490d74ed6SAndy Fiddaman$(PROG) := LDFLAGS += $(ZASLR)
1654c87aefeSPatrick Mooney
166bf21cd93STycho Nightingale.KEEP_STATE:
167bf21cd93STycho Nightingale
1684c87aefeSPatrick Mooneyall: $(PROG) $(MEVENT_TEST_PROG) $(SUBDIRS)
1694c87aefeSPatrick Mooney
1704c87aefeSPatrick Mooney$(PROG): $(OBJS)
1714c87aefeSPatrick Mooney	$(LINK.c) -o $@ $(OBJS) $(LDFLAGS) $(LDLIBS)
1724c87aefeSPatrick Mooney	$(POST_PROCESS)
1734c87aefeSPatrick Mooney
1744c87aefeSPatrick Mooney$(MEVENT_TEST_PROG): $(MEVENT_TEST_OBJS)
1754c87aefeSPatrick Mooney	$(LINK.c) -o $@ $(MEVENT_TEST_OBJS) $(LDFLAGS) $(LDLIBS)
1764c87aefeSPatrick Mooney
1774c87aefeSPatrick Mooneyinstall: all $(ROOTUSRSBINPROG) $(SUBDIRS)
1784c87aefeSPatrick Mooney
1794c87aefeSPatrick Mooneyclean: $(SUBDIRS)
180311330e6SAndy Fiddaman	$(RM) $(CLEANFILES)
1814c87aefeSPatrick Mooney
1824c87aefeSPatrick Mooneyclobber: clean $(SUBDIRS)
1834c87aefeSPatrick Mooney	$(RM) $(CLOBBERFILES)
184bf21cd93STycho Nightingale
1854c87aefeSPatrick Mooney$(SUBDIRS): FRC
1864c87aefeSPatrick Mooney	@cd $@; pwd; $(MAKE) $(TARGET)
187bf21cd93STycho Nightingale
188bf21cd93STycho NightingaleFRC:
189