Volk build issues on Cygwin

Due mainly to circumstances beyond my control, it is now possible to
build
the volk library on Cygwin :-). Previously, there was no support for
C99
complex data types in the Cygwin library, but this was fixed by the
release
of Cygwin 1.7.8-1 this past Tuesday.

The remaining issues can be addressed by patches or workarounds:

(1) configure fails while testing for -lboost_unit_test_framework
because
of the presence of “-Wl,–enable-runtime-pseudo-reloc” in LDFLAGS. I’m
not
sure why it is a problem, but I don’t think these flags are needed at
all in
this situation.

(2) C++ libraries are not found because
volk/config/gcc_version_workaround.m4 specifies -nostdinc++ without
knowing
where to find the libraries on Cygwin. My suggestion is to exempt
Cygwin
from the action of gcc_version_workaround.m4.

Changes to fix both of these (for Cygwin, anyway) are in the attached
patch
file.

(3) volk_16i_x4_quad_max_star_16i_a16.h triggers an internal compiler
error
in the Cygwin gcc 3.4.4-999. One workaround is to remove “-O2” from the
Makefile. (An obvious suggestion is to use a newer compiler, but the
last
time I tried it Cygwin gcc 4.x couldn’t handle the exceptions generated
while looking for a working circular buffer strategy. I will check
again
from time to time to see if the latest compiler works.)

The bottom line is that we can now build volk (and the GNU Radio ‘next’
branch) on Cygwin.

– Don W.

On Fri, Mar 4, 2011 at 7:52 PM, Don W. [email protected]
wrote:

this situation.
in the Cygwin gcc 3.4.4-999. One workaround is to remove “-O2” from the
Makefile. (An obvious suggestion is to use a newer compiler, but the last
time I tried it Cygwin gcc 4.x couldn’t handle the exceptions generated
while looking for a working circular buffer strategy. I will check again
from time to time to see if the latest compiler works.)

The bottom line is that we can now build volk (and the GNU Radio ‘next’
branch) on Cygwin.

– Don W.

Excellent, Don, thanks!

Tom

On 05.03.2011 01:52, Don W. wrote:

Due mainly to circumstances beyond my control, it is now possible to build
the volk library on Cygwin :-). Previously, there was no support for C99
complex data types in the Cygwin library, but this was fixed by the release
of Cygwin 1.7.8-1 this past Tuesday.

Thanks. I updated Cygwin and now the current git/main Gnuradio builds
out of the box.
(after installing all dependencies with Cygwin, cygport or manually)

The functionality was Ok, examples are working, with synthetic signals
as well as with live audio in/out. GRC is working with the wx widgets.
Waterfall, FFT sinks, constellation plots … all working.

The git/next branch compiles (incl. volk), but make check fails and
make install fails (after installing most of it), too.

Unfortunately, grc always tells me it’s a “v3.3.1git-974-g942e2685”
version,
although I removed all traces of previous versions.
Are the GRC version strings updated in the git versions?
According to the “Process Monitor”, the “3-4git” DLLs are loaded
(after the partial git/next install, before it was 3-3-2git)

The remaining issues can be addressed by patches or workarounds:
(1) configure fails while testing for -lboost_unit_test_framework because
of the presence of “-Wl,–enable-runtime-pseudo-reloc” in LDFLAGS. I’m not
sure why it is a problem, but I don’t think these flags are needed at all in
this situation.

I installed boost 1.43 and got no errors this time.
Last time I tried, it stopped at some boost unit test code.

(2) C++ libraries are not found because
volk/config/gcc_version_workaround.m4 specifies -nostdinc++ without knowing
where to find the libraries on Cygwin. My suggestion is to exempt Cygwin
from the action of gcc_version_workaround.m4.
Changes to fix both of these (for Cygwin, anyway) are in the attached patch
file.

I had no problems with this (GCC 4).

(3) volk_16i_x4_quad_max_star_16i_a16.h triggers an internal compiler error
in the Cygwin gcc 3.4.4-999. One workaround is to remove “-O2” from the
Makefile. (An obvious suggestion is to use a newer compiler, but the last
time I tried it Cygwin gcc 4.x couldn’t handle the exceptions generated
while looking for a working circular buffer strategy. I will check again
from time to time to see if the latest compiler works.)

The first GCC 4 release came out in 2005. I used GCC 4 very early
for my projects. It’s important for OpenMP parallelization.
Unfortunately Cygwin still uses GCC 3 as standard compiler.
But they offer GCC 4 as package in their setup.exe.
In the early years, there were many incompatibilities with GCC 4,
because it’s more strict with the standard, and also had bugs.
But now it’s very mature. I think, you should just forget about GCC 3.

The bottom line is that we can now build volk (and the GNU Radio ‘next’
branch) on Cygwin.

It’s great to have a functional Gnuradio on the Windows platform.
UHD did not build, but I don’t have UHD compatible devices, anyway.
I’m still looking for alternative (cheap) hardware, that can be made
gnuradio compatible and integrated in the UHD driver.

On Mon, Mar 7, 2011 at 05:34, Moeller [email protected] wrote:

Unfortunately, grc always tells me it’s a “v3.3.1git-974-g942e2685” version,
although I removed all traces of previous versions.
Are the GRC version strings updated in the git versions?

Unfortunately, this is an artifact of how ‘git describe’ works, which
is what we use to calculate the version string on non-release
versions. It finds the shortest path back to the last tag in the
tree. When we merge from master → next, the shortest path backwards
becomes the last tag in the master branch, which is ‘3.3.1git’.

I see if I can work out a way to fix this when we create the new
‘next’ branch after the 3.4.0 release.

Johnathan