On Wednesday 29 April 2009 11:02:52 Cornelius Hald wrote:
> I´m wondering what is the recomended way to find out the OS version in my
> configure script? Do I have to check for library availability and then make
> a guess or is there some test program that I can call or some file with the
> version name?

The "recommended" (at least by me) way is to not use OS **names** at all -- 
names are unreliable (what would your code had done when Diablo was 
introduced if it had been relying on the name Chinook).  The standard way to 
address these sorts of issues in configure scripts is not to try to work out 
the name or version but to look for features you need.

As an example, here is how most of my GPE configure.ac scripts handle this 
today (not yet including Freemantle):

ENABLE_HILDON=false
AC_ARG_ENABLE(hildon,
[  --enable-hildon         Enable Hildon GUI],
[
        ENABLE_HILDON=true
        PKG_CHECK_MODULES(HILDON, hildon-1,
                [
                        AC_DEFINE(HILDON_VER, 2, [Version of hildon libraries])
                        DEP_MODULES="$DEP_MODULES hildon-fm-2"
                ],
                [
                        AC_DEFINE(HILDON_VER, 0, [Version of hildon 
libraries])
                        PKG_CHECK_MODULES(HILDON, hildon-lgpl hildon-libs)
                        DEP_MODULES="$DEP_MODULES hildon-fm"
                ])
        DEP_MODULES="$DEP_MODULES libosso"
],
[
        ENABLE_HILDON=false
])
AC_SUBST(ENABLE_HILDON)
AM_CONDITIONAL(HILDON, test x$ENABLE_HILDON = xtrue)
...
PKG_CHECK_MODULES(DEPS, $DEP_MODULES)


I then use HILDON, HILDON_CFLAGS, HILDON_LIBS, DEPS_CFLAGS and DEPS_LIBS in my 
Makefile.am, for example in lines like:

if HILDON
DEPS_CFLAGS += -DIS_HILDON
endif
...
INCLUDES = $(DEPS_CFLAGS) $(HILDON_CFLAGS) \
          $(SERVERDEPS_CFLAGS) -I$(top_srcdir)/gpe -I$(top_srcdir) \
           -DPREFIX=\"@pre...@\" -D_GNU_SOURCE -Wall \
           -DPACKAGE_LOCALE_DIR=\"@gpecalendar_locale...@\" \
           -DDBUS_API_SUBJECT_TO_CHANGE
...
gpe_calendar_LDADD = $(DEPS_LIBS) $(HILDON_LIBS) libwidgets.la
...

The .c files make use of the IS_HILDON and the HILDON_VER macros to 
conditionalise code.

I can send you full versions of these files by email if you want, or just 
check out the source package for something like gpe-calendar (where these 
examples came from).

Graham
_______________________________________________
maemo-developers mailing list
maemo-developers@maemo.org
https://lists.maemo.org/mailman/listinfo/maemo-developers

Reply via email to