Fix: SE066 Problem: Configuring the UNIX port of Slash'EM for more than one GUI windowing interface (eg., X11 and GTK) requires a kludge to prevent the linker failing due to duplicate symbols. This kludge (removing tile.o from all but one of the revelant WINXXXOBJ definitions) is hard to automate. Compatible with: Slash'EM 0.0.6E1F1 Author: J. Ali Harlow, ali@avrc.city.ac.uk Date: 27 Apr 2000 diff -Nacrd ../slashem-0.0.6E1/sys/unix/Makefile.src ./sys/unix/Makefile.src *** ../slashem-0.0.6E1F1/sys/unix/Makefile.src Wed Apr 26 18:49:55 2000 --- ./sys/unix/Makefile.src Thu Apr 27 17:07:12 2000 *************** *** 177,188 **** ../win/X11/winmisc.c ../win/X11/winstat.c ../win/X11/wintext.c \ ../win/X11/winval.c WINX11OBJ = Window.o dialogs.o winX.o winmap.o winmenu.o winmesg.o \ ! winmisc.o winstat.o wintext.o winval.o tile.o # # Files for a Qt port # (tile.c is included in the defn. for WINCSRC, below) WINQTSRC = ../win/Qt/qt_win.cpp ../win/Qt/qt_clust.cpp ! WINQTOBJ = qt_win.o qt_clust.o tile.o # files for a GTK port # (tile.c is included in the defn. for WINCSRC, below) --- 177,188 ---- ../win/X11/winmisc.c ../win/X11/winstat.c ../win/X11/wintext.c \ ../win/X11/winval.c WINX11OBJ = Window.o dialogs.o winX.o winmap.o winmenu.o winmesg.o \ ! winmisc.o winstat.o wintext.o winval.o nhwin.a # # Files for a Qt port # (tile.c is included in the defn. for WINCSRC, below) WINQTSRC = ../win/Qt/qt_win.cpp ../win/Qt/qt_clust.cpp ! WINQTOBJ = qt_win.o qt_clust.o nhwin.a # files for a GTK port # (tile.c is included in the defn. for WINCSRC, below) *************** *** 191,197 **** ../win/gtk/gtkmap.c ../win/gtk/gtkmessage.c ../win/gtk/gtkmisc.c \ ../win/gtk/xshmmap.c ../win/gtk/xshm.c WINGTKOBJ = gtk.o gtkgetlin.o gtkstatus.o gtkmenu.o gtkyn.o gtkextcmd.o \ ! gtkmap.o gtkmessage.o gtkmisc.o xshmmap.o xshm.o tile.o # Use these declarations if you only want to support the TTY windowing system WINSRC = $(WINTTYSRC) --- 191,197 ---- ../win/gtk/gtkmap.c ../win/gtk/gtkmessage.c ../win/gtk/gtkmisc.c \ ../win/gtk/xshmmap.c ../win/gtk/xshm.c WINGTKOBJ = gtk.o gtkgetlin.o gtkstatus.o gtkmenu.o gtkyn.o gtkextcmd.o \ ! gtkmap.o gtkmessage.o gtkmisc.o xshmmap.o xshm.o nhwin.a # Use these declarations if you only want to support the TTY windowing system WINSRC = $(WINTTYSRC) *************** *** 451,456 **** --- 451,461 ---- qt_win.moc: ../include/qt_win.h $(QTBINDIR)/moc $< >$@ + + # NetHack windows library for modules needed by more than one windows + # interface. + nhwin.a: tile.o + $(AR) cr nhwin.a tile.o $(MAKEDEFS): ../util/makedefs.c $(CONFIG_H) ../include/permonst.h \ ../include/objclass.h ../include/monsym.h \ diff -Nacrd ../slashem-0.0.6E1/win/Qt/Install.Qt ./win/Qt/Install.Qt *** ../slashem-0.0.6E1F1/win/Qt/Install.Qt Wed Apr 26 18:49:43 2000 --- ./win/Qt/Install.Qt Thu Apr 27 17:35:12 2000 *************** *** 41,48 **** To support multiple windowing ports, change the definitions of WINSRC, WINOBJ and WINLIB to include all the relevant ! variables. Then remove tile.o from the definition of all but ! one WINXXXOBJ to prevent a duplication since they all include it. 4. ../../Makefile (the top-level makefile) --- 41,47 ---- To support multiple windowing ports, change the definitions of WINSRC, WINOBJ and WINLIB to include all the relevant ! variables. 4. ../../Makefile (the top-level makefile) diff -Nacrd ../slashem-0.0.6E1/win/gtk/Install.GTK ./win/gtk/Install.GTK *** ../slashem-0.0.6E1F1/win/gtk/Install.GTK Wed Apr 26 18:49:44 2000 --- ./win/gtk/Install.GTK Thu Apr 27 17:36:01 2000 *************** *** 36,43 **** To support multiple windowing ports, change the definitions of WINSRC, WINOBJ and WINLIB to include all the relevant ! variables. Then remove tile.o from the definition of all but ! one WINXXXOBJ to prevent a duplication since they all include it. 4. ../../Makefile (the top-level makefile) --- 36,42 ---- To support multiple windowing ports, change the definitions of WINSRC, WINOBJ and WINLIB to include all the relevant ! variables. 4. ../../Makefile (the top-level makefile)