Re: [PATCH] QNXNTO and cross-compiling patches

Stephen Paul Weber <[email protected]>
Newsgroups gmane.comp.lang.haskell.cvs.ghc
Message-ID <[email protected]>
Somebody claiming to be Stephen Paul Weber wrote:
>The attached patches are needed to cross-compile with GHC for QNXNTO

And I forgot to attach...  Attached now.

-- 
Stephen Paul Weber, @singpolyma
See <http://singpolyma.net> for how I prefer to be contacted
edition right joseph

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc
0001-Set-up-for-QNXNTO-OS.patch (text/x-diff, 2.5 KB)
>From aac2690dbe47c58da3a2d4bb91cdcd52512039b8 Mon Sep 17 00:00:00 2001
From: Stephen Paul Weber <[email protected]>
Date: Sat, 8 Dec 2012 13:34:40 -0500
Subject: [PATCH 1/3] Set up for QNXNTO OS

This tells GHC some things about how to build for BlackBerry 10
---
 aclocal.m4                      |    6 ++++++
 compiler/main/DriverPipeline.hs |    2 +-
 compiler/utils/Platform.hs      |    2 ++
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/aclocal.m4 b/aclocal.m4
index 78e758e..94e1887 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -238,6 +238,9 @@ AC_DEFUN([FPTOOLS_SET_HASKELL_PLATFORM_VARS],
         osf3)
             test -z "[$]2" || eval "[$]2=OSOsf3"
             ;;
+        nto-qnx)
+            test -z "[$]2" || eval "[$]2=OSQNXNTO"
+            ;;
         dragonfly|osf1|hpux|linuxaout|freebsd2|cygwin32|gnu|nextstep2|nextstep3|sunos4|ultrix|irix|aix)
             test -z "[$]2" || eval "[$]2=OSUnknown"
             ;;
@@ -1820,6 +1823,9 @@ case "$1" in
             #      i686-gentoo-freebsd8.2
     $2="freebsd"
     ;;
+  nto-qnx*)
+    $2="nto-qnx"
+    ;;
   *)
     echo "Unknown OS $1"
     exit 1
diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs
index d0e1ca8..fd5694f 100644
--- a/compiler/main/DriverPipeline.hs
+++ b/compiler/main/DriverPipeline.hs
@@ -1748,7 +1748,7 @@ linkBinary dflags o_files dep_packages = do
             let os = platformOS (targetPlatform dflags)
             in if os == OSOsf3 then ["-lpthread", "-lexc"]
                else if os `elem` [OSMinGW32, OSFreeBSD, OSOpenBSD,
-                                  OSNetBSD, OSHaiku]
+                                  OSNetBSD, OSHaiku, OSQNXNTO]
                then []
                else ["-lpthread"]
          | otherwise               = []
diff --git a/compiler/utils/Platform.hs b/compiler/utils/Platform.hs
index 76c9fa3..661e03a 100644
--- a/compiler/utils/Platform.hs
+++ b/compiler/utils/Platform.hs
@@ -69,6 +69,7 @@ data OS
         | OSKFreeBSD
         | OSHaiku
         | OSOsf3
+        | OSQNXNTO
         deriving (Read, Show, Eq)
 
 -- | ARM Instruction Set Architecture, Extensions and ABI
@@ -110,6 +111,7 @@ osElfTarget OSKFreeBSD  = True
 osElfTarget OSHaiku     = True
 osElfTarget OSOsf3      = False -- I don't know if this is right, but as
                                 -- per comment below it's safe
+osElfTarget OSQNXNTO    = False
 osElfTarget OSUnknown   = False
  -- Defaulting to False is safe; it means don't rely on any
  -- ELF-specific functionality.  It is important to have a default for
-- 
1.7.10.4
0002-when-we-have-TARGETPLATFORM-HOSTPLATFORM-we-have-to-.patch (text/x-diff, 3.4 KB)
>From 02d3e695d227690f9036abaab7ceea47e2538be3 Mon Sep 17 00:00:00 2001
From: Gabor Greif <[email protected]>
Date: Mon, 9 Jan 2012 21:35:34 +0100
Subject: [PATCH 2/3] when we have TARGETPLATFORM != HOSTPLATFORM we have to
 switch in different tools/options

Conflicts:
	rules/build-package-way.mk
	rules/hs-suffix-rules-srcdir.mk
	rules/shell-wrapper.mk
---
 rules/build-dependencies.mk     |    3 +++
 rules/build-package-data.mk     |    7 +++++++
 rules/distdir-way-opts.mk       |    4 ++++
 rules/hs-suffix-rules-srcdir.mk |    5 +++++
 rules/shell-wrapper.mk          |    7 +++++++
 5 files changed, 26 insertions(+)

diff --git a/rules/build-dependencies.mk b/rules/build-dependencies.mk
index 4a4f563..a3ae398 100644
--- a/rules/build-dependencies.mk
+++ b/rules/build-dependencies.mk
@@ -24,6 +24,9 @@ $1_$2_C_FILES_DEPS = $$(filter-out $$($1_$2_C_FILES_NODEPS),$$($1_$2_C_FILES))
 
 $1_$2_MKDEPENDHS_FLAGS = -dep-makefile $$($1_$2_depfile_haskell).tmp $$(foreach way,$$($1_$2_WAYS),-dep-suffix "$$(patsubst %o,%,$$($$(way)_osuf))")
 $1_$2_MKDEPENDHS_FLAGS += -include-pkg-deps
