#.rst: # Findlibhybris # ------- # # Try to find libhybris on a Unix system. #============================================================================= # Copyright 2015 Martin Gräßlin # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #============================================================================= if(CMAKE_VERSION VERSION_LESS 2.8.12) message(FATAL_ERROR "CMake 2.8.12 is required by Findlibhybris.cmake") endif() if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12) message(AUTHOR_WARNING "Your project should require at least CMake 2.8.12 to use Findlibhybris.cmake") endif() if(NOT WIN32) # Use pkg-config to get the directories and then use these values # in the FIND_PATH() and FIND_LIBRARY() calls find_package(PkgConfig) pkg_check_modules(PKG_libhardware QUIET libhardware) pkg_check_modules(PKG_androidheaders QUIET android-headers) pkg_check_modules(PKG_hwcomposerwindow QUIET hwcomposer-egl) pkg_check_modules(PKG_hybriseglplatform QUIET hybris-egl-platform) pkg_check_modules(PKG_hybrissync QUIET libsync) pkg_check_modules(PKG_hybrisinputstack QUIET libis) set(libhardware_DEFINITIONS ${PKG_libhardware_CFLAGS_OTHER}) set(libhardware_VERSION ${PKG_libhardware_VERSION}) find_library(libhardware_LIBRARY NAMES libhardware.so HINTS ${PKG_libhardware_LIBRARY_DIRS} ) find_path(libhardware_INCLUDE_DIR NAMES android-version.h HINTS ${PKG_androidheaders_INCLUDE_DIRS} ) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(libhardware FOUND_VAR libhardware_FOUND REQUIRED_VARS libhardware_LIBRARY libhardware_INCLUDE_DIR VERSION_VAR libhardware_VERSION ) if(libhardware_FOUND AND NOT TARGET libhybris::libhardware) add_library(libhybris::libhardware UNKNOWN IMPORTED) set_target_properties(libhybris::libhardware PROPERTIES IMPORTED_LOCATION "${libhardware_LIBRARY}" INTERFACE_COMPILE_OPTIONS "${libhardware_DEFINITIONS}" INTERFACE_INCLUDE_DIRECTORIES "${libhardware_INCLUDE_DIR}" ) endif() mark_as_advanced(libhardware_LIBRARY libhardware_INCLUDE_DIR) ############################################## # hwcomposerWindow ############################################## set(libhwcomposer_DEFINITIONS ${PKG_hwcomposerwindow_CFLAGS_OTHER}) set(libhwcomposer_VERSION ${PKG_hwcomposerwindow_VERSION}) find_library(libhwcomposer_LIBRARY NAMES libhybris-hwcomposerwindow.so HINTS ${PKG_hwcomposerwindow_LIBRARY_DIRS} ) find_path(libhwcomposer_INCLUDE_DIR NAMES hwcomposer_window.h HINTS ${PKG_hwcomposerwindow_INCLUDE_DIRS} ) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(libhwcomposer FOUND_VAR libhwcomposer_FOUND REQUIRED_VARS libhwcomposer_LIBRARY libhwcomposer_INCLUDE_DIR VERSION_VAR libhwcomposer_VERSION ) if(libhwcomposer_FOUND AND NOT TARGET libhybris::hwcomposer) add_library(libhybris::hwcomposer UNKNOWN IMPORTED) set_target_properties(libhybris::hwcomposer PROPERTIES IMPORTED_LOCATION "${libhwcomposer_LIBRARY}" INTERFACE_COMPILE_OPTIONS "${libhardware_DEFINITIONS}" INTERFACE_INCLUDE_DIRECTORIES "${libhwcomposer_INCLUDE_DIR}" ) endif() mark_as_advanced(libhwcomposer_LIBRARY libhwcomposer_INCLUDE_DIR) ############################################## # hybriseglplatform ############################################## set(hybriseglplatform_DEFINITIONS ${PKG_hybriseglplatform_CFLAGS_OTHER}) set(hybriseglplatform_VERSION ${PKG_hybriseglplatform_VERSION}) find_library(hybriseglplatform_LIBRARY NAMES libhybris-eglplatformcommon.so HINTS ${PKG_hybriseglplatform_LIBRARY_DIRS} ) find_path(hybriseglplatform_INCLUDE_DIR NAMES eglplatformcommon.h HINTS ${PKG_hybriseglplatform_INCLUDE_DIRS} ) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(hybriseglplatform FOUND_VAR hybriseglplatform_FOUND REQUIRED_VARS hybriseglplatform_LIBRARY hybriseglplatform_INCLUDE_DIR VERSION_VAR hybriseglplatform_VERSION ) if(hybriseglplatform_FOUND AND NOT TARGET libhybris::hybriseglplatform) add_library(libhybris::hybriseglplatform UNKNOWN IMPORTED) set_target_properties(libhybris::hybriseglplatform PROPERTIES IMPORTED_LOCATION "${hybriseglplatform_LIBRARY}" INTERFACE_COMPILE_OPTIONS "${hybriseglplatform_DEFINITIONS}" INTERFACE_INCLUDE_DIRECTORIES "${hybriseglplatform_INCLUDE_DIR}" ) endif() mark_as_advanced(hybriseglplatform_LIBRARY hybriseglplatform_INCLUDE_DIR) ############################################## # hybrissync ############################################## set(hybrissync_DEFINITIONS ${PKG_hybrissync_CFLAGS_OTHER}) set(hybrissync_VERSION ${PKG_hybrissync_VERSION}) find_library(hybrissync_LIBRARY NAMES libsync.so HINTS ${PKG_hybrissync_LIBRARY_DIRS} ) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(hybrissync FOUND_VAR hybrissync_FOUND REQUIRED_VARS hybrissync_LIBRARY VERSION_VAR hybrissync_VERSION ) if(hybrissync_FOUND AND NOT TARGET libhybris::sync) add_library(libhybris::sync UNKNOWN IMPORTED) set_target_properties(libhybris::sync PROPERTIES IMPORTED_LOCATION "${hybrissync_LIBRARY}" INTERFACE_COMPILE_OPTIONS "${hybrissync_DEFINITIONS}" ) endif() mark_as_advanced(hybrissync_LIBRARY) ############################################## # hybrisinputstack ############################################## set(hybrisinputstack_DEFINITIONS ${PKG_hybrisinputstack_CFLAGS_OTHER}) set(hybrisinputstack_VERSION ${PKG_hybrisinputstack_VERSION}) find_library(hybrisinputstack_LIBRARY NAMES libis.so HINTS ${PKG_hybrisinputstack_LIBRARY_DIRS} ) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(hybrisinputstack FOUND_VAR hybrisinputstack_FOUND REQUIRED_VARS hybrisinputstack_LIBRARY VERSION_VAR hybrisinputstack_VERSION ) if(hybrisinputstack_FOUND AND NOT TARGET libhybris::inputstack) add_library(libhybris::inputstack UNKNOWN IMPORTED) set_target_properties(libhybris::inputstack PROPERTIES IMPORTED_LOCATION "${hybrisinputstack_LIBRARY}" INTERFACE_COMPILE_OPTIONS "${hybrisinputstack_DEFINITIONS}" ) endif() mark_as_advanced(hybrisinputstack_LIBRARY) if(libhardware_FOUND AND libhwcomposer_FOUND AND hybriseglplatform_FOUND AND hybrissync_FOUND AND hybrisinputstack_FOUND) set(libhybris_FOUND TRUE) else() set(libhybris_FOUND FALSE) endif() else() message(STATUS "Findlibhardware.cmake cannot find libhybris on Windows systems.") set(libhybris_FOUND FALSE) endif() include(FeatureSummary) set_package_properties(libhybris PROPERTIES URL "https://github.com/libhybris/libhybris" DESCRIPTION "libhybris allows to run bionic-based HW adaptations in glibc systems." )