Qt 5 vs Qt 6 revisited plus 'make depend' update
Rename the recently added timestamp file used to throw away old qt 'moc' files from moc.qt5 or moc.qt6 to Qt5.h-t or Qt6.h-t and use that to also throw away old qt_*.o when switching from Qt 5 to Qt 6 or vice versa. Temporarily the old names remain in Makefile.src's 'clean' target and in src/.gitignore but those will be removed soon. Update 'make depend' to add the timestamp file to qt_*.o dependencies. Have it generate rules to build qt_*.moc from ../win/Qt/qt_*.h instead of using a template rule in hints/include/compiler.370. So building the Qt interface doesn't require use of that hints file anymore and someone reading Makefile.src won't have to know about it, but using those hints will make their life easier. Simplify the Qt timestamp handling portion of compiler.370. Only one extra rule gets added when creating src/Makefile. src/Makefile generated from sys/unix/Makefile.src that's been rebuilt with 'make depend' got broken by uncommenting '#include "amiconf.h"' in global.h. That file isn't in include/ but every object file now depended on it and make didn't know what to do about that. Have depend.awk treat it as a special case so that no object files depend on it. That means that actually modifying it won't trigger a rebuild; anyone fiddling with that will have to always do 'make clean' or 'touch config.h-t' after changing it. The alternative is to move it from outdated/include/ back to include/. In depend.awk, recent gawk complained that "\." wasn't a defined escape sequence in regular expressions so it would be treated as ".". That's exactly what is intended but change it to "[.]" to avoid the warning. Similarly for one instance each of "\#" and '\"'. I also tried changing "\/" to "[/]" even though that is a defined sequence and doesn't trigger any warning. gawk accepted it but the awk that comes with OSX choked on it so I changed it back to "\/".
This commit is contained in:
@@ -118,21 +118,18 @@ ifdef MAKEFILE_SRC
|
||||
ifdef WANT_WIN_QT
|
||||
# when switching from Qt5 to Qt6 or vice versa, any old .moc files will be
|
||||
# incompatible; get rid of them in case user hasn't run 'make spotless';
|
||||
# moc.qt5 and moc.qt6 are empty timestamp files and at most one should exist
|
||||
# object files are incompatable with Qt library, so get rid of them too;
|
||||
# Qt*.h-t are empty timestamp files and at most one should exist
|
||||
QTany_H = Qt*.h-t
|
||||
ifdef WANT_WIN_QT6
|
||||
# Qt 6 builds and runs (with a couple of warnings) but needs more testing
|
||||
MOCSTAMP=moc.qt6
|
||||
QTn_H = Qt6.h-t
|
||||
else
|
||||
# Qt 5 is currently the default version for nethack 3.7.x's Qt interface
|
||||
MOCSTAMP=moc.qt5
|
||||
QTn_H = Qt5.h-t
|
||||
endif
|
||||
# rule to build src/qt_foo.moc from win/Qt/qt_foo.h
|
||||
%.moc : ../win/Qt/%.h $(MOCSTAMP)
|
||||
$(MOCPATH) -o $@ $<
|
||||
moc.qt5::
|
||||
@if test ! -f moc.qt5; then ( rm -f *.moc moc.qt6; touch $@ ); fi;
|
||||
moc.qt6::
|
||||
@if test ! -f moc.qt6; then ( rm -f *.moc moc.qt5; touch $@ ); fi;
|
||||
$(QTn_H) ::
|
||||
@if test ! -f $@; then ( rm -f $(QTany_H) *.moc qt_*.o; touch $@ ); fi;
|
||||
endif #WANT_WIN_QT
|
||||
endif #MAKFILE_SRC
|
||||
|
||||
|
||||
Reference in New Issue
Block a user