Bill,

Thanks for your reply.

This is strange because I finally was able to get wsjtx to compile, but
gave up on clang and used gcc for the whole process. After editing the
hamlib autogen and configure scripts to get rid of an old no-precomp flag,
things went smoothly. After the fact, while looking into why I still don't
have any pulseaudio devices (posted a new message to the list on this last
night) I found the notes on the libstdc++ and libc++ incompatibility. I
think I should have received a linking error complaining about missing
objects, but the build finished.

The build failures I received with clang+gfortran were listed in the
wsjtx-stamp/configure-error.log and had to do with missing openmp libs. I
tried installing several different variants of gcc49 in macports, but got
the same error every time.

As a side note to my missing pulseaudio devices, I found that qt5-mac from
macports is not building the pulse plugin, despite having selected the
pulseaudio variant.  I don't understand why, at this time.

Eric
KM4DSJ
On Aug 27, 2015 9:43 AM, "Bill Somerville" <g4...@classdesign.com> wrote:

> On 09/08/2015 17:00, Eric Thornton wrote:
>
> Hello all,
>
> Hi Eric,
>
> firstly, sorry for the delayed response as I have been off the grid for a
> few weeks enjoying some holiday time.
>
>
> I've run into the same (or similar issue) compiling on OSX. I need to
> compile my own version since I'm using pulse audio as my sound server. I've
> already compiled QT from macports with pulse audio support.
>
> If I use CC=gcc and CXX=g++, ham lib won't compile. I have been unable to
> work around the "-no-cpp-precomp" error. Anyway, I'm pretty sure my
> macports libs and QT are build with clang (the default) anyway.
>
> If I use the default clang compilers, ham lib compiles fine (after
> pointing it to glibtoolize), but then wsjtx won't compile because of the
> openmp errors. I am using FC=gfortran-mp-4.9 from macports.
>
> There should be no fatal errors with those tools if you use the CMake
> build script. What make you think the build fails?
>
>
> I don't have a good understanding of openmp. Is this error because clang
> and gfortran are not compatible? I tried downloading a native gfortran
> compiler but got the same result.
>
> Using CLang/Clang++ combined with gfortran from MacPorts is a valid
> combination and is the only one supported. The reason for this is that Qt
> only supports compilation with CLang++ on OS X. Clang/Clang++ have no
> OpenMP support but since our code only uses OpenMP in Fortran modules we
> are able to get away with the mixed compiler support. The CMake build
> script does what is necessary to make this apparently incompatible tool set
> work. It does report the OpenMP availability issues but they can be safely
> ignored for WSJT-X builds.
>
>
> Thanks,
>
> Eric
> KM4DSJ
>
> 73
> Bill
> G4WJS.
>
>
>
> -- Building for for: Darwin-x86_64
> -- ******************************************************
> -- Try OpenMP C flag = [ ]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP C flag = [-fopenmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP C flag = [/openmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP C flag = [-Qopenmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP C flag = [-openmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP C flag = [-xopenmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP C flag = [+Oopenmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP C flag = [-qsmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP C flag = [-mp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP CXX flag = [ ]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP CXX flag = [-fopenmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP CXX flag = [/openmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP CXX flag = [-Qopenmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP CXX flag = [-openmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP CXX flag = [-xopenmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP CXX flag = [+Oopenmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP CXX flag = [-qsmp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Try OpenMP CXX flag = [-mp]
> -- Performing Test OpenMP_FLAG_DETECTED
> -- Performing Test OpenMP_FLAG_DETECTED - Failed
> -- Could NOT find OpenMP (missing:  OpenMP_C_FLAGS OpenMP_CXX_FLAGS)
>
> On Mon, Jun 29, 2015 at 6:12 PM, Bill Somerville <g4...@classdesign.com>
> wrote:
>
>> On 29/06/2015 22:58, Steven Franke wrote:
>> > Bill,
>> Hi Steve,
>> >> On Jun 29, 2015, at 4:43 PM, Bill Somerville <g4...@classdesign.com>
>> wrote:
>> >>
>> >> On 29/06/2015 22:30, Steven Franke wrote:
>> >>> Bill,
>> >> Hi Steve,
>> >>>> On Jun 29, 2015, at 4:26 PM, Bill Somerville <g4...@classdesign.com>
>> wrote:
>> >>>>
>> >>>> On 29/06/2015 22:17, Steven Franke wrote:
>> >>>>> Bill,
>> >>>>>
>> >>>>>> On Jun 29, 2015, at 3:57 PM, Bill Somerville <
>> g4...@classdesign.com> wrote:
>> >>>>>>
>> >>>>>> On 29/06/2015 21:34, Steven Franke wrote:
>> >>>>>>> Bill,
>> >>>>>>>> On Jun 29, 2015, at 9:00 AM, Bill Somerville <
>> g4...@classdesign.com> wrote:
>> >>>>>>>>
>> >>>>>>>> On 28/06/2015 22:08, Steven Franke wrote:
>> >>>>>>>>> Thanks Bill,
>> >>>>>>>> Hi Steve,
>> >>>>>>>>> For what it’s worth, here a link to the VERBOSE build capture:
>> >>>>>>>>>
>> https://dl.dropboxusercontent.com/u/33211132/k9an_build_capture.txt
>> >>>>>>>>>
>> >>>>>>>>> Here’s the CMakeCache.txt:
>> >>>>>>>>> https://dl.dropboxusercontent.com/u/33211132/CMakeCache.txt
>> >>>>>>>> OK, the problem wasn't quite what I thought. It is an include
>> directive
>> >>>>>>>> ordering issue but it stems from the use of FFTW3 from MacPorts,
>> this in
>> >>>>>>>> itself is not an issue but it has the side effect of picking up
>> the Qt4
>> >>>>>>>> headers as well. Unfortunately I can't find an easy way of
>> ensuring the
>> >>>>>>>> -I/opt/local/include is after the includes for Qt5. That would
>> solve the
>> >>>>>>>> issue but the way that the Qt includes are detected by CMake
>> doesn't
>> >>>>>>>> seem to have a way to change the ordering. I have posted a
>> question to
>> >>>>>>>> the CMake ML but for now you should be able to build by
>> deactivating
>> >>>>>>>> qt4-mac before building WSJT-X. It would be wise to add a
>> >>>>>>>> '--clean-first' to the CMake build for the first time to ensure
>> any
>> >>>>>>>> incorrectly built object files are discarded. Something like:
>> >>>>>>>>
>> >>>>>>>> $ sudo port deactivate qt4-mac
>> >>>>>>>> $ cmake --build ~/Builds/wsjtx --clean-first --target install --
>> -j
>> >>>>>>>> $ sudo port activate qt4-mac
>> >>>>>>>> $ open ~/Builds/wsjtx_install/wsjtx.app
>> >>>>>>> This got me past the incorrect headers issue, but now it dies
>> because of an OpenMP problem. I’ve placed the VERBOSE build capture here:
>> >>>>>>>
>> https://dl.dropboxusercontent.com/u/33211132/k9an_build_capture.txt
>> >>>>>>>
>> >>>>>>> and the CMakeCache.txt here:
>> >>>>>>> https://dl.dropboxusercontent.com/u/33211132/CMakeCache.txt
>> >>>>>> Is your OS X 32-bit or 64-bit?
>> >>>>>>
>> >>>>>> https://support.apple.com/en-gb/HT201948
>> >>>>> My processor is 64-bit:
>> >>>>>
>> >>>>> Hardware Overview:
>> >>>>>
>> >>>>>    Model Name:    MacBook Air
>> >>>>>    Model Identifier:      MacBookAir5,2
>> >>>>>    Processor Name:        Intel Core i7
>> >>>>>    Processor Speed:       2 GHz
>> >>>>>    Number of Processors:  1
>> >>>>>    Total Number of Cores: 2
>> >>>>>    L2 Cache (per Core):   256 KB
>> >>>>>    L3 Cache:      4 MB
>> >>>>>    Memory:        8 GB
>> >>>>>    Boot ROM Version:      MBA51.00EF.B02
>> >>>>>    SMC Version (system):  2.5f9
>> >>>>>    Serial Number (system):        C02J401ADRVG
>> >>>>>    Hardware UUID: 1F7ABB4C-7FB0-5918-8AE6-0CA0AB789A89
>> >>>>>
>> >>>>> and I am running the 64-bit kernel:
>> >>>>> $ uname -a
>> >>>>> Darwin Stevens-MacBook-Air.local 14.3.0 Darwin Kernel Version
>> 14.3.0: Mon Mar 23 11:59:05 PDT 2015; root:xnu-2782.20.48~5/RELEASE_X86_64
>> x86_64
>> >>>> OK, looks like the MacPorts libgcc is 32-bit only for some reason.
>> What
>> >>>> do the following print:
>> >>>>
>> >>>> $ grep build_arch /opt/local/etc/macports/macports.conf
>> >>> $ grep build_arch /opt/local/etc/macports/macports.conf
>> >>> #build_arch                 i386
>> >>>
>> >>>> and:
>> >>>>
>> >>>> $ grep universal /opt/local/etc/macports/macports.conf
>> >>> $ grep universal /opt/local/etc/macports/macports.conf
>> >>> # CPU architectures to use for Universal Binaries (+universal variant)
>> >>> universal_archs             x86_64 i386
>> >>>
>> >>>> and:
>> >>>>
>> >>>> $ file /opt/local/lib/gcc49/libgomp.1.dylib
>> >>> $  file /opt/local/lib/gcc49/libgomp.1.dylib
>> >>> /opt/local/lib/gcc49/libgomp.1.dylib: Mach-O 64-bit dynamically
>> linked shared library x86_64
>> >> Hmm, that is all as expected. I think that means the link is picking up
>> >> another libgomp from somewhere outside of MacPorts. The only other path
>> >> that seems likely is /usr/local/lib is there an old libgomp there from
>> >> some prior build of gcc/gfortran?
>> > You’re a wizard! That was the problem. Moved the old libraries out of
>> the way and compile completed. Running it now.
>> > Thanks!!
>> Good, that was my last guess at a solution.
>>
>> This is related to the liberties we take with OpenMP I mentioned further
>> up this thread. Normally if you use gfortran you would link with the gcc
>> compiler driver or gfortran itself, these know exactly were to get he
>> matching libgcc supporting libraries like libgomp and libgcc_1. Because
>> we have to use the clang++ compiler driver to link since Qt uses that
>> for its C++, we have to manually add the gcc/gfortran support libraries
>> to the link command line. Perhaps I should use the gcc/gfortran
>> compiler/linker driver to discover the correct paths to avoid this kind
>> of issue.
>>
>> It is a PITA that Apple and LLVM don't have a Fortran compiler nor
>> OpenMP support in clang/clang++.
>>
>> ...
>>
>> 73
>> Bill
>> G4WJS.
>>
>
>
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> wsjt-devel mailing list
> wsjt-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wsjt-devel
>
>
------------------------------------------------------------------------------
_______________________________________________
wsjt-devel mailing list
wsjt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wsjt-devel

Reply via email to