I have my project compiler options and "build lazarus" both set to powerpc, I also have the powerpc cross compiler installed. Although lazarus uses the powerpc lib dirs, it still uses ppc386 to compile with!

(I had to build the lazarus powerpc libs with:
su -c "cd /usr/share/lazarus/lcl/ && /usr/bin/make clean all -w CPU_TARGET=powerpc BINUTILSPREFIX=powerpc-linux-gnu-"

because otherwise "build lazarus" lazarus was trying to write to /usr/share/lazarus and I don't run lazarus as root. Is there a better way to manage this?)

When I try and build my project lazarus reports:
/usr/share/lazarus/components/jpeg/lazjpeg.pas(1,1) Fatal: Can't find unit IntfGraphics used by LazJPEG

Although in fact it CAN find it but it is using the wrong compiler and so thinks it is compiled for the wrong platform;
stderr/stdout from lazarus says:

...
Target OS: Linux for i386
Compiling jpegforlazarus.pas
Compiling lazjpeg.pas
PPU Loading /usr/share/lazarus/lcl/units/powerpc-linux/intfgraphics.ppu
PPU is compiled for another processor


The full output is below, but why is lazarus calling ppc386 anyway instead of fpc which might at least call the right ppc. Does this come down to what my fpc cross packages should have put in /etc/fpc.cfg?

TMainIDE.DoSaveAll
TMainIDE.DoSaveProject End
TPkgManager.GetWritablePkgOutputDirectory APackage=JPEGForLazarus 1.0.1 AnOutDirectory="/home/sam/.lazarus/lib/JPEGForLazarus/powerpc-linux" TPkgManager.GetWritablePkgOutputDirectory APackage=RunTimeTypeInfoControls 0.1 AnOutDirectory="/home/sam/.lazarus/lib/RunTimeTypeInfoControls/powerpc-linux" TPkgManager.GetWritablePkgOutputDirectory APackage=Printer4Lazarus 0.5 AnOutDirectory="/home/sam/.lazarus/lib/Printer4Lazarus/powerpc-linux" TPkgManager.GetWritablePkgOutputDirectory APackage=printers4lazide 0.0 AnOutDirectory="/home/sam/.lazarus/lib/printers4lazide/powerpc-linux" TPkgManager.GetWritablePkgOutputDirectory APackage=cgiLaz 0.1.1 AnOutDirectory="/home/sam/.lazarus/lib/cgiLaz/powerpc-linux" TPkgManager.GetWritablePkgOutputDirectory APackage=CGILazIDE 0.0 AnOutDirectory="/home/sam/.lazarus/lib/CGILazIDE/powerpc-linux" TPkgManager.GetWritablePkgOutputDirectory APackage=MemDSLaz 1.2.1 AnOutDirectory="/home/sam/.lazarus/lib/MemDSLaz/powerpc-linux" TPkgManager.GetWritablePkgOutputDirectory APackage=SDFLaz 0.1.1 AnOutDirectory="/home/sam/.lazarus/lib/SDFLaz/powerpc-linux" TPkgManager.GetWritablePkgOutputDirectory APackage=TurboPowerIPro 1.0 AnOutDirectory="/home/sam/.lazarus/lib/TurboPowerIPro/powerpc-linux" TPkgManager.GetWritablePkgOutputDirectory APackage=fpcunitide 0.1 AnOutDirectory="/home/sam/.lazarus/lib/fpcunitide/powerpc-linux" TPkgManager.GetWritablePkgOutputDirectory APackage=ProjTemplates 1.0 AnOutDirectory="/home/sam/.lazarus/lib/ProjTemplates/powerpc-linux" TPkgManager.GetWritablePkgOutputDirectory APackage=TAChartLazarusPkg 0.0 AnOutDirectory="/home/sam/.lazarus/lib/TAChartLazarusPkg/powerpc-linux" TPkgManager.GetWritablePkgOutputDirectory APackage=SQLDBLaz 1.0 AnOutDirectory="/home/sam/.lazarus/lib/SQLDBLaz/powerpc-linux" TPkgManager.GetWritablePkgOutputDirectory APackage=DBFLaz 0.1.1 AnOutDirectory="/home/sam/.lazarus/lib/DBFLaz/powerpc-linux" TLazPackageGraph.CheckIfPackageNeedsCompilation No state file for JPEGForLazarus 1.0.1 [TExternalToolList.Run] CmdLine="/usr/bin/ppc386 -S2cgi -OG1 -Ppowerpc -gl -vewnhi -l -Fu../../lcl/units/powerpc-linux/ -Fu../../lcl/units/powerpc-linux/gtk2/ -Fu../../packager/units/powerpc-linux/ -Fu. -FU/home/sam/.lazarus/lib/JPEGForLazarus/powerpc-linux/ -dLCL -dLCLgtk2 jpegforlazarus.pas" WorkDir="/usr/share/lazarus/components/jpeg/"
Hint: Start of reading config file /etc/fpc.cfg
Hint: End of reading config file /etc/fpc.cfg
Warning: You are using the obsolete switch -OG
Free Pascal Compiler version 2.3.1 [2007/12/10] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Linux for i386
Compiling jpegforlazarus.pas
Compiling lazjpeg.pas
PPU Loading /usr/share/lazarus/lcl/units/powerpc-linux/intfgraphics.ppu
PPU is compiled for another processor
Fatal: Can't find unit IntfGraphics used by LazJPEG
GetMsgLineFilename Filename "lazjpeg.pas" not found.
TExternalToolList.Run Exception: /usr/share/lazarus/components/jpeg/lazjpeg.pas(1,1) Fatal: Can't find unit IntfGraphics used by LazJPEG



If I switch to the right compiler by hand, I get:
[EMAIL PROTECTED]:/usr/share/lazarus/components/jpeg$ /usr/bin/ppcrossppc -S2cgi -OG1 -Ppowerpc -gl -vewnhi -l -Fu../../lcl/units/powerpc-linux/ -Fu../../lcl/units/powerpc-linux/gtk2/ -Fu../../packager/units/powerpc-linux/ -Fu. -FU/home/sam/.lazarus/lib/JPEGForLazarus/powerpc-linux/ -dLCL -dLCLgtk2 jpegforlazarus.pas
Hint: Start of reading config file /etc/fpc.cfg
Hint: End of reading config file /etc/fpc.cfg
Warning: You are using the obsolete switch -OG
Free Pascal Compiler version 2.3.1 [2007/12/10] for powerpc
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Linux for PowerPC
Compiling jpegforlazarus.pas
Compiling lazjpeg.pas
Assembling lazjpeg
lazjpeg.pas(131) Error: Assembler powerpc-linux-as not found, switching to external assembling
lazjpeg.pas(131) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted

So again, it is now missing the binutils prefix. I really think I'm missing a spell in my /etc/fpc.cfg which I attach



#
# Example fpc.cfg for Free Pascal Compiler
#

# ----------------------
# Defines (preprocessor)
# ----------------------

#
# nested #IFNDEF, #IFDEF, #ENDIF, #ELSE, #DEFINE, #UNDEF are allowed
#
# -d is the same as #DEFINE
# -u is the same as #UNDEF
#

#
# Some examples (for switches see below, and the -? helppages)
#
# Try compiling with the -dRELEASE or -dDEBUG on the commandline
#

# For a release compile with optimizes and strip debuginfo
#IFDEF RELEASE
  -O2
  -Xs
  #WRITE Compiling Release Version
#ENDIF

# For a debug version compile with debuginfo and all codegeneration checks on
#IFDEF DEBUG
  -g
  -Crtoi
  #WRITE Compiling Debug Version
#ENDIF

# set binutils prefix

#IFNDEF CPUI386
#IFNDEF CPUAMD64
#DEFINE NEEDCROSSBINUTILS
#ENDIF
#ENDIF


#IFNDEF linux
#DEFINE NEEDCROSSBINUTILS
#ENDIF


#IFDEF FPC_CROSSCOMPILING
#IFDEF NEEDCROSSBINUTILS
  -XP$fpctarget-
#ENDIF NEEDCROSSBINUTILS
#ENDIF

# ----------------
# Parsing switches
# ----------------

# Pascal language mode
#      -Mfpc      free pascal dialect (default)
#      -Mobjfpc   switch some Delphi 2 extensions on
#      -Mdelphi   tries to be Delphi compatible
#      -Mtp       tries to be TP/BP 7.0 compatible
#      -Mgpc      tries to be gpc compatible
#      -Mmacpas   tries to be compatible to the macintosh pascal dialects
#
# Turn on Object Pascal extensions by default
#-Mobjfpc

# Assembler reader mode
#      -Rdefault  use default assembler
#      -Ratt      read AT&T style assembler
#      -Rintel    read Intel style assembler
#
# All assembler blocks are AT&T styled by default
#-Ratt

# Semantic checking
#      -S2        same as -Mobjfpc
#      -Sc        supports operators like C (*=,+=,/= and -=)
#      -Sa        include assertion code.
#      -Sd        same as -Mdelphi
#      -Se<x>     error options. <x> is a combination of the following:
#         <n> : compiler stops after the <n> errors (default is 1)
#         w : compiler stops also after warnings
#         n : compiler stops also after notes
#         h : compiler stops also after hints
#      -Sg        allow LABEL and GOTO
#      -Sh        Use ansistrings
#      -Si        support C++ styled INLINE
#      -Sk        load fpcylix unit
#      -SI<x>     set interface style to <x>
#         -SIcom     COM compatible interface (default)
#         -SIcorba   CORBA compatible interface
#      -Sm        support macros like C (global)
#      -So        same as -Mtp
#      -Sp        same as -Mgpc
#      -Ss        constructor name must be init (destructor must be done)
#      -St        allow static keyword in objects
#      -Sx        enable exception keywords (default in Delphi/ObjFPC modes)
#
# Allow goto, inline, C-operators, C-vars
-Sgic

# ---------------
# Code generation
# ---------------

# Uncomment the next line if you always want static/dynamic units by default
# (can be overruled with -CD, -CS at the commandline)
#-CS
#-CD

# Set the default heapsize to 8Mb
#-Ch8000000

# Set default codegeneration checks (iocheck, overflow, range, stack)
#-Ci
#-Co
#-Cr
#-Ct

# Optimizer switches
# -Os        generate smaller code
# -O1        level 1 optimizations (quick optimizations, debuggable)
# -O2        level 2 optimizations (-O1 + optimizations which make debugging 
more difficult)
# -O3        level 3 optimizations (-O2 + optimizations which also may make the 
program slower rather than faster)
# -Op<x>     set target cpu for optimizing, see fpc -i for possible values
#
# See "fpc -i" also for more fine-grained control over which optimizations
# to perform

