VirtualBox

source: vbox/trunk/src/VBox/Installer/linux/Makefile.include.header@ 59083

Last change on this file since 59083 was 56299, checked in by vboxsync, 10 years ago

Installer: Updated (C) year.

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Author Date Id Revision
File size: 4.9 KB
Line 
1#
2# VirtualBox Guest Additions kernel module Makefile, common parts.
3#
4# (For 2.6.x, the main file must be called 'Makefile'!)
5#
6# Copyright (C) 2006-2015 Oracle Corporation
7#
8# This file is part of VirtualBox Open Source Edition (OSE), as
9# available from http://www.virtualbox.org. This file is free software;
10# you can redistribute it and/or modify it under the terms of the GNU
11# General Public License (GPL) as published by the Free Software
12# Foundation, in version 2 as it comes in the "COPYING" file of the
13# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15#
16
17#
18# These file should be included by the Makefiles for any kernel modules we
19# build as part of the Guest Additions. The intended way of doing this is as
20# follows:
21#
22# # Linux kbuild sets this to our source directory if we are called from
23# # there
24# obj ?= $(CURDIR)
25# include $(obj)/Makefile.include.header
26# MOD_NAME = <name of the module to be built, without extension>
27# MOD_OBJS = <list of object files which should be included>
28# MOD_DEFS = <any additional defines which this module needs>
29# MOD_INCL = <any additional include paths which this module needs>
30# MOD_CFLAGS = <any additional CFLAGS which this module needs>
31# MOD_CLEAN = <list of directories that the clean target should look at>
32# include $(obj)/Makefile.include.footer
33#
34# The kmk kBuild define KBUILD_TARGET_ARCH is available.
35#
36
37
38#
39# First, figure out which architecture we're targeting and the build type.
40# (We have to support basic cross building (ARCH=i386|x86_64).)
41# While at it, warn about BUILD_* vars found to help with user problems.
42#
43ifeq ($(filter-out x86_64 amd64 AMD64,$(shell uname -m)),)
44 BUILD_TARGET_ARCH_DEF := amd64
45else
46 BUILD_TARGET_ARCH_DEF := x86
47endif
48ifneq ($(filter-out amd64 x86,$(BUILD_TARGET_ARCH)),)
49 $(warning Ignoring unknown BUILD_TARGET_ARCH value '$(BUILD_TARGET_ARCH)'.)
50 BUILD_TARGET_ARCH :=
51endif
52ifeq ($(BUILD_TARGET_ARCH),)
53 ifeq ($(ARCH),x86_64)
54 BUILD_TARGET_ARCH := amd64
55 else
56 ifeq ($(ARCH),i386)
57 BUILD_TARGET_ARCH := x86
58 else
59 BUILD_TARGET_ARCH := $(BUILD_TARGET_ARCH_DEF)
60 endif
61 endif
62else
63 ifneq ($(BUILD_TARGET_ARCH),$(BUILD_TARGET_ARCH_DEF))
64 $(warning Using BUILD_TARGET_ARCH='$(BUILD_TARGET_ARCH)' from the $(origin BUILD_TARGET_ARCH).)
65 endif
66endif
67
68ifneq ($(filter-out release profile debug strict,$(BUILD_TYPE)),)
69 $(warning Ignoring unknown BUILD_TYPE value '$(BUILD_TYPE)'.)
70 BUILD_TYPE :=
71endif
72ifeq ($(BUILD_TYPE),)
73 BUILD_TYPE := release
74else
75 ifneq ($(BUILD_TYPE),release)
76 $(warning Using BUILD_TYPE='$(BUILD_TYPE)' from the $(origin BUILD_TYPE).)
77 endif
78endif
79ifeq ($(USERNAME),)
80 USERNAME := noname
81endif
82
83ifneq ($(MAKECMDGOALS),clean)
84
85ifeq ($(KERNELRELEASE),)
86
87 #
88 # building from this directory
89 #
90
91 # kernel base directory
92 ifndef KERN_DIR
93 KERN_DIR := /lib/modules/$(shell uname -r)/build
94 ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
95 KERN_DIR := /usr/src/linux
96 ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
97 $(error Error: unable to find the sources of your current Linux kernel. \
98 Specify KERN_DIR=<directory> and run Make again)
99 endif
100 $(warning Warning: using /usr/src/linux as the source directory of your \
101 Linux kernel. If this is not correct, specify \
102 KERN_DIR=<directory> and run Make again.)
103 endif
104 else
105 ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
106 $(error Error: KERN_DIR does not point to a directory)
107 endif
108 endif
109
110 # includes
111 ifndef KERN_INCL
112 KERN_INCL = $(KERN_DIR)/include
113 endif
114 ifneq ($(shell if test -d $(KERN_INCL); then echo yes; fi),yes)
115 $(error Error: unable to find the include directory for your current Linux \
116 kernel. Specify KERN_INCL=<directory> and run Make again)
117 endif
118
119 # module install dir, only for current kernel
120 ifneq ($(filter install install_rpm,$(MAKECMDGOALS)),)
121 ifndef MODULE_DIR
122 MODULE_DIR_TST := /lib/modules/$(shell uname -r)
123 ifeq ($(shell if test -d $(MODULE_DIR_TST); then echo yes; fi),yes)
124 MODULE_DIR := $(MODULE_DIR_TST)/misc
125 else
126 $(error Unable to find the folder to install the module to)
127 endif
128 endif # MODULE_DIR unspecified
129 endif
130
131 # guess kernel version (24 or 26)
132 ifeq ($(shell if grep '"2\.4\.' $(KERN_INCL)/linux/version.h > /dev/null; then echo yes; fi),yes)
133 KERN_VERSION := 24
134 else
135 KERN_VERSION := 26
136 endif
137
138else # neq($(KERNELRELEASE),)
139
140 #
141 # building from kbuild (make -C <kernel_directory> M=`pwd`)
142 #
143
144 # guess kernel version (24 or 26)
145 ifeq ($(shell if echo "$(VERSION).$(PATCHLEVEL)." | grep '2\.4\.' > /dev/null; then echo yes; fi),yes)
146 KERN_VERSION := 24
147 else
148 KERN_VERSION := 26
149 endif
150
151endif # neq($(KERNELRELEASE),)
152
153# debug - show guesses.
154ifdef DEBUG
155$(warning dbg: KERN_DIR = $(KERN_DIR))
156$(warning dbg: KERN_INCL = $(KERN_INCL))
157$(warning dbg: MODULE_DIR = $(MODULE_DIR))
158$(warning dbg: KERN_VERSION = $(KERN_VERSION))
159endif
160
161endif # eq($(MAKECMDGOALS),clean)
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