smuehlst / circle-stdlib

Standard C and C++ Library Support for Circle

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error when running make

GiovanniCmpaner opened this issue · comments

Hi everyone!

When I run make I get the following errors (just the lasts lines):

Projetista01@DESENVOLVIMENTO02:/mnt/c/Users/Projetista01/bare_metal/circle-stdlib$ make
...
...
...
In file included from /mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:17:0:
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/include/circle_glue.h:29:16: error: 'constexpr' does not name a type
         static constexpr unsigned GeneralFailure = ~0U;
                ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/include/circle_glue.h:29:16: note: C++11 'constexpr' only available with -std=c++11 or -std=gnu++11
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/include/circle_glue.h: In member function 'virtual unsigned int CGlueConsole::Read(void*, unsigned int)':
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/include/circle_glue.h:112:95: error: 'nullptr' was not declared in this scope
                         CScheduler * const scheduler = schedulerActive ? CScheduler::Get () : nullptr;
                                                                                               ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/include/circle_glue.h:122:24: error: 'GeneralFailure' was not declared in this scope
   return nResult < 0 ? GeneralFailure : static_cast<unsigned>(nResult);
                        ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/include/circle_glue.h: In member function 'virtual unsigned int CGlueConsole::Write(const void*, unsigned int)':
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/include/circle_glue.h:129:31: error: 'GeneralFailure' was not declared in this scope
          return nResult < 0 ? GeneralFailure : static_cast<unsigned>(nResult);
                               ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp: In constructor '{anonymous}::CircleFile::CircleFile()':
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:39:30: error: 'nullptr' was not declared in this scope
      CircleFile() : mCGlueIO(nullptr) {}
                              ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp: At global scope:
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:43:5: error: 'constexpr' does not name a type
     constexpr unsigned int MAX_OPEN_FILES = 20;
     ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:43:5: note: C++11 'constexpr' only available with -std=c++11 or -std=gnu++11
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:44:5: error: 'constexpr' does not name a type
     constexpr unsigned int MAX_OPEN_DIRS = 20;
     ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:44:5: note: C++11 'constexpr' only available with -std=c++11 or -std=gnu++11
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:46:37: error: 'nullptr' was not declared in this scope
     CFATFileSystem *circle_fat_fs = nullptr;
                                     ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:48:24: error: 'MAX_OPEN_FILES' was not declared in this scope
     CircleFile fileTab[MAX_OPEN_FILES];
                        ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:49:24: error: 'MAX_OPEN_DIRS' was not declared in this scope
     _CIRCLE_DIR dirTab[MAX_OPEN_DIRS];
                        ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp: In function 'int {anonymous}::FindFreeFileSlot()':
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:55:23: error: ISO C++ forbids declaration of 'slot' with no type [-fpermissive]
      for (auto const& slot: fileTab)
                       ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:55:29: error: range-based 'for' loops are not allowed in C++98 mode
      for (auto const& slot: fileTab)
                             ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:55:29: error: 'fileTab' was not declared in this scope
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:57:16: error: request for member 'mCGlueIO' in 'slot', which is of non-class type 'const int'
       if (slot.mCGlueIO == nullptr)
                ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:57:28: error: 'nullptr' was not declared in this scope
       if (slot.mCGlueIO == nullptr)
                            ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp: In function 'int {anonymous}::FindFreeDirSlot()':
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:71:23: error: ISO C++ forbids declaration of 'slot' with no type [-fpermissive]
      for (auto const& slot: dirTab)
                       ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:71:29: error: range-based 'for' loops are not allowed in C++98 mode
      for (auto const& slot: dirTab)
                             ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:71:29: error: 'dirTab' was not declared in this scope
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:73:17: error: request for member 'mOpen' in 'slot', which is of non-class type 'const int'
       if (!slot.mOpen)
                 ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp: In function 'void {anonymous}::CGlueInitConsole(CConsole&)':
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:95:33: error: 'fileTab' was not declared in this scope
             CircleFile &stdin = fileTab[0];
                                 ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp: In function 'int _open(char*, int, int)':
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:148:26: error: 'fileTab' was not declared in this scope
    CircleFile& newFile = fileTab[slot];
                          ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp: In function 'int _close(int)':
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:183:57: error: 'MAX_OPEN_FILES' was not declared in this scope
  if (fildes < 0 || static_cast<unsigned int>(fildes) >= MAX_OPEN_FILES)
                                                         ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:189:21: error: 'fileTab' was not declared in this scope
  CircleFile& file = fileTab[fildes];
                     ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:190:23: error: 'nullptr' was not declared in this scope
  if (file.mCGlueIO == nullptr)
                       ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:199:18: error: 'nullptr' was not declared in this scope
  file.mCGlueIO = nullptr;
                  ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp: In function 'int _read(int, char*, int)':
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:217:57: error: 'MAX_OPEN_FILES' was not declared in this scope
  if (fildes < 0 || static_cast<unsigned int>(fildes) >= MAX_OPEN_FILES)
                                                         ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:223:21: error: 'fileTab' was not declared in this scope
  CircleFile& file = fileTab[fildes];
                     ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:224:23: error: 'nullptr' was not declared in this scope
  if (file.mCGlueIO == nullptr)
                       ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:232:21: error: 'GeneralFailure' is not a member of 'CGlueIO'
  if (read_result == CGlueIO::GeneralFailure)
                     ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp: In function 'int _write(int, char*, int)':
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:248:57: error: 'MAX_OPEN_FILES' was not declared in this scope
  if (fildes < 0 || static_cast<unsigned int>(fildes) >= MAX_OPEN_FILES)
                                                         ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:254:21: error: 'fileTab' was not declared in this scope
  CircleFile& file = fileTab[fildes];
                     ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:255:23: error: 'nullptr' was not declared in this scope
  if (file.mCGlueIO == nullptr)
                       ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:263:22: error: 'GeneralFailure' is not a member of 'CGlueIO'
  if (write_result == CGlueIO::GeneralFailure)
                      ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp: In function 'DIR* opendir(const char*)':
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:292:15: error: ISO C++ forbids declaration of 'slot' with no type [-fpermissive]
         auto &slot = dirTab[slotNum];
               ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:292:22: error: 'dirTab' was not declared in this scope
         auto &slot = dirTab[slotNum];
                      ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:294:14: error: request for member 'mOpen' in 'slot', which is of non-class type 'int'
         slot.mOpen = 1;
              ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:295:14: error: request for member 'mFirstRead' in 'slot', which is of non-class type 'int'
         slot.mFirstRead = 1;
              ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:297:17: error: cannot convert 'int*' to 'DIR* {aka _CIRCLE_DIR*}' in return
         return &slot;
                 ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp: In function 'dirent* do_readdir(DIR*, dirent*)':
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:325:26: error: 'nullptr' was not declared in this scope
                 result = nullptr;
                          ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp: In function 'dirent* readdir(DIR*)':
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:343:26: error: 'nullptr' was not declared in this scope
                 result = nullptr;
                          ^
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp: In function 'int readdir_r(DIR*, dirent*, dirent**)':
/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/libs/circle-newlib/libgloss/circle/io.cpp:361:24: error: 'nullptr' was not declared in this scope
                 *ode = nullptr;
                        ^
