How to add .c and .h files to a project for gcc

I have seen a couple of posts on the subject, but none seem to have been answered adequately. I am trying to add .c and .h files to my existing project. I added the .c files to the src directory and the .h files to the inc directory. I then opened the Project Wizard file and reran it. I am using VC++ 2003 for my IDE and am running OAT 4.11

The project compiles and runs in RTE mode but refuses does not create the necessary .o files for each source file. It only creates them for the initial .c file. I checked the .mak file in the root project directory and it includes all of the .c filesin the source list. The resulting dwl file contains the code for my initial application, which runs fine, but it does not execute any code contained in the new file.

Any help in how to add new files to a project would be very much appreciated.

The error I get is as follows:


Performing Makefile project actions
Loading Open AT IDE…
Loading project settings…
Building gcc_Telemetry_Rev0-1_H project…

Launch a full library or binary process

make: *** No rule to make target newfile.o', needed bygcc_Telemetry_Rev0-1_H’. Stop.

Build an X-MODEM binary  : 'gcc_Telemetry_Rev0-1_H.wpb.dwl'

… Convert gcc_Telemetry_Rev0-1_H.wpb in X-MODEM format …

genBin : Version v1a06 Copyright © WAVECOM
genBin : No Error

… Build gcc_Telemetry_Rev0-1_H.wpb.dwl …

AXFshrinker Version ( Aug 23 2002 , 17:44:58 )
updating: backtraces.axf (deflated 74%)

The make system used by Wavecom is very stupid.
Clean your out directory and it will make a new buildtree and properly get the new files.

I agree, it IS hmmm. rather stupid - at least for those beeing used to Linux’ make :wink:.
The wmmake thing worked well for me all the time. BTW, you can do this with wmmake all_clean.

And the behavior of OAT3.xx and 4.xx isn’t the same for parameters :imp:
But it won’t work, if the scs file is not telling the right thing.

I found a working way for me editing the scs file (which imo is the center point in a project). Here’s a scs file from my last Q2501 project:




<IncPath ref="0">./inc</IncPath>
<IncPath ref="1">./itf</IncPath>

<SrcPath ref="0">./src</SrcPath>



<SrcFile ref="0">unso.c</SrcFile>
<SrcFile ref="0">timer.c</SrcFile>
<SrcFile ref="0">sim.c</SrcFile>
<SrcFile ref="0">kbd.c</SrcFile>
<SrcFile ref="0">helper.c</SrcFile>
<SrcFile ref="0">gps.c</SrcFile>
<SrcFile ref="0">gprs.c</SrcFile>
<SrcFile ref="0">gpio.c</SrcFile>
<SrcFile ref="0">flash.c</SrcFile>
<SrcFile ref="0">fcm.c</SrcFile>
<SrcFile ref="0">cmd.c</SrcFile>
<SrcFile ref="0">appli.c</SrcFile>


<IncFile ref="0">dtl_all.h</IncFile>
<IncFile ref="0">grl_all.h</IncFile>
<IncFile ref="0">tcp_all.h</IncFile>
<IncFile ref="0">unso.h</IncFile>
<IncFile ref="0">types.h</IncFile>
<IncFile ref="0">timer.h</IncFile>
<IncFile ref="0">sim.h</IncFile>
<IncFile ref="0">proto_ser.h</IncFile>
<IncFile ref="0">proto_gprs.h</IncFile>
<IncFile ref="0">kbd.h</IncFile>
<IncFile ref="0">helper.h</IncFile>
<IncFile ref="0">gps.h</IncFile>
<IncFile ref="0">gprs.h</IncFile>
<IncFile ref="0">gpio.h</IncFile>
<IncFile ref="0">flash.h</IncFile>
<IncFile ref="0">fcm.h</IncFile>
<IncFile ref="0">commands.h</IncFile>
<IncFile ref="0">cmd.h</IncFile>










Yes, this is for Q2501/OAT3.xx.
And, yes, works with e.g. Q2686/OAT4.xx, too.

Brgds, Heinz

SDK 2.x - 3.10, 4.0 used one system.
SDK 3.12 and newer versions of 4 use a different system.

Judging by your post, you’re using 3.12 and newer 4.x.

To be honest I’ve never thougt too much about the exact oganization of a SCS file. IIRC last project was with OAT4.1, the actual one is with 3.10 (like stated in the scs file).

I’ve had a look at an example’s one, then creating an empty project and adapting the resulting one for my needs. Worked all the time, and I had no headache, cause the structure has changed :slight_smile:

