summaryrefslogtreecommitdiffstats
path: root/build.sh
blob: b3d625f255a4b7e4f2fc05de874d0e4840579225 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/bin/bash
#
# Build recipe for the git submodule based quark tree
#
# First initialise the submodules
git submodule init
git submodule update
# add the external crypto libraries
pushd CryptoPkg/Library/OpensslLib
if [ ! -f openssl-0.9.8w.tar.gz ]; then
    wget http://www.openssl.org/source/old/0.9.x/openssl-0.9.8w.tar.gz
fi
if [ ! -d openssl-0.9.8w ]; then
    tar xfz openssl-0.9.8w.tar.gz
    cd openssl-0.9.8w
    patch -b -p0 <../EDKII_openssl-0.9.8w.patch
    cd ..
    sh ./Install.sh
fi
popd
#
# Need to apply patch for generating correct hashes on IA32
if [ ! -f SecurityPkg/Library/DxeImageVerificationLib/DxeImageVerificationLib.c.orig ]; then
    patch -p1 -b < DxeImageVerificationLib-fix.diff
fi
# now initialise the edk2environment using the QuarkPlatformPkg Overrides
cp .module/edk2/edksetup.sh .
mkdir Conf
. ./edksetup.sh
cp QuarkPlatformPkg/Override/BaseTools/Conf/build_rule.template Conf/build_rule.txt
cp QuarkPlatformPkg/Override/BaseTools/Conf/tools_def.template Conf/tools_def.txt
make -C BaseTools
. ./edksetup.sh
# OK now we're ready to build.  This is for the default debug package
# alternatively, you can just comment this out and run quarkbuild.sh but
# it does a lot of irrelevant other stuff
type=DEBUG
flags="-DDEBUG_PRINT_ERROR_LEVEL=0x80000042 -DDEBUG_PROPERTY_MASK=0x27"
#type=RELEASE
#flags="-DDEBUG_PRINT_ERROR_LEVEL=0x80000000 -DDEBUG_PROPERTY_MASK=0x23"
##
# You probably have gcc 4.8 or 4.9, but this doesn't seem to matter
toolchain=GCC47
build -a IA32 -b ${type} -y Report.log -t ${toolchain} -p QuarkPlatformPkg/QuarkPlatformPkg.dsc ${flags} -DSECURE_BOOT || exit 1
# finally, the spi flash tools are going to need the capsule creator, so build it
make -C QuarkPlatformPkg/Tools/CapsuleCreate
#
# FIXME: This should be in QuarkPlatformPkg.fdf
# Now split the FV files apart again
./QuarkPlatformPkg/Tools/QuarkSpiFixup/QuarkSpiFixup.py QuarkPlatform ${type} ${toolchain}
# finally put the capsule build where the spi tools can find it
mkdir Build/QuarkPlatform/${type}_${toolchain}/FV/Tools
# and the shell
cp EdkShellBinPkg/FullShell/Ia32/Shell_Full.efi Build/QuarkPlatform/${type}_${toolchain}/FV/Shell.efi
mv QuarkPlatformPkg/Tools/CapsuleCreate/CapsuleCreate Build/QuarkPlatform/${type}_${toolchain}/FV/Tools
##
# Now begin the process of creating the BootRom
##
cd Build
if [ ! -f spi-flash-tools_v1.0.1.tar.gz ]; then
    wget -O spi-flash-tools_v1.0.1.tar.gz https://github.com/01org/Galileo-Runtime/blob/master/spi-flash-tools_v1.0.1.tar.gz?raw=true
fi
if [ ! -f sysimage_v1.0.1.tar.gz ]; then
    wget -O sysimage_v1.0.1.tar.gz https://github.com/01org/Galileo-Runtime/blob/master/sysimage_v1.0.1.tar.gz?raw=true
fi
if [ ! -d spi-flash-tools_v1.0.1 ]; then
    tar xfz spi-flash-tools_v1.0.1.tar.gz
fi
if [ ! -d sysimage_v1.0.1.tar.gz ]; then
    tar xfz sysimage_v1.0.1.tar.gz
fi
# create our own build directory and copy in a few hand made files
if [ ! -d mysysimage ]; then
    mkdir mysysimage
    pushd mysysimage
    ln -s ../sysimage_v1.0.1/config .
    ln -s ../sysimage_v1.0.1/inf .
    ln -s ../QuarkPlatform/${type}_${toolchain}/FV .
    cp ../../layout.conf .
    popd
    cp ../galileo-platform-data.ini spi-flash-tools_v1.0.1/platform-data/platform-data.ini
fi
cd mysysimage
rm -f layout.mk
make -f ../spi-flash-tools_v1.0.1/Makefile
cd ../spi-flash-tools_v1.0.1/platform-data/
./platform-data-patch.py -i ../../mysysimage/Flash-missingPDAT.bin
mv Flash+PlatformData.bin ../../mysysimage/
echo
echo everything is ready, the image to flash is
echo    Build/mysysimage/Flash+PlatformData.bin
#
# The flash command I use is
#  flashrom -p buspirate_spi:dev=/dev/ttyUSB0,pullups=on -w Flash+PlatformData.bin