💾 Archived View for sdf.org › rsdoiel › blog › 2020 › 05 › 06 › Compiling-OBNC-on-macOS.gmi captured on 2023-01-29 at 04:43:02. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
By R. S. Doiel, 2020-05-06
This is the sixth post in the Mostly Oberon[1] series. Mostly Oberon documents my exploration of the Oberon Language, Oberon System and the various rabbit holes I will inevitably fall into.
1: ../../04/11/Mostly-Oberon.html
Compiling OBNC v0.16.1 on macOS (10.13.6) using MacPorts (2.6.2) is straight forward if you have the required dependencies and environment setup up. Below are my notes to get everything working.
MacPorts has libsdl 1.2 available as a package called "libsdl" (not surprisingly). There are other versions of the SDL available in ports but this is the one we're using.
  sudo port install libsdl
You need to install the Boehm-Demers-Weiser GC installed. Using MacPorts it is almost as easy as installing under Debian. The package is less obviously named than under Debian. The package you want is "beohmgc".
  sudo port install boehmgc
More info on the GC.
2: https://www.hboehm.info/gc/
3: https://ports.macports.org/port/boehmgc/summary
XCode is provides a C compiler and linker. That is what is installed on my machine. It can be a bit of a pain at times with obscure errors, particularly with regards to the linker. Your milleage may very. I know you can install other C compilers (e.g. Clang) but I haven't tried them yet.
You need to update your CC variables to find the header and shared library files for compilation of obnc with build. (I added these to my .bash_profile). New Macs ships with zsh and your settings might be in a different location. MacPorts puts its libraries under the /opt/local directory.
  export C_INCLUDE_PATH="/usr/include:/usr/local/include:/opt/local/include"   export LIBRARY_PATH="/usr/lib:/usr/local/lib:/opt/local/lib"   export LD_LIBRARY_PATH="/usr/lib:/usr/local/lib:/opt/local/lib"
This follows' Karl's docs. Additionally if you install OBNC extlib so you can do POSIX shell programs you'll need to set your OBNC_IMPORT_PATH environment. An example of including a default install location and local home directory location.
  export OBNC_IMPORT_PATH="/usr/local/lib/obnc:$HOME/lib/obnc"