Christopher Browne cbbrowne
Tue Aug 10 18:01:30 PDT 2004
Darcy Buskermolen <darcy at wavefire.com> writes:
> I'm assuming that you are refering to -HEAD ?
> This was done shortly after -STABLE was branched.  Lack of access to an AIX 
> box has led to this platform being untested in the new build environment.

Well, here's characteristic of what's needed to compile shared libs:

bash-2.05a$ make
gcc -I../.. -I -I/opt/dbs/pgsql742-2004-08-06/include/ -I/opt/dbs/pgsql742-2004-08-06/include/server/  -c -o slony1_funcs.o slony1_funcs.c
/opt/OXRS/Sources/pgsql-server-742/src/backend/port/aix/mkldexport.sh slony1_funcs.o > slony1_funcs.exp
Making shared library slony1_funcs.so from slony1_funcs.o, slony1_funcs.exp and postgres.imp
gcc -L/opt/dbs/pgsql742-2004-08-06/lib/ -L/opt/dbs/pgsql742-2004-08-06/lib/ -lpq -Wl,-bnoentry -Wl,-H512 -Wl,-bM:SRE -o slony1_funcs.so slony1_funcs.o -Wl,-bI:/opt/OXRS/Sources/pgsql-server-742/src/backend/postgres.imp -Wl,-bE:slony1_funcs.exp 
rm slony1_funcs.exp

The three things that would be "parametrized" out of that are:

 a) Source tree is SOURCE_TREE=/opt/OXRS/Sources/pgsql-server-742
 b) Export generator is AIX_EXPORT_GEN=$(SOURCE_TREE)/src/backend/port/aix/mkldexport.sh 
 c) Needs access to a list of objects/functions, found as
    AIX_IMPORT_LIST=$(SOURCE_TREE)/src/backend/postgres.imp

There are two shared libs generated for AIX, so this "idiom" is
relevant to those two places:

bash-2.05a$ find . -name "*.so"
./src/backend/slony1_funcs.so
./src/xxid/xxid.so

It affects the file makefiles/Makefile.aix, the relevant bits being:
bash-2.05a$ grep top_builddir makefiles/Makefile.aix 
$(CC) $(LDFLAGS) $(LDFLAGS_SL) -o $@ $*.o -Wl,-bI:$(top_builddir)/src/backend/$(POSTGRES_IMP) -Wl,-bE:$*$(EXPSUFF) $(LIBS)
bash-2.05a$ grep top_srcdir makefiles/Makefile.aix 
MKLDEXPORT=$(top_srcdir)/src/backend/port/aix/mkldexport.sh

I'm confused as to why there's both top_builddir and top_srcdir in
there; they appear to refer to the same thing...

It further seems to me that there's a pretty fair argument (why I'm
cc'ing Tom...)  for pushing mkldexport.sh and postgres.imp into the
AIX build, as neither is particularly enormous, and both are vital any
time you want to compile extra library-like-things into PostgreSQL on
AIX.  That's probably a slick idea for 8.0 :-), although we surely
need to support the existing situation in that such a change is
unlikely to get backported to 7.3/7.4.

If those get tossed into the build environment, it likely makes it
simpler to build other things, too.

bash-2.05a$ wc backend/postgres.imp backend/port/aix/mkldexport.sh 
    3791    3792   57280 backend/postgres.imp
      59     245    1404 backend/port/aix/mkldexport.sh
    3850    4037   58684 total
-- 
"cbbrowne","@","ca.afilias.info"
<http://dev6.int.libertyrms.com/>
Christopher Browne
(416) 673-4124 (land)


More information about the Slony1-general mailing list