Giter Site home page Giter Site logo

paulwratt / atarist-bigbrownbuild-git Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ggnkua/bigbrownbuild-git

0.0 0.0 0.0 1.65 MB

build script for various AtariST versions of GCC incl. 4.6.4, 4.9.4, 5.4.0, 6.2.0, 7.3.0, 8.1.0, 8.3.0, 9.3.0, 10.2.0, 11.2.0, 12.2.0, 13.2.0

Shell 42.53% C++ 6.87% C 23.35% Fortran 0.22% Assembly 21.64% Makefile 3.72% Batchfile 1.66%

atarist-bigbrownbuild-git's Introduction

bigbrownbuild.sh

What is this

A collection of brown scripts that build brown compilers and libaries for the Atari ST series of computers.

Notable features

  • link-time whole-program optimisation (inter-module calls & inlining)

  • improved optimiser

  • C++14, C++17 support

  • named section support via C and asm

  • proper C++ initialise/finalise sequence

  • GST extended symbols

  • can preview code generation in Godbolt/68k (try it live at http://brownbot.mooo.com)

  • path open for future gcc releases

Requirements

The script will attempt to auto-fetch the required gcc/binutils/mintlib packages. If something goes wrong you'll have to modify the fetch URLs.

Make sure you have installed the following libraries and tools.

Linux/Windows

GMP/MPFR/MPC are required for building gcc (if you don't download prerequisites, see GLOBAL_DOWNLOAD_PREREQUISITES), flex and bison for building MiNTlib.

macOS

Use Macports and install:

Installation

Before running the script it is advised to open it and go through the "User definable stuff" settings. In brief they are:

GLOBAL_OVERRIDE

Set this to A if you want a completely automated run.

GLOBAL_BUILD_FORTRAN

Set this to 1 to build Fortran, anything else to skip building Fortran.

GLOBAL_DOWNLOAD_PREREQUISITES

Set this to 1 to download prerequisite libs such as MPC and MPFR automatically (without having to install them on the host machine) via the contrib/download_prerequisites script inside each gcc. Not tested extensively but it seems to work with gcc 4.6.4.

BUILD_X_Y_Z

Which gccs to build. 1=Build, anything else=Don't build. Can be toggled individually.

BUILD_MINTLIB

Only set this to nonzero when you do want to build mintlib. Note that if you don't build mintlib then libstdc++v3 will also fail to build, so you are advised to keep this on.

CC?/CXX?

The actual names of the compilers used to build our set of gccs. The names aretuned for ubuntu 17.10 so your mileage may vary!

Also you might be able to build all gcc versions using one compiler. In Ubuntu 17.10 so many problems were encountered in Ubuntu (including Internal Compiler Errors) that this is now in full pendantic mode. Again, your mileage may vary!

CROSS_COMPILING

At first this sounds redundant given that the script produces a cross compiler to begin with. This setting should be enabled if the cross compiler is not going to be executed in a different platform than it is built.

For example: We want to build a 68k cross compiler on a x86 PC that will execute on an ARM processor.

INSTALL_PREFIX

Where the compiler(s) will be installed. Defaults to ${HOME}/brown. Take care that you don't choose a path that requires root privileges. (In this case you will need to run the script as root)

Other notes

The script will install things to INSTALL_PREFIX and might need root privileges. Also it'll use $JMULT cores while building. If this is not to your liking then edit this script and change INSTALL_PREFIX to the path you would like to install to (including home folder) and SUDO to nothing if you don't need root rights. Also JMULT for number of build cores. Examples are inside the script's comments. Log files are written inside each build folder for each version of gcc built. So for example there's build-binutils-2.38/binutils_configure.log``, build-gcc-12.1.0/gcc_build.log``` and so on.

Testing

Inside the folder barebones there exist test projects to verify that your gcc installation is sane. Just type make on installations that have make installed or run build.bat under Windows (especially if you built the toolchain(s) using MinGW).

There is also a different example in the folder barebones-interop. This illustrates how to set up a project to work with C and assembly. Consult the readme.md inside that folder for more information.

bigbrowngemlib.sh

This is a work-in-progress script. Currently it cannot build GEMlib properly. Patches welcome!

bigbrownlibcmini.sh

This is a work-in-progress script. Currently it cannot build GEMlib properly. Patches welcome!

Note for MinGW users

Be warned that the compilation can take a very very VERY long time! If you can spare the RAM, we really recommend using a RAM drive! Our tests have shown that imdisk (http://www.ltr-data.se/opencode.html/#ImDisk) works fine. Of course take notice that you're doing this on your own, we won't accept any liability if something goes wrong with that!!!!

Building the "barebones" examples

Download and build Brownout (https://github.com/ggnkua/brownout-git / https://bitbucket.org/ggnkua/brownout-git/) and place it in the barebones directory.

If you have a command prompt that is able to run make (e.g. Linux, Cygwin, MinGW etc) then just type make (make sure your build cross gcc is in the PATH). Otherwise on Windows you can just run build.bat (edit GCCPATH to point to your toolchain path first).

Note that this will build only for the latest supported cross gcc version. For older versions, some simple find and replaces should be enough.

Credits

The bulk of the script was written by George 'GGN' Nakos, with enhancements from:

  • Douglas 'DML' Little
  • Patrice 'PMANDIN' Mandin
  • Troed 'TROED' Sångberg

atarist-bigbrownbuild-git's People

Contributors

ggnkua avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.