Opened 6 years ago
Closed 6 years ago
#10585 closed defect (fixed)
TOOLS: Compilation (missing local C++11 support) broken
Reported by: | raziel- | Owned by: | digitall |
---|---|---|---|
Priority: | normal | Component: | Engine: Prince |
Version: | Keywords: | ||
Cc: | Game: |
Description
ScummVM 2.1.0git (Jun 24 2018 20:36:35)
Features compiled in: Vorbis FLAC MP3 RGB zLib MPEG2 Theora AAC FreeType2 JPEG PNG cloud (servers, local)
Probably becuase i'm not using c++11?
C++ engines/prince/flags.o engines/prince/flags.cpp:26:2: warning: identifier 'nullptr' is a keyword in C++11 [-Wc++0x-compat] FlagDebug *flagd = nullptr; ^ engines/prince/flags.cpp: In static member function 'static const char* Flags::getFlagName(uint16)': engines/prince/flags.cpp:26:21: error: 'nullptr' was not declared in this scope FlagDebug *flagd = nullptr; ^ engines/prince/flags.cpp:33:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ gmake: *** [engines/prince/flags.o] Error 1
AmigaOS4 - PPC - SDL - BE
gcc (adtools build 5.4.0) 5.4.0
Attachments (2)
Change History (12)
comment:1 by , 6 years ago
comment:2 by , 6 years ago
Our buildbot is still happily cross-compiling the amigos4 target and building locally using Colin's latest buildbot setup (where I can verify that it's using adtools gcc 5.4.0) against current master also works for me.
Could you attach a log for ./configure
(including the exact commandline you are using), the generated config.log
and the whole output from running make
?
You are compiling natively on AmigaOS 4(.1?), right?
comment:4 by , 6 years ago
Compiling on AmigaOS4 native, yes.
(config.log is attached)
(Just a simple ./configure, nothing fancy)
./configure
Running ScummVM Tools configure... Looking for C++ compiler... g++ Checking for compiler version... 5.4.0, ok found non-gcc compiler version 5.4.0, ok Building as C++11... no Checking endianness... big Type with 1 byte... char Type with 2 bytes... short Type with 4 bytes... int Alignment required... no Checking hosttype... amigaos Checking if host is POSIX compliant... no Checking whether to have a verbose build... no Checking for Ogg Vorbis... yes Checking for Tremor... no (Ogg Vorbis/Tremor support is mutually exclusive) Checking for FLAC >= 1.1.3... yes Checking for MAD... yes Checking for PNG >= 1.2.8... yes Checking for zlib... yes Checking for FreeType... 2.8.1 Checking for Boost => 1.32.0... no Checking whether iconv.h is present... yes Checking whether iconv needs linking against libiconv... no Checking signature of iconv... iconv_t, const char **, size_t *, char **, size_t * Checking for iconv... yes Looking for wx-config... none found! Creating config.h Creating config.mk
(and a simple gmake)
gmake
C++ engines/cine/decine.o LINK decine C++ engines/gob/degob.o engines/gob/degob.cpp: In function 'void printInfo(Script&)': engines/gob/degob.cpp:225:72: warning: format '%d' expects argument of type 'int', but argument 2 has type 'uint32 {aka long unsigned int}' [-Wformat=] printf("%d, directly embedded in the TOT\n", script.getTotTextCount()); ^ engines/gob/degob.cpp:229:87: warning: format '%X' expects argument of type 'unsigned int', but argument 3 has type 'uint32 {aka long unsigned int}' [-Wformat=] printf("%d, starting at 0x%08X\n", script.getTotResCount(), script.getTotResOffset()); ^ C++ engines/gob/degob_script.o C++ engines/gob/degob_script_v1.o C++ engines/gob/degob_script_v2.o C++ engines/gob/degob_script_v3.o C++ engines/gob/degob_script_v4.o C++ engines/gob/degob_script_v5.o C++ engines/gob/degob_script_v6.o C++ engines/gob/degob_script_bargon.o C++ engines/gob/degob_script_fascin.o C++ engines/gob/degob_script_geisha.o C++ engines/gob/degob_script_littlered.o C++ tool.o C++ engines/scumm/descumm.o C++ engines/scumm/descumm6.o C++ engines/scumm/descumm-common.o C++ engines/scumm/descumm-tool.o engines/scumm/descumm-tool.cpp: In function 'int skipVerbHeader_V8(byte*)': engines/scumm/descumm-tool.cpp:135:40: warning: format '%d' expects argument of type 'int', but argument 2 has type 'uint32 {aka long unsigned int}' [-Wformat=] printf(" %2d - %.4X\n", code, offset); ^ engines/scumm/descumm-tool.cpp: In function 'void parseHeader()': engines/scumm/descumm-tool.cpp:283:58: warning: format '%d' expects argument of type 'int', but argument 2 has type 'uint32 {aka long unsigned int}' [-Wformat=] printf("Script# %d\n", READ_LE_UINT32(g_scriptStart+8)); ^ engines/scumm/descumm-tool.cpp:291:59: warning: format '%d' expects argument of type 'int', but argument 2 has type 'uint32 {aka long unsigned int}' [-Wformat=] printf("Script# %d\n", READ_LE_UINT32(g_scriptStart+8)); ^ C++ common/file.o C++ common/hashmap.o C++ common/md5.o C++ common/memorypool.o C++ common/str.o C++ common/util.o C++ sound/adpcm.o C++ sound/audiostream.o C++ sound/voc.o C++ sound/wave.o C++ engines/sword2/desword2.o engines/sword2/desword2.cpp: In function 'int entry(int, char**)': engines/sword2/desword2.cpp:337:40: warning: format '%d' expects argument of type 'int', but argument 2 has type 'int32 {aka long int}' [-Wformat=] printf("numScripts = %d\n", numScripts); ^ engines/sword2/desword2.cpp:380:41: warning: format '%d' expects argument of type 'int', but argument 2 has type 'int32 {aka long int}' [-Wformat=] printf("PUSH local(%d)\n", parameter); ^ engines/sword2/desword2.cpp:390:43: warning: format '%d' expects argument of type 'int', but argument 2 has type 'int32 {aka long int}' [-Wformat=] printf("POP -> local(%d)\n", parameter); ^ engines/sword2/desword2.cpp:396:54: warning: format '%d' expects argument of type 'int', but argument 2 has type 'int32 {aka long int}' [-Wformat=] printf("CALL %d, %s\n", value, opcodes[parameter]); ^ engines/sword2/desword2.cpp:401:42: warning: format '%d' expects argument of type 'int', but argument 2 has type 'int32 {aka long int}' [-Wformat=] printf("PUSH &local(%d)\n", parameter); ^ engines/sword2/desword2.cpp:406:34: warning: format '%d' expects argument of type 'int', but argument 2 has type 'int32 {aka long int}' [-Wformat=] printf("PUSH %d\n", parameter); ^ engines/sword2/desword2.cpp:410:56: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long int' [-Wformat=] printf("IFNOT POP THEN JUMP %04x\n", pc + parameter); ^ engines/sword2/desword2.cpp:415:41: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long int' [-Wformat=] printf("JUMP %04x\n", pc + parameter); ^ engines/sword2/desword2.cpp:428:60: warning: format '%d' expects argument of type 'int', but argument 2 has type 'int32 {aka long int}' [-Wformat=] printf("----: %-7d -> JUMP %04x\n", value, pc + to); ^ engines/sword2/desword2.cpp:428:60: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long int' [-Wformat=] engines/sword2/desword2.cpp:433:78: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long int' [-Wformat=] printf("----: default -> JUMP %04x\n", pc + (int32) in.readUint32LE()); ^ engines/sword2/desword2.cpp:439:43: warning: format '%d' expects argument of type 'int', but argument 2 has type 'int32 {aka long int}' [-Wformat=] printf("local(%d) += POP\n", parameter); ^ engines/sword2/desword2.cpp:444:43: warning: format '%d' expects argument of type 'int', but argument 2 has type 'int32 {aka long int}' [-Wformat=] printf("local(%d) -= POP\n", parameter); ^ engines/sword2/desword2.cpp:448:53: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'long int' [-Wformat=] printf("IF POP THEN JUMP %04x\n", pc + parameter); ^ engines/sword2/desword2.cpp:536:39: warning: format '%d' expects argument of type 'int', but argument 2 has type 'int32 {aka long int}' [-Wformat=] printf("PUSH far(%d)\n", parameter); ^ C++ main_cli.o C++ scummvm-tools-cli.o C++ engines/agos/compress_agos.o engines/agos/compress_agos.cpp: In member function 'void CompressAgos::convert_mac(Common::Filename*)': engines/agos/compress_agos.cpp:206:49: warning: format '%d' expects argument of type 'int', but argument 3 has type 'uint32 {aka long unsigned int}' [-Wformat=] sprintf(filename, "voices%d.dat", filenums[i]); ^ C++ engines/bladerunner/pack_bladerunner.o engines/bladerunner/pack_bladerunner.cpp: In member function 'virtual void PackBladeRunner::execute()': engines/bladerunner/pack_bladerunner.cpp:101:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] while (cdCurrentPage < cdPageCount) { ^ engines/bladerunner/pack_bladerunner.cpp:102:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] while (cdCurrentPage < cdPageCount) { ^ engines/bladerunner/pack_bladerunner.cpp:113:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (cdCurrentPage == cdPageCount) ^ C++ engines/gob/compress_gob.o C++ engines/gob/extract_fascination_cd.o C++ engines/kyra/compress_kyra.o engines/kyra/compress_kyra.cpp: In member function 'void CompressKyra::processKyra3(Common::Filename*, Common::Filename*)': engines/kyra/compress_kyra.cpp:339:75: warning: format '%u' expects argument of type 'unsigned int', but argument 4 has type 'uint32 {aka long unsigned int}' [-Wformat=] snprintf(outname, 16, "%.08u%s", resFilename, audio_extensions(_format)); ^ engines/kyra/compress_kyra.cpp:344:83: warning: format '%u' expects argument of type 'unsigned int', but argument 4 has type 'uint32 {aka long unsigned int}' [-Wformat=] snprintf(linkname, 16, "%.08u%s", file->resFilename, audio_extensions(_format)); ^ C++ engines/queen/compress_queen.o C++ engines/saga/compress_saga.o C++ engines/sci/compress_sci.o C++ engines/scumm/compress_scumm_bun.o C++ engines/scumm/compress_scumm_san.o C++ engines/scumm/compress_scumm_sou.o C++ engines/sword1/compress_sword1.o C++ engines/sword2/compress_sword2.o C++ engines/tinsel/compress_tinsel.o C++ engines/tony/compress_tony.o engines/tony/compress_tony.cpp: In member function 'void CompressTony::convertTonyADPCMSample()': engines/tony/compress_tony.cpp:99:48: warning: format '%d' expects argument of type 'int', but argument 2 has type 'uint32 {aka long unsigned int}' [-Wformat=] printf("rate %d channels %d\n", rate, channels); ^ engines/tony/compress_tony.cpp:99:48: warning: format '%d' expects argument of type 'int', but argument 3 has type 'uint32 {aka long unsigned int}' [-Wformat=] engines/tony/compress_tony.cpp:100:48: warning: format '%d' expects argument of type 'int', but argument 2 has type 'uint32 {aka long unsigned int}' [-Wformat=] printf("original size %d\n", _input_adp.size()); ^ engines/tony/compress_tony.cpp:114:56: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long unsigned int' [-Wformat=] printf("uncompressed %d bytes\n", uncompressedSize * 2); ^ C++ engines/tony/compress_tony_vdb.o engines/tony/compress_tony_vdb.cpp: In member function 'virtual void CompressTonyVDB::execute()': engines/tony/compress_tony_vdb.cpp:185:88: warning: format '%d' expects argument of type 'int', but argument 3 has type 'long unsigned int' [-Wformat=] printf("%d\t%d\t%d/%d\n", _input_vdb.pos() - 8, _sampleSize + 8, j + 1, vh[i]._parts); ^ C++ engines/touche/compress_touche.o C++ engines/tucker/compress_tucker.o C++ engines/agos/extract_agos.o C++ engines/cge/extract_cge.o C++ engines/cge/pack_cge.o C++ engines/cine/extract_cine.o C++ engines/cruise/extract_cruise_pc.o C++ engines/gob/extract_gob_stk.o engines/gob/extract_gob_stk.cpp: In member function 'void ExtractGobStk::readChunkListV2(Common::File&, Common::File&)': engines/gob/extract_gob_stk.cpp:237:47: warning: format '%d' expects argument of type 'int', but argument 3 has type 'uint32 {aka long unsigned int}' [-Wformat=] compressFlag, curChunk->size, decompSize); ^ engines/gob/extract_gob_stk.cpp:237:47: warning: format '%d' expects argument of type 'int', but argument 4 has type 'uint32 {aka long unsigned int}' [-Wformat=] engines/gob/extract_gob_stk.cpp:237:47: warning: format '%d' expects argument of type 'int', but argument 5 has type 'uint32 {aka long unsigned int}' [-Wformat=] C++ engines/kyra/extract_kyra.o C++ engines/prince/extract_prince.o C++ engines/prince/pack_prince.o C++ engines/prince/utils.o C++ engines/parallaction/extract_parallaction.o engines/parallaction/extract_parallaction.cpp: In member function 'void Archive::dumpStructs(FILE*)': engines/parallaction/extract_parallaction.cpp:192:134: warning: format '%i' expects argument of type 'int', but argument 6 has type 'uint32 {aka long unsigned int}' [-Wformat=] fprintf(dump, "{ \"%s\",%*s%5i, kArchive%s, %7i },\n", _names[i], 32-(int)strlen(_names[i]), " ", _sizes[i], arcName+1, _offsets[i]); ^ engines/parallaction/extract_parallaction.cpp:192:134: warning: format '%i' expects argument of type 'int', but argument 8 has type 'uint32 {aka long unsigned int}' [-Wformat=] C++ engines/scumm/extract_loom_tg16.o C++ engines/scumm/extract_mm_apple.o C++ engines/scumm/extract_mm_c64.o C++ engines/scumm/extract_mm_nes.o C++ engines/scumm/extract_scumm_mac.o C++ engines/scumm/extract_zak_c64.o C++ engines/kyra/kyra_ins.o engines/kyra/kyra_ins.cpp: In member function 'void FileExpander::generateTables(uint8, uint8, uint8, int)': engines/kyra/kyra_ins.cpp:388:26: warning: cast from type 'const uint8* {aka const unsigned char*}' to type 'uint16* {aka short unsigned int*}' casts away qualifiers [-Wcast-qual] uint16 * bt = (uint16*) tbl3; ^ engines/kyra/kyra_ins.cpp: In constructor 'HoFInstaller::HoFInstaller(const char*)': engines/kyra/kyra_ins.cpp:544:53: warning: format '%d' expects argument of type 'int', but argument 5 has type 'uint32 {aka long unsigned int}' [-Wformat=] snprintf(filename, 64, "%s%03d", _baseFilename, i); ^ engines/kyra/kyra_ins.cpp:601:58: warning: format '%d' expects argument of type 'int', but argument 5 has type 'long unsigned int' [-Wformat=] snprintf(filename, 64, "%s.%03d", _baseFilename, i+1); ^ C++ engines/kyra/kyra_pak.o engines/kyra/kyra_pak.cpp: In member function 'virtual void Extractor::drawFileList()': engines/kyra/kyra_pak.cpp:447:71: warning: format '%d' expects argument of type 'int', but argument 3 has type 'uint32 {aka long unsigned int}' [-Wformat=] printf("Common::Filename: '%s' size: %d\n", cur->filename, cur->size); ^ C++ compress.o compress.cpp: In member function 'void CompressionTool::encodeAudio(const char*, bool, int, const char*, AudioFormat)': compress.cpp:143:60: warning: format '%d' expects argument of type 'int', but argument 3 has type 'uint32 {aka long unsigned int}' [-Wformat=] tmp += sprintf(tmp, "--cbr -b %d ", lameparms.targetBitr); ^ compress.cpp:146:58: warning: format '%d' expects argument of type 'int', but argument 3 has type 'uint32 {aka long unsigned int}' [-Wformat=] tmp += sprintf(tmp, "--abr %d ", lameparms.targetBitr); ^ compress.cpp:148:62: warning: format '%d' expects argument of type 'int', but argument 3 has type 'uint32 {aka long unsigned int}' [-Wformat=] tmp += sprintf(tmp, "--vbr-new -V %d ", lameparms.vbrqual); ^ compress.cpp:151:52: warning: format '%d' expects argument of type 'int', but argument 3 has type 'int32 {aka long int}' [-Wformat=] tmp += sprintf(tmp, "-b %d ", lameparms.minBitr); ^ compress.cpp:153:52: warning: format '%d' expects argument of type 'int', but argument 3 has type 'int32 {aka long int}' [-Wformat=] tmp += sprintf(tmp, "-B %d ", lameparms.maxBitr); ^ compress.cpp:171:50: warning: format '%d' expects argument of type 'int', but argument 3 has type 'uint32 {aka long unsigned int}' [-Wformat=] tmp += sprintf(tmp, "-q %d ", lameparms.algqual); ^ C++ tools.o C++ encode_dxa.o C++ version.o LINK degob C++ engines/kyra/dekyra.o engines/kyra/dekyra.cpp: In function 'int main(int, char**)': engines/kyra/dekyra.cpp:133:73: warning: format '%d' expects argument of type 'int', but argument 3 has type 'int32 {aka long int}' [-Wformat=] fprintf(outputFile, "| Engine version: %1d |\n", engine); ^ C++ engines/kyra/dekyra_v1.o LINK dekyra C++ engines/prince/deprince.o engines/prince/deprince.cpp: In function 'void printArray(int, int, int, bool, bool)': engines/prince/deprince.cpp:293:42: warning: format '%d' expects argument of type 'int', but argument 3 has type 'uint32 {aka long unsigned int}' [-Wformat=] printf("%s[%d]", labels[v].c_str(), v); ^ engines/prince/deprince.cpp:295:19: warning: format '%d' expects argument of type 'int', but argument 2 has type 'uint32 {aka long unsigned int}' [-Wformat=] printf("%d", v); ^ engines/prince/deprince.cpp: In function 'int main(int, char**)': engines/prince/deprince.cpp:828:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i = 0; i < dataLen; i++) { ^ engines/prince/deprince.cpp:969:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i = 0; i < dataLen; i++) { ^ engines/prince/deprince.cpp:984:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i = 0; i < dataLen; i++) { ^ C++ engines/prince/flags.o engines/prince/flags.cpp:26:2: warning: identifier 'nullptr' is a keyword in C++11 [-Wc++0x-compat] FlagDebug *flagd = nullptr; ^ engines/prince/flags.cpp: In static member function 'static const char* Flags::getFlagName(uint16)': engines/prince/flags.cpp:26:21: error: 'nullptr' was not declared in this scope FlagDebug *flagd = nullptr; ^ engines/prince/flags.cpp:33:1: warning: control reaches end of non-void function [-Wreturn-type] } ^ gmake: *** [engines/prince/flags.o] Error 1
comment:5 by , 6 years ago
Mea culpa, seeing your logs now I understand that I had totally missed that your report concerns the tools, not the main tree.
I can confirm that compiling with C++11 support disabled is broken right now because of this. Since the offending code has been copied directly from the main tree and should remain in sync it doesn't seem a good idea to change it to not use nullptr
, instead we should just add c++11-compat.h
to TOOLS.
Not having looked at the status quo yet I'm not sure, off the top of my head, if we can sync over common/scummsys.h
as well as common/c++11-compat.h
from the main tree as they are or if there are changes in scummsys.h
specific to the tools and only c++11-compat.h
should be added and included in the existing scummsys.h
without touching it further. I'll have a look at this later.
Thanks for reporting!
comment:6 by , 6 years ago
Owner: | set to |
---|---|
Summary: | TOOLS: Compiler error in prince engine → TOOLS: Compilation without C++11 support broken |
comment:7 by , 6 years ago
The config.log
you attached is from March and references residualvm-tools. Please upload a new, proper log and also attach the generated config.mk
, thanks!
by , 6 years ago
comment:9 by , 6 years ago
Summary: | TOOLS: Compilation without C++11 support broken → TOOLS: Compilation (missing local C++11 support) broken |
---|
comment:10 by , 6 years ago
Owner: | changed from | to
---|---|
Resolution: | → fixed |
Status: | new → closed |
Fixed in aaf3aee.
Thanks digitall
This is weird. When compiling without C++11 support
common/c++11-compat.h
should take care of providing a replacement so this should never happen. And even if it does, it should spam you with a lot more errors (and before hitting these files) asnullptr
is being used all over the place.