[M3devel] cm3 on snow leopard?
Jay K
jay.krell at cornell.edu
Sun Dec 12 06:49:29 CET 2010
I'm more sympathetic to using the already installed C compiler
to drive the assembler, than to build the current gcc driver.
You can see on Darwin we already probe around fairly aggressively
for a C compiler that can be told the target:
Darwin.common:
proc configure_c_compiler() is
if defined("SYSTEM_CC")
return
end
%
% older compiler doesn't like -m32 or -arch
%
% gcc -c -m32 -x c /dev/null
% cc1: error: invalid option ‘m32’
%
% fPIC is not usually needed here.
% It is the default for Apple gcc and left
% here in case user is using a self-built FSF gcc.
%
SYSTEM_CC = "gcc -gstabs+ -fPIC"
local m = " -m" & {"32BITS":"32","64BITS":"64"}{WORD_SIZE}
local arch = " -arch " & DarwinArch
if not equal(try_exec("@" & SYSTEM_CC & m & " -c -x c /dev/null -o /dev/null 2>&1 | fgrep \"cc1: error: invalid option \\\`32'\" >/dev/null"), 0)
SYSTEM_CC = SYSTEM_CC & m
end
if not equal(try_exec("@" & SYSTEM_CC & arch & " -c -x c /dev/null -o /dev/null 2>&1 | fgrep \"cc1: error: unrecognized command line option \\\\\"-arch\\\\\"\" >/dev/null"), 0)
SYSTEM_CC = SYSTEM_CC & arch
end
%write("SYSTEM_CC is " & SYSTEM_CC)
end
Most likely if we merely set SYSTEM_ASM = SYSTEM_CC & "-x assembler"
it'll work well.
Maybe only in this else case:
proc configure_assembler() is
if defined("SYSTEM_ASM")
return
end
SYSTEM_ASM = "/usr/libexec/gcc/darwin/" & DarwinArch & "/as"
if not FileExists(SYSTEM_ASM)
SYSTEM_ASM = "as" <<== here
end
end
All this is addressed by autoconf and/or a C-generating backend.....
- Jay
From: jay.krell at cornell.edu
To: mika at async.caltech.edu; m3devel at elegosoft.com
Date: Sun, 12 Dec 2010 05:26:37 +0000
Subject: Re: [M3devel] cm3 on snow leopard?
I'm rudely (but helpfully) ignoring your details and giving some of mine.
I though what is supposed to happen, specifically on Darwin, is the assembly code is supposed to indicate an architecture.
jbook2:m3core jay$ CM3_TARGET=I386_DARWIN M3CONFIG=/cm3/bin/config/I386_DARWIN cm3 -keep
^C
jbook2:m3core jay$ CM3_TARGET=AMD64_DARWIN M3CONFIG=/cm3/bin/config/AMD64_DARWIN cm3 -keep
^C
head */RTHooks.ms
but no.
But then this:
jbook2:m3core jay$ CM3_TARGET=AMD64_DARWIN M3CONFIG=/cm3/bin/config/AMD64_DARWIN cm3 -keep -commands
--- building in AMD64_DARWIN ---
..
/usr/libexec/gcc/darwin/x86_64/as RTAllocator.ms -o RTAllocator.mo
CM3_TARGET=I386_DARWIN M3CONFIG=/cm3/bin/config/I386_DARWIN cm3 -keep -commands
...
/usr/libexec/gcc/darwin/i386/as Ctypes.is -o Ctypes.io
i386 vs. x86_64.
Darwin.common:
proc configure_assembler() is
if defined("SYSTEM_ASM")
return
end
SYSTEM_ASM = "/usr/libexec/gcc/darwin/" & DarwinArch & "/as"
if not FileExists(SYSTEM_ASM)
SYSTEM_ASM = "as"
end
end
jbook2:m3core jay$ grep DarwinArch /dev2/cm3/m3-sys/cminstall/src/config-no-install/*
/dev2/cm3/m3-sys/cminstall/src/config-no-install/AMD64_DARWIN:DarwinArch = "x86_64"
/dev2/cm3/m3-sys/cminstall/src/config-no-install/ARM_DARWIN:DarwinArch = "armv6" % ?
/dev2/cm3/m3-sys/cminstall/src/config-no-install/Darwin.common: SYSTEM_ASM = "/usr/libexec/gcc/darwin/" & DarwinArch & "/as"
/dev2/cm3/m3-sys/cminstall/src/config-no-install/Darwin.common: local arch = " -arch " & DarwinArch
/dev2/cm3/m3-sys/cminstall/src/config-no-install/Darwin.common: arch = " -arch_only " & DarwinArch & " "
/dev2/cm3/m3-sys/cminstall/src/config-no-install/I386_DARWIN:DarwinArch = "i386"
/dev2/cm3/m3-sys/cminstall/src/config-no-install/PPC64_DARWIN:DarwinArch = "ppc64"
/dev2/cm3/m3-sys/cminstall/src/config-no-install/PPC_DARWIN:DarwinArch = "ppc"
?
cm3 -commands?
find /usr/lib | grep /as$
find /usr/libexec | grep /as$
Maybe the path changed? Has a version? or is there is only i686-apple-darwin9, powerpc-apple-darwin9?
I should look into getting the architecture into the assembly code though and just running "as", esp. on newer hosts.
- Jay
From: jay.krell at cornell.edu
To: mika at async.caltech.edu; m3devel at elegosoft.com
Date: Sun, 12 Dec 2010 00:59:18 +0000
Subject: Re: [M3devel] cm3 on snow leopard?
I admit I'm still using Leopard.
- Jay
> To: m3devel at elegosoft.com
> Date: Sat, 11 Dec 2010 14:19:02 -0800
> From: mika at async.caltech.edu
> Subject: [M3devel] cm3 on snow leopard?
>
> Hello m3devel,
>
> I just tried to install CM3 from cm3-I386_DARWIN-REL.deb on a new MacBook
> Air, but it seems I have the wrong assembler?
>
> I had to force dpkg to override the architecture on install (it was expecting
> i386, I think, and my machine identified itself as being "i386-darwin"?)
>
> Here are some details...
>
> [HAL:~/test/src] mika% /usr/local/cm3/bin/cm3 -version
> Critical Mass Modula-3 version 5.8.6
> last updated: 2010-04-11
> compiled: 2010-07-14 21:27:23
> configuration: /usr/local/cm3/bin/cm3.cfg
> host: I386_DARWIN
> target: I386_DARWIN
>
> compiling an empty Main.m3 yields:
>
> [HAL:~/test/src] mika% /usr/local/cm3/bin/cm3 -keep -commands
> --- building in ../I386_DARWIN ---
>
> cd ../I386_DARWIN
> rm .M3SHIP
> rm .M3OVERRIDES
> inhale prog.mx
> inhale /usr/local/cm3/pkg/m3core/I386_DARWIN/libm3core.a
> inhale /usr/local/cm3/pkg/libm3/I386_DARWIN/libm3.a
>
> new source -> compiling Main.m3
> m3front ../src/Main.m3 -w1
> /usr/local/cm3//bin/cm3cg -funwind-tables -fPIC -gstabs+ -m32 -quiet -fno-reorde
> r-blocks Main.mc -o Main.ms
> echo "rep movsl" | as -o /dev/null 2> /dev/null
> as Main.ms -o Main.mo
> Main.ms:15:suffix or operands invalid for `push'
> assemble => 1
> assembler failed assembling: Main.ms
> rm Main.mo
> exhale prog.mx
> rm prog.manifest
>
> compilation failed => not building program "prog"
> Fatal Error: package build failed
>
> [HAL:~/test/src] mika% uname -a
> Darwin HAL.local 10.5.0 Darwin Kernel Version 10.5.0: Fri Nov 5 23:20:39 PDT 2010; root:xnu-1504.9.17~1/RELEASE_I386 i386
> [HAL:~/test/src] mika% as -v
> Apple Inc version cctools-782~33, GNU assembler version 1.38
>
>
> I have XCode installed.
>
> [HAL:~/test/src] mika% gcc -v
> Using built-in specs.
> Target: i686-apple-darwin10
> Configured with: /var/tmp/gcc/gcc-5664~89/src/configure --disable-checking --enable-werror --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin10 --program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10 --target=i686-apple-darwin10 --with-gxx-include-dir=/include/c++/4.2.1
> Thread model: posix
> gcc version 4.2.1 (Apple Inc. build 5664)
> [HAL:~/test/src] mika% which gcc
> /usr/bin/gcc
>
>
> I must be doing something very obviously wrong (obviously to someone on this list, right??)
>
> Mika
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20101212/a7fd5cea/attachment-0002.html>
More information about the M3devel
mailing list