a4f2e740b42cae3c3599df25a7d0394f107cdd13
[openssl.git] / util / cygwin.sh
1 #!/bin/bash
2 #
3 # This script configures, builds and packs the binary package for
4 # the Cygwin net distribution version of OpenSSL
5 #
6
7 # Uncomment when debugging
8 #set -x
9
10 CONFIG_OPTIONS="--prefix=/usr shared zlib no-idea no-rc5"
11 INSTALL_PREFIX=/tmp/install
12
13 VERSION=
14 SUBVERSION=$1
15
16 function cleanup()
17 {
18   rm -rf ${INSTALL_PREFIX}/etc
19   rm -rf ${INSTALL_PREFIX}/usr
20 }
21
22 function get_openssl_version()
23 {
24   eval `grep '^VERSION=' Makefile`
25   if [ -z "${VERSION}" ]
26   then
27     echo "Error: Couldn't retrieve OpenSSL version from Makefile."
28     echo "       Check value of variable VERSION in Makefile."
29     exit 1
30   fi
31 }
32
33 function base_install()
34 {
35   mkdir -p ${INSTALL_PREFIX}
36   cleanup
37   make install INSTALL_PREFIX="${INSTALL_PREFIX}"
38 }
39
40 function doc_install()
41 {
42   DOC_DIR=${INSTALL_PREFIX}/usr/share/doc/openssl
43
44   mkdir -p ${DOC_DIR}
45   cp CHANGES CHANGES.SSLeay INSTALL LICENSE NEWS README ${DOC_DIR}
46
47   create_cygwin_readme
48 }
49
50 function certs_install()
51 {
52   CERTS_DIR=${INSTALL_PREFIX}/usr/ssl/certs
53
54   mkdir -p ${CERTS_DIR}
55   cp -rp certs/* ${CERTS_DIR}
56 }
57
58 function create_cygwin_readme()
59 {
60   README_DIR=${INSTALL_PREFIX}/usr/share/doc/Cygwin
61   README_FILE=${README_DIR}/openssl-${VERSION}.README
62
63   mkdir -p ${README_DIR}
64   cat > ${README_FILE} <<- EOF
65         The Cygwin version has been built using the following configure:
66
67           ./config ${CONFIG_OPTIONS}
68
69         The IDEA and RC5 algorithms are disabled due to patent and/or
70         licensing issues.
71         EOF
72 }
73
74 function create_profile_files()
75 {
76   PROFILE_DIR=${INSTALL_PREFIX}/etc/profile.d
77
78   mkdir -p $PROFILE_DIR
79   cat > ${PROFILE_DIR}/openssl.sh <<- "EOF"
80         export MANPATH="${MANPATH}:/usr/ssl/man"
81         EOF
82   cat > ${PROFILE_DIR}/openssl.csh <<- "EOF"
83         if ( $?MANPATH ) then
84           setenv MANPATH "${MANPATH}:/usr/ssl/man"
85         else
86           setenv MANPATH ":/usr/ssl/man"
87         endif
88         EOF
89 }
90
91 if [ -z "${SUBVERSION}" ]
92 then
93   echo "Usage: $0 subversion"
94   exit 1
95 fi
96
97 if [ ! -f config ]
98 then
99   echo "You must start this script in the OpenSSL toplevel source dir."
100   exit 1
101 fi
102
103 ./config ${CONFIG_OPTIONS}
104
105 get_openssl_version
106
107 make depend || exit 1
108
109 make || exit 1
110
111 base_install
112
113 doc_install
114
115 certs_install
116
117 create_cygwin_readme
118
119 create_profile_files
120
121 cd ${INSTALL_PREFIX}
122 chmod u+w usr/lib/engines/*.so
123 strip usr/bin/*.exe usr/bin/*.dll usr/lib/engines/*.so
124 chmod u-w usr/lib/engines/*.so
125
126 # Runtime package
127 find etc usr/bin usr/lib/engines usr/share/doc usr/ssl/certs \
128      usr/ssl/man/man[157] usr/ssl/misc usr/ssl/openssl.cnf usr/ssl/private \
129      -empty -o \! -type d |
130 tar cjfT openssl-${VERSION}-${SUBVERSION}.tar.bz2 -
131 # Development package
132 find usr/include usr/lib/*.a usr/lib/pkgconfig usr/ssl/man/man3 \
133      -empty -o \! -type d |
134 tar cjfT openssl-devel-${VERSION}-${SUBVERSION}.tar.bz2 -
135
136 ls -l openssl-${VERSION}-${SUBVERSION}.tar.bz2
137 ls -l openssl-devel-${VERSION}-${SUBVERSION}.tar.bz2
138
139 cleanup
140
141 exit 0