Qmake does not respect compiler choice

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Qmake does not respect compiler choice

Nicolas Pavillon-3
Hello, 

While trying to solve an issue where one of my ports does not respect the compiler choice (ticket #54372, thanks Ryan for pointing that out), I realised that qmake seems to not be respecting the choice of compiler in any case. 
On Mac, qmake uses by default the 'macx-g++’ configuration, which sets everything to use clang, regardless of the choice of compiler, including flags such as Xarch which are not compatible with gcc. I could reproduce that problem with both mine and other ports.
I noticed that qmake also has config files for instance for gcc 4.2 (macx-g++42) or llvm (macx-llvm), but I did not yet confirm if those could be used. 

I assume that the PortGroup would have to be modified to properly choose the config file depending on the chosen compiler (which I could try to implement), but I wanted to check first if someone already solved that issue, or if I am missing something obvious.

Cheers,

Nicolas

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Qmake does not respect compiler choice

Michael Dickens-4
Hi Nicolas - qmake by itself will not "do the right thing", as you note, for pretty much any 'port' setting (CC, CXX, *FLAGS).

If you use the qmake 1.0 PortGroup, then qmake should "do the right thing". If you're using this PG & qmake is still not doing the right thing, then the issue is likely the 'Makefile' or 'configure' script interface.

Hope this helps! - MLD

On Sat, Jul 1, 2017, at 08:07 AM, Nicolas Pavillon wrote:
While trying to solve an issue where one of my ports does not respect the compiler choice (ticket #54372, thanks Ryan for pointing that out), I realised that qmake seems to not be respecting the choice of compiler in any case. 
On Mac, qmake uses by default the 'macx-g++’ configuration, which sets everything to use clang, regardless of the choice of compiler, including flags such as Xarch which are not compatible with gcc. I could reproduce that problem with both mine and other ports.
I noticed that qmake also has config files for instance for gcc 4.2 (macx-g++42) or llvm (macx-llvm), but I did not yet confirm if those could be used. 

I assume that the PortGroup would have to be modified to properly choose the config file depending on the chosen compiler (which I could try to implement), but I wanted to check first if someone already solved that issue, or if I am missing something obvious.

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Qmake does not respect compiler choice

Nicolas Pavillon-3
Hi Michael,

Thanks for your clarifications, it was indeed helpful. I had a second look at these issues in the past few days, and I still have some issues in trying to be able to arbitrarily set the compiler. The compiler is respected in the sense that it will be correctly set, but the build may very well fail.

It seems to me that the issue in fact comes from higher up, in the qt4 settings, as I encountered similar issues when checking some ports which were purely relying on qt4 PG too.
In particular, it seems to me that the ‘macx-g++’ template is used in qt4 PG, which sets for instance:
set qt_qmake_spec       macx-g++

The template will set several variables assuming clang as being the compiler (such as Xarg arguments) regardless of settings defined by Macports. Furthermore, even removing these settings seems to not fully remove the use of these templates, as they are still called when calling moc after qmake.
I could not find yet where these settings are predefined, as it does not seem to me that they are set at configure stage. At least I could not find them.

Cheers,

Nicolas


On Jul2, 2017, at 4:44, Michael Dickens <[hidden email]> wrote:

Hi Nicolas - qmake by itself will not "do the right thing", as you note, for pretty much any 'port' setting (CC, CXX, *FLAGS).

If you use the qmake 1.0 PortGroup, then qmake should "do the right thing". If you're using this PG & qmake is still not doing the right thing, then the issue is likely the 'Makefile' or 'configure' script interface.

Hope this helps! - MLD

On Sat, Jul 1, 2017, at 08:07 AM, Nicolas Pavillon wrote:
While trying to solve an issue where one of my ports does not respect the compiler choice (ticket #54372, thanks Ryan for pointing that out), I realised that qmake seems to not be respecting the choice of compiler in any case. 
On Mac, qmake uses by default the 'macx-g++’ configuration, which sets everything to use clang, regardless of the choice of compiler, including flags such as Xarch which are not compatible with gcc. I could reproduce that problem with both mine and other ports.
I noticed that qmake also has config files for instance for gcc 4.2 (macx-g++42) or llvm (macx-llvm), but I did not yet confirm if those could be used. 

I assume that the PortGroup would have to be modified to properly choose the config file depending on the chosen compiler (which I could try to implement), but I wanted to check first if someone already solved that issue, or if I am missing something obvious.


Loading...