From patchwork Tue Oct 23 12:55:25 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yann Diorcet X-Patchwork-Id: 193480 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 086412C0109 for ; Tue, 23 Oct 2012 23:55:45 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=sourceware.org; s=default; x=1351601746; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe: List-Subscribe:List-Archive:List-Post:List-Help:Sender: Delivered-To; bh=WESA8cI5hpicAxEgd0CbNvURaAk=; b=caaT8V06vGO0bg0 XTN01lSyvBXKQTHwSKS5qxgzkv8OJfwcnDvDLfs0tM8rkI8gdQ4E0QNN3LPg20F3 Ng0c8o6nqJZ7SYoZRbQ2MU/nR0aFJG0VeACj8kCyGCXNUt3FGQvBCO6NJug1Ie4Q kNx8iZSMguFZKYAAUhbQRhv3aMh0= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=sourceware.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:Received:Received:Message-ID:Date:From:User-Agent:MIME-Version:To:Subject:Content-Type:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Subscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=GKa1edYFc1Kw9p9/zgprjAEqo5nJYn3EXd7z7fkTXVtFcamTKVrTfboTGA528L A9FOEmTglAYuaNaNz1EU1o2Fn/HCWRJwzQ053vxADawMjH8SZswFw7wVyAKoYI5Z XBjfMjrNRVnvBYCRU5FMwIl+9IBohvWG7wLo1icl7Wpsw=; Received: (qmail 5243 invoked by alias); 23 Oct 2012 12:55:38 -0000 Received: (qmail 5235 invoked by uid 22791); 23 Oct 2012 12:55:37 -0000 X-SWARE-Spam-Status: No, hits=-4.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, KHOP_RCVD_TRUST, RCVD_IN_DNSWL_LOW, RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Received: from mail-bk0-f41.google.com (HELO mail-bk0-f41.google.com) (209.85.214.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 23 Oct 2012 12:55:30 +0000 Received: by mail-bk0-f41.google.com with SMTP id jm1so1434844bkc.0 for ; Tue, 23 Oct 2012 05:55:29 -0700 (PDT) Received: by 10.204.150.213 with SMTP id z21mr3783319bkv.45.1350996929029; Tue, 23 Oct 2012 05:55:29 -0700 (PDT) Received: from macbook-smorlat.local (vig38-2-81-56-113-2.fbx.proxad.net. [81.56.113.2]) by mx.google.com with ESMTPS id ht18sm5783757bkc.14.2012.10.23.05.55.27 (version=SSLv3 cipher=OTHER); Tue, 23 Oct 2012 05:55:28 -0700 (PDT) Message-ID: <508693BD.30701@gmail.com> Date: Tue, 23 Oct 2012 14:55:25 +0200 From: Diorcet Yann User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:16.0) Gecko/20121010 Thunderbird/16.0.1 MIME-Version: 1.0 To: crossgcc@sourceware.org Subject: Windows 64 bits support X-IsSubscribed: yes Mailing-List: contact crossgcc-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: crossgcc-owner@sourceware.org Delivered-To: mailing list crossgcc@sourceware.org Dear list, I have quickly(but working) made patchs for support x86_64 for win32 using mingw32-w64 project. I'am successfully cross compile a 64 bits application using directx (awesome). I don't know very well crosstool-ng (i use mingw32 as base) maybe some things are ugly ... Regards, Yann Diorcet diff -urN crosstool-ng-1.16.0/samples/x86_64-w64-mingw32/crosstool.config crosstool-ng-1.16.0win64/samples/x86_64-w64-mingw32/crosstool.config --- crosstool-ng-1.16.0/samples/x86_64-w64-mingw32/crosstool.config 1970-01-01 01:00:00.000000000 +0100 +++ crosstool-ng-1.16.0win64/samples/x86_64-w64-mingw32/crosstool.config 2012-10-23 11:17:04.284674900 +0200 @@ -0,0 +1,18 @@ +CT_EXPERIMENTAL=y +CT_LOCAL_TARBALLS_DIR="${HOME}/src" +CT_SAVE_TARBALLS=y +CT_LOG_EXTRA=y +CT_ARCH_64=y +CT_ARCH_x86=y +CT_TARGET_VENDOR="w64" +CT_KERNEL_mingw64=y +CT_BINUTILS_V_2_21_1a=y +CT_BINUTILS_PLUGINS=y +CT_CC_V_4_5_1=y +CT_CC_LANG_CXX=y +CT_MINGW_DIRECTX=y +CT_MINGW_DDK=y +CT_GMP_V_4_3_2=y +CT_MPFR_V_2_4_2=y +CT_PPL_V_0_10_2=y +CT_CLOOG_V_0_15_10=y diff -urN crosstool-ng-1.16.0/samples/x86_64-w64-mingw32/reported.by crosstool-ng-1.16.0win64/samples/x86_64-w64-mingw32/reported.by --- crosstool-ng-1.16.0/samples/x86_64-w64-mingw32/reported.by 1970-01-01 01:00:00.000000000 +0100 +++ crosstool-ng-1.16.0win64/samples/x86_64-w64-mingw32/reported.by 2012-10-23 12:13:25.996572843 +0200 @@ -0,0 +1,3 @@ +reporter_name="Yann Diorcet " +reporter_url="" +reporter_comment="Config to build cross-compiler with mingw-w64 as kernel type" diff -urN crosstool-ng-1.16.0/scripts/build/kernel/mingw64.sh crosstool-ng-1.16.0win64/scripts/build/kernel/mingw64.sh --- crosstool-ng-1.16.0/scripts/build/kernel/mingw64.sh 1970-01-01 01:00:00.000000000 +0100 +++ crosstool-ng-1.16.0win64/scripts/build/kernel/mingw64.sh 2012-10-23 12:16:04.347473714 +0200 @@ -0,0 +1,83 @@ +# This file declares functions to install the kernel headers for mingw64 +# Copyright 2012 Yann Diorcet +# Licensed under the GPL v2. See COPYING in the root of this package + +CT_DoKernelTupleValues() { + CT_TARGET_KERNEL="mingw32" + CT_TARGET_SYS= +} + +do_kernel_get() { + CT_GetFile "mingw-w64-v${CT_W64API_VERSION}" \ + http://downloads.sourceforge.net/sourceforge/mingw-w64 +} + +do_kernel_extract() { + CT_Extract "mingw-w64-v${CT_W64API_VERSION}" +} + +do_kernel_headers() { + CT_DoStep INFO "Installing kernel headers" + + mkdir -p "${CT_HEADERS_DIR}" +# cp -r ${CT_SRC_DIR}/mingw-w64-v${CT_W64API_VERSION}/include/* \ +# ${CT_HEADERS_DIR} + + if [ -n "${CT_MINGW_DIRECTX}" ]; then + sdk_opt="directx" + if [ -n "${CT_MINGW_DDK}" ]; then + sdk_opt="all" + fi + else + if [ -n "${CT_MINGW_DDK}" ]; then + sdk_opt="ddk" + else + sdk_opt="none" + fi + fi + + CT_mkdir_pushd "${CT_BUILD_DIR}/build-header-build-${CT_BUILD}" + gmp_opts+=( "host=${CT_TARGET}" ) + gmp_opts+=( "prefix=${CT_SYSROOT_DIR}" ) + gmp_opts+=( "sdk=${sdk_opt}" ) + do_mingw64_headers_backend "${gmp_opts[@]}" + + CT_Popd + + CT_DoExecLog ALL cp -r ${CT_SYSROOT_DIR}/${CT_TARGET}/include/* \ + ${CT_HEADERS_DIR} + + CT_EndStep +} + +# Build MINGW64 headers +# Parameter : description : type : default +# host : machine to run on : tuple : (none) +# prefix : prefix to install into : dir : (none) +# cflags : host cflags to use : string : (empty) +do_mingw64_headers_backend() { + local host + local prefix + local cflags + local arg + local sdk + + for arg in "$@"; do + eval "${arg// /\\ }" + done + + CT_DoLog EXTRA "Configuring Headers" + + CT_DoExecLog CFG \ + "${CT_SRC_DIR}/mingw-w64-v${CT_W64API_VERSION}/mingw-w64-headers/configure" \ + --build=${CT_BUILD} \ + --host=${host} \ + --prefix="${prefix}" \ + --enable-sdk="${sdk}" + + CT_DoLog EXTRA "Compile Headers" + CT_DoExecLog ALL make + + CT_DoLog EXTRA "Installing Headers" + CT_DoExecLog ALL make install +} diff -urN crosstool-ng-1.16.0/scripts/build/libc/mingw64.sh crosstool-ng-1.16.0win64/scripts/build/libc/mingw64.sh --- crosstool-ng-1.16.0/scripts/build/libc/mingw64.sh 1970-01-01 01:00:00.000000000 +0100 +++ crosstool-ng-1.16.0win64/scripts/build/libc/mingw64.sh 2012-10-23 12:17:32.577009128 +0200 @@ -0,0 +1,52 @@ +do_libc_get() { + CT_GetFile "mingw-w64-v${CT_W64API_VERSION}" \ + http://downloads.sourceforge.net/sourceforge/mingw-w64 +} + +do_libc_extract() { + CT_Extract "mingw-w64-v${CT_W64API_VERSION}" +} + +do_libc_check_config() { + : +} + +do_libc_start_files() { + CT_DoStep INFO "Installing C library headers" + + # It seems mingw is strangely set up to look into /mingw instead of + # /usr (notably when looking for the headers). This symlink is + # here to workaround this, and seems to be here to last... :-/ + CT_DoExecLog ALL ln -sv "${CT_TARGET}" "${CT_SYSROOT_DIR}/mingw" + + CT_EndStep +} + +do_libc() { + CT_DoStep INFO "Building MinGW64 files" + + CT_DoLog EXTRA "Configuring W64-CRT" + + mkdir -p "${CT_BUILD_DIR}/build-w64crt" + cd "${CT_BUILD_DIR}/build-w64crt" + + CT_DoExecLog CFG \ + "${CT_SRC_DIR}/mingw-w64-v${CT_W64API_VERSION}/mingw-w64-crt/configure" \ + --prefix=${CT_SYSROOT_DIR} \ + --host=${CT_TARGET} + + CT_DoLog EXTRA "Building W64-CRT" + CT_DoExecLog ALL make ${JOBSFLAGS} + + CT_DoLog EXTRA "Installing W64-CRT" + CT_DoExecLog ALL make install + + CT_EndStep +} + +do_libc_finish() { + CT_DoStep INFO "Installing MinGW64 Development libraries" + + CT_EndStep +} + --- For unsubscribe information see http://sourceware.org/lists.html#faq diff -urN crosstool-ng-1.16.0/config/kernel/mingw64.in crosstool-ng-1.16.0win64/config/kernel/mingw64.in --- crosstool-ng-1.16.0/config/kernel/mingw64.in 1970-01-01 01:00:00.000000000 +0100 +++ crosstool-ng-1.16.0win64/config/kernel/mingw64.in 2012-10-21 22:59:43.708325867 +0200 @@ -0,0 +1,33 @@ +# mingw64 config options + +## depends on EXPERIMENTAL && ( ARCH_x86 && ARCH_64 ) +## +## select MINGW64 +## +## help Build a toolchain targeting systems running Windows as host + +choice + bool + prompt "Windows api version" + +# Don't remove next line +# CT_INSERT_VERSION_BELOW +config W64API_V_2_0_7 + bool + prompt "2.0.7" + +config W64API_V_select + bool + prompt "Other version" + +endchoice + +config W64API_VERSION + string + prompt "W64 api version" if W64API_V_select +# Don't remove next line +# CT_INSERT_VERSION_STRING_BELOW + default "2.0.7" if W64API_V_2_0_7 + help + Enter the version number of the windows api files to use + diff -urN crosstool-ng-1.16.0/config/kernel.in crosstool-ng-1.16.0win64/config/kernel.in --- crosstool-ng-1.16.0/config/kernel.in 2012-08-04 23:41:28.000000000 +0200 +++ crosstool-ng-1.16.0win64/config/kernel.in 2012-10-21 23:06:31.675797912 +0200 @@ -10,6 +10,9 @@ config MINGW32 bool +config MINGW64 + bool + # Each target OS (aka kernel) that support shared libraries can select # this, so the user can decide whether or not to build a shared library # enabled toolchain diff -urN crosstool-ng-1.16.0/config/libc/eglibc.in crosstool-ng-1.16.0win64/config/libc/eglibc.in --- crosstool-ng-1.16.0/config/libc/eglibc.in 2012-08-04 23:41:28.000000000 +0200 +++ crosstool-ng-1.16.0win64/config/libc/eglibc.in 2012-10-21 21:53:21.905448311 +0200 @@ -1,6 +1,6 @@ # eglibc options -## depends on ! MINGW32 && ! BARE_METAL && ARCH_USE_MMU +## depends on ! MINGW32 && ! MINGW64 && ! BARE_METAL && ARCH_USE_MMU ## ## select LIBC_SUPPORT_NPTL ## select LIBC_SUPPORT_LINUXTHREADS diff -urN crosstool-ng-1.16.0/config/libc/glibc.in crosstool-ng-1.16.0win64/config/libc/glibc.in --- crosstool-ng-1.16.0/config/libc/glibc.in 2012-08-04 23:41:28.000000000 +0200 +++ crosstool-ng-1.16.0win64/config/libc/glibc.in 2012-10-21 21:54:19.253134414 +0200 @@ -1,6 +1,6 @@ # glibc options -## depends on ! MINGW32 && ! BARE_METAL && ARCH_USE_MMU +## depends on ! MINGW32 && ! MINGW64 && ! BARE_METAL && ARCH_USE_MMU ## ## select LIBC_SUPPORT_NPTL ## diff -urN crosstool-ng-1.16.0/config/libc/mingw64.in crosstool-ng-1.16.0win64/config/libc/mingw64.in --- crosstool-ng-1.16.0/config/libc/mingw64.in 1970-01-01 01:00:00.000000000 +0100 +++ crosstool-ng-1.16.0win64/config/libc/mingw64.in 2012-10-19 20:35:39.126314117 +0200 @@ -0,0 +1,33 @@ +# mingw64 options + +## depends on MINGW64 +## +## select LIBC_SUPPORT_WIN32THREADS +## +## help The de-facto standard for Mingw distributions. + +choice + bool + prompt "Mingw64 runtime version" + +# Don't remove next line +# CT_INSERT_VERSION_BELOW +config MINGW64RT_V_3_18 + bool + prompt "3.18" + +config MINGW64RT_V_select + bool + prompt "Other version" + +endchoice + +config MINGW64RT_VERSION + string + prompt "Mingw64 runtime version" if MINGW64RT_V_select +# Don't remove next line +# CT_INSERT_VERSION_STRING_BELOW + default "3.18" if MINGW64RT_V_3_18 + help + Enter the version number of the mingw64 runtime files to use + diff -urN crosstool-ng-1.16.0/config/libc/mingw64.in.2 crosstool-ng-1.16.0win64/config/libc/mingw64.in.2 --- crosstool-ng-1.16.0/config/libc/mingw64.in.2 1970-01-01 01:00:00.000000000 +0100 +++ crosstool-ng-1.16.0win64/config/libc/mingw64.in.2 2012-10-23 11:16:31.069590088 +0200 @@ -0,0 +1,10 @@ +# Part-2 of mingw C library options: development libraries + +config MINGW_DIRECTX + bool + prompt "Include DirectX development files" + +config MINGW_DDK + bool + prompt "Include DDK development files" + diff -urN crosstool-ng-1.16.0/config/libc/uClibc.in crosstool-ng-1.16.0win64/config/libc/uClibc.in --- crosstool-ng-1.16.0/config/libc/uClibc.in 2012-08-04 23:41:28.000000000 +0200 +++ crosstool-ng-1.16.0win64/config/libc/uClibc.in 2012-10-21 21:54:33.838072664 +0200 @@ -1,6 +1,6 @@ # uClibc options -## depends on ! MINGW32 && ! BARE_METAL +## depends on ! MINGW32 && ! MINGW64 && ! BARE_METAL ## ## select LIBC_SUPPORT_LINUXTHREADS ## select LIBC_SUPPORT_THREADS_NONE