Compiling on Interix 5.2 (Windows 2003 Server R2 SUA)

The soon-to-be-released Windows 2003 Server R2 includes features that were previously shipped as Services for Unix (SFU) – perhaps the most interesting of which is Subsystem for UNIX-based Applications (SUA).

At the time of writing, if you want to see what R2 is all about you’ll need to download the Windows Server 2003 R2 Release Candidate 1 (RC1) Software, which can only be installed on a trial version of Windows 2003 Server (available as a download with R2). After you’ve installed the ‘Subsystem for UNIX-based Applications’ Windows component (Add/Remove Programs applet) you will need to download and install 200Mb or so of ‘Utilities and SDK for UNIX-based Applications’. See Installing and Using Utilities and SDK for UNIX-based Applications. Be sure to do a custom install as the default doesn’t install the GNU utilities (among other things).

Once you’ve got it all installed you’ll probably want to start compiling software (like bash), but when you run configure you’ll get a message like this:

 checking build system type... ./support/config.guess: unable to guess system type
    
    This script, last modified 2005-09-19, has failed to recognize
    the operating system you are using. It is advised that you
    download the most up to date version of the config scripts from
    
      http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess and
      http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
    
    If the version you run (./support/config.guess) is already up to date, please
    send the following data and any information you think might be
    pertinent to  in order to provide the needed
    information to handle your system.
    
    config.guess timestamp = 2005-09-19
    
    uname -m = x86
    uname -r = 5.2
    uname -s = Interix
    uname -v = SP-9.0.3790.2049
    
    /usr/bin/uname -p = Intel_x86_Family15_Model4_Stepping8
    /bin/uname -X     =
    System = Interix
    Node = aosdubvsvr03
    Release = 5.2
    Version = SP-9.0.3790.2049
    Machine = x86
    Processor = Intel_x86_Family15_Model4_Stepping8
    HostSystem = Windows
    HostRelease = SP1
    HostVersion = 5.2
    
    hostinfo               =
    /bin/universe          =
    /usr/bin/arch -k       =
    /bin/arch              =
    /usr/bin/oslevel       =
    /usr/convex/getsysinfo =
    
    UNAME_MACHINE = x86
    UNAME_RELEASE = 5.2
    UNAME_SYSTEM  = Interix
    UNAME_VERSION = SP-9.0.3790.2049
    configure: error: cannot guess build type; you must specify one

This is because the config.guess script only knows about Interix versions 3 and 4 – you’ll have to tell it about version 5:

$ diff config.guess config.guess.new
     782c782
          ---
     >     x86:Interix*:[345]*)

Once you’ve done this you should be able to start compiling…