You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@corinthia.apache.org by Franz de Copenhague <fr...@outlook.com> on 2015/03/10 05:19:41 UTC

C99 mode error building in Cloud9

I am trying to build DocFormats in Cloud9 and the make command fails with C99 mode in for loops. I have verified that CMakeList.txt file contains -std=c99 in this if block

if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
    set(CMAKE_C_FLAGS "-std=c99 -D_GNU_SOURCE -g")
    set(LIBS ${LIBS} m pthread xml2 z SDL2 SDL2_image)
endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")

I am doing this:

git clone https://git-wip-us.apache.org/repos/asf/incubator-corinthia.git incubator-corinthia
cd incubator-corinthia/
sudo apt-get install -y cmake
mkdir build
cd build/
export DOCFORMATS_DIR=../DocFormats/
cmake -G "Unix Makefiles" $DOCFORMATS_DIR
make


Below you can see the commands that I have executed and their outputs

franzdecopenhague@demo-project:~/workspace (master) $ git clone https://git-wip-us.apache.org/repos/asf/incubator-corinthia.git incubator-corinthia
Cloning into 'incubator-corinthia'...
remote: Counting objects: 11946, done.
remote: Compressing objects: 100% (6404/6404), done.
remote: Total 11946 (delta 6633), reused 10066 (delta 5264)
Receiving objects: 100% (11946/11946), 3.72 MiB | 3.65 MiB/s, done.
Resolving deltas:  48% (3184/6633)   
Resolving deltas: 100% (6633/6633), done.
Checking connectivity... done.

franzdecopenhague@demo-project:~/workspace (master) $ cd incubator-corinthia/

franzdecopenhague@demo-project:~/workspace/incubator-corinthia (master) $ sudo apt-get install -y cmake
Reading package lists... Done
Building dependency tree       
Reading state information... Done
cmake is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 12 not upgraded.

franzdecopenhague@demo-project:~/workspace/incubator-corinthia (master) $ mkdir build

franzdecopenhague@demo-project:~/workspace/incubator-corinthia (master) $ cd build/

franzdecopenhague@demo-project:~/workspace/incubator-corinthia/build (master) $ export DOCFORMATS_DIR=../DocFormats/

franzdecopenhague@demo-project:~/workspace/incubator-corinthia/build (master) $ cmake -G "Unix Makefiles" $DOCFORMATS_DIR
-- The C compiler identification is GNU 4.8.2
-- The CXX compiler identification is GNU 4.8.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ubuntu/workspace/incubator-corinthia/build

