@@ -35,10 +35,25 @@ DESC="$SUMMARY"
35
35
: ${PKG_SOURCE_BRANCH:= bhyve/ UDK2014.SP1}
36
36
37
37
# Extend VER so that the temporary build directory is branch specific.
38
- # Branches can include '/' so remove them.
38
+ # Branch names can include '/' so remove them.
39
39
VER+=" -${PKG_SOURCE_BRANCH// \/ / _} "
40
40
41
- clone_source (){
41
+ export GCCPATH=/opt/gcc-4.4.4
42
+
43
+ MAKE_ARGS="
44
+ AS=/usr/bin/gas
45
+ AR=/usr/bin/gar
46
+ LD=/usr/bin/gld
47
+ OBJCOPY=/usr/bin/gobjcopy
48
+ CC=${GCCPATH} /bin/gcc
49
+ CXX=${GCCPATH} /bin/g++
50
+ "
51
+
52
+ export OOGCC_BIN=$GCCPATH /bin/
53
+ export IASL_PREFIX=/usr/sbin/
54
+ export NASM_PREFIX=/usr/bin/i386/
55
+
56
+ clone_source () {
42
57
logmsg " $PROG -> $TMPDIR /$BUILDDIR /$PROG "
43
58
logcmd mkdir -p $TMPDIR /$BUILDDIR
44
59
pushd $TMPDIR /$BUILDDIR > /dev/null
@@ -58,72 +73,92 @@ clone_source(){
58
73
popd > /dev/null
59
74
}
60
75
61
- build () {
62
- pushd $TMPDIR /$BUILDDIR /$PROG > /dev/null || logerr " --- chdir failed"
63
-
64
- export GCCPATH=/opt/gcc-4.4.4
65
-
66
- MAKE_ARGS="
67
- AS=/usr/bin/gas
68
- AR=/usr/bin/gar
69
- LD=/usr/bin/gld
70
- OBJCOPY=/usr/bin/gobjcopy
71
- CC=${GCCPATH} /bin/gcc
72
- CXX=${GCCPATH} /bin/g++
73
- "
76
+ edksetup () {
77
+ pushd $TMPDIR /$BUILDDIR /$PROG > /dev/null || logerr " --- chdir failed"
78
+ source edksetup.sh
79
+ popd > /dev/null
80
+ }
74
81
82
+ cleanup () {
75
83
logmsg " -- Cleaning source tree"
76
84
85
+ pushd $TMPDIR /$BUILDDIR /$PROG > /dev/null || logerr " --- chdir failed"
86
+
77
87
logcmd gmake $MAKE_ARGS ARCH=X64 -C BaseTools clean
78
- rm -f Build Conf/{target,build_rule,tools_def}.txt Conf/.cache 2> /dev/null
88
+ rm -rf Build Conf/{target,build_rule,tools_def}.txt Conf/.cache 2> /dev/null
79
89
90
+ popd > /dev/null
91
+ }
92
+
93
+ build_tools () {
80
94
logmsg " -- Building tools"
81
95
82
- # First build the tools. The code isn't able to detect the build
83
- # architecture - it doesn't expect `uname -m` to return `i86pc`
96
+ pushd $TMPDIR /$BUILDDIR /$PROG > /dev/null || logerr " --- chdir failed"
97
+
98
+ # The code isn't able to detect the build architecture - it doesn't
99
+ # expect `uname -m` to return `i86pc`
84
100
logcmd gmake $MAKE_ARGS ARCH=X64 -C BaseTools \
85
101
|| logerr " --- BaseTools build failed"
86
102
87
- BUILD_ARGS=" -DDEBUG_ON_SERIAL_PORT=TRUE -DFD_SIZE_2MB -DCSM_ENABLE=TRUE"
103
+ popd > /dev/null
104
+ }
105
+
106
+ build () {
107
+ pushd $TMPDIR /$BUILDDIR /$PROG > /dev/null || logerr " --- chdir failed"
88
108
89
- (
90
- export OOGCC_BIN=$GCCPATH /bin/
91
- export IASL_PREFIX=/usr/sbin/
92
- export NASM_PREFIX=/usr/bin/i386/
93
- source edksetup.sh
109
+ [ " $1 " = " -csm" ] && csm=1 || csm=0
94
110
111
+ BUILD_ARGS=" -DDEBUG_ON_SERIAL_PORT=TRUE -DFD_SIZE_2MB"
112
+ [ $csm -eq 1 ] && BUILD_ARGS+=" -DCSM_ENABLE=TRUE"
113
+ export BUILD_ARGS
114
+
115
+ if [ $csm -eq 1 ]; then
95
116
logmsg " -- Building compatibility support module (CSM)"
96
117
logcmd gmake $MAKE_ARGS -C BhyvePkg/Csm/BhyveCsm16/ \
97
118
|| logerr " --- CSM build failed"
119
+ fi
98
120
99
- for mode in RELEASE DEBUG; do
100
- logmsg " -- Building $mode firmware"
101
- logcmd ` which build` \
102
- -t OOGCC -a X64 -b $mode \
103
- -p BhyvePkg/BhyvePkgX64.dsc \
104
- $BUILD_ARGS || logerr " --- $mode build failed"
105
- done
106
- ) || logerr " --- Build failed"
121
+ for mode in RELEASE DEBUG; do
122
+ logmsg " -- Building $mode firmware"
123
+ logcmd ` which build` \
124
+ -t OOGCC -a X64 -b $mode \
125
+ -p BhyvePkg/BhyvePkgX64.dsc \
126
+ $BUILD_ARGS || logerr " --- $mode build failed"
127
+ done
107
128
108
- popd > /dev/null
129
+ popd > /dev/null
109
130
}
110
131
111
132
install () {
112
- pushd $TMPDIR /$BUILDDIR /$PROG > /dev/null || logerr " --- chdir failed"
133
+ suffix=" $1 "
134
+ pushd $TMPDIR /$BUILDDIR /$PROG > /dev/null || logerr " --- chdir failed"
113
135
logcmd mkdir -p $DESTDIR /usr/share/bhyve/firmware
114
- cp OvmfPkg/License.txt $DESTDIR /LICENCE
136
+ [ -f $DESTDIR /LICENCE ] || cp OvmfPkg/License.txt $DESTDIR /LICENCE
115
137
for mode in RELEASE DEBUG; do
116
138
logcmd cp Build/BhyveX64/${mode} _OOGCC/FV/BHYVE.fd \
117
- $DESTDIR /usr/share/bhyve/firmware/BHYVE_$mode .fd
139
+ $DESTDIR /usr/share/bhyve/firmware/BHYVE_$mode$suffix .fd
118
140
done
119
- popd > /dev/null
141
+ popd > /dev/null
120
142
}
121
143
122
144
init
123
145
prep_build
124
146
clone_source
147
+
148
+ cleanup
149
+ build_tools
150
+ edksetup
151
+
152
+ # Build UEFI firmware
153
+ note " UEFI Firmware"
125
154
build
126
155
install
156
+
157
+ # Build UEFI+CSM firmware
158
+ note " UEFI+CSM Firmware"
159
+ build -csm
160
+ install _CSM
161
+
127
162
# Reset version for package creation
128
163
VER=$VERHUMAN
129
164
make_package
0 commit comments