scripts/build/libc/mingw.sh
changeset 3159 fb71cad4b085
parent 2580 46dd211a7fd5
child 3162 e51eb0a614c7
     1.1 --- a/scripts/build/libc/mingw.sh	Mon Aug 01 00:16:12 2011 +0200
     1.2 +++ b/scripts/build/libc/mingw.sh	Thu Jan 10 00:27:13 2013 +0100
     1.3 @@ -1,36 +1,16 @@
     1.4 -do_libc_get() {
     1.5 -    CT_GetFile "mingwrt-${CT_MINGWRT_VERSION}-mingw32-src" \
     1.6 -        http://downloads.sourceforge.net/sourceforge/mingw
     1.7 +# Copyright 2012 Yann Diorcet
     1.8 +# Licensed under the GPL v2. See COPYING in the root of this package
     1.9  
    1.10 -    if [ -n "${CT_MINGW_DIRECTX}" ]; then
    1.11 -        CT_GetFile "directx-devel" \
    1.12 -            http://www.libsdl.org/extras/win32/common
    1.13 -    fi
    1.14 -    if [ -n "${CT_MINGW_OPENGL}" ]; then
    1.15 -        CT_GetFile "opengl-devel" \
    1.16 -            http://www.libsdl.org/extras/win32/common
    1.17 -    fi
    1.18 -    if [ -n "${CT_MINGW_PDCURSES}" ]; then
    1.19 -        CT_GetFile "PDCurses-${CT_MINGW_PDCURSES_VERSION}" \
    1.20 -            http://downloads.sourceforge.net/sourceforge/pdcurses
    1.21 -    fi
    1.22 -    if [ -n "${CT_MINGW_GNURX}" ]; then
    1.23 -        CT_GetFile "mingw-libgnurx-${CT_MINGW_GNURX_VERSION}-src" \
    1.24 -            http://downloads.sourceforge.net/sourceforge/mingw
    1.25 -    fi
    1.26 +do_libc_get() { 
    1.27 +    CT_GetFile "mingw-w64-v${CT_WINAPI_VERSION}" \
    1.28 +        http://downloads.sourceforge.net/sourceforge/mingw-w64
    1.29  }
    1.30  
    1.31  do_libc_extract() {
    1.32 -    CT_Extract "mingwrt-${CT_MINGWRT_VERSION}-mingw32-src"
    1.33 -
    1.34 -    if [ -n "${CT_MINGW_PDCURSES}" ]; then
    1.35 -        CT_Extract "PDCurses-${CT_MINGW_PDCURSES_VERSION}"
    1.36 -        CT_Patch "PDCurses" "${CT_MINGW_PDCURSES_VERSION}"
    1.37 -    fi
    1.38 -    if [ -n "${CT_MINGW_GNURX}" ]; then
    1.39 -        CT_Extract "mingw-libgnurx-${CT_MINGW_GNURX_VERSION}-src"
    1.40 -        CT_Patch "mingw-libgnurx" "${CT_MINGW_GNURX_VERSION}-src"
    1.41 -    fi
    1.42 +    CT_Extract "mingw-w64-v${CT_WINAPI_VERSION}"
    1.43 +    CT_Pushd "${CT_SRC_DIR}/mingw-w64-v${CT_WINAPI_VERSION}/"
    1.44 +    CT_Patch nochdir mingw-w64 "${CT_WINAPI_VERSION}"
    1.45 +    CT_Popd
    1.46  }
    1.47  
    1.48  do_libc_check_config() {
    1.49 @@ -38,119 +18,66 @@
    1.50  }
    1.51  
    1.52  do_libc_start_files() {
    1.53 +    local -a sdk_opts
    1.54 +
    1.55      CT_DoStep INFO "Installing C library headers"
    1.56  
    1.57 -    CT_DoLog EXTRA "Installing MinGW Runtime headers"
    1.58 -    mkdir -p "${CT_HEADERS_DIR}"
    1.59 -    cp -r ${CT_SRC_DIR}/mingwrt-${CT_MINGWRT_VERSION}-mingw32-src/include/* \
    1.60 -          ${CT_HEADERS_DIR}
    1.61 +    case "${CT_MINGW_DIRECTX}:${CT_MINGW_DDK}" in
    1.62 +        y:y)    sdk_opts+=( "--enable-sdk=all"     );;
    1.63 +        y:)     sdk_opts+=( "--enable-sdk=directx" );;
    1.64 +        :y)     sdk_opts+=( "--enable-sdk=ddk"     );;
    1.65 +        :)      ;;
    1.66 +    esac
    1.67 +
    1.68 +    CT_mkdir_pushd "${CT_BUILD_DIR}/build-mingw-w64-headers"
    1.69 +
    1.70 +    CT_DoLog EXTRA "Configuring Headers"
    1.71 +
    1.72 +    CT_DoExecLog CFG        \
    1.73 +    "${CT_SRC_DIR}/mingw-w64-v${CT_WINAPI_VERSION}/mingw-w64-headers/configure" \
    1.74 +        --build=${CT_BUILD} \
    1.75 +        --host=${CT_TARGET} \
    1.76 +        --prefix=/usr       \
    1.77 +        "${sdk_opts[@]}"
    1.78 +
    1.79 +    CT_DoLog EXTRA "Compile Headers"
    1.80 +    CT_DoExecLog ALL make
    1.81 +
    1.82 +    CT_DoLog EXTRA "Installing Headers"
    1.83 +    CT_DoExecLog ALL make install DESTDIR=${CT_SYSROOT_DIR}
    1.84 +    
    1.85 +    CT_Popd
    1.86  
    1.87      # It seems mingw is strangely set up to look into /mingw instead of
    1.88      # /usr (notably when looking for the headers). This symlink is
    1.89      # here to workaround this, and seems to be here to last... :-/
    1.90 -    CT_DoExecLog ALL ln -sv "usr" "${CT_SYSROOT_DIR}/mingw"
    1.91 +    CT_DoExecLog ALL ln -sv "usr/${CT_TARGET}" "${CT_SYSROOT_DIR}/mingw"
    1.92  
    1.93      CT_EndStep
    1.94  }
    1.95  
    1.96  do_libc() {
    1.97 -    CT_DoStep INFO "Building MinGW files"
    1.98 +    CT_DoStep INFO "Building mingw-w64 files"
    1.99  
   1.100 -    CT_DoLog EXTRA "Configuring W32-API"
   1.101 +    CT_DoLog EXTRA "Configuring mingw-w64-crt"
   1.102  
   1.103 -    mkdir -p "${CT_BUILD_DIR}/build-w32api"
   1.104 -    cd "${CT_BUILD_DIR}/build-w32api"
   1.105 +    CT_mkdir_pushd "${CT_BUILD_DIR}/build-mingw-w64-crt"
   1.106  
   1.107 -    CT_DoExecLog CFG                                                  \
   1.108 -    CFLAGS="-I${CT_HEADERS_DIR}"                                      \
   1.109 -    LDFLAGS="-L${CT_SYSROOT_DIR}/lib"                                 \
   1.110 -    "${CT_SRC_DIR}/w32api-${CT_W32API_VERSION}-mingw32-src/configure" \
   1.111 -        --prefix=${CT_SYSROOT_DIR}                                    \
   1.112 -        --includedir=${CT_HEADERS_DIR}                                \
   1.113 -        --host=${CT_TARGET}
   1.114 +    CT_DoExecLog CFG                                                        \
   1.115 +    "${CT_SRC_DIR}/mingw-w64-v${CT_WINAPI_VERSION}/mingw-w64-crt/configure" \
   1.116 +        --prefix=/usr                                                       \
   1.117 +        --build=${CT_BUILD}                                                 \
   1.118 +        --host=${CT_TARGET}                                                 \
   1.119  
   1.120 -    CT_DoLog EXTRA "Building W32-API"
   1.121 +    CT_DoLog EXTRA "Building mingw-w64-crt"
   1.122      CT_DoExecLog ALL make ${JOBSFLAGS}
   1.123  
   1.124 -    CT_DoLog EXTRA "Installing W32-API"
   1.125 -    CT_DoExecLog ALL make install
   1.126 -
   1.127 -    CT_DoLog EXTRA "Configuring MinGW Runtime"
   1.128 -
   1.129 -    mkdir -p "${CT_BUILD_DIR}/build-mingwrt"
   1.130 -    cd "${CT_BUILD_DIR}/build-mingwrt"
   1.131 -
   1.132 -    CT_DoExecLog CFG                                                    \
   1.133 -    CFLAGS="-I${CT_HEADERS_DIR}"                                        \
   1.134 -    LDFLAGS="-L${CT_SYSROOT_DIR}/lib"                                   \
   1.135 -    "${CT_SRC_DIR}/mingwrt-${CT_MINGWRT_VERSION}-mingw32-src/configure" \
   1.136 -        --prefix=${CT_SYSROOT_DIR}/                                     \
   1.137 -        --includedir=${CT_HEADERS_DIR}                                  \
   1.138 -        --host=${CT_TARGET}
   1.139 -
   1.140 -    CT_DoLog EXTRA "Building MinGW Runtime"
   1.141 -    CT_DoExecLog ALL make ${JOBSFLAGS}
   1.142 -
   1.143 -    CT_DoLog EXTRA "Installing MinGW Runtime"
   1.144 -    CT_DoExecLog ALL make install
   1.145 +    CT_DoLog EXTRA "Installing mingw-w64-crt"
   1.146 +    CT_DoExecLog ALL make install DESTDIR=${CT_SYSROOT_DIR}
   1.147  
   1.148      CT_EndStep
   1.149  }
   1.150  
   1.151  do_libc_finish() {
   1.152 -    CT_DoStep INFO "Installing MinGW Development libraries"
   1.153 -
   1.154 -    CT_Pushd "${CT_SYSROOT_DIR}"
   1.155 -    if [ -n "${CT_MINGW_DIRECTX}" ]; then
   1.156 -        CT_DoLog EXTRA "Installing DirectX development package"
   1.157 -        CT_Extract nochdir "directx-devel"
   1.158 -    fi
   1.159 -    if [ -n "${CT_MINGW_OPENGL}" ]; then
   1.160 -        CT_DoLog EXTRA "Installing OpenGL development package"
   1.161 -        CT_Extract nochdir "opengl-devel"
   1.162 -    fi
   1.163 -    CT_Popd
   1.164 -
   1.165 -    if [ -n "${CT_MINGW_PDCURSES}" ]; then
   1.166 -        CT_DoLog EXTRA "Building PDCurses development files"
   1.167 -        mkdir -p "${CT_BUILD_DIR}/build-pdcurses"
   1.168 -        cd "${CT_BUILD_DIR}/build-pdcurses"
   1.169 -
   1.170 -        make -f ${CT_SRC_DIR}/PDCurses-${CT_MINGW_PDCURSES_VERSION}/win32/mingwin32.mak libs \
   1.171 -            PDCURSES_SRCDIR=${CT_SRC_DIR}/PDCurses-${CT_MINGW_PDCURSES_VERSION} \
   1.172 -            CROSS_COMPILE=${CT_TARGET}-
   1.173 -
   1.174 -        CT_DoLog EXTRA "Installing PDCurses development files"
   1.175 -        chmod a+r ${CT_SRC_DIR}/PDCurses-${CT_MINGW_PDCURSES_VERSION}/*.h
   1.176 -        cp ${CT_SRC_DIR}/PDCurses-${CT_MINGW_PDCURSES_VERSION}/*.h \
   1.177 -           ${CT_HEADERS_DIR}/
   1.178 -        cp pdcurses.a ${CT_SYSROOT_DIR}/lib/libpdcurses.a
   1.179 -        cp pdcurses.a ${CT_SYSROOT_DIR}/lib/libncurses.a
   1.180 -    fi
   1.181 -
   1.182 -    if [ -n "${CT_MINGW_GNURX}" ]; then
   1.183 -        CT_DoLog EXTRA "Configuring GnuRX development files"
   1.184 -
   1.185 -        mkdir -p "${CT_BUILD_DIR}/build-gnurx"
   1.186 -        cd "${CT_BUILD_DIR}/build-gnurx"
   1.187 -
   1.188 -        CT_DoExecLog CFG                                                        \
   1.189 -        CFLAGS="${CT_CFLAGS_FOR_TARGET}"                                        \
   1.190 -        "${CT_SRC_DIR}/mingw-libgnurx-${CT_MINGW_GNURX_VERSION}-src/configure"  \
   1.191 -            --build=${CT_BUILD}                                                 \
   1.192 -            --host=${CT_TARGET}                                                 \
   1.193 -            --prefix=${CT_SYSROOT_DIR}                                          \
   1.194 -            --includedir=${CT_HEADERS_DIR}                                      \
   1.195 -            --enable-shared                                                     \
   1.196 -            --enable-static
   1.197 -
   1.198 -        CT_DoLog EXTRA "Building GnuRX development files"
   1.199 -        CT_DoExecLog ALL make ${JOBSFLAGS}
   1.200 -
   1.201 -        CT_DoLog EXTRA "Installing GnuRX development files"
   1.202 -        CT_DoExecLog ALL make install-dev
   1.203 -    fi
   1.204 -
   1.205 -    CT_EndStep
   1.206 +    :
   1.207  }
   1.208 -