And, to be honest, the OAT docs are %§#x@!
But anyway, it’s a start for working.


I was able to use the command line Wavecom tool and run wmmake with the -c option to create the file once. After that first time, it appears to work fine each time by just recompiling the program using the IDE.

Thanks to all for your help.

I’m new with OpenAT. I have the same problem.

make: *** No rule to make target al_gprs.o', needed bymingw_MTE_GPRS_H’. Stop.

I have created a new project thanks to Open AT Wizard and several source and header file. My source files are in \src directory (al_gprs.c / bl_gprs.c / appli.c) and my header files in \inc (al_gprs.h / bl_gprs.h)directory. But, when i compile, my source file and header file are not found. (I use Eclipse IDE)
In order to solve it i tried what is described above, but i don’t know where the commands wmmake should be typed. (in wavecom tool ?! what is it !)

Thanks for your help.


maybe you should delete all files and directories which was created by the OpenAT Wizard and recreate the project using the OpenAT wizards ‘Existing Project’ option.

The wmnew scripts should be started in the cygwin environment


ok, Thank you, it seems it work… but now when i compile i have the following errors :

[color=green]al_gprs.c:2:17: wip.h: No such file or directory
al_gprs.c:3:24: wip_bearer.h: No such file or directory
In file included from al_gprs.c:4:
al_gprs.c:87: error: WIP_BEV_IP_CONNECTED' undeclared (first use in this function) al_gprs.c:92: error:WIP_BEV_IP_DISCONNECTED’ undeclared (first use in this function)
al_gprs.c: In function AL_GPRS_Connexion': al_gprs.c:135: error:WIP_BOPT_NAME’ undeclared (first use in this function)
al_gprs.c:135: error: WIP_BOPT_IP_ADDR' undeclared (first use in this function) al_gprs.c:135: error:WIP_BOPT_END’ undeclared (first use in this function)

I used WIP plug in order to make an HTTP request. Thanks to OpenAT wizard i add WIP plug-in, and it appears under eclipse. But when i compile, it seems that wip.h or wip_bearer.h are not loaded (“no such file directory”).

So, how can i solve this problem ?

Thanks in advance.

(P.S. : for information (for those who doesn’t use WIP plug-in), WIP_BOPT_xxx and WIP_BEV_IP_xxx are several variables which appear in wip_bearer.h file)


do you added the WIP library to your project entering -otherlib WIP in the OpenAT Wizards wmnew script additional options field?



Yes i do.

I also add - #include “wip.h” - at the beginning of each *.c file for testing but, same errors arise !

i am tearing off my hair ! :confused:


If you add the option and recreate the project after that your first make should look like

 Software Generation Toolkit
 SGT_VER  = v1.2.12oat
 SGT_DIR  = /cygdrive/c/OpenAT/v3.13/IDE/IDE/1.02.03/sgt
 Scripts path for SGT :
 Type help_sgt for a list of SGT commands
Loading project settings...
Building gcc_OpenAT_Test project...
    Launch a full library or binary process
... Dependency graph is being built ...
... Build sources filtering rules for gcc_OpenAT_Test
Get ../../src/appli.c appli.c
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_global.h adl_global.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/basic/wm_types.h wm_types.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/basic/wm_stdio.h wm_stdio.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/basic/wm_remote.h wm_remote.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/basic/wm_list.h wm_list.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/basic/wm_snd.h wm_snd.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_str.h adl_str.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_port.h adl_port.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_at.h adl_at.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_traces.h adl_traces.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_memory.h adl_memory.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_error.h adl_error.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_flash.h adl_flash.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_gpio.h adl_gpio.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_bus.h adl_bus.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_fcm.h adl_fcm.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_AppliInit.h adl_AppliInit.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_UnSoHandler.h adl_UnSoHandler.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_RspHandler.h adl_RspHandler.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_CmdHandler.h adl_CmdHandler.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_CmdStackHandler.h adl_CmdStackHandler.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_TimerHandler.h adl_TimerHandler.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_sim.h adl_sim.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_sms.h adl_sms.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_call.h adl_call.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_gprs.h adl_gprs.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_safe.h adl_safe.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_ad.h adl_ad.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_gps.h adl_gps.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_rtc.h adl_rtc.h
 Use  YTPP
Get c:/OpenAT/v3.13/OS/3.12.05/ADL/itf/adl_dac.h adl_dac.h
 Use  YTPP
Get c:/OpenAT/v3.13/Plug-ins/WIP/2.00.12/WIP/itf/wip.h wip.h
 Use  YTPP
Get c:/OpenAT/v3.13/Plug-ins/WIP/2.00.12/WIP/itf/wip_net.h wip_net.h
 Use  YTPP
Get c:/OpenAT/v3.13/Plug-ins/WIP/2.00.12/WIP/itf/wip_inet.h wip_inet.h
 Use  YTPP
Get c:/OpenAT/v3.13/Plug-ins/WIP/2.00.12/WIP/itf/wip_channel.h wip_channel.h
 Use  YTPP
Get c:/OpenAT/v3.13/Plug-ins/WIP/2.00.12/WIP/itf/wip_tcp.h wip_tcp.h
 Use  YTPP
Get c:/OpenAT/v3.13/Plug-ins/WIP/2.00.12/WIP/itf/wip_udp.h wip_udp.h
 Use  YTPP
Get c:/OpenAT/v3.13/Plug-ins/WIP/2.00.12/WIP/itf/wip_ping.h wip_ping.h
 Use  YTPP
Get c:/OpenAT/v3.13/Plug-ins/WIP/2.00.12/WIP/itf/wip_bearer.h wip_bearer.h
 Use  YTPP
Get c:/OpenAT/v3.13/Plug-ins/WIP/2.00.12/WIP/itf/wip_file.h wip_file.h
 Use  YTPP
Get c:/OpenAT/v3.13/Plug-ins/WIP/2.00.12/WIP/itf/wip_ftp.h wip_ftp.h
 Use  YTPP
Get c:/OpenAT/v3.13/Plug-ins/WIP/2.00.12/WIP/itf/wip_http.h wip_http.h
 Use  YTPP
Get c:/OpenAT/v3.13/Plug-ins/WIP/2.00.12/WIP/itf/wip_smtp.h wip_smtp.h
 Use  YTPP
Get c:/OpenAT/v3.13/Plug-ins/WIP/2.00.12/WIP/itf/wip_pop3.h wip_pop3.h
 Use  YTPP
... Compiling appli.c
    Copy all needed library and object files
 Make links c:/OpenAT/v3.13/OS/3.12.05/ADL/gcc_wmadl_3. ../out/gcc_wmadl_3.
 Make links c:/OpenAT/v3.13/Plug-ins/WIP/2.00.12/WIP/gcc_wmwip_2. ../out/gcc_wmwip_2.
... Link step in progress ...
... Link gcc_OpenAT_Test.bin ...
    Update symbol file -> ../out/s
    Compress gcc_OpenAT_Test.bin to gcc_OpenAT_Test.wpb for DWLWIN application
... Make TMT directory ...
 Make links ../out/s ../out/tmt/symbolfiles/s
 Create ../out/tmt/config/DiagnoseTips.ini
 Create ../out/tmt/config/MokaWatches.ini
 Create ../out/tmt/config/RemoteDefs.ini
 Create ../out/tmt/gcc.wks
 No remote trace file found
 Create TMT archive file
ls: ../out/pro-lib.bin: No such file or directory
ls: ../out/pro-lib.bin: No such file or directory
    Make an archive file for TMT application
	zip warning: name not matched: ../out/tmt/e2p_csn.cso

