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 2021 OmniOS Community Edition (OmniOSce) Association. 17# 18 19PROG = bhyve 20 21include ../Makefile.cmd 22include ../Makefile.cmd.64 23include ../Makefile.ctf 24 25SUBDIRS = test 26 27all := TARGET = all 28install := TARGET = install 29clean := TARGET = clean 30clobber := TARGET = clobber 31 32SRCS = acpi.c \ 33 atkbdc.c \ 34 bhyvegc.c \ 35 bhyverun.c \ 36 block_if.c \ 37 bootrom.c \ 38 console.c \ 39 config.c \ 40 fwctl.c \ 41 gdb.c \ 42 inout.c \ 43 ioapic.c \ 44 mem.c \ 45 mevent.c \ 46 mptbl.c \ 47 net_backends.c \ 48 net_utils.c \ 49 pci_ahci.c \ 50 pci_e82545.c \ 51 pci_emul.c \ 52 pci_fbuf.c \ 53 pci_hostbridge.c \ 54 pci_irq.c \ 55 pci_lpc.c \ 56 pci_nvme.c \ 57 pci_passthru.c \ 58 pci_uart.c \ 59 pci_virtio_block.c \ 60 pci_virtio_console.c \ 61 pci_virtio_net.c \ 62 pci_virtio_rnd.c \ 63 pci_virtio_viona.c \ 64 pci_xhci.c \ 65 pctestdev.c \ 66 pm.c \ 67 post.c \ 68 privileges.c \ 69 ps2kbd.c \ 70 ps2mouse.c \ 71 rfb.c \ 72 rtc.c \ 73 smbiostbl.c \ 74 sockstream.c \ 75 task_switch.c \ 76 uart_emul.c \ 77 usb_emul.c \ 78 usb_mouse.c \ 79 vga.c \ 80 virtio.c \ 81 vmgenc.c \ 82 xmsr.c \ 83 spinup_ap.c \ 84 iov.c \ 85 bhyve_sol_glue.c 86 87# We are not yet performing instruction emulation in userspace, so going to the 88# trouble of fixing the header tangle for this is not worth the complexity. 89 #kernemu_dev.c \ 90 91# The virtio-scsi driver appears to include a slew of materials from FreeBSD's 92# native SCSI implementation. We will omit that complexity for now. 93 #ctl_util.c \ 94 #ctl_scsi_all.c \ 95 #pci_virtio_scsi.c \ 96 97# The audio backend in FreeBSD is different than the one found in audio_oss.h 98 #audio.c \ 99 #hda_codec.c \ 100 #pci_hda.c \ 101 102OBJS = $(SRCS:.c=.o) 103 104CLOBBERFILES = $(ROOTUSRSBINPROG) 105 106MEVENT_TEST_PROG = mevent_test 107MEVENT_TEST_SRCS = mevent.c mevent_test.c 108MEVENT_TEST_OBJS = $(MEVENT_TEST_SRCS:.c=.o) 109 110CLEANFILES = $(PROG) $(MEVENT_TEST_PROG) $(MEVENT_TEST_OBJS) 111 112CFLAGS += $(CCVERBOSE) 113CFLAGS += -_gcc=-Wimplicit-function-declaration -_gcc=-Wno-parentheses 114CPPFLAGS = -I$(COMPAT)/bhyve -I$(CONTRIB)/bhyve \ 115 -I$(COMPAT)/bhyve/amd64 -I$(CONTRIB)/bhyve/amd64 \ 116 -I$(CONTRIB)/bhyve/dev/usb/controller \ 117 -I$(CONTRIB)/bhyve/dev/mii \ 118 -I$(SRC)/uts/common/io/e1000api \ 119 $(CPPFLAGS.master) \ 120 -I$(SRC)/uts/i86pc/io/vmm \ 121 -I$(SRC)/uts/common \ 122 -I$(SRC)/uts/i86pc \ 123 -DWITHOUT_CAPSICUM 124 125pci_nvme.o := CERRWARN += -_gcc=-Wno-pointer-sign 126pci_nvme.o := CERRWARN += -_gcc10=-Wno-address-of-packed-member 127pci_nvme.o := SMOFF += kmalloc_wrong_size 128 129pci_passthru.o := CERRWARN += -_gcc10=-Wno-address-of-packed-member 130 131pci_xhci.o := CERRWARN += -_gcc10=-Wno-address-of-packed-member 132 133SMOFF += all_func_returns,leaks,no_if_block 134 135# Force c99 for everything 136CSTD= $(CSTD_GNU99) 137 138$(PROG) := LDLIBS += \ 139 -lsocket \ 140 -lnsl \ 141 -ldlpi \ 142 -ldladm \ 143 -lmd \ 144 -lnvpair \ 145 -lcrypto \ 146 -luuid \ 147 -lvmmapi \ 148 -lz 149NATIVE_LIBS += libz.so libcrypto.so 150$(MEVENT_TEST_PROG) := LDLIBS += -lsocket 151$(PROG) := LDFLAGS += $(ZASLR) 152 153.KEEP_STATE: 154 155all: $(PROG) $(MEVENT_TEST_PROG) $(SUBDIRS) 156 157$(PROG): $(OBJS) 158 $(LINK.c) -o $@ $(OBJS) $(LDFLAGS) $(LDLIBS) 159 $(POST_PROCESS) 160 161$(MEVENT_TEST_PROG): $(MEVENT_TEST_OBJS) 162 $(LINK.c) -o $@ $(MEVENT_TEST_OBJS) $(LDFLAGS) $(LDLIBS) 163 164install: all $(ROOTUSRSBINPROG) $(SUBDIRS) 165 166clean: $(SUBDIRS) 167 $(RM) $(OBJS) $(CLEANFILES) 168 169clobber: clean $(SUBDIRS) 170 $(RM) $(CLOBBERFILES) 171 172$(SUBDIRS): FRC 173 @cd $@; pwd; $(MAKE) $(TARGET) 174 175FRC: 176