Page 2 of 3 FirstFirst 123 LastLast
Results 11 to 20 of 24

Thread: Class operators in Freepascal records like in Delphi 2010?

  1. #11
    Quote Originally Posted by alexione View Post
    If you're on Windows (32-bit version), here's .bat file I use to compile FPC trunk after I update SVN (just adjust FPCMAKEPATH, FPCPATH and OUTPATH - in this case, C:/dev/fpc/2.4.2 is location of the latest official FPC, and C:/dev/fpc/2.5.1 is location where I want FPC to be installed for later use). It does full clean-make-install cycle.

    set FPCMAKEPATH=C:/dev/fpc/2.4.2
    set FPCPATH=C:/dev/fpc/2.4.2
    set OUTPATH=C:/dev/fpc/2.5.1
    for /r %OUTPATH%\examples %%d in (.svn) do @rmdir /s /q %%d
    %FPCMAKEPATH%/bin/i386-win32/make clean FPC=%FPCPATH%/bin/i386-win32/ppc386.exe
    if errorlevel 1 goto quit
    %FPCMAKEPATH%/bin/i386-win32/make all FPC=%FPCPATH%/bin/i386-win32/ppc386.exe
    if errorlevel 1 goto quit
    %FPCMAKEPATH%/bin/i386-win32/make install FPC=%FPCPATH%/bin/i386-win32/ppc386.exe INSTALL_BASEDIR=%OUTPATH%
    for /r %OUTPATH%\examples %%d in (.svn) do @rmdir /s /q %%d
    :quit

    As of Lazarus, just point FPC directory to C:/dev/fpc/2.5.1 (or wherever you set OUTPATH in the above .bat file), and use built-in feature to recompile it.
    Wow! thanks alexione! I will download the new fpc and try this out

    cheers,
    Paul

  2. #12
    @alexione: hmm...I have downloaded the trunk fpc, but I have some questions.

    1. Do I set the %OUTPATH% string to the fpc folder that I just downloaded from SVN?
    2. Where do I put the batch file to do the compiling that you gave me? In the root fpc folder in 1 ?

    cheers,
    Paul

  3. #13
    Hmm...I think I may have figured it out...trying to compile it now

    cheers,
    Paul
    Last edited by paul_nicholls; 18-04-2011 at 03:28 AM.

  4. #14
    Dang! The compiler sat there compiling for x amount of time, and then bombed with an error

    Code:
    Error: Util as.exe not found, switching to external linking
    Here is the last part of the dos output:
    Code:
    mpiler/i386 -FuG:/fpc/2.5.1/compiler/targets -FuG:/fpc/2.5.1/compiler/systems -F
    uG:/fpc/2.5.1/rtl/units/i386-win32 -FiG:/fpc/2.5.1/compiler -FiG:/fpc/2.5.1/comp
    iler/i386 -FE. -FUG:/fpc/2.5.1/ide/units/i386-win32 -dRELEASE compunit.pas
    aasmtai.pas(396,11) Warning: Constructor should be public
    pdecsub.pas(1630,5) Warning: unreachable code
    symdef.pas(3480,12) Warning: unreachable code
    symdef.pas(3618,12) Warning: unreachable code
    symdef.pas(5424,10) Warning: User defined: : this is completely wrong on so many
     levels...
    pmodules.pas(2357,12) Warning: unreachable code
    ognlm.pas(1317,18) Warning: unreachable code
    t_nwm.pas(973,38) Warning: Function result does not seem to be set
    agx86att.pas(253,16) Warning: unreachable code
    browcol.pas(1264,5) Note: Local variable "esym" not used
    make[5]: Leaving directory `G:/fpc/2.5.1/ide/compiler'
    make[4]: Leaving directory `G:/fpc/2.5.1/ide'
    C:/lazarus/fpc/2.4.2/bin/i386-win32/make testgdb
    make[4]: Entering directory `G:/fpc/2.5.1/ide'
    LibGDB not found
    LIBGDBFILE=
    GDBLIBDIR=G:/fpc/2.5.1/libgdb/win32
    
    make[4]: Leaving directory `G:/fpc/2.5.1/ide'
    C:/lazarus/fpc/2.4.2/bin/i386-win32/make fpc_all
    make[4]: Entering directory `G:/fpc/2.5.1/ide'
    G:/fpc/2.5.1/compiler/ppc386.exe -di386 -Ur -Xs -O2 -n -Sg -FuG:/fpc/2.5.1/rtl/u
    nits/i386-win32 -FuG:/fpc/2.5.1/packages/fv/units/i386-win32 -FuG:/fpc/2.5.1/pac
    kages/gdbint/units/i386-win32 -FuG:/fpc/2.5.1/packages/regexpr/units/i386-win32
    -FuG:/fpc/2.5.1/packages/fcl-base/units/i386-win32 -FuG:/fpc/2.5.1/packages/fcl-
    xml/units/i386-win32 -FuG:/fpc/2.5.1/packages/chm/units/i386-win32 -FE. -FUunits
    /i386-win32 -dRELEASE -dNODEBUG  -Xe -k--allow-multiple-definition fp.pas
    fp.pas(552,1) Error: Util as.exe not found, switching to external linking
    fp.pas(552,1) Fatal: There were 1 errors compiling module, stopping
    Fatal: Compilation aborted
    make[4]: *** [fp.exe] Error 1
    make[4]: Leaving directory `G:/fpc/2.5.1/ide'
    make[3]: *** [buildfp] Error 2
    make[3]: Leaving directory `G:/fpc/2.5.1/ide'
    make[2]: *** [gdb] Error 2
    make[2]: Leaving directory `G:/fpc/2.5.1/ide'
    make[1]: *** [ide_all] Error 2
    make[1]: Leaving directory `G:/fpc/2.5.1'
    make: *** [build-stamp.i386-win32] Error 2
    
    G:\fpc\2.5.1>if errorlevel 1 goto quit
    
    G:\fpc\2.5.1>pause
    Press any key to continue . . .
    I don't know what happened...do you think this means I need something path in my path environmental variable or similar?

    This is my compile script batch file that I placed in the g:\fpc\2.5.1 folder contain the SVN source and make file, etc.:

    Code:
    set FPCMAKEPATH=C:/lazarus/fpc/2.4.2
    set FPCPATH=C:/lazarus/fpc/2.4.2
    set OUTPATH=G:/dev/fpc/2.5.1
    for /r %OUTPATH%\examples %%d in (.svn) do @rmdir /s /q %%d
    %FPCMAKEPATH%/bin/i386-win32/make clean FPC=%FPCPATH%/bin/i386-win32/ppc386.exe
    if errorlevel 1 goto quit
    %FPCMAKEPATH%/bin/i386-win32/make all FPC=%FPCPATH%/bin/i386-win32/ppc386.exe
    if errorlevel 1 goto quit
    %FPCMAKEPATH%/bin/i386-win32/make install FPC=%FPCPATH%/bin/i386-win32/ppc386.exe INSTALL_BASEDIR=%OUTPATH%
    for /r %OUTPATH%\examples %%d in (.svn) do @rmdir /s /q %%d
    :quit
    pause
    G:/dev/fpc/2.5.1 is where I want to install? freepascal 2.5.1, and C:/lazarus/fpc/2.4.2 is where (obviously, DUH!) where I have the existing freepascal comiler...

    cheers,
    Paul
    Last edited by paul_nicholls; 18-04-2011 at 06:13 AM.

  5. #15
    It has nothing to do with directories. The problem is that you don't have binutils's gas assembler(as.exe) in your path. This is for some reason required when building the textmode IDE
    Peregrinus, expectavi pedes meos in cymbalis
    Nullus norvegicorum sole urinat

  6. #16
    Quote Originally Posted by JSoftware View Post
    It has nothing to do with directories. The problem is that you don't have binutils's gas assembler(as.exe) in your path. This is for some reason required when building the textmode IDE
    Ok, I have now added C:\lazarus\fpc\2.4.2\bin\i386-win32 to my path in the batch file (has as.exe there), so I will see if this helps

    cheers,
    Paul

  7. #17
    Sweet! I think it worked...no errors now

    Here is the updated batch file:
    Code:
    set PATH=%PATH%;C:\lazarus\fpc\2.4.2\bin\i386-win32
    set FPCMAKEPATH=C:/lazarus/fpc/2.4.2
    set FPCPATH=C:/lazarus/fpc/2.4.2
    set OUTPATH=G:/dev/fpc/2.5.1
    for /r %OUTPATH%\examples %%d in (.svn) do @rmdir /s /q %%d
    %FPCMAKEPATH%/bin/i386-win32/make clean FPC=%FPCPATH%/bin/i386-win32/ppc386.exe
    if errorlevel 1 goto quit
    %FPCMAKEPATH%/bin/i386-win32/make all FPC=%FPCPATH%/bin/i386-win32/ppc386.exe
    if errorlevel 1 goto quit
    %FPCMAKEPATH%/bin/i386-win32/make install FPC=%FPCPATH%/bin/i386-win32/ppc386.exe INSTALL_BASEDIR=%OUTPATH%
    for /r %OUTPATH%\examples %%d in (.svn) do @rmdir /s /q %%d
    :quit
    pause
    All I have to do is try it out now with Lazarus

    cheers,
    Paul

  8. #18
    Woo Hoo! My TVector2f record with class operators compiles now

    Thanks so much JSoftware and alexione!

    cheers,
    Paul

  9. #19
    Ok, now I'm having another issue...it is obviously because I am using a different version of FPC to compile my Lazarus projects now, but I am not sure what to do about it

    My Lazarus projects can't find standard units like IniFiles, Contnrs, etc. and I am unsure how to proceed.

    Here is a screenshot of my Lazarus Environmental (Files) options:



    And here is my fpc.cfg file (version 2.4.2, the 2.5.1 doesn't have one):
    Code:
    #
    # Config file generated by fpcmkcfg on 11/04/2011 - 22:24:39
    # 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
      -glh
      -Crtoi
      #WRITE Compiling Debug Version
    #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>     compiler stops after the <x> errors (default is 1)
    #      -Sg        allow LABEL and GOTO
    #      -Sh        Use ansistrings
    #      -Si        support C++ styled INLINE
    #      -SI<x>     set interface style to <x>
    #         -SIcomCOM compatible interface (default)
    #         -SIcorbaCORBA 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
    #
    # 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 for i386 compiler
    # -Os        generate smaller code
    # -O1        level 1 optimizations (quick optimizations)
    # -O2        level 2 optimizations (-O1 + slower optimizations)
    # -O3        level 3 optimizations (same as -O2u)
    # -Oa=N      set alignment to N
    # -OoX       switch on optimalization X. 
    # -OoNOX     switch off optimalization X.
    #               X is one of REGVAR UNCERTAIN STACKFRAME PEEPHOLE ASMCSE LOOPUNROLL
    # -OpCPU     set target processor.
    #             CPU is one of 386, PENTIUM, PENTIUM2, PENTIUM3, PENTIUM4, PENTIUMM 
    
    
    # -----------------------
    # Set Filenames and Paths
    # -----------------------
    
    # Both slashes and backslashes are allowed in paths
    
    # path to the messagefile, not necessary anymore but can be used to override
    # the default language
    #-Frc:\lazarus\fpc\2.4.2/msg/errore.msg
    #-Frc:\lazarus\fpc\2.4.2/msg/errorn.msg
    #-Frc:\lazarus\fpc\2.4.2/msg/errores.msg
    #-Frc:\lazarus\fpc\2.4.2/msg/errord.msg
    #-Frc:\lazarus\fpc\2.4.2/msg/errorr.msg
    
    # path to the gcclib
    #-Flc:\lazarus\fpc\2.4.2/lib
    
    #IFDEF FPCAPACHE_1_13
    -Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/httpd13/
    #ELSE
    #IFDEF FPCAPACHE_2_0
    -Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/httpd20
    #ELSE
    -Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/httpd22
    #ENDIF
    #ENDIF
    
    # searchpath for units and other system dependent things
    -Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/
    -Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/*
    -Fuc:\lazarus\fpc\2.4.2/units/$FPCTARGET/rtl
    
    # searchpath for libraries
    #-Flc:\lazarus\fpc\2.4.2/lib
    #-Fl/lib;/usr/lib
    
    # searchpath for tools
    -FDc:\lazarus\fpc\2.4.2/bin/$FPCTARGET
    
    # binutils prefix for cross compiling
    #IFDEF FPC_CROSSCOMPILING
      -XP$FPCTARGET-
    #ENDIF
    
    
    # -------------
    # 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                  m : Show defined macros
    #      i : Show general info           p : Show compiled procedures
    #      l : Show linenumbers            c : Show conditionals
    #      a : Show everything             0 : Show nothing (except errors)
    #      b : Show all procedure          r : Rhide/GCC compatibility mode
    #          declarations if an error    x : Executable info (Win32 only)
    #          occurs
    #
    # Display Info, Warnings, Notes and Hints
    -viwn
    # If you don't want so much verbosity use
    #-vw
    Any ideas?

    cheers,
    Paul

  10. #20
    Replace all mentions you can find of 2.4.2 with 2.5.1, and you should be good again

    Units compiled with a different version of the compiler cannot be used by the same compiler. It might be a very different PPU structure. Hence, you will also have to recompile lazarus when you've inserted the new FPC version info
    Peregrinus, expectavi pedes meos in cymbalis
    Nullus norvegicorum sole urinat

Page 2 of 3 FirstFirst 123 LastLast

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •