Post by Praveen kumar RI apologize for my poor description of the issue.
To start of with I have a file platform.inc, which includes the build time
macro definitions,
B_REFSW_OS = linuxuser
NEXUS_PLATFORM = 97428
NEXUS_MODE =
BCHP_CHIP = 7429
BCHP_VER = B0
Ah, so these are Makefile snippets, to be included during 'make' (and
not .m4 files during autoconf or .h files during the compiler run by
make). See what a difference it makes when you give us details we can
work with?
Post by Praveen kumar Rwhich are used in my source file to make switches,see below code snippet
if (NEXUS_PLATFORM == 97428) {
{
}
else
{
}
Wait, this looks like C code. Are you trying to turn your makefile
macros into C .h macros?
Post by Praveen kumar RI am trying to include this inc file in the automake file so that the build
variables are available for the sources at the compile time.
But this is the autoconf list, not the automake list. Are you sure you
are asking in the right location?
Post by Praveen kumar RThis is an existing inc file which is used in the normal makefile, as I am
porting this component to autotools I needed to do the same.
I tried this in my Makefile,am
include platform.inc
Yes, that is how you would include a makefile snippet. But including a
makefile snippet does not impact the C code that the compiler sees.
If you are using just make variables, then you could do this in your
Makefile.am:
include platform.inc
NULL =
AM_CFLAGS = \
-DB_REFSW_OS=$(B_REFSW_OS) \
-DNEXUS_PLATFORM=$(NEXUS_PLATFORM) \
$(NULL)
(expanded to mention all variable names you want to turn into
preprocessor macros), but that feels like a lot of duplication. Are you
sure you even need make variables?
Post by Praveen kumar Rthis is not working and I am getting compile time errors, like
NEXUS_PLATFORM undefined, because there is check in the source before
using it like
ifndef NEXUS_PLATFORM: ERROR
can I use the existing inc file as is ? or do I need to port this as to
suit for autotools environment.
If you want to propagate a make-time macro into your C files, the
general way to do that via autoconf is to use AC_DEFINE (or
AC_DEFINE_UNQUOTED), to stick the definition into your config.h file.
This is completely independent of make variables. Stick this in your
configure.ac (and NOT your Makefile.am):
AC_DEFINE([B_REFSW_OS], [linuxuser], [some doc comment])
AC_DEFINE([NEXUS_PLATFORM], [97428], [whatever this variable does...])
and so forth. If you don't want to hard-code those values, but instead
let the user configure them, then add appropriate configure tests,
collect the value into a shell variable, such as:
bchp_chip=`some command to determine appropriate value`
AC_DEFINE_UNQUOTED([BCHP_CHIP], [$bchp_chip], [whatever this does])
then in your .c files, just #include <config.h> (first, before any other
headers), and the macros will already be defined.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org