zip error: Nothing to do! (../out/tmt/
	zip warning: name not matched: ../out/tmt/backtraces.axf

zip error: Nothing to do! (../out/tmt/
	zip warning: name not matched: ../out/tmt/backtraces64k.axf

zip error: Nothing to do! (../out/tmt/
	zip warning: name not matched: ../out/tmt/symbolfiles/s64k
	zip warning: name not matched: ../out/tmt/symbolfiles/e2p.h
  adding: s (152 bytes security) (deflated 67%)
enter new zip file comment (end with .):
current zip file comment is:
[Binary Information]

Stack Version = Open-AT

Customer Version = gcc

Binary Name = pro-lib.bin

Size = 

Date = Thu Jun 14 2007

Time = 00:00:00
enter new zip file comment (end with .):
current zip file comment is:
[Binary Information]

Stack Version = Open-AT

Customer Version = gcc

Binary Name = pro-lib.bin

Size = 

Date = Thu Jun 14 2007

Time = 00:00:00
enter new zip file comment (end with .):
  adding: DiagnoseTips.ini (152 bytes security) (deflated 87%)
current zip file comment is:
[Binary Information]

Stack Version = Open-AT

Customer Version = gcc

Binary Name = pro-lib.bin

Size = 

Date = Thu Jun 14 2007

Time = 00:00:00
enter new zip file comment (end with .):
  adding: MokaWatches.ini (152 bytes security) (deflated 67%)
current zip file comment is:
[Binary Information]

Stack Version = Open-AT

Customer Version = gcc

Binary Name = pro-lib.bin

Size = 

Date = Thu Jun 14 2007

Time = 00:00:00
enter new zip file comment (end with .):
  adding: RemoteDefs.ini (152 bytes security) (deflated 74%)
current zip file comment is:
[Binary Information]

Stack Version = Open-AT

Customer Version = gcc

Binary Name = pro-lib.bin

Size = 

Date = Thu Jun 14 2007

Time = 00:00:00
enter new zip file comment (end with .):
 Rename ../out/tmt/ ../out/tmt/
 Keep only the TMT archive file in ../out/tmt
 Remove ../out/tmt/e2p_csn.cso
 Remove ../out/tmt/sys_ftr.ho
 Remove ../out/tmt/wm_ftr.ho
 Remove ../out/tmt/remtrace.csv
 Remove ../out/tmt/backtraces.axf
 Remove ../out/tmt/backtraces64k.axf
 Remove ../out/tmt/remtrace_full.csv
 Remove ../out/tmt/symbolfiles directory
 Remove ../out/tmt/config directory
... Create binary in X-MODEM format from gcc_OpenAT_Test_MemoryLeaks.bin ...
Add a checksum to gcc_OpenAT_Test.sgt

(AddCheck Version v2.0.4 Copyright (c) WAVECOM) [Feb 14 2003, 15:50:57]

Time modified : Thu Jun 14 07:52:51 2007
... Build gcc_OpenAT_Test.dwl ...

genBin : Version v1a06 Copyright (c) WAVECOM
genBin : No Error
Cleaning temporary files       (*.tmp / *.trc)
 Generation done with SGT v1.2.12oat
 Binary files created :
 Binary files in Xmodem format :
 Compiler keyword     : gcc_arm
 Compiler release     : GCC ARM
 C compiler path      : c:/OpenAT/v3.13/IDE/GCC/
 ASM compiler path    : c:/OpenAT/v3.13/IDE/GCC/
 customer release      : gcc
 Name of the current directory : gcc
 Log file             : ../out/gcc_OpenAT_Test_status.log
 Release of the environement : CYGWIN_NT-5.0 epc360 1.5.10(0.116/4/2) 2004-05-25 22:07 i686 unknown unknown Cygwin
    Build an X-MODEM binary  : 'gcc_OpenAT_Test.wpb.dwl'
... Convert gcc_OpenAT_Test.wpb in X-MODEM format ...

genBin : Version v1a06 Copyright (c) WAVECOM
genBin : No Error
... Build gcc_OpenAT_Test.wpb.dwl ...
AXFshrinker Version ( Aug 23 2002 , 17:44:58 ) 

  adding: backtraces.axf (deflated 76%)

so you should find the files in the output directory of your project. This Example was generated with OpenAT v3.13 using the gcc compiler, but other OpenAT versions should be similar.


Thank you Ralf for your help. I have contacted with the wavecom support, and they described to me how adding source and header file in a new project. I post the solution in order to help other persons who will meet the same errors :

[color=brown]To use already defined .c and .h files, create a blank project directory.
Create inside it a directory named « inc ».
Put the .h file in it.
Create a directory named “src”.
Put the .c file in it.

For example, for a project directory named “my_project” :

Then launch the wizard and select “existing project” and “OK”.
A new project will be created with the header file / function of yours.

In addition, i’m a beginner in C language and on wavecom platform. So, this two parameters produce several beginner errors. In fact, it seems that i also forgot an include (as “#include wip_bearer.h”) at the beginning of my al_gprs.h file.

So, now it compile fine.

Thank you for your help ralf !

Best regards.

that is not working if *.c or *.h files are in a directory, like src/common/crc32.c, src/serial/rs232.c etc.

It works perfectly as described - but your situation is not as it describes!

If you want the Project Wizard to find files in other than the standard ‘src’ and ‘inc’ subfolders, then you need to specify them explicitly:

You do that by adding a -src and/or -inc option in the ‘wmnew script additional options’ box; eg:

For details of other options that can go in the ‘wmnew script additional options’ box, Look in the Tools Manual in the section about Command-Line Scripts

Hi awneil,

thanks for reply! everything seems working fine, but there is a tiny problem:

my folder structure is:

… main.c
… compress.c
… crc32.c
… flash_manager.c

(and corresponding inc folders…) I adding -src & -inc parameters…

-src ./src/common -inc ./inc/common

now there are duplicate folders in eclipse…
do you know how can I get rid of duplicate folders without moving them out of src?


  • Gokhan