#42872: cmake PortGroup: don't add -I${prefix}/include to CXXFLAGS ----------------------+-------------------------------- Reporter: mojca@… | Owner: macports-tickets@… Type: defect | Status: new Priority: Normal | Milestone: Component: ports | Version: Resolution: | Keywords: Port: clhep | ----------------------+-------------------------------- Changes (by and.damore@…): * port: clhep cmake => clhep Old description:
CMake is automatically fed with too many (too early) includes of `$prefix/include`:
{{{ CPPFLAGS='-I/opt/local/include' CFLAGS='-pipe -Os -I/opt/local/include -arch x86_64' CXXFLAGS='-pipe -Os -I/opt/local/include -arch x86_64' }}} with the following explanation in the `PortGroup`: {{{ # The environment variable CPPFLAGS is not considered by CMake. # (CMake upstream ticket #12928 "CMake silently ignores CPPFLAGS" # <http://www.cmake.org/Bug/view.php?id=12928>). # Thus, we have to add them manually to the CFLAGS and CXXFLAGS in the # pre-configure phase. if {${configure.cppflags} ne ""} { configure.cflags-append ${configure.cppflags} configure.cxxflags-append ${configure.cppflags} } }}}
As a consequence the CMake-based installations have problems when function definitions change in an upgrade. I don't know if I should blame the developers for that or not. (In case of CLHEP, the `./configure`-based installation puts `-I.` in front of `CPPFLAGS`, so headers from sources are found first, but in CMake-based installation `-I.` comes later.)
We should check whether we could use [http://www.cmake.org/Wiki/CMake_Useful_Variables CMAKE_INCLUDE_PATH] (`-DCMAKE_INCLUDE_PATH=${prefix}/include`) instead of `configure .cxxflags-append ${configure.cppflags}` for example.
See also: * https://savannah.cern.ch/bugs/index.php?103664 (and ticket #42613) * http://www.cmake.org/Wiki/CMake_Useful_Variables
New description: The configure phase of a port using cmake portgroup is automatically fed with too many (too early) includes of `$prefix/include`: {{{ CPPFLAGS='-I/opt/local/include' CFLAGS='-pipe -Os -I/opt/local/include -arch x86_64' CXXFLAGS='-pipe -Os -I/opt/local/include -arch x86_64' }}} with the following explanation in the `PortGroup`: {{{ # The environment variable CPPFLAGS is not considered by CMake. # (CMake upstream ticket #12928 "CMake silently ignores CPPFLAGS" # <http://www.cmake.org/Bug/view.php?id=12928>). # Thus, we have to add them manually to the CFLAGS and CXXFLAGS in the # pre-configure phase. if {${configure.cppflags} ne ""} { configure.cflags-append ${configure.cppflags} configure.cxxflags-append ${configure.cppflags} } }}} As a consequence the CMake-based installations have problems when function definitions change in an upgrade. I don't know if I should blame the developers for that or not. (In case of CLHEP, the `./configure`-based installation puts `-I.` in front of `CPPFLAGS`, so headers from sources are found first, but in CMake-based installation `-I.` comes later.) We should check whether we could use [http://www.cmake.org/Wiki/CMake_Useful_Variables CMAKE_INCLUDE_PATH] (`-DCMAKE_INCLUDE_PATH=${prefix}/include`) instead of `configure.cxxflags- append ${configure.cppflags}` for example. See also: * https://savannah.cern.ch/bugs/index.php?103664 (and ticket #42613) * http://www.cmake.org/Wiki/CMake_Useful_Variables -- -- Ticket URL: <https://trac.macports.org/ticket/42872#comment:5> MacPorts <http://www.macports.org/> Ports system for OS X