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