Mo DeJong wrote:
>
> Hello
>
> I am trying to create a Makefile.am file for a simple
> program that has all its sources in a single directory.
> I thought this would be easy, but I just can not seem
> to figure out how to tell automake to conditionally
> compile one of two files. I must be missing a something
> really obvious here.
>
> I am using autoconf, automake, and libtool from the CVS.
>
> The AM_CONDITIONAL in the configure.in file looks like this:
>
> dnl Define an AM_CONDITIONAL for the subsystem we will build
> AC_MSG_CHECKING([for subsystem to build])
> if test "x$ac_cv_mingw32" = "xyes" ; then
> AC_MSG_RESULT([WIN32])
> AM_CONDITIONAL(WIN32, `echo true`)
AM_CONDITIONAL expects a test result as the second argument. Echo is
always going to return true. You probably want this:
AM_CONDITIONAL(WIN32, test "x$ac_cv_mingw32" = "xyes")
> else
> AC_MSG_RESULT([X])
> AM_CONDITIONAL(X, `echo true`)
> fi
>
> Here is my Makefile.am. I just want to compile a single
> shared library using libtool.
>
> lib_LTLIBRARIES = libtkgs.la
>
> libtkgs_la_SOURCES = \
> tkgs.c \
> tkgsColor.c \
> tkgsGc.c \
> tkgsPS.c \
> tkgsCanvas.c \
> tkgsDrawable.c \
> tkgsObj.c \
> tkgsSquare.c
>
> noinst_HEADERS = \
> tkgs.h \
> tkgsColor.h \
> tkgsDriver.h \
> tkgsInt.h \
> tkgsPS.h \
> tkgsWin.h \
> tkgsCanvas.h \
> tkgsDrawable.h \
> tkgsGc.h \
> tkgsObj.h \
> tkgsSquare.h
>
> if WIN32
> libtkgs_la_SOURCES += tkgsWin.c
> noinst_HEADERS += tkgsWin.h
> endif
>
> if X
> libtkgs_la_SOURCES += tkgsXlib.c
> noinst_HEADERS += tkgsXlib.h
> endif
>
> When I run automake I get the really
> confusing error message.
>
> Makefile.am:3: libtkgs_la_SOURCES defined both conditionally and
> unconditionally
> Makefile.am:13: noinst_HEADERS defined both conditionally and unconditionally
>
> The Makefile.in ends up looking like this:
>
> lib_LTLIBRARIES = libtkgs.la
>
> WIN32_TRUE@libtkgs_la_SOURCES = @WIN32_TRUE@\
> @[EMAIL PROTECTED] \
> @[EMAIL PROTECTED] \
> @[EMAIL PROTECTED] \
> @[EMAIL PROTECTED] \
> @[EMAIL PROTECTED] \
> @[EMAIL PROTECTED] \
> @[EMAIL PROTECTED] \
> @[EMAIL PROTECTED]\
> @WIN32_TRUE@ tkgsWin.c
> @X_TRUE@libtkgs_la_SOURCES = @[EMAIL PROTECTED]
> @WIN32_TRUE@noinst_HEADERS = @WIN32_TRUE@\
> @[EMAIL PROTECTED] \
> @[EMAIL PROTECTED] \
> @[EMAIL PROTECTED] \
>
> When I run this file, it tries to compile tkgsWin.h
> even thought configure properly detected X not WIN32.
>
> gcc -DHAVE_CONFIG_H -I. -I/home/mo/project/tkgs -I. -g -O2 -c
> /home/mo/project/t
> kgs/tkgsWin.c -Wp,-MD,.deps/tkgsWin.TPlo -fPIC -DPIC -o .libs/tkgsWin.lo
> In file included from /home/mo/project/tkgs/tkgsWin.c:4:
> /home/mo/project/tkgs/tkgsWin.h:7: windows.h: No such file or directory
> make: *** [tkgsWin.lo] Error 1
>
> Could anyone shed some light on this? Is there a better
> way to conditionally compile certain files?
>
> Mo DeJong
> Red Hat Inc
--
------------------------------------------------------------------
Michael Bletzinger Software Developer, Alliance Computational
[EMAIL PROTECTED] Environment & Security
217 265 5137 NCSA