6f069ce264ac07a1095e75987aaae8808546d534
[mirror_edk2.git] / CryptoPkg / Library / OpensslLib / process_files.sh
1 #!/bin/sh
2 #
3 # This script runs the OpenSSL Configure script, then processes the
4 # resulting file list into our local OpensslLib.inf and also takes
5 # a copy of opensslconf.h.
6 #
7 # This only needs to be done once by a developer when updating to a
8 # new version of OpenSSL (or changing options, etc.). Normal users
9 # do not need to do this, since the results are stored in the EDK2
10 # git repository for them.
11
12 OPENSSL_PATH=$(sed -n '/DEFINE OPENSSL_PATH/{s/.* \(openssl-[0-9.]*[a-z]*\)[[:space:]]*/\1/ p}' OpensslLib.inf)
13
14 if ! cd "${OPENSSL_PATH}" ; then
15     echo "Cannot change to OpenSSL directory \"${OPENSSL_PATH}\""
16     exit 1
17 fi
18
19 ./Configure UEFI \
20         no-asm \
21         no-bf \
22         no-camellia \
23         no-capieng \
24         no-cast \
25         no-cms \
26         no-deprecated \
27         no-dgram \
28         no-dsa \
29         no-dynamic-engine \
30         no-ec \
31         no-ecdh \
32         no-ecdsa \
33         no-engine \
34         no-engines \
35         no-err \
36         no-filenames \
37         no-fp-api \
38         no-hw \
39         no-idea \
40         no-jpake \
41         no-krb5 \
42         no-locking \
43         no-mdc2 \
44         no-posix-io \
45         no-rc2 \
46         no-rcs \
47         no-rfc3779 \
48         no-ripemd \
49         no-scrypt \
50         no-sct \
51         no-seed \
52         no-sha0 \
53         no-sock \
54         no-srp \
55         no-ssl \
56         no-stdio \
57         no-threads \
58         no-ts \
59         no-ui \
60         no-whirlpool \
61     || exit 1
62
63 make files
64 cd -
65
66 function filelist ()
67 {
68     echo '1,/# Autogenerated files list starts here/p'
69     echo '/# Autogenerated files list ends here/,$p'
70     echo '/# Autogenerated files list starts here/a\'
71
72     while read LINE; do
73         case "$LINE" in
74             RELATIVE_DIRECTORY=*)
75                 eval "$LINE"
76                 ;;
77             LIBSRC=*)
78                 LIBSRC=$(echo "$LINE" | sed s/^LIBSRC=//)
79                 for FILE in $LIBSRC; do
80                         if [ "$FILE" != "b_print.c" ]; then
81                             echo -e '  $(OPENSSL_PATH)/'$RELATIVE_DIRECTORY/$FILE\\r\\
82                         fi
83                 done
84                 ;;
85         esac
86     done
87     echo -e \\r
88 }
89
90 filelist < "${OPENSSL_PATH}/MINFO" |  sed -n -f - -i OpensslLib.inf
91
92 # We can tell Windows users to put this back manually if they can't run
93 # Configure. For now, until the git repository is fixed to store things
94 # sanely, also convert to DOS line-endings
95 unix2dos -n "${OPENSSL_PATH}/crypto/opensslconf.h" opensslconf.h