Pololu Robotics & Electronics
Menu
My account Comments or questions? About Pololu Contact Ordering information Distributors

Pololu Forum

Small make issue

OK the Wixels I ordered just arrived. Thanks. I managed to compile the apps in the SDK, but I wanted to make a new app and wanted to call “make clean”. I got this error

C:\Projects\wixel-sdk-master>make clean
apps/test_random/test_random.d:1: *** multiple target patterns.  Stop.

If I manually go into the test_random folder and delete stuff, I then get

C:\Projects\wixel-sdk-master>make clean
apps/wireless_adc_rx/wireless_adc_rx.d:1: *** multiple target patterns.  Stop.

Even if I delete all the apps except my new app, if I want to make a change to it, the same error occurs

C:\Projects\wixel-sdk-master>make all
apps/testestest/testestest.d:1: *** multiple target patterns.  Stop.

What’s wrong? I am looking at the target patterns and I am not spotting anything that looks wrong

My version of Make is:

C:\Projects\wixel-sdk-master>make --version
GNU Make 4.0
Built for x86_64-pc-cygwin
Copyright (C) 1988-2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please help

Meanwhile I did find a few other Wixel makefiles around this forum, and I can probably write my own, but still it seems like Pololu wanted a “just works” experience and I’m not getting it.

Hello.

I think what is happening is that when you first run make, the compiler generates dependency files (which have the .d extension) that have lines like this:

C:/Program\ Files/SDCC/bin/../include/stdio.h:

When you run make a second time, your version of Make was confused by lines like that because normally a line like that would use one colon to separate the name of the target from the names of its dependencies, and that line has two colons. I have fixed the latest version of the Wixel SDK to generate the dependency files in a different way so that the SDCC header files are not listed, thus avoiding this problem. (There is no reason to list the SDCC header files in the dependencies; they don’t change very often and their changes don’t usually require our code to be recompiled.)

I tried to reproduce your issue here using Cygwin but was unable to. The version of Make I was using in Cygwin is one version newer than yours:

$ make -v
GNU Make 4.1
Built for i686-pc-cygwin
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

You should be able to fix this problem by either updating Make or by updating to the latest version of the Wixel SDK.

–David

Ah I see, forcing it to use your make instead of my make fixed it

By the way, your installer put the path to your binaries to the end of PATH, which meant that my other version superseded it.