Latest tip fails to build


#1

hey there,

without changing anything at all, doing a git pull and rebuild causes a build failure:

In file included from ../../../modules/juce_audio_basics/juce_audio_basics.cpp:49:0: /usr/lib/gcc/i686-linux-gnu/4.6/include/emmintrin.h:32:3: error: #error "SSE2 instruction set not enabled" In file included from ../../../modules/juce_audio_basics/juce_audio_basics.cpp:63:0: ../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp: In function 'void juce::FloatVectorHelpers::mmEmpty()': ../../../modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp:49:19: error: '_mm_empty' was not declared in this scope
(then lots of errors related to this follow)

I understand that building with SSE2 might be desirable, but we should still be allowed to build Juce without it.
I guess this will likely fail on debug builds too.


#2

The compiled code will run on machines without SSE2, but I honestly wouldn’t expect anyone to be building it on a CPU that doesn’t support SSE2! Is that what you’re doing?


#3

I’m using an automated build system to compile software for me (Ubuntu PPA in this case).
You can see the whole build log here:
https://launchpadlibrarian.net/132833063/buildlog_ubuntu-precise-i386.juce_2.0.36%2Bgit20130303-0~precise1_FAILEDTOBUILD.txt.gz

The build host is simply a 32bit or 64bit VM on launchpad servers.
The VM selection is kinda random, using whatever one is available.


#4

Well, if you’re building on some kind of ancient Pentium machine, maybe you need to enable some compiler flags to explicitly force it to handle SSE instructions. Any version of gcc less than 10 years old should be able to do that if you set it up correctly, but it’s not something that can be done in the code itself, you’d need to sort out your build environment.


#5

Yep, I was already thinking about that.

My defaults build flags I use for personal builds are:

What bothers me a little is that the code is failing to build by default…

Anyway, I’ll try to build locally and report back.


#6

hm, locally it builds fine even without SSE enabled (debug build).
I assume it’s because I run 64bit.

The builds that failed are all 32bit. 64bit ones are still on queue to build later (~3 hours)


#7

No, all of the SSE2 stuff existed long before 64-bit chips came out.

No, all of the SSE2 stuff existed long before 64-bit chips came out.


#8

You need to use -msse2 to enable sse2 instructions (they are always turned on on x86_64)


#9

Yes, but my question is: shouldn’t we be allowed to build without sse2?


#10

Yes, but my question is: shouldn’t we be allowed to build without sse2?[/quote]

No.

Your compiler can handle this code, if you set the flags correctly. Why would you want to build crippled software?