[ https://issues.apache.org/jira/browse/THRIFT-4560?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mario Emmenlauer updated THRIFT-4560: ------------------------------------- Description: The cmake build uses {{CMAKE_DEPENDENT_OPTION}} in several places. But according to my understanding, the resulting logic is wrong and can lead to problems. Consider the following example for building with Qt4 or Qt5 from {{build/cmake/DefineOptions.cmake}}: {noformat} find_package(Qt5 QUIET COMPONENTS Core Network) CMAKE_DEPENDENT_OPTION(WITH_QT5 "Build with Qt5 support" ON "Qt5_FOUND" OFF) {noformat} If a user configures thrift with {{cmake -DWITH_QT5=ON}} but does not have Qt5 installed, they will not get an error. They will just get a warning that the option {{WITH_QT5}} was unused. Furthermore, if the user disables Qt5 (i.e. because its broken), then {{cmake -DWITH_QT5=OFF}} will **not** disable the search for Qt5. If the {{find_package(Qt5 QUIET COMPONENTS Core Network)}} fails in error, the build will fail, despite the explicit request for {{cmake -DWITH_QT5=OFF}}. My expected behavior is that if {{WITH_QT5=OFF}} is specified, that no Qt5 checks are run and that a missing/broken Qt5 would not impact thrift in any way. was: The cmake build uses {{CMAKE_DEPENDENT_OPTION}} in several places. But according to my understanding, the resulting logic is wrong and can lead to problems. Consider the following example for building with Qt4 or Qt5 from {{build/cmake/DefineOptions.cmake}}: {noformat} find_package(Qt5 QUIET COMPONENTS Core Network) CMAKE_DEPENDENT_OPTION(WITH_QT5 "Build with Qt5 support" ON "Qt5_FOUND" OFF) {noformat} If a user configures thrift with {{cmake -DWITH_QT5=ON}} but does not have Qt5 installed, they will not get an error. They will just get a warning that the option {{WITH_QT5}} was unused. Furthermore, if the user disables Qt5 (i.e. because its broken), then {{cmake -DWITH_QT5=OFF}} will **not** disable the search for Qt5. If the {{find_package(Qt5 QUIET COMPONENTS Core Network)}} fails in error, the build will fail, despite the explicit request for {{cmake -DWITH_QT5=OFF}}. > The logic of CMAKE_DEPENDENT_OPTION seems wrong and can break the build > ----------------------------------------------------------------------- > > Key: THRIFT-4560 > URL: https://issues.apache.org/jira/browse/THRIFT-4560 > Project: Thrift > Issue Type: Bug > Components: Build Process > Affects Versions: 1.0 > Reporter: Mario Emmenlauer > Priority: Minor > > The cmake build uses {{CMAKE_DEPENDENT_OPTION}} in several places. But > according to my understanding, the resulting logic is wrong and can lead to > problems. Consider the following example for building with Qt4 or Qt5 from > {{build/cmake/DefineOptions.cmake}}: > {noformat} > find_package(Qt5 QUIET COMPONENTS Core Network) > CMAKE_DEPENDENT_OPTION(WITH_QT5 "Build with Qt5 support" ON > "Qt5_FOUND" OFF) > {noformat} > If a user configures thrift with {{cmake -DWITH_QT5=ON}} but does not have > Qt5 installed, they will not get an error. They will just get a warning that > the option {{WITH_QT5}} was unused. > Furthermore, if the user disables Qt5 (i.e. because its broken), then {{cmake > -DWITH_QT5=OFF}} will **not** disable the search for Qt5. If the > {{find_package(Qt5 QUIET COMPONENTS Core Network)}} fails in error, the build > will fail, despite the explicit request for {{cmake -DWITH_QT5=OFF}}. > My expected behavior is that if {{WITH_QT5=OFF}} is specified, that no Qt5 > checks are run and that a missing/broken Qt5 would not impact thrift in any > way. -- This message was sent by Atlassian JIRA (v7.6.3#76005)