I saw some posts to this list and the user list from a couple of months
ago about issues building Axis2/C on AIX. I managed to get 1.4.0 to
build (and run) on AIX 5.3 and thought I should post my experience.
I had to make some minor code changes and I am not sure the way I got it
to build is the best (putting -D_ALL_SOURCE in CFLAGS seems like a bit
of a hack). I tried putting define of _ALL_SOURCE in an aix specific
header file but I got into a recursive include mess and gave up ton
that.
Also, I have never used autoconf nor automake and my boxes don't have
versions that work with the distributed configure.ac and Makefile.am
files so I am not sure how the below "todo's" should be resolved.
Versions:
Axis2/C 1.4.0
AIX 5.3
gcc 4.2.0
native ld
native make
Below are errors encountered and what I did to get around them.
########################################################################
####
make: error:
uuid_gen_unix.c:36:26: error: sys/sockio.h: No such file or directory
"fix": surrounded #include <sys/sockio.h> with #ifdef HAVE_SYS_SOCKIO_H
in ./util/src/platforms/unix/uuid_gen_unix.c:
> /opt/freeware/bin/diff -c
../axis2c-src-1.4.0.orig/util/src/platforms/unix/uuid_gen_unix.c
util/src/platforms/unix/>
*** ../axis2c-src-1.4.0.orig/util/src/platforms/unix/uuid_gen_unix.c
Wed Jan 9 21:39:33 2008
--- util/src/platforms/unix/uuid_gen_unix.c Tue Oct 28 16:07:58 2008
***************
*** 17,22 ****
--- 17,23 ----
*/
#include <config.h>
+ #include <platforms/axutil_platform_auto_sense.h>
#include <sys/ioctl.h>
#include <string.h>
***************
*** 26,42 ****
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
- #include <sys/socket.h>
#include <sys/time.h>
#ifdef HAVE_LINUX_IF_H
# include <linux/if.h>
#else
# ifdef HAVE_NET_IF_H
- # include <sys/sockio.h>
# include <net/if.h>
# include <net/if_arp.h>
# endif
# ifdef HAVE_NET_IF_TYPES_H
# include <net/if_types.h>
# endif
--- 27,45 ----
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/time.h>
+ /* these ifdefs would be better in a header file
#ifdef HAVE_LINUX_IF_H
# include <linux/if.h>
#else
# ifdef HAVE_NET_IF_H
# include <net/if.h>
# include <net/if_arp.h>
# endif
+ # ifdef HAVE_SOCKIO_H
+ # include <sys/sockio.h>
+ # endif
# ifdef HAVE_NET_IF_TYPES_H
# include <net/if_types.h>
# endif
todo: configure should check for existence of sys/sockio.h and set
HAVE_SYS_SOCKIO_H
########################################################################
####
make error:
In file included from uuid_gen_unix.c:37:
/usr/include/net/if_arp.h:68: error: expected specifier-qualifier-list
before 'u_short'
"fix": define _ALL_SOURCE before include of sys/types.h
add "-D_ALL_SOURCE" to CFLAGS before running configure
########################################################################
####
make error:
from uuid_gen_unix.c:50:
../../../include/platforms/unix/axutil_unix.h:119:20: error: getopt.h:
No such file or directory
make: The error code from the last command is 1.
"fix": surrounded #include <getopt.h> with #ifdef HAVE_GETOPT_H in
...util/include/platforms/unix/axutil_unix.h:
> clude/platforms/unix/axutil_unix.h
util/include/platforms/unix/axutil_unix.h
<
*** ../axis2c-src-1.4.0.orig/util/include/platforms/unix/axutil_unix.h
Sun Mar 9 23:29:37 2008
--- util/include/platforms/unix/axutil_unix.h Tue Oct 28 12:49:18 2008
***************
*** 116,122 ****
--- 116,124 ----
#include "axutil_uuid_gen_unix.h" /* uuid_gen unix implementation */
#include <netinet/tcp.h> /* TCP_NODELAY */
#include <utime.h>
+ #ifdef HAVE_GETOPT_H
#include <getopt.h>
+ #endif
#include "axutil_date_time_util_unix.h"
/* for file access handling */
todo: configure.ac: should check for existence of sys/sockio.h and set
HAVE_GETOPT_H
########################################################################
####
make error:
gcc -DHAVE_CONFIG_H -I. -I. -I../../.. -I../../../include
-I../../../include/platforms -I../../../include/platforms/unix -g -O2
-D_ALL_SOURCE -D_LARGEFILE64_SOURCE -ansi -Wall -Werror
-Wno-implicit-function-declaration -MT thread_unix.lo -MD -MP -MF
.deps/thread_unix.Tpo -c thread_unix.c -DPIC -o .libs/thread_unix.o
cc1: warnings being treated as errors
thread_unix.c: In function 'axutil_thread_once_init':
thread_unix.c:279: warning: missing braces around initializer
thread_unix.c:279: warning: (near initialization for
'once_init.__on_word')
"fix": added -DAXIS2_AIX to CFLAGS AND changed
util/src/platforms/unix/thread_unix.c as follows:
> c/platforms/unix/thread_unix.c util/src/platforms/unix/thread_unix.c
<
*** ../axis2c-src-1.4.0.orig/util/src/platforms/unix/thread_unix.c
Wed Jan 9 21:39:33 2008
--- util/src/platforms/unix/thread_unix.c Tue Oct 28 12:49:20 2008
***************
*** 17,22 ****
--- 17,23 ----
*/
#include <config.h>
+ #include "platforms/axutil_platform_auto_sense.h"
#include "axutil_thread_unix.h"
AXIS2_EXTERN axutil_threadattr_t *AXIS2_CALL
***************
*** 273,279 ****
axutil_thread_once_init(
axutil_allocator_t * allocator)
{
! #ifdef AXIS2_SOLARIS
static const pthread_once_t once_init = { PTHREAD_ONCE_INIT };
#else
static const pthread_once_t once_init = PTHREAD_ONCE_INIT;
--- 274,280 ----
axutil_thread_once_init(
axutil_allocator_t * allocator)
{
! #if (defined(AXIS2_SOLARIS) || defined(AXIS2_AIX))
static const pthread_once_t once_init = { PTHREAD_ONCE_INIT };
#else
static const pthread_once_t once_init = PTHREAD_ONCE_INIT;
########################################################################
####
make error:
../include/platforms/unix/axutil_uuid_gen_unix.h:57: error: field
'time_last' has incomplete type
plus a bunch more
"fix": this is also fixed if _ALL_SOURCE is defined before include of
sys/types.h
added -D_ALL_SOURCE to CFLAGS before configure
########################################################################
####
make error:
cc1: warnings being treated as errors
dir_handler.c: In function
'axutil_dir_handler_list_services_or_modules_in_dir':
dir_handler.c:72: warning: passing argument 3 of 'scandir' from
incompatible pointer type
dir_handler.c: In function
'axutil_dir_handler_list_service_or_module_dirs':
dir_handler.c:212: warning: passing argument 3 of 'scandir' from
incompatible pointer type
"fix":
* added -DAXIS2_AIX to CFLAGS
* changed dir_handler.c as follows:
> /opt/freeware/bin/diff -c
../axis2c-src-1.4.0.orig/./util/src/dir_handler.c
./util/src/dir_handler.c
*** ../axis2c-src-1.4.0.orig/./util/src/dir_handler.c Tue Mar 18
23:31:08 2008
--- ./util/src/dir_handler.c Tue Oct 28 12:49:19 2008
***************
*** 31,37 ****
extern int AXIS2_ALPHASORT(
);
! #ifdef IS_MACOSX
int dir_select(
struct dirent *entry);
#else
--- 31,37 ----
extern int AXIS2_ALPHASORT(
);
! #if (defined IS_MACOSX || defined AXIS2_AIX )
int dir_select(
struct dirent *entry);
#else
***************
*** 39,47 ****
--- 39,53 ----
const struct dirent *entry);
#endif
+ #ifdef AXIS2_AIX
+ int
+ file_select(
+ struct dirent *entry);
+ #else
int
file_select(
const struct dirent *entry);
+ #endif
/**
* List the dll files in the given service or module folder path
***************
*** 321,328 ****
}
int
! file_select(
! const struct dirent *entry)
{
/** FIXME:
* This block of code has been sitting here doing nothing.
--- 327,337 ----
}
int
! #if (defined IS_MACOSX || defined AXIS2_AIX)
! file_select( struct dirent *entry)
! #else
! file_select( const struct dirent *entry)
! #endif
{
/** FIXME:
* This block of code has been sitting here doing nothing.
***************
*** 346,352 ****
return (AXIS2_FALSE);
}
! #ifdef IS_MACOSX
int
dir_select(
struct dirent *entry)
--- 355,361 ----
return (AXIS2_FALSE);
}
! #if (defined IS_MACOSX || defined AXIS2_AIX)
int
dir_select(
struct dirent *entry)
########################################################################
####
make error:
data_handler.c: In function 'axiom_data_handler_read_from':
data_handler.c:156: error: storage size of 'stat_p' isn't known
cc1: warnings being treated as errors
data_handler.c:156: warning: unused variable 'stat_p'
file: ./axiom/src/attachments/data_handler.c
"fix": define _ALL_SOURCE before include of sys/types.h (see above)
########################################################################
####
make error: (plus many more)
In file included from
../../../util/include/platforms/unix/axutil_unix.h:116,
from ../../../util/include/platforms/axutil_platform_auto_sense.h:51,
from ../../../util/include/axutil_uuid_gen.h:24,
from om_output.c:26:
../../../util/include/platforms/unix/axutil_uuid_gen_unix.h:57: error:
field 'time_last' has incomplete type
file: .../axiom/src/om/om_output.c
"fix":
add -D_ALL_SOURCE to CFLAGS
########################################################################
####
> make install
.
.
.
Target "install-data-am" is up to date.
Target "install" is up to date.
########################################################################
####runtime linker errors:
various errors including coredumps, libs not found, unable to load libs,
*.so missing from lib, etc.
try:
export LDFLAGS=-Wl,-brtl
./configure ...
axis2_http_server still coredumps
make is not passing LDFLAGS to linker
"fix": add -Wl,-brtl to CFLAGS before configure
todo: makefile gen should pass LDFLAGS in Makefile's
todo: my build output has a bunch of warnings from gcc about -brtl:
gcc: -brtl: linker input file unused because linking not done
gcc: unrecognized option '-brtl'
########################################################################
####
rebuild from scratch
> export AXIS2C_HOME=$HOME/axis2c
> cd
> gtar xzf axis2c-src-1.4.0.tar.gz
> cd axis2c-src-1.4.0
> patch -p1 <../axis2c-src-1.4.0-aix-patch
# patch contents is just above diff output
> export CFLAGS="-DAXIS2_AIX -D_ALL_SOURCE -Wl,-brtl"
> ./configure --prefix=${AXIS2C_HOME}
> make install
.
.
.
Target "install" is up to date.
########################################################################
####
build of samples
> export AXIS2C_HOME=$HOME/axis2c
> export LIBPATH=$LIBPATH:${AXIS2C_HOME}/lib/
> cd $HOME/axis2c-src-1.4.0/samples
> export CFLAGS="-DAXIS2_AIX -D_ALL_SOURCE -Wl,-brtl"
> ./configure --prefix=$AXIS2C_HOME
-with-axis2=${AXIS2C_HOME}/include/axis2-1.4.0
> make install
.
.
.
Target "install" is up to date.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]