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