1 | # $Id: Makefile.kmk 106061 2024-09-16 14:03:52Z vboxsync $
|
---|
2 | ## @file
|
---|
3 | # Sub-Makefile for the FreeBSD guest additions base directory.
|
---|
4 | #
|
---|
5 |
|
---|
6 | #
|
---|
7 | # Copyright (C) 2008-2024 Oracle and/or its affiliates.
|
---|
8 | #
|
---|
9 | # This file is part of VirtualBox base platform packages, as
|
---|
10 | # available from https://www.virtualbox.org.
|
---|
11 | #
|
---|
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 | #
|
---|
27 |
|
---|
28 | SUB_DEPTH = ../../../..
|
---|
29 | include $(KBUILD_PATH)/subheader.kmk
|
---|
30 |
|
---|
31 | ifneq ($(KBUILD_HOST),freebsd)
|
---|
32 | $(error "The FreeBSD guest additions installer can only be built on FreeBSD!")
|
---|
33 | endif
|
---|
34 |
|
---|
35 | # Include sub-makefiles.
|
---|
36 | #include $(PATH_SUB_CURRENT)/vboxvfs/Makefile.kmk
|
---|
37 | include $(PATH_SUB_CURRENT)/drm/Makefile.kmk
|
---|
38 |
|
---|
39 | #
|
---|
40 | # Globals
|
---|
41 | #
|
---|
42 | VBOX_FBSD_ADD_INS_OUT_DIR := $(PATH_TARGET)/Additions/Installer/freebsd
|
---|
43 | BLDDIRS += \
|
---|
44 | $(VBOX_FBSD_ADD_INS_OUT_DIR) \
|
---|
45 | $(VBOX_FBSD_ADD_INS_OUT_DIR)/module
|
---|
46 | VBOX_PATH_FREEBSD_ADDITION_INSTALLER := $(PATH_SUB_CURRENT)/Installer
|
---|
47 | VBOX_PATH_X11_ADDITION_INSTALLER := $(PATH_ROOT)/src/VBox/Additions/x11/Installer
|
---|
48 |
|
---|
49 |
|
---|
50 | #
|
---|
51 | # Targets
|
---|
52 | #
|
---|
53 | ifndef VBOX_OSE
|
---|
54 | BLDDIRS += $(VBOX_FBSD_ADD_INS_OUT_DIR) $(VBOX_FBSD_ADD_INS_OUT_DIR)/module
|
---|
55 | PACKING += $(PATH_STAGE_BIN)/additions/VBoxFreeBSDAdditions.tbz
|
---|
56 | OTHER_CLEAN += $(PACKING)
|
---|
57 | endif
|
---|
58 |
|
---|
59 |
|
---|
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 \
|
---|
79 | vboxvideo_drv_17.so
|
---|
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 |
|
---|
92 | # Cleanup of the installer directory files
|
---|
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)): \
|
---|
97 | $(VBOX_FBSD_ADD_INS_OUT_DIR)/%.dbgsym : $(PATH_STAGE_BIN)/additions/% | $$(dir $$@)
|
---|
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)): \
|
---|
103 | $(VBOX_FBSD_ADD_INS_OUT_DIR)/% : $(PATH_STAGE_BIN)/additions/% \
|
---|
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)): \
|
---|
112 | $(VBOX_FBSD_ADD_INS_OUT_DIR)/% : $(PATH_STAGE_BIN)/additions/% | $$(dir $$@)
|
---|
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 $< [email protected]
|
---|
118 | $(QUIET)$(INSTALL) -m 0644 [email protected] $@
|
---|
119 | $(QUIET)$(RM) -f -- [email protected]
|
---|
120 | endif
|
---|
121 |
|
---|
122 | # pattern rule for copying the VBOX_FBSD_ADD_MODULES files to the installation directory
|
---|
123 | $(VBOX_FBSD_ADD_INS_MODULES): \
|
---|
124 | $(VBOX_FBSD_ADD_INS_OUT_DIR)/module/% : $(PATH_STAGE_BIN)/additions/src/% | $(VBOX_FBSD_ADD_INS_OUT_DIR)/module/
|
---|
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 = \
|
---|
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
|
---|
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: \
|
---|
150 | $(VBOX_PATH_FREEBSD_ADDITION_INSTALLER)/install.sh | $$(dir $$@)
|
---|
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 |
|
---|
164 | include $(FILE_KBUILD_SUB_FOOTER)
|
---|
165 |
|
---|
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 | #
|
---|
178 | $(PATH_STAGE_BIN)/additions/VBoxFreeBSDAdditions.tbz: \
|
---|
179 | $$(fbsd_add_inst-nobin_2_STAGE_TARGETS) \
|
---|
180 | $$(fbsd_add_inst-bin_2_STAGE_TARGETS) \
|
---|
181 | $(VBOX_FBSD_ADD_INS_FILES) \
|
---|
182 | $(VBOX_FBSD_ADD_INS_MODULES) \
|
---|
183 | $(VBOX_FBSD_ADD_INS_OUT_DIR)/install.sh \
|
---|
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/*/*/*/*) \
|
---|
188 | $(VBOX_VERSION_STAMP) $(VBOX_SVN_REV_HEADER)
|
---|
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 | $@
|
---|
195 |
|
---|