autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gob2 preprocessor with autoconf/make


From: daniel fischer
Subject: gob2 preprocessor with autoconf/make
Date: Tue, 9 Dec 2003 14:41:47 +0100

hi all,

I'm trying to maintain a project that intensively uses a preprocessor called 
"gob2" to produce glib/gtk-compatible C. i kinda like it, and want to keep it, 
but it's integration to autoconf has quirks. i hope somebody on the list can 
give me some hints how to solve it better.

so, gob2 produces both .h and .c/.cc file from a source .gob. it has an option 
--no-touch-headers, that will only update the .h if it actually changes.

currently, i'm using the gob2.m4 that comes with the gob distribution, find it 
at the end of this message.

and insert "GOB2_CHECK(2.0.0)" into my configure.ac.
my Makefile.ams contain, for every .gob:
        BUILT_SOURCES = foo.cc foo.h
        pkginclude_HEADERS = foo.h
        foo_la_SOURCES = foo.gob foo.cc foo.h

and additionally:
        %.cc %.h %-private.h: %.gob
                @GOB2@ --for-cpp --no-private-header --no-touch-headers $<

this is the way suggested by the gob manpage, but i deem it unneccessary 
redundant. it is also quirky in other ways, dependencies dont work properly 
(the gob2 manpage states that --no-touch-headers will 'confuse' automake).

could there be an easier way, so i just have to add my source .gob (probably 
the .h if i want it installed) to the Makefile.am? and the dependencies work 
like supposed?

any help/hints/finished .m4 scripts are highly appreciated. i hope this is the 
right list for this question, if not, please notify me privately, and sorry.

-dan

gob2.m4 from the gob dist (http://www.5z.com/jirka/gob.html)
------------ 
dnl
dnl GOB_HOOK(script if found, fail)
dnl if fail = "failure", abort if GOB not found
dnl


AC_DEFUN(GOB2_HOOK,[
        AC_PATH_PROG(GOB2,gob2)
        if test ! x$GOB2 = x; then      
                if test ! x$1 = x; then 
                        AC_MSG_CHECKING(for gob-2 >= $1)
                        g_r_ve=`echo $1|sed 
's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
                        g_r_ma=`echo $1|sed 
's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
                        g_r_mi=`echo $1|sed 
's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
                        g_ve=`$GOB2 --version 2>&1|sed 's/Gob version 
\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
                        g_ma=`$GOB2 --version 2>&1|sed 's/Gob version 
\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
                        g_mi=`$GOB2 --version 2>&1|sed 's/Gob version 
\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`

                        if test $g_ve -eq $g_r_ve; then
                                if test $g_ma -ge $g_r_ma; then
                                        if test $g_mi -ge $g_r_mi; then
                                                AC_MSG_RESULT(ok)
                                        else
                                                if test $g_ma -gt $g_r_ma; then
                                                        AC_MSG_RESULT(ok)
                                                else
                                                        AC_MSG_ERROR("found 
$g_ve.$g_ma.$g_mi requires $g_r_ve.$g_r_ma.$g_r_mi")
                                                fi
                                        fi
                                else
                                        AC_MSG_ERROR("found $g_ve.$g_ma.$g_mi 
requires $g_r_ve.$g_r_ma.$g_r_mi")
                                fi
                        else
                                if test $g_ve -gt $g_r_ve; then
                                        AC_MSG_RESULT(ok)
                                else
                                        AC_MSG_ERROR(major version $g_ve found 
but $g_r_ve required)
                                fi
                        fi
        
                        unset gob_version
                        unset g_ve
                        unset g_ma
                        unset g_mi
                        unset g_r_ve
                        unset g_r_ma
                        unset g_r_mi
                fi
                AC_SUBST(GOB2)
                $2
        else            
                $3
        fi
])

AC_DEFUN([GOB2_CHECK],[
        GOB2_HOOK($1,[],[AC_MSG_WARN([Cannot find GOB-2, check 
http://www.5z.com/jirka/gob.html])])
])

------------ 


-- 
address@hidden
http://f3c.com/dan/





reply via email to

[Prev in Thread] Current Thread [Next in Thread]