summaryrefslogtreecommitdiff
path: root/distrib/prep-bin-dist-mingw
blob: 042805a5be1cafd9f6ef69c0f188710a50a2b72a (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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#!/bin/sh
#
# Running 'binary-dist' gives us a tree which isn't quite right
# for the purposes of creating a mingw/win32 install tree.  
# This script rejigs that tree. The resulting tree is ready for
# packaging up in whatever form convenient (MSI installer / tar bundle/ ..)
#
# To use:
#
#   foo$ cd <top of fptools build tree>
#   foo$ make binary-dist Project=Ghc  (*)
#   foo$ cd ghc-<version>
#   foo$ ../distrib/prep-bin-dist-mingw
#
#  * - making sure you've initially set BIN_DIST=1 in 
#      your build.mk ...
# 
# User tweakables 
#   (settable via environment variables, e.g.,
#      mingw_top=<whatever> ../distrib/prep-bin-dist-mingw
#   )
#
#    - mingw_top   -- location of mingw distribution tree
#    - old_ghc_top -- top of existing GHC binary diste tree
#                     (needed just to copy along perl binary.)
#
#    - gcc_version -- what gcc version your mingw tree uses.
#
#
if [ "x${old_ghc_top}" == "x" ]; then
    export old_ghc_top=c:/ghc/ghc-6.2.1
fi
if [ "x${mingw_top}" == "x" ]; then
 export mingw_top=c:/mingw3
fi

# The gcc-lib directory of the mingw tree you want to
# include with the binary dist.
if [ "x${gcc_version}" == "x" ]; then
  # The default (with mingw3)
  export gcc_lib=$mingw_top/lib/gcc-lib/mingw32/3.2.3
else
  export gcc_lib=$mingw_top/lib/gcc-lib/mingw32/${gcc_version}
fi

#Directory where a (cygwin-free) perl binary resides.
if [ "x${perl_dir}" == "x" ]; then
  export perl_dir=$old_ghc_top
fi

#
# The mingw include, lib, and bin directories; all derived
# from ${mingw_top}.
#
if [ "x${mingw_include}" == "x" ]; then
  export mingw_include=$mingw_top/include
fi
if [ "x${mingw_lib}" == "x" ]; then
  export mingw_lib=$mingw_top/lib
fi
if [ "x${mingw_bin}" == "x" ]; then
  export mingw_bin=$mingw_top/bin
fi

# Check that we're in an OK place before starting to re-org
# the directory tree..
if ! [ -d bin/i386-unknown-mingw32 ] ; then
  echo "Doesn't look as if I'm in the toplevel directory of a mingw tree"
  echo "Usage: cd ghc-<version> ; ../distrib/prep-bin-dist-mingw"
  exit 1;
fi;

echo "Removing configure script files...not needed"
rm -f config.guess config.sub configure configure.ac mkdirhier
rm -f Makefile-bin.in Makefile.in aclocal.m4 install-sh
rm -rf autom4te.cache

echo "rejig bin/"
mv bin/i386-unknown-mingw32/* bin/
rmdir bin/i386-unknown-mingw32
strip bin/ghc.exe

echo "rejig lib/"
mv lib/i386-unknown-mingw32/* .
rmdir lib/i386-unknown-mingw32
rmdir lib
mv ghc-asm.prl ghc-asm
mv ghc-split.prl ghc-split

echo "create gcc-lib/"
#
# A bunch of stuff gets lumped into gcc-lib:
#
#  - the gcc-lib/ + gcc-lib/include of the gcc you
#    intend to ship (normally located as 
#     lib/gcc-lib/mingw/<gcc version>/ in your mingw tree.)
#  - the contents of mingw/lib/ 
#  - ld.exe, as.exe, dlltool.exe, dllwrap.exe from mingw/bin
#    to gcc-lib/
#  - ar.exe from mingw/bin to bin/
#
mkdir gcc-lib
mkdir gcc-lib/include
cp $gcc_lib/* gcc-lib/
cp $gcc_lib/include/* gcc-lib/include/
cp $mingw_lib/* gcc-lib/
cp $mingw_bin/as.exe gcc-lib/
cp $mingw_bin/ld.exe gcc-lib/
cp $mingw_bin/ar.exe bin/
# Note: later versions of dlltool.exe depend on a bfd helper DLL.
cp $mingw_bin/dllwrap.exe gcc-lib/
cp $mingw_bin/dlltool.exe gcc-lib/
rm gcc-lib/f771.exe || echo "good - f771.exe not found"

echo "extra header files inside of include/"
#
# contains mingw/include
mkdir include/mingw
cp -Rf $mingw_include/* include/mingw
#
# g++-3/ subdir causes problems with installer tool (+ being a 
# troublesome character); leave out for now.
#rm -rf include/mingw/g++-3/ || echo "g++-3/ not there"
rm -rf include/mingw/c++/ || echo "c++/ not there"
rm -rf include/mingw/ddk/ || echo "ddk/ not there"
rm -rf include/mingw/gnu/ || echo "gnu/ not there"
rm -rf include/mingw/javax/ || echo "javax/ not there"
rm -rf include/mingw/java/ || echo "java/ not there"
rm -rf include/mingw/gcj/ || echo "gcj/ not there"

echo "add gcc"
cp ${mingw_bin}/gcc.exe .
#cp ${mingw_bin}/gcc-2.exe gcc.exe

echo "copy in perl too"
cp ${perl_dir}/perl.exe .
cp ${perl_dir}/perl56.dll .

# For reasons unknown, duplicate copies of misc package files in share/
# (leave them be for now.)

echo "formatting documentation"
cp README README.txt
mv share doc

# Leave out pdf users_guide documentation for now; problematic to build with the versions
# of 'xsltproc' and 'fop' I've been able to lay my hands on.
#cp ../ghc/docs/users_guide/users_guide.pdf doc/ || 
#  (make -C ../ghc/docs/users_guide/ pdf ; cp ../ghc/docs/users_guide/users_guide.pdf doc/) || 
#  echo "No User Guide PDF doc found"
#cp ../hslibs/doc/hslibs.pdf doc/ || 
#  (make -C ../hslibs/doc/ pdf ; cp ../hslibs/doc/hslibs.pdf doc/) ||
#  echo "No HSLIBS PDF doc found"