# -----------------------
# Set Filenames and Paths
# -----------------------

# Slashes are also allowed under dos

# path to the messagefile, not necessary anymore but can be used to override
# the default language
#-Fr/usr/lib/fpc/$fpcversion/msg/errore.msg
#-Fr/usr/lib/fpc/$fpcversion/msg/errorn.msg

# searchpath for includefiles
#-Fi/pp/inc;/pp/rtl/inc

# searchpath for units and other system dependent things
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*
-Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl
#-Fu~/fpc/packages/base/*/units/;~/fpc/fcl/units/;~/fpc/rtl/units/

# searchpath for libraries
#ifdef cpux86_64
-Fl/usr/lib/gcc/i486-linux-gnu/4.1.3
#endif


#ifdef cpui386
-Fl/usr/lib/gcc/i486-linux-gnu/4.1.3
#endif
#-Fl/pp/lib
#-Fl/lib;/usr/lib


# -------------
# Linking
# -------------

# generate always debugging information for GDB (slows down the compiling
# process)
#      -gc        generate checks for pointers
#      -gd        use dbx
#      -gg        use gsym
#      -gh        use heap trace unit (for memory leak debugging)
#      -gl        use line info unit to show more info for backtraces
#      -gv        generates programs tracable with valgrind
#      -gw        generate dwarf debugging info
#
# Enable debuginfo and use the line info unit by default
#-gl

# always pass an option to the linker
#-k-s

# Always strip debuginfo from the executable
-Xs


# -------------
# Miscellaneous
# -------------

# Write always a nice FPC logo ;)
-l

# Verbosity
#      e : Show errors (default)       d : Show debug info
#      w : Show warnings               u : Show unit info
#      n : Show notes                  t : Show tried/used files
#      h : Show hints                  c : Show conditionals
#      i : Show general info           d : Show debug info
#      l : Show linenumbers            r : Rhide/GCC compatibility mode
#      a : Show everything             x : Executable info (Win32 only)
#      b : Write file names messages with full path
#      v : write fpcdebug.txt with     p : Write tree.log with parse tree
#          lots of debugging info
#
# Display Info, Warnings and Notes
-viwn
# If you don't want so much verbosity use
#-vw

#
# That's all folks
#

Reply via email to