Rebuilding the WPILib?

So I’d like to keep my own development copy of the C++ WPILib, but I’m having some trouble getting it to build as a project in WindRiver. I gather the following needs to be done

  1. Download source (done)
  2. Import into WindRiver (done)
  3. Build…?
  4. Run the update script in %root%/Scripts

When I attempt to build the project, nothing happens.
When I attempt to open a workbench shell and use make to build the project, no errors occur but nothing happens.

At this point I’m tempted to just make my own Rakefile (ruby version of make) that uses the ccppc compiler and linked, but I’m wondering what the ‘correct’ way of building the WPI library is.

Why do you need to rebuild WPILib unless you want to modify it? I keep my own copy of the WPILib sources too but for reference only. I did find some scenarios that I need to change the lib but I managed to do it without changing their sources. I either create a new object that inherits the WPILib object and overrides what I need to modify or I just make a copy of the source file and make it part of my project.

Sharing patches with the community is a bonus in my opinion. And why not? This should be something more than possible.

If i may ask, where can i find the sources to the WPIlib?


Isn’t that only helpful if one has already downloaded the sources?
I think the question may have been about where to find the sources if you haven’t downloaded them.

Hmm, I just found it in that directory. So I am assuming it either came with the WindRiver software installation or the WorkBenchUpdate that I applied.

It came with the workbench update for me. You can also find it on the WPILib project on FIRST Forge in the Subversion repo.

Back to the original task at hand - maybe Joe Hershberger could shed some light?

Extract the WPILib source to C:\WindRiver\workspace\WPILib. In Workbench, go to File>>Import. Select General>>Existing Projects Into Workspace and click Next. Next to the Select root directory: field, click Browse. Select the C:\WindRiver\workspace\ path. Check the WPILib project in the list box and click finish. The project should now be in Workbench with any other projects you have.

Build like any other… right click on the project and select Build Project.


New this year, the corresponding WPILib source code and reference documentation is installed with each update. You no longer have to hunt for it online only to find that we forgot to post it. You also won’t find out-of-date reference doxygen help installed with the update. Each reference help file now includes the update revision number in the title page so you know which release it is documenting.


Thank you, interesting how it didn’t work even when I changed the paths in the Makefile.


I followed your process for importing the project and it seemed to go smoothly however when I build the project no WPILib.a is produced. I can see WPILib.a as a build target for PPC603gnu and the build console is indicating that it is building the target but the WPILib.a doesn’t appear under C:\windriver\workspace\WPILib\PPC603gnu. There is a Makefile in this directory. Please help if you can. Here is the build console output:

Build Started in Project ‘WPILib’: 2011-01-20 11:40:41
Generation of makefiles started.
Generation of makefiles finished (Elapsed Time: 00:02).
Platform: Wind River VxWorks 6.3
Command: make --no-print-directory BUILD_SPEC=PPC603gnu DEBUG_MODE=1 TRACE=1 clean all
Working Directory: C:/windriver/workspace/WPILib/PPC603gnu
make: removing targets and objects of C:/windriver/workspace/WPILib/PPC603gnu
make: built targets of C:/windriver/workspace/WPILib/PPC603gnu
Build Finished in Project ‘WPILib’: 2011-01-20 11:40:43 (Elapsed Time: 00:02)

Looking at this output myself now I guess it looks like it is only running a clean?? Do i need to add a build target to make it “make all” somehow?


Try deleting the build output dir and building again.

Thanks for your reply. I deleted this directory C:\windriver\workspace\WPILib\PPC603gnu, right-clicked the project in the workbench and selected Build Project. The output dir was created again with the Makefile in it but no binary. I attached the Makefile if that helps… (5.45 KB) (5.45 KB)

Solved. After a long day of troubleshooting I closed the workbench and re-opened it and whalah! it built. hahahahhahahahaha…not funny.

Anyway I did go through the process of importing the project trying to build, not building, closing the workbench and re-opening to fix it one more time to confirm that this does happen every time. Not sure if it just my machine but it probably would happen to others.

One more question. When building I see an error for each file that is compiled, “process_begin: CreateProcess((null), svnversion -n …, …) failed.” Its only a nuisance, the lib still gets built, but if there is an easy way to change a setting or something it would be nice.

Install a Subversion client such as SlikSVN.

You can either live with it or you can edit the compiler settings for the project to remove the call. That is how we automatically read the current SVN revision and build it into the library. If you are not using the SVN repo (instead using the packaged source) then this is your only option. If you are using the SVN server at FIRST Forge, then you just need to install SlikSVN.


I am using the packaged source because of this statement on the WPILib FAQ’s on FirstForge:

The source code on the SVN server does not include the source for the same revision that was released in an update. What’s wrong?

This is just because we’re not as fast at merging the source code to the public SVN repository. Check back soon and it should be up to date

I can’t find where to turn off the SVN sync. I am looking in “Project->Properties->Build Properties” mostly (as well as the other items in Project->Properties) but I cannot find anything that says “repository” or svn or anything like that. Can you point me to the option? Thanks again for you help.

In Project Properties->Build Properties->Build Tools tab->Build Tool: C+±Compiler->Build spec specific settings->Command: you need to remove the following text:

-D'SVN_REV="$(shell svnversion -n ..)"'


That is not a statement of fact. It is a FAQ. Sorry if that’s misleading. It’s saying that if you discover that the SVN source is not up to date at some point, you have other options. It is up to date right now.