Skip to content

Commit 892f8ff

Browse files
committed
Shared library support for AIX
1 parent 9d6eeea commit 892f8ff

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@ endif
152152
ifeq ($(OSNAME), CYGWIN_NT)
153153
@$(MAKE) -C exports dll
154154
endif
155+
ifeq ($(OSNAME), AIX)
156+
@$(MAKE) -C exports so
157+
endif
155158
endif
156159

157160
tests : shared

Makefile.system

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1707,11 +1707,7 @@ endif
17071707

17081708
LIBDLLNAME = $(LIBPREFIX).dll
17091709
IMPLIBNAME = lib$(LIBNAMEBASE).dll.a
1710-
ifneq ($(OSNAME), AIX)
17111710
LIBSONAME = $(LIBNAME:.$(LIBSUFFIX)=.so)
1712-
else
1713-
LIBSONAME = $(LIBNAME:.$(LIBSUFFIX)=.a)
1714-
endif
17151711
LIBDYNNAME = $(LIBNAME:.$(LIBSUFFIX)=.dylib)
17161712
LIBDEFNAME = $(LIBNAME:.$(LIBSUFFIX)=.def)
17171713
LIBEXPNAME = $(LIBNAME:.$(LIBSUFFIX)=.exp)

exports/Makefile

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ endif
7373
endif
7474
endif
7575

76+
ifeq ($(F_COMPILER)$(OSNAME), IBMAIX)
77+
EXTRALIB += -lxlf90
78+
endif
79+
7680
ifeq ($(C_COMPILER), PGI)
7781
EXTRALIB += -pgf90libs
7882
endif
@@ -248,6 +252,20 @@ endif
248252

249253
ifeq ($(OSNAME), AIX)
250254

255+
so : ../$(LIBSONAME) linktest.c
256+
$(CC) $(CFLAGS) $(LDFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) $(EXTRALIB) && echo OK.
257+
rm -f linktest
258+
259+
../$(LIBSONAME) : aix.exp
260+
$(CC) $(CFLAGS) $(LDFLAGS) -shared -o ../$(LIBSONAME) \
261+
-Wl,-bE:aix.exp -Wl,-bbigtoc ../$(LIBNAME) $(EXTRALIB)
262+
263+
aix.exp :
264+
/usr/bin/nm -X32_64 -PCpgl ../$(LIBNAME) | /usr/bin/awk '{ if ((($$ 2 == "T") \
265+
|| ($$ 2 == "D") || ($$ 2 == "B") || ($$ 2 == "W") || ($$ 2 == "V") || ($$ 2 == "Z")) && (substr($$ 1,1,1) != ".")) \
266+
{ if (($$ 2 == "W") || ($$ 2 == "V") || ($$ 2 == "Z")) { print $$ 1 " weak" } else { print $$ 1 } } }' | \
267+
/usr/bin/sort -u > aix.exp
268+
251269
ifeq ($(COMPILER_F77), xlf)
252270

253271
goto32.$(SUFFIX) : ../$(LIBNAME) aix.def

0 commit comments

Comments
 (0)