]> ncurses.scripts.mit.edu Git - ncurses.git/blob - mk-dlls.sh.in
ncurses 5.9 - patch 20110507
[ncurses.git] / mk-dlls.sh.in
1 #!/bin/sh
2 # $Id: mk-dlls.sh.in,v 1.3 2010/12/25 22:25:41 tom Exp $
3 ##############################################################################
4 # Copyright (c) 2008,2010 Free Software Foundation, Inc.                     #
5 #                                                                            #
6 # Permission is hereby granted, free of charge, to any person obtaining a    #
7 # copy of this software and associated documentation files (the "Software"), #
8 # to deal in the Software without restriction, including without limitation  #
9 # the rights to use, copy, modify, merge, publish, distribute, distribute    #
10 # with modifications, sublicense, and/or sell copies of the Software, and to #
11 # permit persons to whom the Software is furnished to do so, subject to the  #
12 # following conditions:                                                      #
13 #                                                                            #
14 # The above copyright notice and this permission notice shall be included in #
15 # all copies or substantial portions of the Software.                        #
16 #                                                                            #
17 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
18 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
19 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
20 # THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
21 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
22 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
23 # DEALINGS IN THE SOFTWARE.                                                  #
24 #                                                                            #
25 # Except as contained in this notice, the name(s) of the above copyright     #
26 # holders shall not be used in advertising or otherwise to promote the sale, #
27 # use or other dealings in this Software without prior written               #
28 # authorization.                                                             #
29 ##############################################################################
30 #
31 # Author: Juergen Pfeifer
32 #
33 # Build DLLs on MinGW
34 #
35 LC_ALL=C @CC@ -v 2>&1 | grep Target | grep mingw
36 if [ $? -eq 1 ]; then
37   echo "$0 requires a mingw environment" >&2
38 else
39   mkdir "$TEMP/tmp-dll"
40   cat > "$TEMP/tmp-dll/arch.c" <<EOF
41 #include <stdio.h>
42 int main()
43 {
44     printf("%d",8*sizeof(void*));
45     return(0);
46 }
47 EOF
48   pushd "$TEMP/tmp-dll"
49     @CC@ -o arch arch.c
50     ARCH=`./arch`
51     cd ..
52     rm -rf tmp-dll
53   popd
54   echo $ARCH > mingw_arch
55   echo Building DLLs and Import Libraries for Win${ARCH}
56
57   if [ -d lib ]; then
58     cf="-shared"
59     lf="--enable-auto-import"
60     pushd lib 2>&1 >/dev/null
61       for t in "" "t"
62       do
63         for m in "" "_g"
64         do
65           if [ -f libncurses${t}${m}.a ]; then
66             f=libncurses${t}${m}.a
67             g=ncurses${t}${m}
68             gi=libw${g}.dll.a
69             td=$TEMP/tmp-${g}
70             bd=`pwd`
71             rm -rf "${td}"
72             mkdir "${td}"
73             pushd "${td}"
74               ar x "${bd}/${f}" `ar t "${bd}/${f}"`
75               @CC@ $cf -o w${g}.dll -Wl,--out-implib,${gi} -Wl,--output-def,w${g}.def -Wl,$lf `ar t "${bd}/$f"` @LIBS@
76               lib //NOLOGO /MACHINE:i386 /DEF:w${g}.def
77               rm -f `ar t "${bd}/$f"`
78               mv w${g}.dll "${bd}"
79               mv w${g}.lib "${bd}"
80               mv ${gi} "${bd}"
81             popd
82             rm -rf "${td}"
83
84             for l in panel menu form
85             do
86               for f in lib${l}${t}${m}.a
87               do
88                 g=${l}${t}${m}
89                 td=$TEMP/tmp-${g}
90                 gi2=libw${g}.dll.a
91                 bd=`pwd`
92                 rm -rf "${td}"
93                 mkdir "${td}"
94                 echo $g
95                 pushd "${td}"
96                   ar x "${bd}/$f" `ar t "${bd}/$f"`
97                   @CC@ $cf -o w${g}.dll -Wl,--out-implib,${gi2} -Wl,--output-def,w${g}.def -Wl,$lf `ar t "${bd}/$f"` "${bd}/${gi}" @LIBS@
98                   lib //NOLOGO /MACHINE:i386 /DEF:w${g}.def
99                   rm -f `ar t "${bd}/$f"`
100                   mv w${g}.dll "${bd}"
101                   mv w${g}.lib "${bd}"
102                   mv ${gi2} "${bd}"
103                 popd
104                 rm -rf "${td}"
105               done
106             done
107           fi
108         done
109       done
110     popd
111   else
112     echo lib has not been built >&2
113   fi
114 fi