From 4115810d2549bdbf8b2cf28e966fbfb2eac8d659 Mon Sep 17 00:00:00 2001 From: paulc Date: Wed, 15 Dec 2010 16:50:56 +0000 Subject: [PATCH] Added new configure --with-qtstatic to accomodate linking to a static Qt. git-svn-id: http://voip.null.ro/svn/yate@3947 acf43c95-373e-0410-b603-e72c3f656dc1 --- clients/Makefile.in | 30 +++++++++++++++++++++++------- clients/qt4/Makefile.in | 27 +++++++++++++++++++-------- configure.in | 13 +++++++++++-- modules/Makefile.in | 9 ++++++++- 4 files changed, 61 insertions(+), 18 deletions(-) diff --git a/clients/Makefile.in b/clients/Makefile.in index 3885ad4f..c965b066 100644 --- a/clients/Makefile.in +++ b/clients/Makefile.in @@ -15,6 +15,8 @@ QT4_INC := @QT4_INC@ QT4_LIB := @QT4_LIB@ QT4_INC_NET := @QT4_INC_NET@ QT4_LIB_NET := @QT4_LIB_NET@ +QT4_CLIENT_DEPS := ../libyateqt4.so +QT4_CLIENT_LIBS := -lyateqt4 LIBTHR:= @THREAD_LIB@ INCLUDES := -I.. -I@top_srcdir@ CFLAGS := @CFLAGS@ @MODULE_CPPFLAGS@ @INLINE_FLAGS@ @@ -34,10 +36,18 @@ SUBDIRS := $(SUBDIRS) qt4 PROGS := $(PROGS) yate-qt4 MENUFILES := $(MENUFILES) yate-qt4.menu DESKFILES := $(DESKFILES) yate-qt4.desktop +ICONFILES := $(ICONFILES) null_team-16.png null_team-32.png null_team-48.png + +ifneq (@QT4_STATIC_MODULES@,no) +ifeq (@QT4_STATIC_MODULES@,yes) +QT4_CLIENT_LIBS := customtable customtext customtree widgetlist +else +QT4_CLIENT_LIBS := $(strip @QT4_STATIC_MODULES@) +endif +QT4_CLIENT_LIBS := $(foreach mod,$(QT4_CLIENT_LIBS),../modules/qt4/$(mod).o) qt4/qt4client.a +QT4_CLIENT_DEPS := $(QT4_CLIENT_LIBS) endif -ifneq (@HAVE_QT4@,no) -ICONFILES := $(ICONFILES) null_team-16.png null_team-32.png null_team-48.png endif LOCALFLAGS = @@ -123,6 +133,9 @@ uninstall: do-uninstall rmdir "$(DESTDIR)$(icondir)" \ ) +../modules/qt4/%.o: @top_srcdir@/modules/qt4/%.cpp + $(MAKE) -C ../modules qt4/$(notdir $@) + %.o: @srcdir@/%.cpp $(MKDEPS) $(INCFILES) $(COMPILE) -c $< @@ -145,9 +158,12 @@ do-all do-strip do-clean do-install do-uninstall: Makefile: @srcdir@/Makefile.in $(MKDEPS) cd .. && ./config.status -yate-%: @srcdir@/main-%.cpp $(MKDEPS) ../libyate.so ../libyateqt4.so $(INCFILES) - $(COMPILE) -o $@ $(LOCALFLAGS) $< $(LDFLAGS) $(LIBTHR) $(LOCALLIBS) $(YATELIBS) - -yate-qt4: +yate-qt4: $(QT4_CLIENT_DEPS) yate-qt4: LOCALFLAGS = $(QT4_INC) -yate-qt4: LOCALLIBS = -lyateqt4 $(QT4_LIB) +yate-qt4: LOCALLIBS = $(QT4_CLIENT_LIBS) $(QT4_LIB) + +qt4/qt4client.a: @srcdir@/qt4/qt4client.h @srcdir@/qt4/qt4client.cpp + $(MAKE) -C qt4 $(notdir $@) + +yate-%: @srcdir@/main-%.cpp $(MKDEPS) ../libyate.so $(INCFILES) + $(COMPILE) -o $@ $(LOCALFLAGS) $< $(LDFLAGS) $(LIBTHR) $(LOCALLIBS) $(YATELIBS) diff --git a/clients/qt4/Makefile.in b/clients/qt4/Makefile.in index baa80c43..b252e324 100644 --- a/clients/qt4/Makefile.in +++ b/clients/qt4/Makefile.in @@ -21,12 +21,16 @@ YATELIBS := -L../.. -lyate @LIBS@ INCFILES := @top_srcdir@/yateclass.h @top_srcdir@/yatecbase.h @srcdir@/qt4client.h PROGS= -LIBS = +LIBS = qt4client.a SOURCES = qt4client.cpp OBJS = $(SOURCES:.cpp=.o) qt4client.moc.o +INST:= LIBD_DEV:= libyateqt4.so LIBD_VER:= $(LIBD_DEV).@PACKAGE_VERSION@ +ifeq (@QT4_STATIC_MODULES@,no) LIBD:= ../../$(LIBD_VER) ../../$(LIBD_DEV) +INST:= $(LIBD_VER) $(LIBD_DEV) +endif LOCALFLAGS = LOCALLIBS = @@ -70,23 +74,27 @@ clean: .PHONY: install uninstall install: all + $(if $(INST),\ @mkdir -p "$(DESTDIR)$(libdir)" && \ - for i in $(LIBD_VER) $(LIBD_DEV) ; do \ + for i in $(INST) ; do \ if [ -h "../../$$i" ]; then \ f=`readlink "../../$$i"` ; \ ln -sf "$$f" "$(DESTDIR)$(libdir)/$$i" ; \ else \ install ../../$$i "$(DESTDIR)$(libdir)/" ; \ fi \ - done - @mkdir -p "$(DESTDIR)$(incdir)" && \ - install -m 0644 @srcdir@/qt4client.h "$(DESTDIR)$(incdir)/" + done; \ + mkdir -p "$(DESTDIR)$(incdir)" && \ + install -m 0644 @srcdir@/qt4client.h "$(DESTDIR)$(incdir)/" \ + ) uninstall: - @-for i in $(LIBD_VER) $(LIBD_DEV) ; do \ + $(if $(INST),\ + @-for i in $(INST) ; do \ rm "$(DESTDIR)$(libdir)/$$i" ; \ - done - @-rm "$(DESTDIR)$(incdir)/qt4client.h" && rmdir "$(DESTDIR)$(libdir)" + done; \ + rm "$(DESTDIR)$(incdir)/qt4client.h" && rmdir "$(DESTDIR)$(libdir)" \ + ) %.o: @srcdir@/%.cpp $(INCFILES) $(COMPILE) -c $< @@ -105,3 +113,6 @@ Makefile: @srcdir@/Makefile.in ../../config.status ../../$(LIBD_DEV): ../../$(LIBD_VER) cd ../.. && ln -sf $(LIBD_VER) $(LIBD_DEV) + +$(LIBS): $(OBJS) + $(AR) rcs $@ $^ diff --git a/configure.in b/configure.in index 995e7558..9619703c 100644 --- a/configure.in +++ b/configure.in @@ -1063,7 +1063,14 @@ QT4_INC_NET="" QT4_LIB_NET="" QT4_MOC="" QT4_VER="" +QT4_STATIC_MODULES="" AC_ARG_WITH(libqt4,AC_HELP_STRING([--with-libqt4],[use Qt for graphical clients (default)]),[ac_cv_use_libqt4=$withval],[ac_cv_use_libqt4=yes]) +AC_ARG_WITH(qtstatic,AC_HELP_STRING([--with-qtstatic=MODULES],[link specific modules with static Qt]),[ac_cv_use_qtstatic=$withval],[ac_cv_use_qtstatic=no]) +qtstatic="" +if [[ "x$ac_cv_use_qtstatic" != "xno" ]]; then + qtstatic="--static" +fi +QT4_STATIC_MODULES=`echo "$ac_cv_use_qtstatic" | sed 's/,/ /g'` if [[ "x$ac_cv_use_libqt4" = "xyes" ]]; then AC_MSG_CHECKING([for Qt4 >= 4.3.0 using pkg-config]) pkgd="/usr/lib/qt4/$ARCHLIB/pkgconfig" @@ -1073,7 +1080,7 @@ if [[ "x$ac_cv_use_libqt4" = "xyes" ]]; then verqt=`pkg-config --modversion QtCore 2>/dev/null` fi incqt=`pkg-config --cflags QtNetwork QtGui QtXml QtCore 2>/dev/null | sed 's/QtNetwork/QtUiTools/'` - libqt=`pkg-config --libs QtNetwork QtGui QtXml QtCore 2>/dev/null | sed 's/QtNetwork/QtUiTools/'` + libqt=`pkg-config --libs $qtstatic QtNetwork QtGui QtXml QtCore 2>/dev/null | sed 's/QtNetwork/QtUiTools/'` if [[ "x$incqt" != "x" -a "x$libqt" != "x" ]]; then HAVE_QT4=yes QT4_INC="$incqt" @@ -1121,7 +1128,7 @@ if [[ "x$ac_cv_use_libqt4" = "xyes" ]]; then QT4_INC_NET="-I$libqt/QtNetwork.framework/Headers" QT4_LIB_NET="-framework QtNetwork" ;; - esac + esac QT4_MOC=`qmake -query QT_INSTALL_BINS 2>/dev/null` QT4_MOC="$QT4_MOC/moc" verqt=`qmake -query QT_VERSION 2>/dev/null` @@ -1136,6 +1143,7 @@ if [[ "x$ac_cv_use_libqt4" = "xyes" ]]; then AC_MSG_RESULT([$verqt]) fi fi + AC_SUBST(HAVE_QT4) AC_SUBST(QT4_INC) AC_SUBST(QT4_LIB) @@ -1143,6 +1151,7 @@ AC_SUBST(QT4_INC_NET) AC_SUBST(QT4_LIB_NET) AC_SUBST(QT4_MOC) AC_SUBST(QT4_VER) +AC_SUBST(QT4_STATIC_MODULES) HAVE_COREDUMPER=no diff --git a/modules/Makefile.in b/modules/Makefile.in index 039181f2..ffc853c0 100644 --- a/modules/Makefile.in +++ b/modules/Makefile.in @@ -14,6 +14,7 @@ QT4_INC := @QT4_INC@ QT4_LIB := @QT4_LIB@ QT4_INC_NET := @QT4_INC_NET@ QT4_LIB_NET := @QT4_LIB_NET@ +QT4_STATIC_MODULES := HAVE_PGSQL := @HAVE_PGSQL@ PGSQL_INC := @PGSQL_INC@ PGSQL_LIB := -lpq @@ -103,8 +104,10 @@ PROGS := $(PROGS) client/coreaudio.yate endif ifneq (@HAVE_QT4@,no) +ifeq (@QT4_STATIC_MODULES@,no) PROGS := $(PROGS) qt4/updater.yate qt4/customtable.yate qt4/customtext.yate qt4/customtree.yate qt4/widgetlist.yate endif +endif ifneq (@HAVE_ZAP@,no) PROGS := $(PROGS) server/zapcard.yate @@ -195,7 +198,7 @@ strip: all do-strip .PHONY: clean clean: do-clean - @-$(RM) $(PROGS) $(LIBS) *.o qt4/*.moc core 2>/dev/null + @-$(RM) $(PROGS) $(LIBS) *.o qt4/*.o qt4/*.moc core 2>/dev/null @-for i in $(PROGS) ; do \ $(RM) -rf $$i.dSYM 2>/dev/null; \ done; @@ -224,6 +227,10 @@ uninstall: do-uninstall subdirs: @mkdir -p $(DIRS) +qt4/%.o: @srcdir@/qt4/%.cpp $(MKDEPS) $(INCFILES) + $(MAKE) $(patsubst %.o,%.moc,$@) + $(COMPILE) -c -o $@ $(QT4_INC) -I@top_srcdir@/clients/qt4 -I@srcdir@/qt4 $< + %.o: @srcdir@/%.cpp $(MKDEPS) $(INCFILES) $(COMPILE) -c $<