skalibs configuration flags

The skalibs ./configure script comes with a few uncommon options; this page explains what they are for.


This flag tells configure that you want to install skalibs according to the slashpackage convention. If you enable it, and $v is the version of skalibs you're compiling, make install will install the skalibs header files in /package/prog/skalibs-$v/include, the static libraries in /package/prog/skalibs-$v/library, the dynamic libraries in /package/prog/skalibs-$v/ and the data files in /package/prog/skalibs-$v/etc, all prefixed by sproot if present.

It will also prepend the default path with /command, unless an explicit default path has been given via the --with-default-path option.

Additionally, it will add two more "make" targets:

If this option is not given, no slashpackage support will be provided.


To understand what this flag is about - and the next two flags too - you should start by reading this page about Unix time, which David Madore wrote after a long and fairly complete discussion we had on the subject. You can also read what DJB says about Unix time. Unfortunately, when he says "the POSIX rules are so outrageously dumb (...) that no self-respecting engineer would obey them", DJB is wrong: a lot of people follow the POSIX rules. Or maybe he's right... and there are very, very few self-respecting engineers.

Basically, when you configure a Unix system, there are essentially two ways to deal with your system clock.

  1. You can set your system clock to TAI-10, which is the "right", but uncommon, thing to do:
  2. You can set your system clock to UTC, which is the common, strictly POSIX setup:

Use --enable-tai-clock if your system clock is set to TAI-10. I generally recommend this setup for computers you have full control on, on which you install and tweak the software your way, like manually administered servers or embedded boxes. If you do not run ntpd and do not mind breaking POSIX, it is the sensible choice.

Do not use this option if your system clock is set to UTC, i.e. if you're in none of the above cases: you are a POSIX freak, or your Unix distribution is running ntpd for you, or other software is assuming you're on UTC. This is the default.


If you set this option, then skalibs will be compiled without IPv6 support, even if your target architecture supports it. This can significantly reduce the size of your networking applications if they don't need IPv6 support.

If you don't set this option, then skalibs will include IPv6 support in the relevant networking functions if and only if the target architecture supports it. This is the default, and it is safe.


The execvep() function uses the value of the PATH environment variable as its executable search path. Specifying this option to configure tells execvep() what executable search path to use when PATH is undefined (which should not happen often anyway). The default is /usr/bin:/bin, which is usually safe.


When compiling natively, skalibs probes the build system for sysdeps, i.e. system-specific behaviours that influence the way skalibs must implement certain interfaces. This autodetection can be overriden on the configure command line: for a sysdep named K, if you want to enforce the value V, you can use --enable-sysdep-K=V as a configure option.

(This is similar to the ac_cv_foobar_K=V environment variable mechanism in autotools.)

When cross-compiling, there are a few sysdeps that cannot be autodetected and have to be provided manually on the command line. The devurandom sysdep, which encodes the existence of a functional /dev/urandom device on the target, is one of those. --enable-sysdep-devurandom=yes tells skalibs to assume that there is such a device it can rely on for random number generation.