VirtualBox

source: vbox/trunk/src/VBox/Additions/freebsd/Makefile.kmk

Last change on this file was 106061, checked in by vboxsync, 3 months ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.8 KB
Line 
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
28SUB_DEPTH = ../../../..
29include $(KBUILD_PATH)/subheader.kmk
30
31ifneq ($(KBUILD_HOST),freebsd)
32 $(error "The FreeBSD guest additions installer can only be built on FreeBSD!")
33endif
34
35# Include sub-makefiles.
36#include $(PATH_SUB_CURRENT)/vboxvfs/Makefile.kmk
37include $(PATH_SUB_CURRENT)/drm/Makefile.kmk
38
39#
40# Globals
41#
42VBOX_FBSD_ADD_INS_OUT_DIR := $(PATH_TARGET)/Additions/Installer/freebsd
43BLDDIRS += \
44 $(VBOX_FBSD_ADD_INS_OUT_DIR) \
45 $(VBOX_FBSD_ADD_INS_OUT_DIR)/module
46VBOX_PATH_FREEBSD_ADDITION_INSTALLER := $(PATH_SUB_CURRENT)/Installer
47VBOX_PATH_X11_ADDITION_INSTALLER := $(PATH_ROOT)/src/VBox/Additions/x11/Installer
48
49
50#
51# Targets
52#
53ifndef 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)
57endif
58
59
60#
61# Files to install
62#
63VBOX_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
81VBOX_FBSD_ADD_MODULES = \
82 vboxguest \
83 vboxvideo_drm
84
85#
86# All the bin files that go into the archives.
87#
88VBOX_FBSD_ADD_DBG_SYM_FILES := $(addsuffix .dbgsym,$(VBOX_FBSD_ADD_STRIP_BIN))
89VBOX_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))
90VBOX_FBSD_ADD_INS_MODULES := $(addprefix $(VBOX_FBSD_ADD_INS_OUT_DIR)/module/,$(VBOX_FBSD_ADD_MODULES))
91
92# Cleanup of the installer directory files
93OTHER_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,$<,$@)
114ifeq ($(VBOX_DO_STRIP),)
115 $(QUIET)$(INSTALL) -m 0644 $< $@
116else # 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]
120endif
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
132INSTALLS += $(if $(VBOX_OSE),, fbsd_add_inst-nobin)
133fbsd_add_inst-nobin_INST = obj/Additions/Installer/freebsd
134fbsd_add_inst-nobin_MODE = a+r,u+w
135fbsd_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
143INSTALLS += GuestDrivers-src
144GuestDrivers-src_INST = bin/additions/src/
145GuestDrivers-src_MODE = a+r,u+w
146GuestDrivers-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
161OTHERS_CLEAN += $(VBOX_FBSD_ADD_INS_OUT_DIR)/install.sh
162
163
164include $(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
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette