Porting Software

From IRIX Network Wiki
Jump to: navigation, search

This is the current style and porting guide for irisware. Please read it carefully as failure to follow even the basic style guides, environment or more will result in your contributions being rejected until corrected.

Necessary Tools

irisware requires, at minimum, the following components installed in a IRIX 6.5.22 environment or later:

  • MIPSPro 7.4.4m
  • Development Libraries for 6.5
  • Development Foundations 1.3

Optional, if you want to build a GCC application, or your program requires use of the GNU tools:

  • GCC 4.7.3 - last GCC to support IRIX
  • gmake
  • autotools/automake

Note: You will need to rely on IRIX's as and ld tools, as binutils does not support the necessary ABIs for irisware. This is not negotiable. We will not accept or upstream packages that use the binutils ld or as.

Environment

irisware uses the /opt/local prefix and currently builds for n32 ABI only as of November 2018. The official env variables for tcsh and zsh are below:

TCSH:

setenv CC c99
setenv CXX CC
setenv CFLAGS '-c99 -O2 -I/opt/local/include -L/opt/local/lib'
setenv CXXFLAGS CFLAGS
setenv CPPFLAGS '-I/opt/local/include -L/opt/local/lib'
setenv LD_LIBRARY_PATH '/opt/local/lib'
setenv LDFLAGS '-L/opt/local/lib -Wl,-rpath -Wl,/opt/local/lib'

ZSH:

export CC=c99
export CXX=$CC
export CFLAGS='-c99 -O2 -I/opt/local/include -L/opt/local/lib'
export CXXFLAGS=$CFLAGS
export CPPFLAGS='-I/opt/local/include -L/opt/local/lib'
export LD_LIBRARY_PATH='/opt/local/lib'
export LDFLAGS='-L/opt/local/lib -Wl,-rpath -Wl,/opt/local/lib'

Notes: For libraries, it's best to build them with -O1 we've found. if they compile and pass all checks with -O2, it's fine, but something to keep in mind. -O2 is standard, though.

Configure Commands

For configure scripts you need to pass a number of things, including potential overrides. Some examples:

./configure --prefix=/opt/local --disable-nls --without-iconv --enable-static CC=/opt/local/gcc-4.7.3/bin/gcc

The prefix command is mandatory. Everything else is an example, i.e. disabling NLS or iconv is only needed if your target software necessitates it. Linking with IRIX can be a bit difficult due to it's LD, so static linking for testing is a good idea. The last bit, CC, overrides the use of MIPSPro.

Hard Stops

irisware does not port all software, and we will not port some things that Nekoware maintained. We will not accept these packages:

  • GNOME (any version) - We do not package alternative desktop environments for IRIX. The libraries such as VTE are okay, if your port depends on it.
  • KDE (any version) - See GNOME. Similar reasons.
  • Firefox (any version) - We're not maintaining a port of Firefox, even Firefox 2 or 3. You may use the ports in nekoware if you so choose.
  • D-BUS - Doesn't have IRIX support anymore, and Project Kitsune, the sponsor and governing body of IRIX Network, boycotts D-BUS, PulseAudio, GStreamer, and anything relying on it.
  • PulseAudio - See D-BUS.
  • GStreamer - See D-BUS
  • CUPS - Depends on D-BUS
  • GTK3 - Due to ATK's mandatory integration, which leverages D-BUS, it's not to be ported.
  • QT5 - Requires QT5-dbus as part of the main suite for similar reasons to GTK3.
  • Any other desktop environment, with the possible exception of CDE.
  • Any software in which the maintainer takes a hostile view towards IRIX and actively hinders our attempts to keep it maintained.

Good Candidates

Good candidates for irisware include:

  • Regularly updated software that has an LTS variant.
  • Commandline utilities.
  • Motif, FLTK, or Fox toolkit applications.
  • Software whose maintainers agree to upstream patches.
  • Software which builds cleanly in MIPSPro.

Packaging

For now, we do not have a comprehensive guide on this, however, some good resources for this can include: