yokwe / mesa-emulator

xerox mesa processor emulator in qt5/c++ on ubuntu
8 stars 0 forks source link

Build failure #5

Closed californiaelectric closed 6 years ago

californiaelectric commented 6 years ago

Cloned repository.

performed make clean performed make distclean performed make qmake performed make guam

Failure:(cd src/simple-opcode; make all) make[1]: Entering directory '/home/christie/src/mesa-emulator-master/guam/src/simple-opcode' g++ -c -m64 -pipe -std=c++0x -Wall -Werror -g -O2 -fPIC -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I. -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x8664-linux-gnu/qt5/QtCore -I../../tmp/build/simple-opcode -o ../../tmp/build/simple-opcode/Interpreter.o Interpreter.cpp Interpreter.cpp: In static member function ‘static void Interpreter::assignMop(Opcode::EXEC, const QString&, CARD32, CARD32)’: Interpreter.cpp:59:109: error: cannot pass objects of non-trivially-copyable type ‘const class QString’ through ‘...’ logger.fatal("assignMop code = %3o old name = %s new name = %s", code, tableMop[code].getName(), name); ^ Interpreter.cpp: In static member function ‘static void Interpreter::assignEsc(Opcode::EXEC, const QString&, CARD32, CARD32)’: Interpreter.cpp:77:109: error: cannot pass objects of non-trivially-copyable type ‘const class QString’ through ‘...’ logger.fatal("assignEsc code = %3o old name = %s new name = %s", code, tableEsc[code].getName(), name); ^ Interpreter.cpp: In static member function ‘static void Interpreter::fillOpcodeTrap()’: Interpreter.cpp:98:55: error: ‘asprintf’ is not a member of ‘QString’ if (tableMop[i].isEmpty()) assignMop(mopOpcodeTrap, QString::asprintf("MOP%03o", i), i, 1); // can be 1, 2 or 3 ^ Interpreter.cpp:99:55: error: ‘asprintf’ is not a member of ‘QString’ if (tableEsc[i].isEmpty()) assignEsc(escOpcodeTrap, QString::asprintf("ESC_%03o", i), i, 2); // can bw 2 or 3 ^ Makefile:343: recipe for target '../../tmp/build/simple-opcode/Interpreter.o' failed make[1]: [../../tmp/build/simple-opcode/Interpreter.o] Error 1 make[1]: Leaving directory '/home/christie/src/mesa-emulator-master/guam/src/simple-opcode' Makefile:74: recipe for target 'guam' failed make: [guam] Error 2 christie@x61b:~/src/mesa-emulator-master/guam$

yokwe commented 6 years ago

I fixed error of QString to char* in the code. Try latest source code. In my environment, I cannot reproduce the error message you mentioned. I am using Ubuntu 18.04 and gcc/qt5 from apt-get. What is your buidl environment?

californiaelectric commented 6 years ago

I use Debian but otherwise the same. I was able to build last summer - the last time I tried to get Guam running with my globalview disk.

californiaelectric commented 6 years ago

Still fails: Here is my build environment: Linux x61b 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux christie@x61b:~$ cat /etc/*release PRETTY_NAME="Debian GNU/Linux 8 (jessie)" NAME="Debian GNU/Linux" VERSION_ID="8" VERSION="8 (jessie)" ID=debian HOME_URL="http://www.debian.org/" SUPPORT_URL="http://www.debian.org/support/" BUG_REPORT_URL="https://bugs.debian.org/" christie@x61b:~$ qmake --version QMake version 3.0 Using Qt version 5.3.2 in /usr/lib/x86_64-linux-gnu

QT5 is properly installed: christie@x61b:~$ sudo apt-get install qt5-default [sudo] password for christie: Reading package lists... Done Building dependency tree
Reading state information... Done qt5-default is already the newest version. The following package was automatically installed and is no longer required: mess-data Use 'apt-get autoremove' to remove it. 0 upgraded, 0 newly installed, 0 to remove and 479 not upgraded. christie@x61b:~$

here is the build failure after a make clean, make distclean, make qmake, make all: g++ -c -m64 -pipe -std=c++0x -Wall -Werror -g -O2 -fPIC -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I. -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I../../tmp/build/symbols -o ../../tmp/build/symbols/DumpSymbol.o DumpSymbol.cpp DumpSymbol.cpp: In static member function ‘static void DumpSymbol::dumpSymbol(QString, QString)’: DumpSymbol.cpp:169:17: error: ‘asprintf’ is not a member of ‘QString’ logger.info(QString::asprintf("ctx %3d - %d", outerCtx.getIndex(), outerCtx.level).toLocal8Bit().constData()); ^ Makefile:473: recipe for target '../../tmp/build/symbols/DumpSymbol.o' failed make[1]: [../../tmp/build/symbols/DumpSymbol.o] Error 1 make[1]: Leaving directory '/home/christie/src/mesa-emulator-master/guam/src/symbols' Makefile:30: recipe for target 'all' failed make: [all] Error 2 christie@x61b:~/src/mesa-emulator-master/guam$

californiaelectric commented 6 years ago

Issue is caused by QT5 version.

asprintf introduced in 5.5. So requirements for this repository are not just QT5, but QT5, >= 5.5.