Bug with the "Make Distribution -> Source-tgz"

W. Tasin tasin at e-technik.fh-muenchen.de
Thu Apr 13 13:53:06 BST 2000


"Adam L." wrote:
> 
> I have a little problem with external include on the 1.2 kdevelop:
> I put in the project options (additionals options) the following commands:
> -g -D_REENTRANT -I/usr/include/SDL
> And when I try to compile the tarball distribution done with Source-tgz,
> it can't find the header files because the option is missing
> (-I/usr/include/SDL). The "Make Distribution -> Source-tgz" don't put all
> the options (from the "additionals options") in the makefile.am or makefile.in
> (or what ever...)... :-<
> 
> Someone can help me?

Hmmmm... compliments... you have selected a question, which causes 3
answers,
for each compiler-switch an different one... ;-)
I assume you want to set this in a KDE or QT application.
If it would be a terminal app, so the explaination would differ (a
little bit).

1) the -g:

I don't suggest to distribute -g to the package. This is only for
including the debug info, and 
will be done if somebody invokes "configure --enable-debug"

BTW: adding only -g wouldn't work right, because you would have to
remove the "-s" switch from the "standard" linker options, too.

2) the -D_REENTRANT:
here a part of the new FAQ... inside the actual snapshot:
--------- snip -------
Q: I´m developing an application where I need to set -D options to the
preprocessor.
   If I add these in KDevelop to my project options, everything is ok,
but when I
   distribute my package, the -D options set in KDevelop are not used.
What do I have
   to do to make this work ?
A: Edit the file configure.in in your toplevel source directory. Here,
you
   have to enter after the AC_CHECK_COMPILERS macro:
     CPPFLAGS="$CPPFLAGS -DMYDEFINE"
   and after that you have to recreate your new "configure" by invoking
   "make -f Makefile.dist" and then rerun the configure script.


Q: Is there another possibility to publish my own defines?
A: Another version to include DEFINEs in your project is to publish
   them by config.h.
   To do so you have to patch the following files:
   Add to acconfig.h of your toplevel project directory the following
line:
     #undef MYDEFINE

   and insert in the configure.in, after the macro call
   AC_CONFIG_HEADER(config.h):
     AC_DEFINE_UNQUOTED(MYDEFINE)

   (So it will be defined in config.h after updating your framework with
    "make -f Makefile.dist; configure [your options]")

   Requirements for this solutions are:
     AC_CONFIG_HEADER(config.h)
   inside configure.in and in the sourcecode a
     #ifdef HAVE_CONFIG_H
     #include <config.h>
     #endif
   before the other includes will be done
   (normally this is already done in our project templates).

   BTW: An advantage of this solution is to make MYDEFINE dependable on
        certain situations (like creating an option for configure).
        This needs of course writing an own macro function.
--------- snip -------

3) -I/usr/include/SDL

This is the most difficult part to do it the right way.

An easy, but not correct solution would be to add to the configure.in:

all_includes="$all_includes -I/usr/include/SDL"

[the best place for that is before the lines:
AC_ARG_PROGRAM
AC_OUTPUT( ..... )
at the end of the file.]

Problems here: 
- Who can guarantee that the includes for SDL would always be in
/usr/include... maybe on some systems it could be /usr/local/sdl/include
(and maybe the lib would be there in /usr/local/sdl/lib)??
- Maybe I haven't installed the SDL so building would fail, but normally
configure should already fail with a more helpful message.

So to make it right you would have to add a macro function to
configure.in, which do certain tests and searches for an installed SDL.

If you want to do so, I can give you here only a hint... try to
understand the acinclude.m4.in or create a KDE-normal-ogl project (also
with the actual KDevelop snapshot), there you will a file called qgl.m4,
which will be concatenated to acinclude.m4 (see "Makefile.dist").
This shows you an extensive example to search for QT-OpenGL-Lib, you
have to rewrite it for your problem. 

Ciao

Walter
--
oohhh sveglia.... il mondo e' ammalato, ma x colpa di chi.........
(Zucchero)
:-------W. Tasin, FB 04,
FHM-------------------PGP-KeyID:0x7961A645----------:
<Key-Fingerprint: 1610 835F 0080 32F4 6140  6CF7 A7D0 44CD 7961A645>
<http://wwwkeys.pgp.net:11371/pks/lookup?op=index&search=0x7961A645&fingerprint=on>




More information about the KDevelop mailing list