home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / docs / readme-cross < prev    next >
Text File  |  1996-10-14  |  10KB  |  270 lines

  1.         ===================================================
  2.         How To Build an Amiga Cross Development Environment
  3.         ===================================================
  4.  
  5. (1) Pick an installation tree root directory
  6. --------------------------------------------
  7.  
  8. Pick a location for the root of the binary install tree.  This is where all
  9. the executables, libraries, include files, etc will be installed after being
  10. built.  This can be any directory you want, as long as you have sufficient
  11. permissions to create it or write to it.
  12.  
  13. On many systems, the standard location for this directory is "/usr/local",
  14. and in fact that is the default location.  For these instructions, because I
  15. want to create a totally private toolset, I will be installing in the
  16. directory "/home/fnf/ade".
  17.  
  18. Make the install directory and a few necessary subdirectories, if they don't
  19. already exist:
  20.  
  21.     mkdir -p /home/fnf/ade
  22.     mkdir -p /home/fnf/ade/bin
  23.     mkdir -p /home/fnf/ade/lib
  24.     mkdir -p /home/fnf/ade/m68k-cbm-amigaos
  25.  
  26. Strictly speaking it isn't necessary to make anything except /home/fnf/ade,
  27. since the subdirectories will normally be created as needed during the
  28. install procedure.
  29.  
  30. (2) Pick a source tree root directory
  31. -------------------------------------
  32.  
  33. Pick a location for the root of the source tree.  An example, used in these
  34. directions, is "/home/fnf/ade-src".  This is where you will unpack all the ade
  35. source archives.
  36.  
  37. Make the directory if it doesn't already exist:
  38.  
  39.     mkdir -p /home/fnf/ade-src
  40.  
  41. (3) Pick a build tree root directory
  42. ------------------------------------
  43.  
  44. Pick a location for the build tree.  This is a temporary work area in which
  45. you will build all the object files, executables, libraries, etc, that will
  46. be installed in your installation tree.  It is possible to use the source
  47. tree as the build tree (building "in place") but that is not recommended.
  48. For one thing, you may want to remove the build tree once you've built and
  49. installed everything, and it is much easier to do that if you can just
  50. remove an entire directory and all subdirectories.  For another thing, if
  51. you make changes to the source tree, it is easier to find out later what
  52. those changes are by diffing your source tree against the original, if your
  53. source tree is not cluttered with all the files created during the build.
  54.  
  55. An example, used in these directions, is "/home/fnf/build".  Make the
  56. directory if it doesn't already exist:
  57.  
  58.     mkdir -p /home/fnf/build
  59.  
  60. IMPORTANT: In order to successfully use separate source and build trees you
  61. must be using a "make" program that fully supports "VPATH".  Many native
  62. "make" programs do not!  The workaround is to use GNU make, so you may have
  63. to first build and install GNU make if you wish to keep the build and source
  64. trees separate.  If this is not an option for you, then you can just do the
  65. builds in the source tree and forget about having a separate build tree.
  66.  
  67. (4) Get and unpack the ixemul includes and libraries
  68. ----------------------------------------------------
  69.  
  70. During the build of the cross tools, you will need the standard ixemul
  71. header files.  These are not used to build the cross tools, but rather used
  72. by the cross compiler when it is compiling some amiga objects, such as the
  73. libgcc.a runtime library that gets linked with the output of the cross
  74. compiler to make an Amiga executable.  You will also need some other runtime
  75. files, such as an Amiga crt0.o and libc.a, from the ixemul library
  76. distribution.  It is best if you get and install these files now, before
  77. starting to build the cross tools.
  78.  
  79. From the latest ADE distribution, get the os specific inline files
  80. (fd2inline-X.X-bin.lha), the os specific libraries (libamiga-bin.lha), and
  81. the ixemul runtime files (EX: ixemul-43.1-env-bin.lha,
  82. ixemul-43.1-inc-bin.lha).  If you expect to do Amiga specific development
  83. you will also need the AT/VISCorp include files, which are not available in
  84. the ftp ADE distributions but are in the CD-ROM distributions (at-inc-bin.lha).
  85. Alternatively you can get these files later from some other source, such as
  86. one of the Native Developer Update Kits (NDUK).  The AT/VISCorp include files
  87. are not necessary for building the cross environment.
  88.  
  89. Because these files are distributed in lha format in the ADE distribution,
  90. the easiest way to get them to your cross machine is to extract all of these
  91. archives in a temporary directory on an Amiga and then make a "tar" archive
  92. which will be copied to your cross machine and unpacked there:
  93.  
  94.     (on an Amiga)
  95.     lha -mraxe x fd2inline-X.X-bin.lha
  96.     lha -mraxe x libamiga-bin.lha
  97.     lha -mraxe x ixemul-X.X-env-bin.lha
  98.     lha -mraxe x ixemul-X.X-inc-bin.lha
  99.     lha -mraxe x at-inc-bin.lha            (optional)
  100.  
  101. This will create subdirectories "include" "lib", and "man".
  102.  
  103. Use the Amiga version of tar to pack the "include", "lib", and "man"
  104. directories into a tar archive, move the archive to the system on which you
  105. are installing the cross environment, and unarchive it in the appropriate
  106. subdirectory in the binary tree:
  107.  
  108.     (on an Amiga)
  109.     tar -cvf inclibman.tar include lib man
  110.     delete include lib man all
  111.  
  112.     (on the cross host system)
  113.     cd /home/fnf/ade/m68k-cbm-amigaos
  114.     tar -xvf inclibman.tar
  115.     rm inclibman.tar
  116.  
  117. Note that you can use any other method you like to get these files from your
  118. Amiga to the cross host system.  The important thing is that they end up in
  119. the correct subdirectory in the installation tree, which is where the cross
  120. tools will look for them once the tools are built.
  121.  
  122. (5) Build and install the "binutils"
  123. ------------------------------------
  124.  
  125. Get the binutils (assembler, linker, archiver, etc) distribution from the
  126. latest ADE snapshot (ftp.ninemoons.com:pub/ade/960412/binutils-2.6-src.tgz
  127. for example) and extract it in the source directory.  It will create the
  128. subdirectory "fsf/binutils" and populate it with the binutils source files:
  129.  
  130.     cd /home/fnf/ade-src
  131.     tar -xvzf binutils-2.6-src.tgz
  132.  
  133. Check the ADE updates directory (ftp.ninemoons.com:pub/ade/updates) for any
  134. patch files that need to be applied to the archive from the latest snapshot
  135. directory, and apply the patch (if necessary):
  136.  
  137.     gzip -d binutils-960412-960506.diffs.gz
  138.     cd fsf/binutils
  139.     patch -p0 <../../binutils-960412-960506.diffs
  140.  
  141. Configure and build the binutils in the build tree.  Note that the --prefix
  142. option should be set to the binary tree that you chose.  Also, using a
  143. common cache file via the --cache-file option makes the configure go faster:
  144.  
  145.     cd /home/fnf/build
  146.     mkdir binutils
  147.     cd binutils
  148.     /home/fnf/ade-src/fsf/binutils/configure -v --prefix=/home/fnf/ade --target=m68k-cbm-amigaos --cache-file=config.cache
  149.     make
  150.  
  151. If everything builds OK, then install binutils into the binary tree:
  152.  
  153.     make install
  154.  
  155. (6) Build and install gcc
  156. -------------------------
  157.  
  158. Get the gcc distribution (ftp.ninemoons.com:pub/ade/960412/gcc-2.7.2-src.tgz
  159. for example) from the latest ADE snapshot and extract it in the source
  160. directory.  It will create the subdirectory "fsf/gcc" and populate it with
  161. the gcc source files:
  162.  
  163.     cd /home/fnf/ade-src
  164.     tar -xvzf gcc-2.7.2-src.tgz
  165.  
  166. Check the ADE updates directory (ftp.ninemoons.com:pub/ade/updates) for any
  167. patch files that need to be applied to the archive from the latest snapshot
  168. directory, and apply the patch (if necessary):
  169.  
  170.     gzip -d gcc-960412-960506.diffs.gz
  171.     cd fsf/gcc
  172.     patch -p0 <../../gcc-960412-960506.diffs
  173.  
  174. Configure gcc in the build tree.  Note that the --prefix option should be
  175. set to the binary tree that you chose:
  176.  
  177.     cd /home/fnf/build
  178.     mkdir gcc
  179.     cd gcc
  180.     /home/fnf/ade-src/fsf/gcc/configure -v --prefix=/home/fnf/ade --target=m68k-cbm-amigaos
  181.  
  182. Because of a couple of unresolved problems building a cross compiler, apply
  183. the following patch to the gcc Makefile after configuring and before
  184. building gcc.
  185.  
  186. ============================================================================
  187. --- Makefile.orig    Fri Jun 28 18:50:08 1996
  188. +++ Makefile    Fri Jun 28 18:50:47 1996
  189. @@ -38,5 +38,5 @@
  190.  # Selection of languages to be made.
  191.  # This is overridden by configure.
  192. -LANGUAGES = c objective-c proto  c++
  193. +LANGUAGES = c c++
  194.  
  195.  ALLOCA =
  196. @@ -194,5 +194,5 @@
  197.  # include files.
  198.  # NOTE: local_prefix *should not* default from prefix.
  199. -local_prefix = /ade/local
  200. +local_prefix = $(prefix)/local
  201.  # Directory in which to put host dependent programs and libraries
  202.  exec_prefix = $(prefix)
  203. @@ -271,5 +271,5 @@
  204.  
  205.  # libgcc1-test target (must also be overridable for a target)
  206. -LIBGCC1_TEST = libgcc1-test
  207. +LIBGCC1_TEST =
  208.  
  209.  # List of extra executables that should be compiled for this target machine
  210. @@ -442,5 +442,5 @@
  211.  
  212.  SYSTEM_HEADER_DIR = /ade/include
  213. -OTHER_FIXINCLUDES_DIRS = /ade/os-include
  214. +OTHER_FIXINCLUDES_DIRS =
  215.  
  216.  # We don't need a libgcc1, it's all in ixemul.library
  217. ============================================================================
  218.  
  219. After the patch is applied, build and install gcc: 
  220.  
  221.     make
  222.     make install
  223.  
  224. You might want to add the binary directory to your PATH variable:
  225.  
  226.     PATH=/home/fnf/ade/bin:$PATH ; export PATH
  227.  
  228. (7) Test the new cross tools
  229. ----------------------------
  230.  
  231. An easy way to test the new cross tools is to configure and build one of
  232. the ADE components in the cross environment, and then copy the executable
  233. back to an Amiga to see if it runs OK.  I would suggest using the "brik"
  234. program:
  235.  
  236.     cd /home/fnf/ade-src
  237.     tar -xvzf brik-2.0-src.tgz
  238.     cd /home/fnf/build
  239.     mkdir brik
  240.     cd brik
  241.     CC=m68k-cbm-amigaos-gcc /home/fnf/ade-src/contrib/brik/configure -v
  242.     make CC=m68k-cbm-amigaos-gcc
  243.  
  244. On a 166 Mhz Pentium system running RedHat linux this build takes only 3
  245. seconds while on an A4000 with 40 Mhz WarpEngine, it takes about 20 seconds.
  246. The executable should be about 12,800 bytes, but the exact size may vary
  247. depending upon a number of factors.  Move the executable back to an Amiga
  248. and test it:
  249.  
  250.     (on an Amiga)
  251.     brik -Gvb brik
  252.  
  253. which should print something like:
  254.  
  255.     # Whole file CRCs generated by Brik v2.0.  Use "brik -C" to verify them.
  256.  
  257.     # CRC-32        filename
  258.     # ------        --------
  259.  
  260.     2515614901b     brik
  261.  
  262. Don't worry if the CRC is not the same as printed here.
  263.  
  264. If this works, you now have a functioning cross environment (or at least a
  265. cross compiler) that depending upon the model of your Amiga and the machine
  266. you are using as a cross development host, could easily be 20 times faster
  267. than a native compiler.
  268.  
  269. -Fred Fish
  270.