[7548] | 1 | # $Id: Makefile.kmk 98416 2023-02-01 16:25:17Z vboxsync $
|
---|
| 2 | ## @file
|
---|
| 3 | # Sub-Makefile for the FreeBSD guest additions base directory.
|
---|
| 4 | #
|
---|
| 5 |
|
---|
| 6 | #
|
---|
[98103] | 7 | # Copyright (C) 2008-2023 Oracle and/or its affiliates.
|
---|
[7548] | 8 | #
|
---|
[96407] | 9 | # This file is part of VirtualBox base platform packages, as
|
---|
| 10 | # available from https://www.virtualbox.org.
|
---|
[7548] | 11 | #
|
---|
[96407] | 12 | # This program is free software; you can redistribute it and/or
|
---|
| 13 | # modify it under the terms of the GNU General Public License
|
---|
| 14 | # as published by the Free Software Foundation, in version 3 of the
|
---|
| 15 | # License.
|
---|
| 16 | #
|
---|
| 17 | # This program is distributed in the hope that it will be useful, but
|
---|
| 18 | # WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
| 19 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
---|
| 20 | # General Public License for more details.
|
---|
| 21 | #
|
---|
| 22 | # You should have received a copy of the GNU General Public License
|
---|
| 23 | # along with this program; if not, see <https://www.gnu.org/licenses>.
|
---|
| 24 | #
|
---|
| 25 | # SPDX-License-Identifier: GPL-3.0-only
|
---|
| 26 | #
|
---|
[7548] | 27 |
|
---|
[10129] | 28 | SUB_DEPTH = ../../../..
|
---|
[41477] | 29 | include $(KBUILD_PATH)/subheader.kmk
|
---|
[7548] | 30 |
|
---|
[8757] | 31 | ifneq ($(KBUILD_HOST),freebsd)
|
---|
[98416] | 32 | $(error "The FreeBSD guest additions installer can only be built on FreeBSD!")
|
---|
[7548] | 33 | endif
|
---|
| 34 |
|
---|
[12446] | 35 | # Include sub-makefiles.
|
---|
[22575] | 36 | #include $(PATH_SUB_CURRENT)/vboxvfs/Makefile.kmk
|
---|
[25590] | 37 | include $(PATH_SUB_CURRENT)/drm/Makefile.kmk
|
---|
[7548] | 38 |
|
---|
[25590] | 39 | #
|
---|
[12446] | 40 | # Globals
|
---|
[25590] | 41 | #
|
---|
| 42 | VBOX_FBSD_ADD_INS_OUT_DIR := $(PATH_TARGET)/Additions/Installer/freebsd
|
---|
| 43 | BLDDIRS += \
|
---|
[98416] | 44 | $(VBOX_FBSD_ADD_INS_OUT_DIR) \
|
---|
| 45 | $(VBOX_FBSD_ADD_INS_OUT_DIR)/module
|
---|
[7548] | 46 | VBOX_PATH_FREEBSD_ADDITION_INSTALLER := $(PATH_SUB_CURRENT)/Installer
|
---|
[25590] | 47 | VBOX_PATH_X11_ADDITION_INSTALLER := $(PATH_ROOT)/src/VBox/Additions/x11/Installer
|
---|
[7548] | 48 |
|
---|
[25590] | 49 |
|
---|
| 50 | #
|
---|
| 51 | # Targets
|
---|
| 52 | #
|
---|
| 53 | ifndef VBOX_OSE
|
---|
| 54 | BLDDIRS += $(VBOX_FBSD_ADD_INS_OUT_DIR) $(VBOX_FBSD_ADD_INS_OUT_DIR)/module
|
---|
[38082] | 55 | PACKING += $(PATH_STAGE_BIN)/additions/VBoxFreeBSDAdditions.tbz
|
---|
[25590] | 56 | OTHER_CLEAN += $(PACKING)
|
---|
[7548] | 57 | endif
|
---|
| 58 |
|
---|
| 59 |
|
---|
[25590] | 60 | #
|
---|
| 61 | # Files to install
|
---|
| 62 | #
|
---|
| 63 | VBOX_FBSD_ADD_STRIP_BIN = \
|
---|
| 64 | VBoxService \
|
---|
| 65 | VBoxClient \
|
---|
| 66 | VBoxControl \
|
---|
| 67 | vboxmouse_drv_70.so \
|
---|
| 68 | vboxmouse_drv_71.so \
|
---|
| 69 | vboxmouse_drv_14.so \
|
---|
| 70 | vboxmouse_drv_15.so \
|
---|
| 71 | vboxmouse_drv_16.so \
|
---|
| 72 | vboxmouse_drv_17.so \
|
---|
| 73 | vboxvideo_drv_70.so \
|
---|
| 74 | vboxvideo_drv_71.so \
|
---|
| 75 | vboxvideo_drv_13.so \
|
---|
| 76 | vboxvideo_drv_14.so \
|
---|
| 77 | vboxvideo_drv_15.so \
|
---|
| 78 | vboxvideo_drv_16.so \
|
---|
[80278] | 79 | vboxvideo_drv_17.so
|
---|
[25590] | 80 |
|
---|
| 81 | VBOX_FBSD_ADD_MODULES = \
|
---|
| 82 | vboxguest \
|
---|
| 83 | vboxvideo_drm
|
---|
| 84 |
|
---|
| 85 | #
|
---|
| 86 | # All the bin files that go into the archives.
|
---|
| 87 | #
|
---|
| 88 | VBOX_FBSD_ADD_DBG_SYM_FILES := $(addsuffix .dbgsym,$(VBOX_FBSD_ADD_STRIP_BIN))
|
---|
| 89 | VBOX_FBSD_ADD_INS_FILES := $(addprefix $(VBOX_FBSD_ADD_INS_OUT_DIR)/,$(VBOX_FBSD_ADD_STRIP_BIN) $(VBOX_FBSD_ADD_STRIP_OBJ) $(VBOX_FBSD_ADD_DBG_SYM_FILES))
|
---|
| 90 | VBOX_FBSD_ADD_INS_MODULES := $(addprefix $(VBOX_FBSD_ADD_INS_OUT_DIR)/module/,$(VBOX_FBSD_ADD_MODULES))
|
---|
| 91 |
|
---|
[64525] | 92 | # Cleanup of the installer directory files
|
---|
[25590] | 93 | OTHER_CLEAN += $(VBOX_FBSD_ADD_INS_FILES)) $(VBOX_FBSD_ADD_INS_MODULES)
|
---|
| 94 |
|
---|
| 95 | # pattern rule for copying the debug info from the VBOX_FBSD_ADD_STRIP_BIN files to the installation directory
|
---|
| 96 | $(addprefix $(VBOX_FBSD_ADD_INS_OUT_DIR)/,$(VBOX_FBSD_ADD_DBG_SYM_FILES)): \
|
---|
[38082] | 97 | $(VBOX_FBSD_ADD_INS_OUT_DIR)/%.dbgsym : $(PATH_STAGE_BIN)/additions/% | $$(dir $$@)
|
---|
[25590] | 98 | $(call MSG_TOOL,copydbg,$<,$@)
|
---|
| 99 | $(QUIET)objcopy --only-keep-debug $< $@
|
---|
| 100 |
|
---|
| 101 | # pattern rule for stripping and copying the VBOX_FBSD_ADD_STRIP_BIN files to the installation directory
|
---|
| 102 | $(addprefix $(VBOX_FBSD_ADD_INS_OUT_DIR)/,$(VBOX_FBSD_ADD_STRIP_BIN)): \
|
---|
[38082] | 103 | $(VBOX_FBSD_ADD_INS_OUT_DIR)/% : $(PATH_STAGE_BIN)/additions/% \
|
---|
[25590] | 104 | $(VBOX_FBSD_ADD_INS_OUT_DIR)/%.dbgsym \
|
---|
| 105 | | $$(dir $$@)
|
---|
| 106 | $(call MSG_INST_FILE,$<,$@)
|
---|
| 107 | $(QUIET)$(INSTALL) -m 0755 $(if $(VBOX_DO_STRIP),-s,) $< $@
|
---|
| 108 | $(QUIET)objcopy --add-gnu-debuglink=$(addsuffix .dbgsym,$@) $@
|
---|
| 109 |
|
---|
| 110 | # pattern rule for stripping and copying the VBOX_FBSD_ADD_STRIP_OBJ files to the installation directory
|
---|
| 111 | $(addprefix $(VBOX_FBSD_ADD_INS_OUT_DIR)/,$(VBOX_FBSD_ADD_STRIP_OBJ)): \
|
---|
[38082] | 112 | $(VBOX_FBSD_ADD_INS_OUT_DIR)/% : $(PATH_STAGE_BIN)/additions/% | $$(dir $$@)
|
---|
[25590] | 113 | $(call MSG_INST_FILE,$<,$@)
|
---|
| 114 | ifeq ($(VBOX_DO_STRIP),)
|
---|
| 115 | $(QUIET)$(INSTALL) -m 0644 $< $@
|
---|
| 116 | else # strip to temp file because of umask.
|
---|
| 117 | $(QUIET)objcopy --strip-unneeded -R .comment $< $@.tmp
|
---|
| 118 | $(QUIET)$(INSTALL) -m 0644 $@.tmp $@
|
---|
| 119 | $(QUIET)$(RM) -f -- $@.tmp
|
---|
| 120 | endif
|
---|
| 121 |
|
---|
| 122 | # pattern rule for copying the VBOX_FBSD_ADD_MODULES files to the installation directory
|
---|
| 123 | $(VBOX_FBSD_ADD_INS_MODULES): \
|
---|
[38082] | 124 | $(VBOX_FBSD_ADD_INS_OUT_DIR)/module/% : $(PATH_STAGE_BIN)/additions/src/% | $(VBOX_FBSD_ADD_INS_OUT_DIR)/module/
|
---|
[25590] | 125 | $(call MSG_INST_FILE,$<,$@)
|
---|
| 126 | # Remove target directories first, otherwise the behaviour of cp will not be
|
---|
| 127 | # what we want if it already exists. See the cp manual page for more details.
|
---|
| 128 | $(QUIET)$(RM) -Rf $@
|
---|
| 129 | $(QUIET)cp -af $< $(VBOX_FBSD_ADD_INS_OUT_DIR)/module
|
---|
| 130 |
|
---|
| 131 |
|
---|
| 132 | INSTALLS += $(if $(VBOX_OSE),, fbsd_add_inst-nobin)
|
---|
| 133 | fbsd_add_inst-nobin_INST = obj/Additions/Installer/freebsd
|
---|
| 134 | fbsd_add_inst-nobin_MODE = a+r,u+w
|
---|
| 135 | fbsd_add_inst-nobin_SOURCES = \
|
---|
[98416] | 136 | ../x11/Installer/98vboxadd-xclient \
|
---|
| 137 | ../x11/Installer/vboxclient.desktop \
|
---|
| 138 | ../x11/Installer/vboxvideo.ids \
|
---|
| 139 | ../x11/Installer/x11config.pl \
|
---|
| 140 | ../x11/Installer/x11config15.pl
|
---|
[25590] | 141 |
|
---|
| 142 |
|
---|
| 143 | INSTALLS += GuestDrivers-src
|
---|
| 144 | GuestDrivers-src_INST = bin/additions/src/
|
---|
| 145 | GuestDrivers-src_MODE = a+r,u+w
|
---|
| 146 | GuestDrivers-src_SOURCES = Makefile
|
---|
| 147 |
|
---|
| 148 | # this file needs editing before it can be included in the generic installer.
|
---|
| 149 | $(VBOX_FBSD_ADD_INS_OUT_DIR)/install.sh: \
|
---|
[98416] | 150 | $(VBOX_PATH_FREEBSD_ADDITION_INSTALLER)/install.sh | $$(dir $$@)
|
---|
[25590] | 151 | $(QUIET)$(SED) \
|
---|
| 152 | -e "s;_VERSION_;$(VBOX_VERSION_STRING);g" \
|
---|
| 153 | -e "s;_BUILD_;$(shell date);g" \
|
---|
| 154 | -e "s;_OSE_;$(VBOX_OSE);g" \
|
---|
| 155 | -e "s;_BUILDTYPE_;$(KBUILD_TYPE);g" \
|
---|
| 156 | -e "s;_ARCH_;$(KBUILD_TARGET_ARCH);g" \
|
---|
| 157 | --output $(VBOX_FBSD_ADD_INS_OUT_DIR)/install_.sh \
|
---|
| 158 | $<
|
---|
| 159 | $(QUIET)$(INSTALL) -m 0755 $(VBOX_FBSD_ADD_INS_OUT_DIR)/install_.sh $@
|
---|
| 160 | $(QUIET)$(RM) $(VBOX_FBSD_ADD_INS_OUT_DIR)/install_.sh
|
---|
| 161 | OTHERS_CLEAN += $(VBOX_FBSD_ADD_INS_OUT_DIR)/install.sh
|
---|
| 162 |
|
---|
| 163 |
|
---|
[41477] | 164 | include $(FILE_KBUILD_SUB_FOOTER)
|
---|
[7548] | 165 |
|
---|
[25590] | 166 |
|
---|
| 167 | #
|
---|
| 168 | # Build the FreeBSD Guest Additions installer package.
|
---|
| 169 | #
|
---|
| 170 | # Note that $(PATH_SUB_CURRENT) was changed by subfooter.kmk above and
|
---|
| 171 | # any references should be made via variables assigned a know value via := .
|
---|
| 172 | #
|
---|
| 173 | # We need to depend on all source files for the additions and shared
|
---|
| 174 | # folders kernel modules.
|
---|
| 175 | ## @todo Replace the wildcard stuff by the correct file lists now that
|
---|
| 176 | # we've got everything included.
|
---|
| 177 | #
|
---|
[38082] | 178 | $(PATH_STAGE_BIN)/additions/VBoxFreeBSDAdditions.tbz: \
|
---|
[38158] | 179 | $$(fbsd_add_inst-nobin_2_STAGE_TARGETS) \
|
---|
| 180 | $$(fbsd_add_inst-bin_2_STAGE_TARGETS) \
|
---|
[25590] | 181 | $(VBOX_FBSD_ADD_INS_FILES) \
|
---|
| 182 | $(VBOX_FBSD_ADD_INS_MODULES) \
|
---|
| 183 | $(VBOX_FBSD_ADD_INS_OUT_DIR)/install.sh \
|
---|
[38082] | 184 | $(wildcard $(PATH_STAGE_BIN)/additions/src/*) \
|
---|
| 185 | $(wildcard $(PATH_STAGE_BIN)/additions/src/*/*) \
|
---|
| 186 | $(wildcard $(PATH_STAGE_BIN)/additions/src/*/*/*) \
|
---|
| 187 | $(wildcard $(PATH_STAGE_BIN)/additions/src/*/*/*/*) \
|
---|
[55648] | 188 | $(VBOX_VERSION_STAMP) $(VBOX_SVN_REV_HEADER)
|
---|
[25590] | 189 | pkg_create \
|
---|
| 190 | -I $(VBOX_PATH_FREEBSD_ADDITION_INSTALLER)/install.sh \
|
---|
| 191 | -c $(VBOX_PATH_FREEBSD_ADDITION_INSTALLER)/pkg-comment \
|
---|
| 192 | -d $(VBOX_PATH_FREEBSD_ADDITION_INSTALLER)/pkg-descr \
|
---|
| 193 | -f $(VBOX_PATH_FREEBSD_ADDITION_INSTALLER)/pkg-plist \
|
---|
| 194 | $@
|
---|
[7548] | 195 |
|
---|