A NOTE has been added to this issue.
======================================================================
http://www.freepascal.org/mantis/view.php?id=9201
======================================================================
Reported By: Adriaan van Os
Assigned To:
======================================================================
Project: FPC
Issue ID: 9201
Category: Compiler
Reproducibility: always
Severity: minor
Priority: normal
Status: new
FPCOldBugId: 0
FPCTarget: -
Fixed in Revision:
======================================================================
Date Submitted: 2007-07-02 16:08 CEST
Last Modified: 2007-07-02 20:17 CEST
======================================================================
Summary: PowerPC crosscompiler on i386 Mac OS X looks for
wrong assembler and linker
Description:
Building FreePascal on i386 Mac OS X with
sudo ln -sf /usr/bin/as /usr/bin/powerpc-darwin-as
sudo ln -sf /usr/bin/ld /usr/bin/powerpc-darwin-ld
and
make all CPU_TARGET=powerpc DEBUG=1
sudo make install CPU_TARGET=powerpc DEBUG=1 CROSSINSTALL=1
results in a PowerPC crosscompiler /usr/local/lib/fpc/2.3.1/ppcrossppc.
The problem is that this compiler expects an assembler "-as" and a linker
"-ld".
[p17:~/Support/fpcbugs] adriaan% /usr/local/lib/fpc/2.3.1/ppcrossppc p.p
Free Pascal Compiler version 2.3.1 [2007/06/28] for powerpc
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Darwin for PowerPC
Compiling p.p
Assembling p
Error: Assembler -as not found, switching to external assembling
Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
[p17:~/Support/fpcbugs] adriaan% cat p.p
program P; begin end.
======================================================================
----------------------------------------------------------------------
Jonas Maebe - 2007-07-02 16:32
----------------------------------------------------------------------
Have you installed FPC 2.1.4? The configuration file for earlier FPC's set
a wrong (and superfluous) cross-compiling prefix when cross-compiling from
Darwin to Darwin. 2.1.4 does not set any prefix at all, since plain as and
ld are simple frontends which call through to the cpu-specific drivers.
Check your /etc/fpc.cfg file. It should contain this:
---
# set binutils prefix
#DEFINE NEEDCROSSBINUTILS
#ifdef darwin
#undef NEEDCROSSBINUTILS
#endif
#IFDEF FPC_CROSSCOMPILING
#IFDEF NEEDCROSSBINUTILS
-XP$fpctarget-
#ENDIF NEEDCROSSBINUTILS
#ENDIF
---
The -XP parameter is what sets the prefix.
----------------------------------------------------------------------
Adriaan van Os - 2007-07-02 20:00
----------------------------------------------------------------------
> Have you installed FPC 2.1.4?
I installed fpc-2.1.4a.intel-macosx.dmg
> The configuration file for earlier FPC's set a wrong (and superfluous)
cross-compiling prefix when cross-compiling from Darwin to Darwin. 2.1.4
does not set any prefix at all, since plain as and ld are simple frontends
which call through to the cpu-specific drivers. compiling from Darwin to
Darwin. 2.1.4 does not set any prefix at all, since plain as and ld are
simple frontends which call through to the cpu-specific drivers.
But somehow, it looks like a hyphen gets into the prefix
> Check your /etc/fpc.cfg file. It should contain this ...
My /etc/fpc.cfg has these lines:
# set binutils prefix
#IFNDEF CPUI386
#IFNDEF CPUAMD64
#DEFINE NEEDCROSSBINUTILS
#ENDIF
#ENDIF
#ifdef darwin
#undef NEEDCROSSBINUTILS
#endif
#IFDEF FPC_CROSSCOMPILING
#IFDEF NEEDCROSSBINUTILS
-XP$fpctarget-
#ENDIF NEEDCROSSBINUTILS
#ENDIF
so that looks OK.
> The -XP parameter is what sets the prefix.
Compiling with -XP does solve the problem.
[p17:~/Support/fpcbugs] adriaan% /usr/local/lib/fpc/2.3.1/ppcrossppc
-XPpowerpc-darwin- p.p
Free Pascal Compiler version 2.3.1 [2007/07/02] for powerpc
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Darwin for PowerPC
Compiling p.p
Assembling p
Linking p
1 lines compiled, 0.7 sec
----------------------------------------------------------------------
Jonas Maebe - 2007-07-02 20:17
----------------------------------------------------------------------
Maybe you have a ~/.fpc.cfg, or an fpc.cfg in the current directory?
No, there is only one fpc.cfg on my computer and that's the one in /etc/
By
default, no prefix is set, so it has to come from some configuration file
you have somewhere.You can also try compiling with -va to see which
config files are parsed (and see a lot of other debug information).
Also, as far as I know you've cross-compiled successfully in the past,
I tried ppcppc, but it turned it to be a PowerPC binary and it has endian issues
<http://www.freepascal.org/mantis/view.php?id=9165>.
so
what changed? Maybe it's better to take this to the mailing list, because
this doesn't sound like a bug to me but a configuration problem.
I am doing that now, but I bet it's a bug. Even if not, why is the build system so obscure "some
configuration file you have somewhere" that this can happen ?
I am not at all saying that FPC should follow GNU conventions, no, but at least the rules are clear
there. You configure for target, host and build and then the Makefile takes cares of the rest. If a
configuration is not supported or if there is a problem, you get a clear error message.
Issue History
Date Modified Username Field Change
======================================================================
2007-07-02 16:08 Adriaan van Os New Issue
2007-07-02 16:32 Jonas Maebe Note Added: 0013543
2007-07-02 20:00 Adriaan van Os Note Added: 0013547
2007-07-02 20:17 Jonas Maebe Note Added: 0013548
======================================================================
Anyway, keep up the excellent work,
Regards,
Adriaan van Os
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal