[Pkg-ace-devel] Bug#290114: mpc-ace: inline option for mpc generated GNUMakefiles is not usable

Marek Brudka Marek Brudka <mbrudka@aster.pl>, 290114@bugs.debian.org
Wed, 12 Jan 2005 21:22:39 +0100


Subject: mpc-ace: inline option for mpc generated GNUMakefiles is not usable
Package: mpc-ace
Version: 5.4.2.1-1
Severity: normal

*** Please type your report below this line ***
GNUmakefiles generated from MPC have option inline=[0,1] which controls
inlining of c++ methods. This options works fine when building ACE/TAO/CIAO,
however cannot be used for projects using MPC and ACE distribution. To see
what happens one has to analyze whats going on when make is called with 
inline
set to 0 or 1.

make inline=1:
1) From wrappers_macros.GNU makefile derives options for compiler which 
allows
to inle some functions. This is good for any MPC based project.
2) In the same wrappers_macros.GNU to gcc compilers -D__ACE_INLINE__ 
macro is
added to control the behaviour of ACE headers. This option is rather not 
usable for
MPC based projects.

make inline=0:
1) wrappers_macros.GNU turns of gcc inline support.
2) -DACE_NO_INLINE macro is defined in wrapper_macros.GNU.

The problem with inline option is that the distribution of ACE has no 
variants, namely
it is generated for inline=1 (default). Hence for any MPC based 
application inline
option=0 can not be used, because this switch of inline support in ACE 
headers and
leading to linker error, because ACE distribution is inlined (there are 
not inline
functions in libraries).

The inline option is usefull when developing MPC based programs, because 
at least
makes debugging easier.

The idea of a bugfix is as follows:
1. config.h for ACE should contain __ACE_INLINE__ (or ACE_NO_INLINE) 
because there
is only one variant of ACE libraries.
2. Entries in wrappers_macros.GNU which define ACE_INLINE 
(ACE_NO_INLINE) macros
should be removed, because these command line macros are not necessary 
for normal
programs.

Alternatively, to prevent compatibilty for ACE based programs, which uses
__ACE_INLINE__ macros, one may change __ACE_INLINE__ macros in every ACE 
headers to
something different, and not modify wrapper macros. However I vote for 
the first
solution, as it is simplier and does not promote using internal 
__ACE_INLINE__ macro
in ACE based projects.

-- System Information:
Debian Release: 3.1
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.4.25
Locale: LANG=pl_PL, LC_CTYPE=pl_PL (charmap=ISO-8859-2)

Versions of packages mpc-ace depends on:
ii  libace-dev                    5.4.2.1-1  An Object-Oriented Network 
Program
ii  make                          3.80-9     The GNU version of the 
"make" util
ii  perl-base                     5.8.4-5    The Pathologically Eclectic 
Rubbis

-- no debconf information