franzdecopenhague@demo-project:~/workspace/incubator-corinthia/build (master) $ make
Scanning dependencies of target api
[  1%] Building C object api/CMakeFiles/api.dir/src/Formats.c.o
[  2%] Building C object api/CMakeFiles/api.dir/src/Operations.c.o
[  3%] Building C object api/CMakeFiles/api.dir/tests/APITests.c.o
[  3%] Built target api
Scanning dependencies of target core
[  3%] Building C object core/CMakeFiles/core.dir/src/common/DFBDT.c.o
/home/ubuntu/workspace/incubator-corinthia/DocFormats/core/src/common/DFBDT.c: In function ‘BDTContainerGet’:
/home/ubuntu/workspace/incubator-corinthia/DocFormats/core/src/common/DFBDT.c:36:9: error: ‘for’ loop initial declarations are only allowed in C99 mode
         for (DFNode *child = concrete->first; child != NULL; child = child->next) {
         ^


Any idea how to fix it?

Thanks,
JD
 		 	   		  

Re: C99 mode error building in Cloud9

Posted by jan i <ja...@apache.org>.
Hi again.

I did a short search on google for the error you have.

All entries mention (as I expected) that you need to set --std=C99 since
this is set in the CMakeList.txt (the if you show), it seems very likely
that you are using e.g. a freebsd system, which is another
CMAKE_SYSTEM_NAME and therefore the --std=C99 is not activated.

To make a proof of that, put the "if" and the "endif" under comments and
rerun cmake, if the error disapears you need to correct the "if". If you
mail a patch, then I will review it and apply it.

There are a couple of other places where we ask if "linux" they need to be
adapted as well, but that is not for compiling but for linking.

rgds
jan

On 10 March 2015 at 08:02, jan i <ja...@apache.org> wrote:

>
>
> On 10 March 2015 at 05:19, Franz de Copenhague <
> franzdecopenhague@outlook.com> wrote:
>
>> I am trying to build DocFormats in Cloud9 and the make command fails with
>> C99 mode in for loops. I have verified that CMakeList.txt file contains
>> -std=c99 in this if block
>>
>> if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
>>     set(CMAKE_C_FLAGS "-std=c99 -D_GNU_SOURCE -g")
>>     set(LIBS ${LIBS} m pthread xml2 z SDL2 SDL2_image)
>> endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
>>
>> I am doing this:
>>
>> git clone https://git-wip-us.apache.org/repos/asf/incubator-corinthia.git
>> incubator-corinthia
>> cd incubator-corinthia/
>> sudo apt-get install -y cmake
>> mkdir build
>> cd build/
>> export DOCFORMATS_DIR=../DocFormats/
>> cmake -G "Unix Makefiles" $DOCFORMATS_DIR
>> make
>>
>>
>> Below you can see the commands that I have executed and their outputs
>>
>> franzdecopenhague@demo-project:~/workspace (master) $ git clone
>> https://git-wip-us.apache.org/repos/asf/incubator-corinthia.git
>> incubator-corinthia
>> Cloning into 'incubator-corinthia'...
>> remote: Counting objects: 11946, done.
>> remote: Compressing objects: 100% (6404/6404), done.
>> remote: Total 11946 (delta 6633), reused 10066 (delta 5264)
>> Receiving objects: 100% (11946/11946), 3.72 MiB | 3.65 MiB/s, done.
>> Resolving deltas:  48% (3184/6633)
>> Resolving deltas: 100% (6633/6633), done.
>> Checking connectivity... done.
>>
>> franzdecopenhague@demo-project:~/workspace (master) $ cd
>> incubator-corinthia/
>>
>> franzdecopenhague@demo-project:~/workspace/incubator-corinthia (master)
>> $ sudo apt-get install -y cmake
>> Reading package lists... Done
>> Building dependency tree
>> Reading state information... Done
>> cmake is already the newest version.
>> 0 upgraded, 0 newly installed, 0 to remove and 12 not upgraded.
>>
>> franzdecopenhague@demo-project:~/workspace/incubator-corinthia (master)
>> $ mkdir build
>>
>> franzdecopenhague@demo-project:~/workspace/incubator-corinthia (master)
>> $ cd build/
>>
>> franzdecopenhague@demo-project:~/workspace/incubator-corinthia/build
>> (master) $ export DOCFORMATS_DIR=../DocFormats/
>>
>> franzdecopenhague@demo-project:~/workspace/incubator-corinthia/build
>> (master) $ cmake -G "Unix Makefiles" $DOCFORMATS_DIR
>> -- The C compiler identification is GNU 4.8.2
>> -- The CXX compiler identification is GNU 4.8.2
>> -- Check for working C compiler: /usr/bin/cc
>> -- Check for working C compiler: /usr/bin/cc -- works
>> -- Detecting C compiler ABI info
>> -- Detecting C compiler ABI info - done
>> -- Check for working CXX compiler: /usr/bin/c++
>> -- Check for working CXX compiler: /usr/bin/c++ -- works
>> -- Detecting CXX compiler ABI info
>> -- Detecting CXX compiler ABI info - done
>> -- Configuring done
>> -- Generating done
>> -- Build files have been written to:
>> /home/ubuntu/workspace/incubator-corinthia/build
>>
>> franzdecopenhague@demo-project:~/workspace/incubator-corinthia/build
>> (master) $ make
>> Scanning dependencies of target api
>> [  1%] Building C object api/CMakeFiles/api.dir/src/Formats.c.o
>> [  2%] Building C object api/CMakeFiles/api.dir/src/Operations.c.o
>> [  3%] Building C object api/CMakeFiles/api.dir/tests/APITests.c.o
>> [  3%] Built target api
>> Scanning dependencies of target core
>> [  3%] Building C object core/CMakeFiles/core.dir/src/common/DFBDT.c.o
>> /home/ubuntu/workspace/incubator-corinthia/DocFormats/core/src/common/DFBDT.c:
>> In function ‘BDTContainerGet’:
>> /home/ubuntu/workspace/incubator-corinthia/DocFormats/core/src/common/DFBDT.c:36:9:
>> error: ‘for’ loop initial declarations are only allowed in C99 mode
>>          for (DFNode *child = concrete->first; child != NULL; child =
>> child->next) {
>>          ^
>>
>>
>> Any idea how to fix it?
>>
>
> I just had a look at the code, and that works with C99.
>
> I think the problem might be the CMAKE_SYSTEM_NAME, it might not be
> "Linux" as you expect
>
> Try to:
> 1) clean your build directory
> 2) add the line:   MESSAGE( ${CMAKE_SYSTEM_NAME} ) in front of the IF
> 3) Rerun cmake
> 4) check if Linux is the output, my quess is it will say something
> different.
>
> rgds
> jan i.
>
>
>> Thanks,
>> JD
>>
>
>
>

