libretro / bnes-libretro

libretro implementation of bNES
GNU General Public License v3.0
11 stars 12 forks source link

build error #7

Closed turkeychicken closed 8 years ago

turkeychicken commented 9 years ago

g++ -std=gnu++0x -O3 -fomit-frame-pointer -fno-tree-vectorize -I. -fPIC -c nes/interface/interface.cpp -o obj/nes-interface.o g++ -std=gnu++0x -O3 -fomit-frame-pointer -fno-tree-vectorize -I. -fPIC -c nes/system/system.cpp -o obj/nes-system.o g++ -std=gnu++0x -O3 -fomit-frame-pointer -fno-tree-vectorize -I. -fPIC -c nes/scheduler/scheduler.cpp -o obj/nes-scheduler.o g++ -std=gnu++0x -O3 -fomit-frame-pointer -fno-tree-vectorize -I. -fPIC -c nes/input/input.cpp -o obj/nes-input.o g++ -std=gnu++0x -O3 -fomit-frame-pointer -fno-tree-vectorize -I. -fPIC -c nes/cartridge/cartridge.cpp -o obj/nes-cartridge.o In file included from nes/cartridge/board/board.cpp:9:0, from nes/cartridge/cartridge.cpp:7: nes/cartridge/board/nes-fxrom.cpp: In member function ‘unsigned int NES::NES_FxROM::ciram_addr(unsigned int) const’: nes/cartridge/board/nes-fxrom.cpp:37:16: warning: switch condition has type bool [-Wswitch-bool] switch(mirror) { ^ In file included from nes/cartridge/board/board.cpp:12:0, from nes/cartridge/cartridge.cpp:7: nes/cartridge/board/nes-pxrom.cpp: In member function ‘unsigned int NES::NES_PxROM::ciram_addr(unsigned int) const’: nes/cartridge/board/nes-pxrom.cpp:43:16: warning: switch condition has type bool [-Wswitch-bool] switch(mirror) { ^ In file included from ./nall/array.hpp:10:0, from ./nes/nes.hpp:22, from nes/cartridge/cartridge.cpp:1: ./nall/bit.hpp: In instantiation of ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 2]’: ./nall/varint.hpp:19:78: required from ‘unsigned int nall::uint_t::operator=(unsigned int) [with unsigned int bits = 2u]’ nes/cartridge/chip/mmc1.cpp:80:16: required from here ./nall/bit.hpp:13:3: error: body of constexpr function ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 2]’ not a return-statement } ^ ./nall/bit.hpp: In instantiation of ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 5]’: ./nall/varint.hpp:19:78: required from ‘unsigned int nall::uint_t::operator=(unsigned int) [with unsigned int bits = 5u]’ nes/cartridge/chip/mmc1.cpp:84:21: required from here ./nall/bit.hpp:13:3: error: body of constexpr function ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 5]’ not a return-statement ./nall/bit.hpp: In instantiation of ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 4]’: ./nall/varint.hpp:19:78: required from ‘unsigned int nall::uint_t::operator=(unsigned int) [with unsigned int bits = 4u]’ nes/cartridge/chip/mmc1.cpp:93:18: required from here ./nall/bit.hpp:13:3: error: body of constexpr function ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 4]’ not a return-statement ./nall/bit.hpp: In instantiation of ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 3]’: ./nall/varint.hpp:19:78: required from ‘unsigned int nall::uint_t::operator=(unsigned int) [with unsigned int bits = 3u]’ nes/cartridge/chip/mmc3.cpp:98:15: required from here ./nall/bit.hpp:13:3: error: body of constexpr function ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 3]’ not a return-statement ./nall/bit.hpp: In instantiation of ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 10]’: ./nall/varint.hpp:19:78: required from ‘unsigned int nall::uint_t::operator=(unsigned int) [with unsigned int bits = 10u]’ nes/cartridge/chip/mmc5.cpp:203:35: required from here ./nall/bit.hpp:13:3: error: body of constexpr function ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 10]’ not a return-statement ./nall/bit.hpp: In instantiation of ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 12]’: ./nall/varint.hpp:18:62: required from ‘unsigned int nall::uint_t::operator--() [with unsigned int bits = 12u]’ nes/cartridge/chip/vrc6.cpp:27:10: required from here ./nall/bit.hpp:13:3: error: body of constexpr function ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 12]’ not a return-statement ./nall/bit.hpp: In instantiation of ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 1]’: ./nall/varint.hpp:17:62: required from ‘unsigned int nall::uint_t::operator++() [with unsigned int bits = 1u]’ nes/cartridge/chip/vrc6.cpp:63:12: required from here ./nall/bit.hpp:13:3: error: body of constexpr function ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 1]’ not a return-statement ./nall/bit.hpp: In instantiation of ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 6]’: ./nall/varint.hpp:19:78: required from ‘unsigned int nall::uint_t::operator=(unsigned int) [with unsigned int bits = 6u]’ nes/cartridge/chip/vrc6.cpp:195:19: required from here ./nall/bit.hpp:13:3: error: body of constexpr function ‘constexpr unsigned int nall::uclip(unsigned int) [with int bits = 6]’ not a return-statement Makefile:59: recipe for target 'obj/nes-cartridge.o' failed make: *\ [obj/nes-cartridge.o] Error 1

turkeychicken commented 9 years ago

Forgot to mention, this is with GCC 5.0.1.

thias commented 8 years ago

I just noticed the same problem with Fedora 23 and its gcc 5.1.1.

ngharo commented 8 years ago

This is due to enum declarations inside constexpr functions found in nall/bit.hpp