+ifneq "$(TARGETPLATFORM)" "$(HOSTPLATFORM)"
+$1_$2_MKDEPENDHS_FLAGS += -DCOMPILING_GHC
+endif
 
 ifneq "$$(NO_GENERATED_MAKEFILE_RULES)" "YES"
 
diff --git a/rules/build-package-data.mk b/rules/build-package-data.mk
index bbe8652..0cc8c96 100644
--- a/rules/build-package-data.mk
+++ b/rules/build-package-data.mk
@@ -74,6 +74,13 @@ ifeq "$3" "0"
 $1_$2_CONFIGURE_OPTS += $$(BOOT_PKG_CONSTRAINTS)
 endif
 
+ifeq "$3" "1"
+ifneq "$(TARGETPLATFORM)" "$(HOSTPLATFORM)"
+$1_$2_CONFIGURE_OPTS += --configure-option=--host=$(HOSTPLATFORM)
+$1_$2_CONFIGURE_OPTS += --configure-option=--target=$(TARGETPLATFORM)
+endif
+endif
+
 $1_$2_CONFIGURE_OPTS += --with-gcc="$$(CC_STAGE$3)"
 $1_$2_CONFIGURE_OPTS += --configure-option=--with-cc="$$(CC_STAGE$3)"
 $1_$2_CONFIGURE_OPTS += --with-ar="$$(AR_STAGE$3)"
diff --git a/rules/distdir-way-opts.mk b/rules/distdir-way-opts.mk
index 4d27bbf..e71b9d4 100644
--- a/rules/distdir-way-opts.mk
+++ b/rules/distdir-way-opts.mk
@@ -194,6 +194,10 @@ ifneq ($$(strip $$($1_$2_DIST_LD_OPTS)),)
 $1_$2_$3_HSC2HS_LD_OPTS:=$$(shell for i in $$($1_$2_DIST_LD_OPTS); do echo \'--lflag=$$$$i\'; done)
 endif
 
+ifneq "$(TARGETPLATFORM)" "$(HOSTPLATFORM)"
+$1_$2_$3_HSC2HS_CC_OPTS += -DCOMPILING_GHC
+endif
+
 $1_$2_$3_ALL_HSC2HS_OPTS = \
  --cc=$$(WhatGccIsCalled) \
  --ld=$$(WhatGccIsCalled) \
diff --git a/rules/hs-suffix-rules-srcdir.mk b/rules/hs-suffix-rules-srcdir.mk
index 94a41d5..9553bc3 100644
--- a/rules/hs-suffix-rules-srcdir.mk
+++ b/rules/hs-suffix-rules-srcdir.mk
@@ -40,6 +40,11 @@ $1/$2/build/%_hsc.c $1/$2/build/%_hsc.h $1/$2/build/%.hs : $1/$4/%.hsc $$(HSC2HS
 
 # Compiling Haskell source
 
+ifneq "$(TARGETPLATFORM)" "$(HOSTPLATFORM)"
+--CROSS-OPTS-- = -DCOMPILING_GHC
+endif
+
+
 $1/$2/build/%.$$($3_osuf) : $1/$4/%.hs $$(LAX_DEPS_FOLLOW) $$($1_$2_HC_DEP) $$($1_$2_PKGDATA_DEP)
 	$$(call cmd,$1_$2_HC) $$($1_$2_$3_ALL_HC_OPTS) -c $$< -o $$@
 
diff --git a/rules/shell-wrapper.mk b/rules/shell-wrapper.mk
index 450c989..3e42381 100644
--- a/rules/shell-wrapper.mk
+++ b/rules/shell-wrapper.mk
@@ -30,6 +30,13 @@ endif
 
 all_$1_$2 : $$(INPLACE_WRAPPER)
 
+ifneq "$(TARGETPLATFORM)" "$(HOSTPLATFORM)"
+$1_$2_PGMGCC = $$(CC_STAGE1)
+else
+$1_$2_PGMGCC = $$(WhatGccIsCalled)
+endif
+
+
 $$(INPLACE_BIN)/$$($1_$2_PROG): WRAPPER=$$@
 ifeq "$$($1_$2_SHELL_WRAPPER)" "YES"
 $$(INPLACE_WRAPPER): $$($1_$2_SHELL_WRAPPER_NAME)
-- 
1.7.10.4
0003-Pass-through-linker.patch (text/x-diff, 803 B)
>From e5b7bfa4fad4d1d39c4b9ac30efc1862b555f1b4 Mon Sep 17 00:00:00 2001
From: Stephen Paul Weber <[email protected]>
Date: Tue, 11 Dec 2012 18:24:40 -0500
Subject: [PATCH 3/3] Pass through linker

Needed for cross-compiling
---
 rules/build-package-data.mk |    1 +
 1 file changed, 1 insertion(+)

diff --git a/rules/build-package-data.mk b/rules/build-package-data.mk
index 0cc8c96..38b5457 100644
--- a/rules/build-package-data.mk
+++ b/rules/build-package-data.mk
@@ -82,6 +82,7 @@ endif
 endif
 
 $1_$2_CONFIGURE_OPTS += --with-gcc="$$(CC_STAGE$3)"
+$1_$2_CONFIGURE_OPTS += --with-ld="$$(CC_STAGE$3)"
 $1_$2_CONFIGURE_OPTS += --configure-option=--with-cc="$$(CC_STAGE$3)"
 $1_$2_CONFIGURE_OPTS += --with-ar="$$(AR_STAGE$3)"
 $1_$2_CONFIGURE_OPTS += --with-ranlib="$$(RANLIB)"
-- 
1.7.10.4
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.