Re: C99 mode error building in Cloud9

Posted by jan i <ja...@apache.org>.
On Tuesday, March 10, 2015, Franz de Copenhague <
franzdecopenhague@outlook.com> wrote:

> >
> > Try to:
> > 1) clean your build directory
> > 2) add the line:   MESSAGE( ${CMAKE_SYSTEM_NAME} ) in front of the IF
> > 3) Rerun cmake
> > 4) check if Linux is the output, my quess is it will say something
> > different.
> >
> > rgds
> > jan i.
> >
> >
>
> It is Linux.
> The problem was pointing to ../DocFormats/CMakeLists.txt instead of
> pointing to ../CMakeLists.txt
> cd buildexport DOCFORMATS_DIR=../DocFormats/cmake -G "Unix Makefiles"
> $DOCFORMATS_DIR
> now is working with:
> cd buildcmake -G "Unix Makefiles" ..
> -JD


super.

jan i

>



-- 
Sent from My iPad, sorry for any misspellings.

RE: C99 mode error building in Cloud9

Posted by Franz de Copenhague <fr...@outlook.com>.
> 
> Try to:
> 1) clean your build directory
> 2) add the line:   MESSAGE( ${CMAKE_SYSTEM_NAME} ) in front of the IF
> 3) Rerun cmake
> 4) check if Linux is the output, my quess is it will say something
> different.
> 
> rgds
> jan i.
> 
> 

It is Linux.
The problem was pointing to ../DocFormats/CMakeLists.txt instead of pointing to ../CMakeLists.txt
cd buildexport DOCFORMATS_DIR=../DocFormats/cmake -G "Unix Makefiles" $DOCFORMATS_DIR
now is working with:
cd buildcmake -G "Unix Makefiles" ..
-JD 		 	   		  

Re: C99 mode error building in Cloud9

Posted by jan i <ja...@apache.org>.
On 10 March 2015 at 05:19, Franz de Copenhague <
franzdecopenhague@outlook.com> wrote:

