Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 30 additions & 29 deletions cmake/Modules/FindQhull.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,65 +6,72 @@
# QHULL_INCLUDE_DIRS - Directories containing the QHULL include files.
# QHULL_LIBRARIES - Libraries needed to use QHULL.
# QHULL_DEFINITIONS - Compiler flags for QHULL.
# If QHULL_USE_STATIC is specified then look for static libraries ONLY else
# look for shared ones
# If QHULL_USE_SHARED is specified then look for shared libraries ONLY else
# look for static ones

set(QHULL_MAJOR_VERSION 6)
set(QHULL_MAJOR_VERSION 7)

if(QHULL_USE_STATIC)
set(QHULL_RELEASE_NAME qhullstatic)
set(QHULL_DEBUG_NAME qhullstatic_d)
else(QHULL_USE_STATIC)
set(QHULL_RELEASE_NAME qhull_p qhull${QHULL_MAJOR_VERSION} qhull)
set(QHULL_DEBUG_NAME qhull_pd qhull${QHULL_MAJOR_VERSION}_d qhull_d${QHULL_MAJOR_VERSION} qhull_d)
endif(QHULL_USE_STATIC)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we avoid doing for the time being? There might have been updates in the meantime and there might be versions which can be dynamically linked. We should not impose constraints on this.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't want to have this option knowing that it will make things crash. It's easy to put it back later, I can comment it out.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about leaving both options and printing a warning to the user that some dynamic linked versions are known to crash? We then set STATIC as the default option in CMake.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did something similar, does it look ok like this?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Purrfect 👍

if(QHULL_USE_SHARED)
set(QHULL_RELEASE_NAME qhull_r)
set(QHULL_DEBUG_NAME qhull_rd)
else(QHULL_USE_SHARED)
set(QHULL_RELEASE_NAME qhullstatic_r)
set(QHULL_DEBUG_NAME qhullstatic_rd)
endif(QHULL_USE_SHARED)

find_file(QHULL_HEADER
NAMES libqhull/libqhull.h qhull.h
NAMES libqhull_r/libqhull_r.h
HINTS "${QHULL_ROOT}" "$ENV{QHULL_ROOT}" "${QHULL_INCLUDE_DIR}"
PATHS "$ENV{PROGRAMFILES}/QHull" "$ENV{PROGRAMW6432}/QHull"
PATH_SUFFIXES qhull src/libqhull libqhull include)
PATH_SUFFIXES src/libqhull_r libqhull_r qhull src/libqhull libqhull include)

set(QHULL_HEADER "${QHULL_HEADER}" CACHE INTERNAL "QHull header" FORCE )

if(QHULL_HEADER)
get_filename_component(qhull_header ${QHULL_HEADER} NAME_WE)
if("${qhull_header}" STREQUAL "qhull")
set(HAVE_QHULL_2011 OFF)
get_filename_component(QHULL_INCLUDE_DIR ${QHULL_HEADER} PATH)
elseif("${qhull_header}" STREQUAL "libqhull")
set(HAVE_QHULL_2011 ON)
get_filename_component(QHULL_INCLUDE_DIR ${QHULL_HEADER} PATH)
get_filename_component(QHULL_INCLUDE_DIR ${QHULL_INCLUDE_DIR} PATH)
endif()
get_filename_component(QHULL_INCLUDE_DIR ${QHULL_HEADER} PATH)
get_filename_component(QHULL_INCLUDE_DIR ${QHULL_INCLUDE_DIR} PATH)
else(QHULL_HEADER)
set(QHULL_INCLUDE_DIR "QHULL_INCLUDE_DIR-NOTFOUND")
endif(QHULL_HEADER)

set(QHULL_INCLUDE_DIR "${QHULL_INCLUDE_DIR}" CACHE PATH "QHull include dir." FORCE)

find_library(QHULL_LIBRARY
find_library(QHULL_LIBRARY
NAMES ${QHULL_RELEASE_NAME}
HINTS "${QHULL_ROOT}" "$ENV{QHULL_ROOT}"
PATHS "$ENV{PROGRAMFILES}/QHull" "$ENV{PROGRAMW6432}/QHull"
PATH_SUFFIXES project build bin lib)

get_filename_component(QHULL_LIBRARY_NAME "${QHULL_LIBRARY}" NAME)

find_library(QHULL_LIBRARY_DEBUG
find_library(QHULL_LIBRARY_DEBUG
NAMES ${QHULL_DEBUG_NAME} ${QHULL_RELEASE_NAME}
HINTS "${QHULL_ROOT}" "$ENV{QHULL_ROOT}"
PATHS "$ENV{PROGRAMFILES}/QHull" "$ENV{PROGRAMW6432}/QHull"
PATH_SUFFIXES project build bin lib debug/lib)

find_library(QHULL_CPP_LIBRARY
NAMES qhullcpp
HINTS "${QHULL_ROOT}" "$ENV{QHULL_ROOT}"
PATHS "$ENV{PROGRAMFILES}/QHull" "$ENV{PROGRAMW6432}/QHull"
PATH_SUFFIXES project build bin lib)

find_library(QHULL_CPP_LIBRARY_DEBUG
NAMES qhullcpp_d qhullcpp
HINTS "${QHULL_ROOT}" "$ENV{QHULL_ROOT}"
PATHS "$ENV{PROGRAMFILES}/QHull" "$ENV{PROGRAMW6432}/QHull"
PATH_SUFFIXES project build bin lib)

if(NOT QHULL_LIBRARY_DEBUG)
set(QHULL_CPP_LIBRARY_DEBUG ${QHULL_CPP_LIBRARY})
set(QHULL_LIBRARY_DEBUG ${QHULL_LIBRARY})
endif(NOT QHULL_LIBRARY_DEBUG)

get_filename_component(QHULL_LIBRARY_DEBUG_NAME "${QHULL_LIBRARY_DEBUG}" NAME)

set(QHULL_INCLUDE_DIRS ${QHULL_INCLUDE_DIR})
set(QHULL_LIBRARIES optimized ${QHULL_LIBRARY} debug ${QHULL_LIBRARY_DEBUG})
set(QHULL_LIBRARIES optimized ${QHULL_CPP_LIBRARY} ${QHULL_LIBRARY} debug ${QHULL_CPP_LIBRARY_DEBUG} ${QHULL_LIBRARY_DEBUG})

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Qhull DEFAULT_MSG QHULL_LIBRARY QHULL_INCLUDE_DIR)
Expand All @@ -73,11 +80,5 @@ mark_as_advanced(QHULL_LIBRARY QHULL_LIBRARY_DEBUG QHULL_INCLUDE_DIR)

if(QHULL_FOUND)
set(HAVE_QHULL ON)
if(NOT QHULL_USE_STATIC)
add_definitions("-Dqh_QHpointer")
if(MSVC)
add_definitions("-Dqh_QHpointer_dllimport")
endif(MSVC)
endif(NOT QHULL_USE_STATIC)
message(STATUS "QHULL found (include: ${QHULL_INCLUDE_DIRS}, lib: ${QHULL_LIBRARIES})")
endif(QHULL_FOUND)
2 changes: 0 additions & 2 deletions pcl_config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@

#cmakedefine HAVE_QHULL 1

#cmakedefine HAVE_QHULL_2011 1

#cmakedefine HAVE_CUDA 1

#cmakedefine HAVE_FZAPI 1
Expand Down
Loading