]> git.gag.com Git - web/altusmetrum/blobdiff - AltOS/building.mdwn
trivial change to test updating
[web/altusmetrum] / AltOS / building.mdwn
index d28b779703a7657604f7cdf456f7942670aba4d7..c71b44c0472388c11796de092ddf0fd9c71171b1 100644 (file)
@@ -1,77 +1,48 @@
 # Building AltOS
 
 The AltOS source tree has a fairly long list of build dependencies, because
-it builds firmware for at least 4 different processor cores, ground station 
-software in Java, various utilities in C, etc.  By *far* the easiest way to
-build from source is to start with a [Debian](http://debian.org) 'unstable' 
-installation and take advantage of Debian tools and processes.  From this
-platform, it is possible to build installable packages not only for Debian,
+it builds firmware for a number of different processor cores, ground station 
+software in Java, various utilities in C, documentation, etc.  Because Bdale
+and Keith are both [Debian GNU/Linux](https://debian.org) developers, by far
+the easiest way to build from source is to start with a 
+Debian 'unstable' installation and take advantage of 
+Debian tools and processes.  From this platform, it is possible to build 
+installable packages not only for Debian,
 but also for Windows, Mac OS X, and generic Linux.
 
-## Compilers
-
-We use standard gcc and OpenJDK to build all of the ground software, but the
-situation for building the firmware is a bit more complicated.  Because we
-realize many people may be only interested in working on the ground station
-software, or may only care about building firmware for a single target, we
-have crafted the Makefile contents to test for the presence of the various
-compilers... and will only build firmware for the targets we can find the
-right tools for!
-
-### cc1111
-
-The first generation of Altus Metrum products were all based on the TI cc1111,
-which has an 8051 core.  We started out using standard SDCC, but Keith made a
-number of changes to better support the cc1111, and then SDCC 3.X changed code
-generation such that 8051 executables became significantly larger and our code
-just wouldn't fit in available flash any more!  
-
-As a result, we maintain a fork of SDCC we call 'cc1111' that is based
-on the last upstream version of SDCC 2.X, plus a highly modified sdcdb with
-support for the cc1111 debugging interface.  This is avilable as a package in
-Debian, or you can find the sources on [git.gag.com](http://git.gag.com)
-in the project [debian/cc1111](http://git.gag.com/?p=debian/cc1111;a=summary).
-
-### AVR
-
-We use the standard gcc-avr tools for this target, which thanks to the 
-popularity of the [Arduino](http://arduino.cc) community are well taken care 
-of in Debian.
-
-### ARM Cortex
-
-Most of the new products we're working on now are based on system on chip
-parts using ARM Cortex M3 or ARM Cortex M0 cores.  These require a "bare metal"
-toolchain, not the standard ARM compiler and libraries used for ARM Linux.  We
-continue to discuss our needs with others in the Debian community and have
-high hopes for a suitable toolchain to eventually be part of the main 
-distribution.  But, in the meantime, here's what it takes to build a suitable
-toolchain in /opt/cortex:
-
-* mkdir /opt/cortex, and ensure it's owned by you (so no root privs are needed)
-* clone our [cortex-toolchain](http://git.gag.com/?p=fw/cortex-toolchain;a=summary) with `git clone git://git.gag.com/fw/cortex-toolchain`
-* cd into the cortex-toolchain directory, review the list of build dependencies
-  documented in the README file, then build using 
-  `./summon-arm-toolchain`.  This will download all
-  the source packages, unpack them, build everything, and install it all in
-  /opt/cortex automatically.  This takes a bunch of disk space and a lot of
-  time, so be patient!
-* clone our [pdclib](http://git.gag.com/?p=fw/pdclib;a=summary) C library
-  repository with `git clone git://git.gag.com/fw/pdclib`
-* cd into the pdclib directory, and build using `make ; make install` which
-  will build the library using the just-installed cortex tools and deliver
-  the results to the /opt/cortex tree
-
-That's it!  You should now have an ARM toolchain targetting bare metal for
-both Cortex M0 and M3 variants including a minimal C runtime library.
-
-If you're using a debug/programming interface from ST (either an STlinkV2 USB
-dongle or something like a Discovery board) then you may also want to build
-and install tools for that as follows:
-
-* clone our fork of the [stlink](http://git.gag.com/?p=fw/stlink;a=xummary) 
-  reposirtory with `git clone git://git.gag.com/fw/stlink`
-* cd into the stlink directory, and build using 
-  './configure --prefix=/opt/cortex; make ; make install'.  This will install
-  the stlink library and related utilities in /opt/cortex.
-
+To do this, install [Debian](http://debian.org), upgrade to 'unstable', then 
+type 'apt build-dep altos' and all of the required build dependencies 
+should be automatically installed.
+
+Since many people prefer to use an actually released version of Debian, 
+in October 2024 Bdale worked through the steps required to take a
+clean install of Debian 12 (bookworm) and get to a working build.  Here's 
+the resulting recipe:
+
+<pre>
+  I installed a fresh Debian 12 (bookworm) minimal instance in a VM.
+
+       # make sure we're on latest bookworm bits
+       apt update && apt upgrade && apt autoremove
+
+       # set up build dependencies, etc.  Note that libssl-dev and sox
+       # are new build-deps added since the altos version released with
+       # debian bookwork, so won't be pulled in by 'build-dep'
+       apt install build-essential git libssl-dev sox
+       apt build-dep altos
+
+       git clone git://git.gag.com/fw/altos
+       cd altos
+       git checkout master
+       ./autogen.sh
+       make
+
+       # That ran to successful build completion for me.
+</pre>
+
+The notes we use to do a complete build for release are in the file
+Releasing in the root of the source tree.  You do *not* need to follow these
+instructions to do a build for yourself, but since that document is likely
+to be kept up to date better than this one, feel free to check there for
+hints on things that might have changed, and/or feel free to reach out to
+us for help if you get stuck.