Makefile:100: recipe for target 'io.o' failed
make[4]: *** [io.o] Error 1
make[4]: Leaving directory '/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/build/circle-newlib/arm-none-circle/libgloss/circle'
Makefile:132: recipe for target 'stmp-bsp' failed
make[3]: *** [stmp-bsp] Error 2
make[3]: Leaving directory '/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/build/circle-newlib/arm-none-circle/libgloss'
Makefile:9527: recipe for target 'all-target-libgloss' failed
make[2]: *** [all-target-libgloss] Error 2
make[2]: Leaving directory '/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/build/circle-newlib'
Makefile:878: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/mnt/c/Users/Projetista01/bare_metal/circle-stdlib/build/circle-newlib'
Makefile:14: recipe for target 'newlib' failed
make: *** [newlib] Error 2

Make version:

Projetista01@DESENVOLVIMENTO02:/mnt/c/Users/Projetista01/bare_metal/circle-stdlib$ make --version
GNU Make 4.1
Compilado para x86_64-pc-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
Licença GPLv3+: GNU GPL versão 3 ou posterior <http://gnu.org/licenses/gpl.html>
Isto é um aplicativo livre: você pode alterá-lo e redistribui-lo livremente.
NÃO HÁ GARANTIAS, exceto o que for permitido por lei.

Toolchain version:

Projetista01@DESENVOLVIMENTO02:/mnt/c/Users/Projetista01/bare_metal/circle-stdlib$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (15:4.9.3+svn231177-1) 4.9.3 20150529 (prerelease)
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Linux info:

Projetista01@DESENVOLVIMENTO02:/mnt/c/Users/Projetista01/bare_metal/circle-stdlib$ cat /proc/version
Linux version 4.4.0-17134-Microsoft (Microsoft@Microsoft.com) (gcc version 5.4.0 (GCC) ) #137-Microsoft Thu Jun 14 18:46:00 PST 2018

Projetista01@DESENVOLVIMENTO02:/mnt/c/Users/Projetista01/bare_metal/circle-stdlib$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.5 LTS"
NAME="Ubuntu"
VERSION="16.04.5 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.5 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

What can I do to solve this?

Thanks,
Giovanni

As workaround, I added -std=c++14 to the following line, before running ./configure:

CPPFLAGS_FOR_TARGET="-I\"$CIRCLEHOME/include\" -I\"$TOPDIR/include\"" \

Result:
CPPFLAGS_FOR_TARGET="-I\"$CIRCLEHOME/include\" -I\"$TOPDIR/include\" -std=c++14" \

And then make ran without errors.

The oldest gcc/g++ version I tested with is 6.3.1, and that compiles C++14 by default. According to its documentation gcc/g++ 5.4.0 compiles C++98 by default, so yes, you will have to add this flag currently for compiling with this older gcc version.
It is probably a good idea to add this flag explicitly to avoid such confusion in the future.