ソースを参照

* updated to help compiling the compiler

mazen 22 年 前
コミット
012af1131e
1 ファイル変更51 行追加115 行削除
  1. 51 115
      compiler/README

+ 51 - 115
compiler/README

@@ -1,122 +1,58 @@
 This directory contains the sources of the Free Pascal Compiler
 
-To recompile the compiler, use the batch file
-mppc386.bat
-
-If you want to build a m68k version to cross compile from i386 to m68k
-use the batch file
-mppc68k.bat
-
 If you want to compile/modify the compiler, please read first the
 programmers manual.
 
+To recompile the compiler, you can use the batch files :
+ + mppc386.bat    if you want to build a cross compiler from i386 to m68k
+ + mppcsparc      if you want to build a cross compiler from i386 to SPARC
+ 
+ or
+Use the make utility as following
+  
+      make OS_TARGET="compiler OS target" \
+      CPU_TARGET="compiler CPU target" \
+      FPCCPUOPT="Optimization level" \
+      PP="compiler used to compile FPC" \
+      COMPILER_OPTIONS="Options passed to compiler" \
+      
+      
+If an option is omitted, then target CPU/OS will be same as current CPU/OS
+ 
+Possibles targets are : linux go32v2 win32 os2 freebsd beos netbsd amiga
+atari sunos qnx netware openbsd wdosx palmos macos macosx emx
+   
+Possible compiler switches (* marks a currently required switch):
+  -----------------------------------------------------------------
+  GDB*                support of the GNU Debugger
+  I386                generate a compiler for the Intel i386+
+  x86_64              generate a compiler for the AMD x86-64 architecture
+  M68K                generate a compiler for the M68000
+  SPARC               generate a compiler for SPARC
+  POWERPC             generate a compiler for the PowerPC
+  VIS                 generate a compile for the VIS
+  DEBUG               version with debug code is generated
+  EXTDEBUG            some extra debug code is executed
+  SUPPORT_MMX         only i386: releases the compiler switch
+                      MMX which allows the compiler to generate
+                      MMX instructions
+  EXTERN_MSG          Don't compile the msgfiles in the compiler, always
+                      use external messagefiles, default for TP
+  NOAG386INT          no Intel Assembler output
+  NOAG386NSM          no NASM output
+  NOAG386BIN          leaves out the binary writer, default for TP
+  NORA386DIR          No direct i386 assembler reader
+  TEST_GENERIC        Test Generic version of code generator
+                      (uses generic RTL calls)
+  -----------------------------------------------------------------
+  cpuflags            The target processor has status flags (on by default)
+  cpufpemu            The target compiler will also support emitting software
+                       floating point operations
+  cpu64bit            The target is a 64-bit processor
+  -----------------------------------------------------------------
 
