The following patch allows to compile several frontends in the same tree. If one configures lyx with --with-frontends='qt xforms', for example, the binaries lyx-qt and lyx-xforms are built, and lyx is a symbolic link to lyx-qt.
As it is now this is mostly a feature for developper, and not really meant to install those different frontends (actually, only lyx gets installed).
I do not know either what should be done for RPM files.
I guess that there are still small problems here and there, but if there is no philosophical problem, I'd like to commit it now, so that we see what needs to be fixed. I do not know of any problem.
Lars?
JMarc
Index: ChangeLog =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/ChangeLog,v retrieving revision 1.942 diff -u -r1.942 ChangeLog --- ChangeLog 31 Jul 2003 18:04:54 -0000 1.942 +++ ChangeLog 2 Aug 2003 18:35:12 -0000 @@ -1,3 +1,9 @@ +2003-08-02 Jean-Marc Lasgouttes <[EMAIL PROTECTED]> + + * configure.ac: only configure the frontends that have been + specified; build in FRONTENDS_PROGS the list of programs that + should be built + 2003-07-31 John Levon <[EMAIL PROTECTED]> * NEWS: Index: configure.ac =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/configure.ac,v retrieving revision 1.3 diff -u -r1.3 configure.ac --- configure.ac 28 Jul 2003 23:05:57 -0000 1.3 +++ configure.ac 2 Aug 2003 18:35:14 -0000 @@ -56,7 +56,7 @@ AC_AIX ### check which frontend we want to use -LYX_USE_FRONTEND +LYX_USE_FRONTENDS ### Check for a C++ compiler LYX_PROG_CXX @@ -161,50 +161,47 @@ ### check which frontend we want to use -# XForms tests -LYX_PATH_XPM -LYX_PATH_XFORMS -LYX_CHECK_XFORMS_IMAGE_LOADER -# QT tests -QT_DO_IT_ALL - -#LYX_USE_FRONTEND dnl The code below is not in a macro, because this would cause big -dnl problems with the AC_REQUIRE contained in KDE_DO_IT_ALL. -case "$lyx_use_frontend" in - xforms) - FRONTEND="xforms" - RPM_FRONTEND="xforms" - RPM_FRONTEND_DEPS='libforms >= 1.0' - FRONTEND_GUILIB="frontends/xforms/libxforms.la" - FRONTEND_INFO=" libXpm version: ${XPM_VERSION}\n\ - libforms version: ${XFORMS_VERSION}\n" - ;; -dnl gnome) -dnl LYX_PATH_XPM -dnl LYX_PATH_XFORMS -dnl LYX_CHECK_XFORMS_IMAGE_LOADER -dnl PKG_CHECK_MODULES(GNOME_FRONTEND, gtkmm-2.0 libglademm-2.0) -dnl AC_SUBST(GNOME_FRONTEND_CFLAGS) -dnl AC_SUBST(GNOME_FRONTEND_LIBS) - -dnl FRONTEND="xforms gnome" -dnl FRONTEND_GUILIB="gnome/*.lo" -dnl FRONTEND_LDFLAGS="${GNOME_FRONTEND_LIBS}" -dnl FRONTEND_INCLUDES="${GNOME_FRONTEND_CFLAGS}" -dnl FRONTEND_LIBS="@XPM_LIB@ @XFORMS_LIB@ ${GNOME_FRONTEND_LIBS}" -dnl ;; - qt) - RPM_FRONTEND="qt" - RPM_FRONTEND_DEPS='qt >= 2.2.1' - FRONTEND="qt2" - FRONTEND_GUILIB="frontends/qt2/libqt2.la" - FRONTEND_INCLUDES="\$(QT_INCLUDES)" - FRONTEND_INFO=" Qt version: ${QT_VERSION}\n" - ;; - *) - LYX_ERROR(Unknown frontend $lyx_use_frontend);; -esac +dnl problems with the AC_REQUIRE contained in QT_DO_IT_ALL. +for frontend in $FRONTENDS ; do + case "$frontend" in + xforms) + XFORMS_DO_IT_ALL + FRONTENDS_PROGS="$FRONTENDS_PROGS lyx-xforms" + FRONTENDS_SUBDIRS="$FRONTENDS_SUBDIRS xforms" + RPM_FRONTEND="xforms" + RPM_FRONTEND_DEPS='libforms >= 1.0' + FRONTEND_INFO="${FRONTEND_INFO}\ + XForms Frontend:\n\ + libXpm version: ${XPM_VERSION}\n\ + libforms version: ${XFORMS_VERSION}\n" + ;; + dnl gnome) + dnl XFORMS_DO_IT_ALL + dnl PKG_CHECK_MODULES(GNOME_FRONTEND, gtkmm-2.0 libglademm-2.0) + dnl AC_SUBST(GNOME_FRONTEND_CFLAGS) + dnl AC_SUBST(GNOME_FRONTEND_LIBS) + + dnl FRONTEND="xforms gnome" + dnl FRONTEND_GUILIB="gnome/*.lo" + dnl FRONTEND_LDFLAGS="${GNOME_FRONTEND_LIBS}" + dnl FRONTEND_INCLUDES="${GNOME_FRONTEND_CFLAGS}" + dnl FRONTEND_LIBS="@XPM_LIB@ @XFORMS_LIB@ ${GNOME_FRONTEND_LIBS}" + dnl ;; + qt) + QT_DO_IT_ALL + FRONTENDS_PROGS="$FRONTENDS_PROGS lyx-qt" + FRONTENDS_SUBDIRS="$FRONTENDS_SUBDIRS qt2" + RPM_FRONTEND="qt" + RPM_FRONTEND_DEPS='qt >= 2.2.1' + FRONTEND_INFO="${FRONTEND_INFO}\ + Qt Frontend:\n\ + Qt version: ${QT_VERSION}\n" + ;; + *) + LYX_ERROR(Unknown frontend $lyx_use_frontend);; + esac +done ### Setup GNU gettext dnl GNU gettext is written in C @@ -287,7 +284,6 @@ C++ Compiler: ${CXX} ${CXX_VERSION}\n\ C++ Compiler flags: ${CXXFLAGS}\n\ Linker flags: ${LDFLAGS}\n\ - Frontend: ${lyx_use_frontend}\n\ ${FRONTEND_INFO}\ LyX binary dir: ${real_bindir}\n\ LyX files dir: ${real_datadir}\n" Index: config/ChangeLog =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/config/ChangeLog,v retrieving revision 1.120 diff -u -r1.120 ChangeLog --- config/ChangeLog 28 Jul 2003 23:05:57 -0000 1.120 +++ config/ChangeLog 2 Aug 2003 18:35:20 -0000 @@ -1,3 +1,14 @@ +2003-08-02 Jean-Marc Lasgouttes <[EMAIL PROTECTED]> + + * xforms.m4 (XFORMS_DO_IT_ALL): new macro, which calls all the + xforms stuff and AC_SUBSTs XFORMS_LIBS with all libraries needed + by the xforms frontend + + * lyxinclude.m4 (LYX_USE_FRONTENDS): renamed from + LYX_USE_FRONTEND. Can now accept a list of frontends; the + variables defines there are now FRONTENDS, FRONTENDS_SUBDIRS and + FRONTENDS_PROGS. + 2003-07-29 Lars Gullik Bjønnes <[EMAIL PROTECTED]> * lyxinclude.m4: use AC_HELP_STRING Index: config/lyxinclude.m4 =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/config/lyxinclude.m4,v retrieving revision 1.87 diff -u -r1.87 lyxinclude.m4 --- config/lyxinclude.m4 28 Jul 2003 23:05:57 -0000 1.87 +++ config/lyxinclude.m4 2 Aug 2003 18:35:21 -0000 @@ -585,20 +585,18 @@ ]) ### end of LYX_PATH_HEADER -### Check which frontend we want to use. The default is XForms +### Check which frontends we want to use. The default is XForms only ### -AC_DEFUN(LYX_USE_FRONTEND, -[AC_MSG_CHECKING([what frontend should be used as main GUI]) +AC_DEFUN(LYX_USE_FRONTENDS, +[AC_MSG_CHECKING([what frontend should be used for the GUI]) AC_ARG_WITH(frontend, [ --with-frontend=THIS Use THIS frontend as main GUI: Possible values: xforms, qt], - [lyx_use_frontend="$withval"], [lyx_use_frontend="xforms"]) -AC_MSG_RESULT($lyx_use_frontend) -AC_SUBST(FRONTEND) -AC_SUBST(FRONTEND_GUILIB) -AC_SUBST(FRONTEND_LDFLAGS) -AC_SUBST(FRONTEND_INCLUDES) -AC_SUBST(FRONTEND_LIBS) + [FRONTENDS="$withval"], [FRONTENDS="xforms"]) +AC_MSG_RESULT($FRONTENDS) +AC_SUBST(FRONTENDS) +AC_SUBST(FRONTENDS_SUBDIRS) +AC_SUBST(FRONTENDS_PROGS) ]) Index: config/xforms.m4 =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/config/xforms.m4,v retrieving revision 1.18 diff -u -r1.18 xforms.m4 --- config/xforms.m4 20 May 2003 18:36:30 -0000 1.18 +++ config/xforms.m4 2 Aug 2003 18:35:23 -0000 @@ -5,7 +5,6 @@ ### Check for Xpm library AC_CHECK_LIB(Xpm, XpmCreateBufferFromImage, XPM_LIB="-lXpm", [LYX_LIB_ERROR(libXpm,Xpm)]) -AC_SUBST(XPM_LIB) ### Check for Xpm headers lyx_cv_xpm_h_location="<xpm.h>" AC_CHECK_HEADER(X11/xpm.h,[ @@ -13,8 +12,6 @@ lyx_cv_xpm_h_location="<X11/xpm.h>"],[ AC_CHECK_HEADER(xpm.h,[],[ LYX_LIB_ERROR(xpm.h,Xpm)])]) -#AC_DEFINE_UNQUOTED(XPM_H_LOCATION,$lyx_cv_xpm_h_location, -# [define this to the location of xpm.h to be used with #include, e.g. <xpm.h>]) AC_SUBST(XPM_H_LOCATION,$lyx_cv_xpm_h_location) ### Test for the header version if test $ac_cv_header_xpm_h = yes; then @@ -61,7 +58,6 @@ AC_CHECK_LIB(forms, fl_initialize, XFORMS_LIB="-lforms", [AC_CHECK_LIB(xforms, fl_initialize, XFORMS_LIB="-lxforms", [LYX_LIB_ERROR(libforms or libxforms,xforms)], $XPM_LIB)], $XPM_LIB) -AC_SUBST(XFORMS_LIB) ### Check for xforms headers lyx_cv_forms_h_location="<forms.h>" @@ -108,7 +104,7 @@ dnl Check the details of the xforms image loader -AC_DEFUN(LYX_CHECK_XFORMS_IMAGE_LOADER, +AC_DEFUN([LYX_CHECK_XFORMS_IMAGE_LOADER], [AC_REQUIRE([LYX_PATH_XFORMS]) save_LIBS=$LIBS LIBS="$XFORMS_LIB $XPM_LIB $LIBS" @@ -134,8 +130,6 @@ XFORMS_IMAGE_LIB="-lflimage $XFORMS_IMAGE_LIB" fi]) -AC_SUBST(XFORMS_IMAGE_LIB) - if test $lyx_use_jpeg_image_loader = yes ; then lyx_flags="$lyx_flags xforms-image-loader" AC_DEFINE(USE_JPEG_IMAGE_LOADER, 1, @@ -144,3 +138,10 @@ AC_LANG_RESTORE LIBS=$save_LIBS]) + +dnl Do all check required to use xforms +AC_DEFUN([XFORMS_DO_IT_ALL], +[LYX_PATH_XPM +LYX_PATH_XFORMS +LYX_CHECK_XFORMS_IMAGE_LOADER +AC_SUBST(XFORMS_LIBS, ["$XFORMS_IMAGE_LIB $XFORMS_LIB $XPM_LIB"])]) Index: src/ChangeLog =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/ChangeLog,v retrieving revision 1.1483 diff -u -r1.1483 ChangeLog --- src/ChangeLog 2 Aug 2003 11:30:23 -0000 1.1483 +++ src/ChangeLog 2 Aug 2003 18:36:07 -0000 @@ -1,3 +1,9 @@ +2003-08-02 Jean-Marc Lasgouttes <[EMAIL PROTECTED]> + + * Makefile.am: move things around so that both lyx-qt and + lyx-xforms can be built (according to --with-frontend). Then lyx + is a symbolic link to lyx-[firstfrontend] + 2003-08-02 Lars Gullik Bjønnes <[EMAIL PROTECTED]> * Always use std::endl with lyxerr Index: src/Makefile.am =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/Makefile.am,v retrieving revision 1.182 diff -u -r1.182 Makefile.am --- src/Makefile.am 28 Jul 2003 14:40:26 -0000 1.182 +++ src/Makefile.am 2 Aug 2003 18:36:07 -0000 @@ -14,12 +14,10 @@ tracer.C \ tracer.h -bin_PROGRAMS = lyx +LYX_PRE_LIBS = mathed/libmathed.la insets/libinsets.la \ + frontends/libfrontends.la -LYX_CONV_LIBS = mathed/libmathed.la insets/libinsets.la \ - frontends/libfrontends.la \ - $(FRONTEND_GUILIB) \ - frontends/controllers/libcontrollers.la \ +LYX_POST_LIBS = frontends/controllers/libcontrollers.la \ graphics/libgraphics.la \ support/libsupport.la @@ -30,10 +28,23 @@ BOOST_LIBS = -lboost_regex -lboost_signals endif -lyx_LDADD = $(LYX_CONV_LIBS) $(BOOST_LIBS) $(INTLLIBS) \ - $(AIKSAURUS_LIBS) @LIBS@ +OTHERLIBS = $(BOOST_LIBS) $(INTLLIBS) $(AIKSAURUS_LIBS) @LIBS@ -lyx_DEPENDENCIES = $(LYX_CONV_LIBS) $(BOOST_LIBS) $(INTLLIBS) +bin_PROGRAMS = lyx +noinst_PROGRAMS = $(FRONTENDS_PROGS) +EXTRA_PROGRAMS = lyx-xforms lyx-qt + +lyx_xforms_LDADD = $(lyx_OBJECTS) $(LYX_PRE_LIBS) \ + frontends/xforms/libxforms.la $(LYX_POST_LIBS) $(OTHERLIBS) +lyx_xforms_SOURCES = main.C + +lyx_qt_LDADD = $(lyx_OBJECTS) $(LYX_PRE_LIBS) \ + frontends/qt2/libqt2.la $(LYX_POST_LIBS) $(OTHERLIBS) +lyx_qt_SOURCES = main.C + +lyx$(EXEEXT): $(FRONTENDS_PROGS) + rm -f $@ + $(LN_S) $< $@ #lyx_LDFLAGS=-Wl,-O1 @@ -198,7 +209,6 @@ lyxtextclasslist.h \ lyxvc.C \ lyxvc.h \ - main.C \ messages.C \ messages.h \ metricsinfo.C \ Index: src/frontends/ChangeLog =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/ChangeLog,v retrieving revision 1.210 diff -u -r1.210 ChangeLog --- src/frontends/ChangeLog 2 Aug 2003 12:23:24 -0000 1.210 +++ src/frontends/ChangeLog 2 Aug 2003 18:36:10 -0000 @@ -1,5 +1,7 @@ 2003-08-02 Jean-Marc Lasgouttes <[EMAIL PROTECTED]> + * Makefile.am (SUBDIRS): use FRONTENDS_SUBDIRS + * Toolbar.C (clearLayoutList): new methods, which resets last_textclass_. The derived methods should call that. Index: src/frontends/Makefile.am =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/Makefile.am,v retrieving revision 1.55 diff -u -r1.55 Makefile.am --- src/frontends/Makefile.am 25 Jul 2003 21:34:44 -0000 1.55 +++ src/frontends/Makefile.am 2 Aug 2003 18:36:10 -0000 @@ -1,6 +1,6 @@ include $(top_srcdir)/config/common.am -SUBDIRS = controllers $(FRONTEND) +SUBDIRS = controllers $(FRONTENDS_SUBDIRS) DIST_SUBDIRS = controllers xforms qt2 gnome Index: src/frontends/qt2/ChangeLog =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/qt2/ChangeLog,v retrieving revision 1.560 diff -u -r1.560 ChangeLog --- src/frontends/qt2/ChangeLog 2 Aug 2003 12:23:24 -0000 1.560 +++ src/frontends/qt2/ChangeLog 2 Aug 2003 18:36:18 -0000 @@ -1,5 +1,9 @@ 2003-08-02 Jean-Marc Lasgouttes <[EMAIL PROTECTED]> + * ui/Makefile.am (INCLUDES): + * moc/Makefile.am (INCLUDES): + * Makefile.am (INCLUDES): use QT_INCLUDES + * QLToolbar.C (clearLayoutList): call Toolbar::clearLayoutList 2003-07-30 Juergen Spitzmueller <[EMAIL PROTECTED]> Index: src/frontends/qt2/Makefile.am =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/qt2/Makefile.am,v retrieving revision 1.83 diff -u -r1.83 Makefile.am --- src/frontends/qt2/Makefile.am 25 Jul 2003 21:34:44 -0000 1.83 +++ src/frontends/qt2/Makefile.am 2 Aug 2003 18:36:18 -0000 @@ -7,7 +7,7 @@ INCLUDES = -I$(top_srcdir)/src/ -I$(top_srcdir)/src/frontends/ \ -I$(top_srcdir)/images \ - $(FRONTEND_INCLUDES) $(BOOST_INCLUDES) \ + $(QT_INCLUDES) $(BOOST_INCLUDES) \ -I$(top_srcdir)/src/frontends/controllers noinst_LTLIBRARIES = libqt2.la Index: src/frontends/qt2/moc/Makefile.am =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/qt2/moc/Makefile.am,v retrieving revision 1.25 diff -u -r1.25 Makefile.am --- src/frontends/qt2/moc/Makefile.am 8 May 2003 18:05:06 -0000 1.25 +++ src/frontends/qt2/moc/Makefile.am 2 Aug 2003 18:36:21 -0000 @@ -7,7 +7,7 @@ -I$(top_srcdir)/src/frontends/ \ -I$(top_srcdir)/src/frontends/controllers \ -I$(top_builddir)/src/frontends/qt2 \ - $(FRONTEND_INCLUDES) \ + $(QT_INCLUDES) \ $(BOOST_INCLUDES) AM_CXXFLAGS = -DQT_CLEAN_NAMESPACE -DQT_GENUINE_STR -DQT_NO_TRANSLATION Index: src/frontends/qt2/ui/Makefile.am =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/qt2/ui/Makefile.am,v retrieving revision 1.21 diff -u -r1.21 Makefile.am --- src/frontends/qt2/ui/Makefile.am 8 May 2003 18:05:06 -0000 1.21 +++ src/frontends/qt2/ui/Makefile.am 2 Aug 2003 18:36:21 -0000 @@ -9,7 +9,7 @@ INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/src/frontends \ -I$(top_srcdir)/src/frontends/qt2 \ - $(FRONTEND_INCLUDES) $(BOOST_INCLUDES) \ + $(QT_INCLUDES) $(BOOST_INCLUDES) \ -I$(top_srcdir)/src/frontends/controllers AM_CXXFLAGS = -DQT_CLEAN_NAMESPACE -DQT_GENUINE_STR -DQT_NO_TRANSLATION Index: src/frontends/xforms/ChangeLog =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/ChangeLog,v retrieving revision 1.792 diff -u -r1.792 ChangeLog --- src/frontends/xforms/ChangeLog 2 Aug 2003 12:23:24 -0000 1.792 +++ src/frontends/xforms/ChangeLog 2 Aug 2003 18:36:39 -0000 @@ -1,5 +1,7 @@ 2003-08-02 Jean-Marc Lasgouttes <[EMAIL PROTECTED]> + * Makefile.am (libxforms_la_LIBADD): use XFORMS_LIBS + * XFormsToolbar.C (clearLayoutList): call Toolbar::clearLayoutList 2003-08-02 Lars Gullik Bjønnes <[EMAIL PROTECTED]> Index: src/frontends/xforms/Makefile.am =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/Makefile.am,v retrieving revision 1.103 diff -u -r1.103 Makefile.am --- src/frontends/xforms/Makefile.am 25 Jul 2003 21:34:44 -0000 1.103 +++ src/frontends/xforms/Makefile.am 2 Aug 2003 18:36:39 -0000 @@ -11,7 +11,7 @@ noinst_LTLIBRARIES = libxforms.la -libxforms_la_LIBADD = @XFORMS_IMAGE_LIB@ @XFORMS_LIB@ @XPM_LIB@ forms/*.lo +libxforms_la_LIBADD = @XFORMS_LIBS@ forms/*.lo # Alphabetical order please. It makes it easier to figure out what's missing. libxforms_la_SOURCES = \