xref: /illumos-gate/usr/src/cmd/bhyve/Makefile (revision 2a93e0bc6b60286283274376cae765bed0c59594)
1#
2# This file and its contents are supplied under the terms of the
3# Common Development and Distribution License ("CDDL"), version 1.0.
4# You may only use this file in accordance with the terms of version
5# 1.0 of the CDDL.
6#
7# A full copy of the text of the CDDL should have accompanied this
8# source.  A copy of the CDDL is also available via the Internet at
9# http://www.illumos.org/license/CDDL.
10#
11
12#
13# Copyright 2014 Pluribus Networks Inc.
14# Copyright 2019 Joyent, Inc.
15#
16
17PROG =		bhyve
18
19include ../Makefile.cmd
20include ../Makefile.cmd.64
21include ../Makefile.ctf
22
23SUBDIRS = test
24
25all	:=	TARGET = all
26install	:=	TARGET = install
27clean	:=	TARGET = clean
28clobber	:=	TARGET = clobber
29
30SRCS =	acpi.c			\
31	atkbdc.c		\
32	bhyvegc.c		\
33	bhyverun.c		\
34	block_if.c		\
35	bootrom.c		\
36	console.c		\
37	consport.c		\
38	dbgport.c		\
39	fwctl.c			\
40	gdb.c			\
41	inout.c			\
42	ioapic.c		\
43	mem.c			\
44	mevent.c		\
45	mptbl.c			\
46	net_utils.c		\
47	pci_ahci.c		\
48	pci_e82545.c		\
49	pci_emul.c		\
50	pci_fbuf.c		\
51	pci_hostbridge.c	\
52	pci_irq.c		\
53	pci_lpc.c		\
54	pci_nvme.c		\
55	pci_passthru.c		\
56	pci_uart.c		\
57	pci_virtio_block.c	\
58	pci_virtio_console.c	\
59	pci_virtio_net.c	\
60	pci_virtio_rnd.c	\
61	pci_virtio_viona.c	\
62	pci_xhci.c		\
63	pm.c			\
64	post.c			\
65	ps2kbd.c		\
66	ps2mouse.c		\
67	rfb.c			\
68	rtc.c			\
69	smbiostbl.c		\
70	sockstream.c		\
71	task_switch.c		\
72	uart_emul.c		\
73	usb_emul.c		\
74	usb_mouse.c		\
75	vga.c			\
76	virtio.c		\
77	vmm_instruction_emul.c	\
78	xmsr.c			\
79	spinup_ap.c		\
80	iov.c			\
81	bhyve_sol_glue.c
82
83# The virtio-scsi driver appears to include  a slew of materials from FreeBSD's
84# native SCSI implementation.  We will omit that complexity for now.
85	#ctl_util.c		\
86	#ctl_scsi_all.c		\
87	#pci_virtio_scsi.c	\
88
89# The audio backend in FreeBSD is different than the one found in audio_oss.h
90	#audio.c		\
91	#hda_codec.c		\
92	#pci_hda.c		\
93
94# The bhyve generic net-backend stuff has been ignored by us at the moment
95# because SmartOS users prefer to use viona for its superior network perf.
96	#net_backends.c		\
97
98
99OBJS = $(SRCS:.c=.o)
100
101CLOBBERFILES =	$(ROOTUSRSBINPROG)
102
103MEVENT_TEST_PROG = mevent_test
104MEVENT_TEST_SRCS = mevent.c mevent_test.c
105MEVENT_TEST_OBJS = $(MEVENT_TEST_SRCS:.c=.o)
106
107CLEANFILES =	$(PROG) $(MEVENT_TEST_PROG) $(MEVENT_TEST_OBJS)
108
109CFLAGS +=	$(CCVERBOSE) -_gcc=-Wimplicit-function-declaration -_gcc=-Wno-parentheses
110CPPFLAGS =	-I$(COMPAT)/freebsd -I$(CONTRIB)/freebsd \
111		-I$(COMPAT)/freebsd/amd64 -I$(CONTRIB)/freebsd/amd64 \
112		-I$(CONTRIB)/freebsd/dev/usb/controller \
113		-I$(CONTRIB)/freebsd/dev/mii \
114		-I$(SRC)/uts/common/io/e1000api \
115		$(CPPFLAGS.master) \
116		-I$(SRC)/uts/i86pc/io/vmm \
117		-I$(SRC)/uts/common \
118		-I$(SRC)/uts/i86pc \
119		-DWITHOUT_CAPSICUM
120
121# Disable the crypto code until it is wired up
122CPPFLAGS +=	-DNO_OPENSSL
123
124pci_nvme.o := CERRWARN += -_gcc=-Wno-pointer-sign
125
126SMOFF += all_func_returns,leaks,no_if_block
127
128# Force c99 for everything
129CSTD=		$(CSTD_GNU99)
130C99MODE=	-xc99=%all
131
132$(PROG) := LDLIBS += -lsocket -lnsl -ldlpi -ldladm -lmd -luuid -lvmmapi -lz
133$(MEVENT_TEST_PROG) := LDLIBS += -lsocket
134
135.KEEP_STATE:
136
137all: $(PROG) $(MEVENT_TEST_PROG) $(SUBDIRS)
138
139$(PROG): $(OBJS)
140	$(LINK.c) -o $@ $(OBJS) $(LDFLAGS) $(LDLIBS)
141	$(POST_PROCESS)
142
143$(MEVENT_TEST_PROG): $(MEVENT_TEST_OBJS)
144	$(LINK.c) -o $@ $(MEVENT_TEST_OBJS) $(LDFLAGS) $(LDLIBS)
145
146install: all $(ROOTUSRSBINPROG) $(SUBDIRS)
147
148clean: $(SUBDIRS)
149	$(RM) $(OBJS) $(CLEANFILES)
150
151clobber: clean $(SUBDIRS)
152	$(RM) $(CLOBBERFILES)
153
154$(SUBDIRS): FRC
155	@cd $@; pwd; $(MAKE) $(TARGET)
156
157FRC:
158
159%.o: $(SRC)/uts/i86pc/io/vmm/%.c
160	$(COMPILE.c) $<
161	$(POST_PROCESS_O)
162