Thanks for posting! Paul
On Tue, Oct 28, 2008 at 10:37 PM, Stokoe, Richard - Broomfield, CO <[EMAIL PROTECTED]> wrote: > 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] > > -- Paul Fremantle Co-Founder and CTO, WSO2 Apache Synapse PMC Chair OASIS WS-RX TC Co-chair blog: http://pzf.fremantle.org [EMAIL PROTECTED] "Oxygenating the Web Service Platform", www.wso2.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]