On 12/20/2011 12:28 PM, Eric Gorr wrote: > I am just starting to experiment with build tools like autoconf, etc. and had what I am sure is a silly/stupid/easy question, but one that I still don't know the answer to. > > I am just trying to write a very simple, "hello, world" configure.ac script using a AC_DEFUN macro that I wrote to print "hello world". What I have is the following: > > AC_PREREQ(2.61) > AC_INIT(autoconf_test, 1.0,nowhere@xxxxxxxx) Not related, but you should get in the habit of proper quoting. This should be: AC_PREREQ([2.61]) AC_INIT([autoconf_test], [1.0], [nowhere@xxxxxxxx]) > > # EG_MY_MACRO > # ----------------------------- > AC_DEFUN( [EG_MY_MACRO], > m4_warn( [all], [hello world] ) > ) # EG_MY_MACRO And here, the quoting actually bit you. Because you failed to quote the m4_warn, it was expanded _prior_ to AC_DEFUN setting the definition of EG_MY_MACRO, when in reality, it looks like you want the definition of EG_MY_MACRO to be the quoted text so the m4_warn only triggers if you expand EG_MY_MACRO later on. Furthermore, 'all' is a special syntactic sugar for displaying all other warning categories, but is not a warning category itself. m4_warn can only be used with the following warning categories (at least, as of 2.61, which is what you are targeting as your minimum version): cross, obsolete, syntax Also, while leading whitespace before [ is stripped, trailing whitespace after ] is _not_ stripped (you can use dnl to strip trailing newlines, but in general you should get used to putting the ] next to the ) with no intervening space). That is, you wanted something more like: AC_DEFUN([EG_MY_MACRO], [m4_warn([syntax], [hello world])]dnl ) # EG_MY_MACRO > However, when I execute autoconf, I get the following error message: > > ~/depot/autoconf_test $autoconf > unknown channel all at /usr/bin/../share/autoconf/Autom4te/Channels.pm line 546 > Autom4te::Channels::msg('all', 'configure.ac:8', 'warning: hello world ') called at /usr/bin/autom4te line 1012 Yes, this is a result of passing an invalid argument as the first parameter to m4_warn. > and there is no configure script generated. Yes, this is a side-effect of your above mis-use being treated as a parse error. > I'm sure this is a fairly simple problem. I have a very simple configure.ac file which I am using to just learn how autoconf & pkg-config work together. The confgure.ac file looks like: > > AC_PREREQ(2.61) > AC_INIT(autoconf_test, 1.0,nowhere@xxxxxxxx) > > PKG_CHECK_MODULES(libusbmuxd, libusbmuxd >= 0.1.4) Again, underquoted: PKG_CHECK_MODULES([libusbmuxd], [libusbmuxd >= 0.1.4]) > > I can then execute autoconf from the command line and it does produce a configure script. However, when I run the configure script, I get the following error: > > ./configure: line 1618: syntax error near unexpected token `libusbmuxd,' > ./configure: line 1618: `PKG_CHECK_MODULES(libusbmuxd, libusbmuxd >= 0.1.4)' This means you didn't define PKG_CHECK_MODULES as a macro; if you are using automake, then you didn't point aclocal to look in the right directories for pkg.m4; if you are not using automake, then you need to manually inline the contents of pkg.m4 into your acinclude.m4. Either way, you're not the first to hit this problem: https://lists.gnu.org/archive/html/autoconf/2011-12/msg00034.html -- Eric Blake eblake@xxxxxxxxxx +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Autoconf mailing list Autoconf@xxxxxxx https://lists.gnu.org/mailman/listinfo/autoconf