xref: /illumos-gate/usr/src/cmd/bhyve/Makefile (revision 90d74ed67b4bac801bf06d75825d9a9e4bd458d0)
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
162b948146SAndy Fiddaman# Copyright 2021 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			\
4784659b24SMichael Zeller	net_utils.c		\
484c87aefeSPatrick Mooney	pci_ahci.c		\
494c87aefeSPatrick Mooney	pci_e82545.c		\
504c87aefeSPatrick Mooney	pci_emul.c		\
514c87aefeSPatrick Mooney	pci_fbuf.c		\
524c87aefeSPatrick Mooney	pci_hostbridge.c	\
534c87aefeSPatrick Mooney	pci_irq.c		\
544c87aefeSPatrick Mooney	pci_lpc.c		\
554c87aefeSPatrick Mooney	pci_nvme.c		\
564c87aefeSPatrick Mooney	pci_passthru.c		\
574c87aefeSPatrick Mooney	pci_uart.c		\
584c87aefeSPatrick Mooney	pci_virtio_block.c	\
594c87aefeSPatrick Mooney	pci_virtio_console.c	\
604c87aefeSPatrick Mooney	pci_virtio_net.c	\
614c87aefeSPatrick Mooney	pci_virtio_rnd.c	\
62b22a70abSPatrick Mooney	pci_virtio_viona.c	\
634c87aefeSPatrick Mooney	pci_xhci.c		\
646960cd89SAndy Fiddaman	pctestdev.c		\
654c87aefeSPatrick Mooney	pm.c			\
664c87aefeSPatrick Mooney	post.c			\
674c87aefeSPatrick Mooney	ps2kbd.c		\
684c87aefeSPatrick Mooney	ps2mouse.c		\
694c87aefeSPatrick Mooney	rfb.c			\
704c87aefeSPatrick Mooney	rtc.c			\
714c87aefeSPatrick Mooney	smbiostbl.c		\
724c87aefeSPatrick Mooney	sockstream.c		\
734c87aefeSPatrick Mooney	task_switch.c		\
744c87aefeSPatrick Mooney	uart_emul.c		\
754c87aefeSPatrick Mooney	usb_emul.c		\
764c87aefeSPatrick Mooney	usb_mouse.c		\
774c87aefeSPatrick Mooney	vga.c			\
784c87aefeSPatrick Mooney	virtio.c		\
79154972afSPatrick Mooney	vmgenc.c		\
804c87aefeSPatrick Mooney	xmsr.c			\
814c87aefeSPatrick Mooney	spinup_ap.c		\
824c87aefeSPatrick Mooney	iov.c			\
834c87aefeSPatrick Mooney	bhyve_sol_glue.c
844c87aefeSPatrick Mooney
85154972afSPatrick Mooney# We are not yet performing instruction emulation in userspace, so going to the
86154972afSPatrick Mooney# trouble of fixing the header tangle for this is not worth the complexity.
87154972afSPatrick Mooney	#kernemu_dev.c		\
88154972afSPatrick Mooney
894c87aefeSPatrick Mooney# The virtio-scsi driver appears to include  a slew of materials from FreeBSD's
904c87aefeSPatrick Mooney# native SCSI implementation.  We will omit that complexity for now.
914c87aefeSPatrick Mooney	#ctl_util.c		\
924c87aefeSPatrick Mooney	#ctl_scsi_all.c		\
934c87aefeSPatrick Mooney	#pci_virtio_scsi.c	\
944c87aefeSPatrick Mooney
9584659b24SMichael Zeller# The audio backend in FreeBSD is different than the one found in audio_oss.h
9684659b24SMichael Zeller	#audio.c		\
9784659b24SMichael Zeller	#hda_codec.c		\
9884659b24SMichael Zeller	#pci_hda.c		\
9984659b24SMichael Zeller
10084659b24SMichael Zeller# The bhyve generic net-backend stuff has been ignored by us at the moment
1016960cd89SAndy Fiddaman# because illumos users prefer to use viona for its superior network perf.
10284659b24SMichael Zeller	#net_backends.c		\
10384659b24SMichael Zeller
1044c87aefeSPatrick Mooney
1054c87aefeSPatrick MooneyOBJS = $(SRCS:.c=.o)
1064c87aefeSPatrick Mooney
1074c87aefeSPatrick MooneyCLOBBERFILES =	$(ROOTUSRSBINPROG)
1084c87aefeSPatrick Mooney
1094c87aefeSPatrick MooneyMEVENT_TEST_PROG = mevent_test
1104c87aefeSPatrick MooneyMEVENT_TEST_SRCS = mevent.c mevent_test.c
1114c87aefeSPatrick MooneyMEVENT_TEST_OBJS = $(MEVENT_TEST_SRCS:.c=.o)
1124c87aefeSPatrick Mooney
1134c87aefeSPatrick MooneyCLEANFILES =	$(PROG) $(MEVENT_TEST_PROG) $(MEVENT_TEST_OBJS)
1144c87aefeSPatrick Mooney
1154c87aefeSPatrick MooneyCFLAGS +=	$(CCVERBOSE) -_gcc=-Wimplicit-function-declaration -_gcc=-Wno-parentheses
116d0b3c59bSPatrick MooneyCPPFLAGS =	-I$(COMPAT)/bhyve -I$(CONTRIB)/bhyve \
117d0b3c59bSPatrick Mooney		-I$(COMPAT)/bhyve/amd64 -I$(CONTRIB)/bhyve/amd64 \
118d0b3c59bSPatrick Mooney		-I$(CONTRIB)/bhyve/dev/usb/controller \
119d0b3c59bSPatrick Mooney		-I$(CONTRIB)/bhyve/dev/mii \
1204c87aefeSPatrick Mooney		-I$(SRC)/uts/common/io/e1000api \
1214c87aefeSPatrick Mooney		$(CPPFLAGS.master) \
1224c87aefeSPatrick Mooney		-I$(SRC)/uts/i86pc/io/vmm \
1234c87aefeSPatrick Mooney		-I$(SRC)/uts/common \
1244c87aefeSPatrick Mooney		-I$(SRC)/uts/i86pc \
1254c87aefeSPatrick Mooney		-DWITHOUT_CAPSICUM
1264c87aefeSPatrick Mooney
1274c87aefeSPatrick Mooneypci_nvme.o := CERRWARN += -_gcc=-Wno-pointer-sign
1282b948146SAndy Fiddamanpci_nvme.o := CERRWARN += -_gcc10=-Wno-address-of-packed-member
129154972afSPatrick Mooneypci_nvme.o := SMOFF += kmalloc_wrong_size
1304c87aefeSPatrick Mooney
1312b948146SAndy Fiddamanpci_passthru.o := CERRWARN += -_gcc10=-Wno-address-of-packed-member
1322b948146SAndy Fiddaman
1332b948146SAndy Fiddamanpci_xhci.o := CERRWARN += -_gcc10=-Wno-address-of-packed-member
1342b948146SAndy Fiddaman
1354c87aefeSPatrick MooneySMOFF += all_func_returns,leaks,no_if_block
1364c87aefeSPatrick Mooney
1374c87aefeSPatrick Mooney# Force c99 for everything
1384c87aefeSPatrick MooneyCSTD=		$(CSTD_GNU99)
1394c87aefeSPatrick Mooney
14026624470SAndy Fiddaman$(PROG) := LDLIBS += \
14126624470SAndy Fiddaman	-lsocket \
14226624470SAndy Fiddaman	-lnsl \
14326624470SAndy Fiddaman	-ldlpi \
14426624470SAndy Fiddaman	-ldladm \
14526624470SAndy Fiddaman	-lmd \
1462b948146SAndy Fiddaman	-lnvpair \
14726624470SAndy Fiddaman	-lcrypto \
14826624470SAndy Fiddaman	-luuid \
14926624470SAndy Fiddaman	-lvmmapi \
15026624470SAndy Fiddaman	-lz
15126624470SAndy FiddamanNATIVE_LIBS += libz.so libcrypto.so
1524c87aefeSPatrick Mooney$(MEVENT_TEST_PROG) := LDLIBS += -lsocket
153*90d74ed6SAndy Fiddaman$(PROG) := LDFLAGS += $(ZASLR)
1544c87aefeSPatrick Mooney
155bf21cd93STycho Nightingale.KEEP_STATE:
156bf21cd93STycho Nightingale
1574c87aefeSPatrick Mooneyall: $(PROG) $(MEVENT_TEST_PROG) $(SUBDIRS)
158bf21cd93STycho Nightingale
1594c87aefeSPatrick Mooney$(PROG): $(OBJS)
1604c87aefeSPatrick Mooney	$(LINK.c) -o $@ $(OBJS) $(LDFLAGS) $(LDLIBS)
1614c87aefeSPatrick Mooney	$(POST_PROCESS)
1624c87aefeSPatrick Mooney
1634c87aefeSPatrick Mooney$(MEVENT_TEST_PROG): $(MEVENT_TEST_OBJS)
1644c87aefeSPatrick Mooney	$(LINK.c) -o $@ $(MEVENT_TEST_OBJS) $(LDFLAGS) $(LDLIBS)
1654c87aefeSPatrick Mooney
1664c87aefeSPatrick Mooneyinstall: all $(ROOTUSRSBINPROG) $(SUBDIRS)
1674c87aefeSPatrick Mooney
1684c87aefeSPatrick Mooneyclean: $(SUBDIRS)
1694c87aefeSPatrick Mooney	$(RM) $(OBJS) $(CLEANFILES)
1704c87aefeSPatrick Mooney
1714c87aefeSPatrick Mooneyclobber: clean $(SUBDIRS)
1724c87aefeSPatrick Mooney	$(RM) $(CLOBBERFILES)
1734c87aefeSPatrick Mooney
174bf21cd93STycho Nightingale$(SUBDIRS): FRC
1754c87aefeSPatrick Mooney	@cd $@; pwd; $(MAKE) $(TARGET)
176bf21cd93STycho Nightingale
177bf21cd93STycho NightingaleFRC:
178