Hi,

I am currently thinking about switching development from PIC-based microcontrollers (based on mikroe compilers) to ARM Cortex-M3/4 controllers because they seem to be supported by fpc.

I have compiled latest binutils for arm based on instructions from the wiki ( ./configure --target=arm-linux --prefix=/opt/embarm/ --program-prefix=arm-embedded- --disable-werror)

on my mac and then have checked out fpc-trunk ( svn co http://svn.freepascal.org/svn/fpc/trunk fpc)

After starting up the compile (based on installed fpc-2.6.0) I end up with those error messages:

make clean buildbase installbase CROSSINSTALL=1 OS_TARGET=embedded CPU_TARGET=arm SUBARCH=armv7m
.......
/Users/ring/devel/fpc/compiler/ppcrossarm -Cparmv7m @rtl.cfg -Ur -Tembedded -Parm -XParm-embedded- -Xr -Ur -Xs -O2 -n -Fi../inc -Fi../arm -FE. -FU/Users/ring/devel/fpc/rtl/units/arm-embedded -darm -dRELEASE -I../objpas ../objpas/objpas.pp
objpas.pp(253,15) Error: Identifier not found "UniqueString"
objpas.pp(259,15) Error: Identifier not found "UniqueString"
objpas.pp(265,15) Error: Identifier not found "UniqueString"
objpas.pp(624) Fatal: There were 3 errors compiling module, stopping
Fatal: Compilation aborted
make[3]: *** [objpas.ppu] Error 1
make[2]: *** [embedded_all] Error 2
make[1]: *** [rtl_all] Error 2
make: *** [base.build-stamp.arm-embedded] Error 2


UniqueString seems to be an Ansistring function and on fpc-pacal I found a post about a similar problem (Thread name is 'fpc 2.7.1 for arm-embedded'), the solution there was to add:

{$ifdef FPC_HAS_FEATURE_ANSISTRINGS}

arround the code that breaks the build. I did this and now the cross compiler compiles just fine

My question now is did I fix the problem correctly and if yes, could someone please apply the patch to trunk?

Thank you,

Michael


Index: rtl/objpas/objpas.pp
===================================================================
--- rtl/objpas/objpas.pp    (revision 23253)
+++ rtl/objpas/objpas.pp    (working copy)
@@ -87,11 +87,13 @@
      Function ParamStr(Param : Integer) : Ansistring;
 {$endif FPC_HAS_FEATURE_COMMANDARGS}

+{$ifdef FPC_HAS_FEATURE_ANSISTRINGS}
 {$ifdef FPC_HAS_FEATURE_FILEIO}
      Procedure MkDir(s:ansistring);overload;
      Procedure RmDir(s:ansistring);overload;
      Procedure ChDir(s:ansistring);overload;
 {$endif FPC_HAS_FEATURE_FILEIO}
+{$endif FPC_HAS_FEATURE_ANSISTRINGS}

 {****************************************************************************
                              Resource strings.
@@ -243,7 +245,7 @@
 end;
 {$endif FPC_HAS_FEATURE_COMMANDARGS}

-
+{$ifdef FPC_HAS_FEATURE_ANSISTRINGS}
 {$ifdef FPC_HAS_FEATURE_FILEIO}
{ xxDirPChar procedures can adjust directory separators in supplied string (at least Windows implementation does so). Therefore full copy of argument is needed,
@@ -266,6 +268,7 @@
   ChDirpchar(pchar(s),length(s));
 end;
 {$endif FPC_HAS_FEATURE_FILEIO}
+{$endif FPC_HAS_FEATURE_ANSISTRINGS}

 {$ifdef FPC_HAS_FEATURE_RESOURCES}
 { ---------------------------------------------------------------------




_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to