xref: /illumos-gate/usr/src/cmd/bhyve/Makefile.com (revision 2aa8db5932a99c01d32f2aea7dbbf15b4898169b)
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 2020 Joyent, Inc.
15# Copyright 2020 Oxide Computer Company
16# Copyright 2024 OmniOS Community Edition (OmniOSce) Association.
17# Copyright 2026 Hans Rosenfeld
18#
19
20PROG =		bhyve
21
22include $(SRC)/cmd/Makefile.cmd
23include $(SRC)/cmd/Makefile.cmd.64
24include $(SRC)/cmd/Makefile.ctf
25
26COMMON_OBJS = \
27	acpi.o			\
28	acpi_device.o		\
29	basl.o			\
30	bhyvegc.o		\
31	bhyverun.o		\
32	block_if.o		\
33	bootrom.o		\
34	config.o		\
35	console.o		\
36	crc16.o			\
37	gdb.o			\
38	hexdump.o		\
39	ilstr.o			\
40	iov.o			\
41	mem.o			\
42	mevent.o		\
43	net_backend_dlpi.o	\
44	net_backends.o		\
45	net_utils.o		\
46	pci_ahci.o		\
47	pci_e82545.o		\
48	pci_emul.o		\
49	pci_hostbridge.o	\
50	pci_irq.o		\
51	pci_nvme.o		\
52	pci_uart.o		\
53	pci_virtio_9p.o		\
54	pci_virtio_block.o	\
55	pci_virtio_console.o	\
56	pci_virtio_net.o	\
57	pci_virtio_rnd.o	\
58	pci_virtio_scsi.o	\
59	pci_virtio_scsi_uscsi.o	\
60	pci_virtio_viona.o	\
61	pci_xhci.o		\
62	privileges.o		\
63	qemu_fwcfg.o		\
64	qemu_loader.o		\
65	smbiostbl.o		\
66	sockstream.o		\
67	tpm_device.o		\
68	tpm_emul_passthru.o	\
69	tpm_emul_swtpm.o	\
70	tpm_intf_crb.o		\
71	tpm_ppi_qemu.o		\
72	uart_backend.o		\
73	uart_emul.o		\
74	usb_emul.o		\
75	usb_mouse.o		\
76	virtio.o		\
77	vmgenc.o		\
78	bhyve_sol_glue.o
79
80CFLAGS64 +=	$(CCVERBOSE)
81CFLAGS64 +=	-_gcc=-Wimplicit-function-declaration
82
83CPPFLAGS =	-I../common \
84		-I$(COMPAT)/bhyve -I$(CONTRIB)/bhyve \
85		-I$(COMPAT)/bhyve/amd64 -I$(CONTRIB)/bhyve/amd64 \
86		-I$(CONTRIB)/bhyve/dev/usb/controller \
87		-I$(CONTRIB)/bhyve/dev/mii \
88		-I$(SRC)/lib/lib9p/common \
89		-I$(SRC)/uts/common/io/e1000api \
90		$(CPPFLAGS.master) \
91		-I$(SRC)/uts/intel/io/vmm \
92		-I$(SRC)/uts/common \
93		-I$(SRC)/uts/intel \
94		-DWITHOUT_CAPSICUM \
95		-DOPENSSL_API_COMPAT=10101
96
97SMOFF += all_func_returns
98pics/rfb.o := SMOFF=
99pics/pci_virtio_scsi_uscsi.o := SMOFF=
100pics/pci_virtio_scsi_uscsi.o := CFLAGS64 += -_gcc=-Wswitch-default
101
102CSTD=		$(CSTD_GNU99)
103
104$(PROG) := LDLIBS += \
105	-l9p \
106	-lcmdutils \
107	-lcrypto \
108	-ldladm \
109	-ldlpi \
110	-lidspace \
111	-lmd \
112	-lnsl \
113	-lnvpair \
114	-lscsi \
115	-lsocket \
116	-lumem \
117	-luuid \
118	-lvmmapi \
119	-lz
120NATIVE_LIBS += libz.so libcrypto.so
121$(PROG) := LDFLAGS += $(ZASLR)
122$(PROG) := LDFLAGS += -Wl,-L$(ROOT)/usr/lib/scsi/$(MACH64)
123$(PROG) := LDFLAGS += -Wl,-R/usr/lib/scsi/$(MACH64)
124
125OBJS =		$(BHYVE_OBJS:%=pics/%)
126
127CLEANFILES =	$(OBJS)
128CLOBBERFILES =	$(PROG)
129
130all: pics $(PROG)
131
132clean:
133	$(RM) $(CLEANFILES)
134
135clobber: clean
136	$(RM) $(CLOBBERFILES)
137
138pics: FRC
139	$(MKDIR) -p $@
140
141pics/%.o: ../common/%.c
142	$(COMPILE.c) $< -o $@
143	$(POST_PROCESS_O)
144
145pics/%.o: %.c
146	$(COMPILE.c) $< -o $@
147	$(POST_PROCESS_O)
148
149pics/%.o: $(SRC)/common/hexdump/%.c
150	$(COMPILE.c) $< -o $@
151	$(POST_PROCESS_O)
152
153pics/%.o: $(SRC)/common/ilstr/%.c
154	$(COMPILE.c) $< -o $@
155	$(POST_PROCESS_O)
156
157$(PROG): pics $(OBJS)
158	$(LINK.c) -o $@ $(OBJS) $(LDFLAGS) $(LDLIBS)
159	$(POST_PROCESS)
160
161FRC:
162