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)

config.log (4.9 KB ) - added by raziel- 6 years ago.
config.log
config.mk (1.3 KB ) - added by raziel- 6 years ago.

Download all attachments as: .zip

Change History (12)

comment:1 by bonki, 6 years ago

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) as nullptr is being used all over the place.

comment:2 by bonki, 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:3 by raziel-, 6 years ago

Sure, will so in the next days

Thanks for looking

comment:4 by raziel-, 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 bonki, 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 bonki, 6 years ago

Owner: set to bonki
Summary: TOOLS: Compiler error in prince engineTOOLS: Compilation without C++11 support broken

comment:7 by bonki, 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 raziel-, 6 years ago

Attachment: config.log added

config.log

by raziel-, 6 years ago

Attachment: config.mk added

comment:8 by raziel-, 6 years ago

Yes, sorry, i accidently switched directories while uploading, fixed

comment:9 by raziel-, 6 years ago

Summary: TOOLS: Compilation without C++11 support brokenTOOLS: Compilation (missing local C++11 support) broken

comment:10 by raziel-, 6 years ago

Owner: changed from bonki to digitall
Resolution: fixed
Status: newclosed

Fixed in aaf3aee.

Thanks digitall

Note: See TracTickets for help on using tickets.