<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi Thorsten,
</p>
    <div class="moz-cite-prefix">Am 25.01.2022 um 10:54 schrieb Thorsten
      Otto via fpc-devel:<br>
    </div>
    <blockquote type="cite" cite="mid:2346304.iDdEUpFORJ@earendil">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <meta name="qrichtext" content="1">
      <style type="text/css">p, li { white-space: pre-wrap; }</style>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> yes the Atari version is compiled by Jenkins every commit</p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> <a class="moz-txt-link-freetext" href="https://build.alb42.de:8081/job/FPC_m68k-atari/">https://build.alb42.de:8081/job/FPC_m68k-atari/</a> (to make sure the</p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> changes does not break the target) it uses the command line:</p>
      <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Yes, i saw the console output already. What i could not figure out yet: where does the script come from that is executed by Jenkins?</p>
    </blockquote>
    <p>hmm what do you mean? I wrote it, of course. </p>
    <p>
</p>
    <blockquote type="cite" cite="mid:2346304.iDdEUpFORJ@earendil">
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> btw. you know this:</p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> </p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> <a class="moz-txt-link-freetext" href="https://blog.alb42.de/2017/06/18/do-it-online-atari/">https://blog.alb42.de/2017/06/18/do-it-online-atari/</a></p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> </p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> <a class="moz-txt-link-freetext" href="http://home.alb42.de/fpatari/">http://home.alb42.de/fpatari/</a></p>
      <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Uh no, i did not know this. Awesome. Ultimately, it would be nice of course to run the resulting executable in some online emulator like pce-js ;)</p>
    </blockquote>
    <p>haha sure, but my knowledge of such things is too limited to really do such things, but if someone is interested, I happily share the source of this one.
</p>
    <p>
</p>
    <blockquote type="cite" cite="mid:2346304.iDdEUpFORJ@earendil">
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> the prefix $CPU-$OS is just the default prefix for every cross</p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> compiling, if you need an other, you can supply it with e.g.</p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> -XPm68k-atari-mint-</p>
      <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Yes, found that already. But there is also at least one assembler file that is directly compiled from the Makefile (prt0.as), and that is also compiled by that $CPU-OS-as assembler (also when you otherwise use vasm). So i wonder a bit why that works on your build server. I also noted that, when using vasm/vlink, those are also executed using that prefix, so the actual assembler that is invoked is m68k-atari-vasmm68k_std.</p>
      <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">One reason why i would prefer gas is because FPC needs a non-standard version  of vasm (compiled with std syntax module instead of motorola), and that assembler is also required on the target system. But the name "vasmm68k_std.ttp" does not fit in the 8.3 filesystem limit on Atari.</p>
      <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "> </p>
      <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">With the symlinked assembler/linker, and some fixes to the generated scripts, i was able now to produce the binaries. I noticed though that they are much larger (maybe because that smartlink feature is not available). However currently most of them bomb out right at the start, have to figure out yet whether that is caused by the different linker, or some other change to fpc itself.</p>
    </blockquote>
    <p>If I remember right (for amiga, its that way so I guess also applies to Atari), that is because this old ld does not support section linking only object linking, newer ld support that but they can't be compiled for m68k anymore, therefore the linker can't throw away unused sections of the object file (only whole unused object files) and therefore the files are much bigger.
</p>
    <p>That was one of the reasons we changed to vlink because the coder of that implemented that for us.
</p>
    <p><a class="moz-txt-link-freetext" href="https://blog.alb42.de/2017/01/07/small-is-beautiful/">https://blog.alb42.de/2017/01/07/small-is-beautiful/</a></p>
    <p>If I remember right, it is possible to freely mix assembler and linker on Atari, so you can use gas and vlink for example.</p>
    <p>
</p>
    <p>Greetings,</p>
    <p>Marcus
</p>
  </body>
</html>