-Changes in the syntax or semantic of FPC:
------------------------------------------
-  28/01/99   implicit conversion from boolean to integer is not possible
-             anymore (solved several bugs) but this could lead to errors
-             on previously accepted code (PM)
-  01/02/99   c styled comments are supported (/* ... */), mainly
-             for the Sibyl sources of Medigo (FK)
-  02/02/99   class destructors take now two parameters: flag
-             if the helper routine should free the instance and
-             self pointer (FK)
-  22/02/99   PROTECTED and PRIVATE have now the same behavior
-             as in TP
-  09/03/99   small records and arrays passed by value to a function are now directly copied
-             into a 4 bytes parameter (needed for C and DLL calls) (PM)
-  11/03/99   the makefile.fpc is now also needed for the compiler and RTL, you can
-             find it in the base.zip package (PFV)
-  24/03/99   new directives UNITPATH,INCLUDEPATH,OBJECTPATH,LIBRARYPATH to
-             set the searchpaths where to find the files for that module (PFV)
-  25/03/99   new directive STATIC +/- or on/off , works like -St commandline
-             switch
-  02/04/99   rtl/cfg/ directory has been removed, it's not used anymore
-  15/04/99   FINALIZATION is supported
-  21/04/99   Default assembler for i386 changed to AT&T instead of direct
-  25/04/99   initialized vars supported in Delphi mode (only $J+ mode)
-             getting the address of an untyped const is now
-             forbidden as in BP
-  27/04/99   New unit format PPU016, you need to recompile all older units
-  01/05/99   Internal assembler. Assembler readers now support MMX,KNI
-             instructions.
-  12/05/99   rtl/utils/ directory moved to utils/. Moved the utils only needed
-             for compiler development to compiler/utils/
-  13/05/99   Classes are now only allowed in the ObjFpc or Delphi mode. Use
-             {$mode objfpc} or {$mode delphi}. Or from commandline -S2 or -Sd
-  16/05/99   Remove options -Up (use now -Fu) and -Fg (use now -Fl)
-  17/05/99   Redesign of ansistring temporary handling, please report
-             any problems
-  17/05/99   Most stuff of the objpas unit is now in the system unit
-             because the new temporary ansistring handling support
-             exceptions and exceptions need the class OOP model
-  18/05/99   The compiler will stop directly if there are errors in the
-             commandline parameters
-  16/08/99   DLL are relocatable by default (need to strip symbols)
-             -WN make non relocatable DLL (which can retain debug info)
-             for both type of DLL the prefered image base can be specified
-             with -WB1100000 for instance to get image base at $11000000.
-  08/09/99   pointer addition/substraction (only available in fpc,objfpc mode)
-             now uses the size of the type the pointer points to, just like
-             inc(),dec() already did. Now inc(p) is the same as p:=p+1.
-             But old code can be broken by this when there is a p:=p+4 then
-             it's now parsed like: p:=p+4*sizeof(type). To get the old situation
-             you can use typecasting: p:=ptype(pointer(p)+4).
-  08/09/99   class/object field return their offsets in the object/class. You
-             must access them self with loading the object/class pointer and
-             then create a reference where you add the field
-  07/11/99   Small change to property writing in PPU => all units
-             exporting classes with properties must be recompiled
-             (no new unit format, so be careful) (FK)
-  08/11/99   PP variable in Makefiles changed to FPC
-  14/11/99   makefile.fpc is not available anymore. You must now use fpcmake
-             which is available from the utils/. There is also an example
-             Makefile.fpc
-  15/02/00   The support of the fixed data type has been removed from the
-             compiler because
-                1. it is buggy
-                2. it is very seldom used
-                3. the single data type is faster on modern cpus (Pentium+)
-
-             If still want to use it, you have to recompile the compiler
-             with -dSUPPORT_FIXED and recompile the rtl with that compiler.
-             To find out if the used compiler supports the fixed data
-             type, check the directive HASFIXED  (FK)
-  29/02/00   ORDERSOURCES released => PPU version change
-             this allows for a more correct include file hunting order.
-  01/04/00   fix the handling of value parameters in cdecl function
-  11/05/00   changed vmt handling to fix problems some problems
-             with overloading in objects
-  11/11/00   default parameter support
-  11/11/00   you can declare a pointer type with directive far; to make
-             it a farpointer. Only usefull for dos.
-  11/11/00   ptr() returns a farpointer instead of pointer. Becuase the
-             pointer result would be useless and only causing segmentation
-             faults. With the farpointer this would already be detected at
-             compiletime. To get the code working you can declare a pointer
-             with far; like:
+  Required switches for a i386 compiler be compiled by Free Pascal Compiler:
+  GDB;I386
 
-             type
-               farlongint = ^longint;far;
-             var
-               timer : farlongint;
-             begin
-               timer:=ptr($40,$6c);
-               writeln(timer^);
-             end.
-  07/12/00   constant handling has been rewritten: hex constants <=$ffffffff
-             are now always parsed as unsigned numbers (because of the int64
-             constant support, the were always sign-extended before). This
-             may force you to add longint typecasts round hex numbers in
-             your programs to avoid range check errors.
-  10/04/01   Argument names are now checked if names are the same in the
-             both the forward (interface) and implementation declaration
-  13/04/01   It's not possible anymore (except in -So mode) to pass a cardinal
-             to a parameter declared with a "var longint". The same goes for
-             the other signed-unsigned like smallint-word and shortint-byte.
-  13/04/01   in FPC mode you're now always forced to use @ to get the address
-             of a procedure and load it in a procedure variable. Before it was
-             sometimes a bit more relaxed
-  03/06/01   hint directives (library,platform,deprecated) are parsed, but
-             futher ignored
-  03/06/01   varargs directive is supported
+to build a compiler to SPARC target using a Win32/i386 you just use :
+      make CPU_TARGET=SPARC