> I am trying to build DocFormats in Cloud9 and the make command fails with
> C99 mode in for loops. I have verified that CMakeList.txt file contains
> -std=c99 in this if block
>
> if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
>     set(CMAKE_C_FLAGS "-std=c99 -D_GNU_SOURCE -g")
>     set(LIBS ${LIBS} m pthread xml2 z SDL2 SDL2_image)
> endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
>
> I am doing this:
>
> git clone https://git-wip-us.apache.org/repos/asf/incubator-corinthia.git
> incubator-corinthia
> cd incubator-corinthia/
> sudo apt-get install -y cmake
> mkdir build
> cd build/
> export DOCFORMATS_DIR=../DocFormats/
> cmake -G "Unix Makefiles" $DOCFORMATS_DIR
> make
>
>
> Below you can see the commands that I have executed and their outputs
>
> franzdecopenhague@demo-project:~/workspace (master) $ git clone
> https://git-wip-us.apache.org/repos/asf/incubator-corinthia.git
> incubator-corinthia
> Cloning into 'incubator-corinthia'...
> remote: Counting objects: 11946, done.
> remote: Compressing objects: 100% (6404/6404), done.
> remote: Total 11946 (delta 6633), reused 10066 (delta 5264)
> Receiving objects: 100% (11946/11946), 3.72 MiB | 3.65 MiB/s, done.
> Resolving deltas:  48% (3184/6633)
> Resolving deltas: 100% (6633/6633), done.
> Checking connectivity... done.
>
> franzdecopenhague@demo-project:~/workspace (master) $ cd
> incubator-corinthia/
>
> franzdecopenhague@demo-project:~/workspace/incubator-corinthia (master) $
> sudo apt-get install -y cmake
> Reading package lists... Done
> Building dependency tree
> Reading state information... Done
> cmake is already the newest version.
> 0 upgraded, 0 newly installed, 0 to remove and 12 not upgraded.
>
> franzdecopenhague@demo-project:~/workspace/incubator-corinthia (master) $
> mkdir build
>
> franzdecopenhague@demo-project:~/workspace/incubator-corinthia (master) $
> cd build/
>
> franzdecopenhague@demo-project:~/workspace/incubator-corinthia/build
> (master) $ export DOCFORMATS_DIR=../DocFormats/
>
> franzdecopenhague@demo-project:~/workspace/incubator-corinthia/build
> (master) $ cmake -G "Unix Makefiles" $DOCFORMATS_DIR
> -- The C compiler identification is GNU 4.8.2
> -- The CXX compiler identification is GNU 4.8.2
> -- Check for working C compiler: /usr/bin/cc
> -- Check for working C compiler: /usr/bin/cc -- works
> -- Detecting C compiler ABI info
> -- Detecting C compiler ABI info - done
> -- Check for working CXX compiler: /usr/bin/c++
> -- Check for working CXX compiler: /usr/bin/c++ -- works
> -- Detecting CXX compiler ABI info
> -- Detecting CXX compiler ABI info - done
> -- Configuring done
> -- Generating done
> -- Build files have been written to:
> /home/ubuntu/workspace/incubator-corinthia/build
>
> franzdecopenhague@demo-project:~/workspace/incubator-corinthia/build
> (master) $ make
> Scanning dependencies of target api
> [  1%] Building C object api/CMakeFiles/api.dir/src/Formats.c.o
> [  2%] Building C object api/CMakeFiles/api.dir/src/Operations.c.o
> [  3%] Building C object api/CMakeFiles/api.dir/tests/APITests.c.o
> [  3%] Built target api
> Scanning dependencies of target core
> [  3%] Building C object core/CMakeFiles/core.dir/src/common/DFBDT.c.o
> /home/ubuntu/workspace/incubator-corinthia/DocFormats/core/src/common/DFBDT.c:
> In function ‘BDTContainerGet’:
> /home/ubuntu/workspace/incubator-corinthia/DocFormats/core/src/common/DFBDT.c:36:9:
> error: ‘for’ loop initial declarations are only allowed in C99 mode
>          for (DFNode *child = concrete->first; child != NULL; child =
> child->next) {
>          ^
>
>
> Any idea how to fix it?
>

I just had a look at the code, and that works with C99.

I think the problem might be the CMAKE_SYSTEM_NAME, it might not be "Linux"
as you expect

Try to:
1) clean your build directory
2) add the line:   MESSAGE( ${CMAKE_SYSTEM_NAME} ) in front of the IF
3) Rerun cmake
4) check if Linux is the output, my quess is it will say something
different.

rgds
jan i.


> Thanks,
> JD
>