From 3d7f87779aeaf45587d9918ab43fcf3d0c6aee6a Mon Sep 17 00:00:00 2001 From: Steven Dake Date: Sun, 7 Jun 2009 07:53:56 +0000 Subject: [PATCH] Add support for buildling on Solaris platforms. git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2222 fd59a12c-fef9-0310-b244-a6a79926bd2f --- configure.ac | 7 +++++-- exec/Makefile.am | 23 +++++++++++++++++++++++ lcr/Makefile.am | 11 +++++++++++ lib/Makefile.am | 22 ++++++++++++++++++++++ services/Makefile.am | 13 +++++++++++++ 5 files changed, 74 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index b87413eb..de1ac788 100644 --- a/configure.ac +++ b/configure.ac @@ -238,9 +238,10 @@ case "$host_os" in [Prevent being scheduled RR]) OS_CFLAGS="" OS_CPPFLAGS="-D_REENTRANT" - OS_LDFLAGS="-Wl,-rpath-link=/usr/lib" - OS_DYFLAGS="-Wl,--export-dynamic" + OS_LDFLAGS="" + OS_DYFLAGS="-Wl,-z,lazyload" DARWIN_OPTS="" + SOLARIS_OPTS=" " ;; *) AC_MSG_ERROR([Unsupported OS? hmmmm]) @@ -358,7 +359,9 @@ AC_SUBST([OS_DYFLAGS]) AC_SUBST([NSS_LDFLAGS]) AM_CONDITIONAL(BUILD_DARWIN, test -n "${DARWIN_OPTS}") +AM_CONDITIONAL(BUILD_SOLARIS, test -n "${SOLARIS_OPTS}") AC_SUBST([DARWIN_OPTS]) +AC_SUBST([SOLARIS_OPTS]) AM_CONDITIONAL(BUILD_HTML_DOCS, test -n "${GROFF}") diff --git a/exec/Makefile.am b/exec/Makefile.am index 0fdc8f85..f698a932 100644 --- a/exec/Makefile.am +++ b/exec/Makefile.am @@ -94,6 +94,27 @@ libcoroipcs.so.$(SONAME): $(COROIPCS_OBJS) else +if BUILD_SOLARIS +%.lcrso: %.o + $(LD) -G $^ -o $@ + +libtotem_pg.so.$(SONAME): $(TOTEM_OBJS) + $(LD) -G $(TOTEM_OBJS) -o $@ -lpthread + ln -sf libtotem_pg.so.$(SONAME) libtotem_pg.so + ln -sf libtotem_pg.so.$(SONAME) libtotem_pg.so.$(SOMAJOR) + +liblogsys.so.$(SONAME): $(LOGSYS_OBJS) + $(LD) -G $(LOGSYS_OBJS) -o $@ -lpthread + ln -sf liblogsys.so.$(SONAME) liblogsys.so + ln -sf liblogsys.so.$(SONAME) liblogsys.so.$(SOMAJOR) + +libcoroipcs.so.$(SONAME): $(COROIPCS_OBJS) + $(LD) -G $(COROIPCS_OBJS) -o $@ -lpthread + ln -sf libcoroipcs.so.$(SONAME) libcoroipcs.so + ln -sf libcoroipcs.so.$(SONAME) libcoroipcs.so.$(SOMAJOR) + +else + %.lcrso: %.o $(CC) $(CFLAGS) -shared -Wl,-soname=$@ $^ -o $@ @@ -120,6 +141,8 @@ libcoroipcs.so.$(SONAME): $(COROIPCS_OBJS) endif +endif + lint: -splint $(LINT_FLAGS) $(CFLAGS) *.c diff --git a/lcr/Makefile.am b/lcr/Makefile.am index 174a4583..7830aa36 100644 --- a/lcr/Makefile.am +++ b/lcr/Makefile.am @@ -50,11 +50,22 @@ test_LDADD = liblcr.a test_static_SOURCES = test.c libtest_a.c libtest_b.c uis.c lcr_ifact.c if BUILD_DARWIN + %.lcrso: %.o $(CC) $(CFLAGS) -bundle -bundle_loader ./test $^ -o $@ +else + +if BUILD_SOLARIS + +%.lcrso: %.o + $(CC) $(CFLAGS) -shared $^ -o $@ else + %.lcrso: %.o $(CC) $(CFLAGS) -shared -Wl,-soname,$@ $^ -o $@ + +endif + endif lint: diff --git a/lib/Makefile.am b/lib/Makefile.am index af3253d6..37afffda 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -82,6 +82,26 @@ lib%.so.$(SONAME): %.o libcoroipcc.so.$(SONAME) else +if BUILD_SOLARIS + +libcoroipcc.so.$(SONAME): coroipcc.o + $(LD) $(LDFLAGS) $(SOLARIS_OPTS) -G coroipcc.o -o $@ $(AM_LDFLAGS) -lsocket -lnsl + ln -sf libcoroipcc.so.$(SONAME) libcoroipcc.so + ln -sf libcoroipcc.so.$(SONAME) libcoroipcc.so.$(SOMAJOR) + +libconfdb.so.$(SONAME): confdb.o sa-confdb.o libcoroipcc.so.$(SONAME) + $(LD) $(LDFLAGS) $(SOLARIS_OPTS) -G coroipcc.o confdb.o \ + sa-confdb.o ../lcr/lcr_ifact.o -o $@ -ldl $(AM_LDFLAGS) + ln -sf libconfdb.so.$(SONAME) libconfdb.so + ln -sf libconfdb.so.$(SONAME) libconfdb.so.$(SOMAJOR) + +lib%.so.$(SONAME): %.o libcoroipcc.so.$(SONAME) + $(LD) $(SOLARIS_OPTS) -G $^ -o $@ + ln -sf lib$*.so.$(SONAME) lib$*.so + ln -sf lib$*.so.$(SONAME) lib$*.so.$(SOMAJOR) + +else + libcoroipcc.so.$(SONAME): coroipcc.o $(CC) -shared -o $@ \ -Wl,-soname=libcoroipcc.so.$(SOMAJOR) \ @@ -108,6 +128,8 @@ lib%.so.$(SONAME): %.o libcoroipcc.so.$(SONAME) endif +endif + all-local: $(SHARED_LIBS) @echo Built shared libs diff --git a/services/Makefile.am b/services/Makefile.am index 7361e412..3ca700be 100644 --- a/services/Makefile.am +++ b/services/Makefile.am @@ -55,6 +55,17 @@ quorum_%.lcrso: %.o service_%.lcrso: %.o $(CC) $(CFLAGS) -L$(top_builddir)/exec -llogsys -bundle -bundle_loader $(top_builddir)/exec/corosync $^ -o $@ + +else + +if BUILD_SOLARIS + +quorum_%.lcrso: %.o + $(LD) $(LDFLAGS) -G $^ -o $@ + +service_%.lcrso: %.o + $(LD) $(LDFLAGS) -G $^ -o $@ + else quorum_%.lcrso: %.o $(CC) $(CFLAGS) -shared -Wl,-soname=$@ $^ -o $@ @@ -63,6 +74,8 @@ service_%.lcrso: %.o $(CC) $(CFLAGS) -shared -Wl,-soname=$@ $^ -o $@ endif +endif + %.o: %.c $(CC) $(AM_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(INCLUDES) -c -o $@ $<