include(CheckCXXSourceCompiles) set(LIBPURPLE_LIBRARY_DIRS "") if (NOT WIN32) include(FindPkgConfig) pkg_check_modules(LIBPURPLE purple) endif () if (LIBPURPLE_FOUND) FIND_LIBRARY(LIBPURPLE_LIBRARY NAMES libpurple purple PATHS ${LIBPURPLE_LIBRARY_DIRS} ) else() FIND_LIBRARY(LIBPURPLE_LIBRARY_RELEASE NAMES purple libpurple libpurple-static ) if (LIBPURPLE_LIBRARY_RELEASE) list(APPEND LIBPURPLE_LIBRARY optimized ${LIBPURPLE_LIBRARY_RELEASE}) endif() FIND_LIBRARY(LIBPURPLE_LIBRARY_DEBUG NAMES purple_d libpurple_d libpurple-static_d ) if (LIBPURPLE_LIBRARY_DEBUG) list(APPEND LIBPURPLE_LIBRARY debug ${LIBPURPLE_LIBRARY_DEBUG}) else() if (UNIX) list(APPEND LIBPURPLE_LIBRARY debug ${LIBPURPLE_LIBRARY_RELEASE}) endif() endif() endif() # message("LIBPURPLE_LIBRARY: ${LIBPURPLE_LIBRARY}") # message("LIBPURPLE_INCLUDE_DIR: ${LIBPURPLE_INCLUDE_DIR}") FIND_PATH(LIBPURPLE_INCLUDE_DIR purple.h PATH_SUFFIXES include/libpurple src/libpurple PATHS /usr/local /usr /sw # Fink /opt/local # DarwinPorts /opt/csw # Blastwave /opt ${LIBPURPLE_INCLUDE_DIRS} ) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBPURPLE DEFAULT_MSG LIBPURPLE_LIBRARY LIBPURPLE_INCLUDE_DIR) if (LIBPURPLE_FOUND) set(LIBPURPLE_VERSION_HPP_CONTENTS "") file(STRINGS "${LIBPURPLE_INCLUDE_DIR}/version.h" LIBPURPLE_VERSION_HPP_CONTENTS REGEX "#define PURPLE_(.*)_VERSION (.)") STRING(REGEX MATCH "PURPLE_MAJOR_VERSION \\\(([0-9]*)\\\)" _LIBPURPLE_VERSION_MAJOR ${LIBPURPLE_VERSION_HPP_CONTENTS}) STRING(REGEX MATCH "[0-9]+" LIBPURPLE_VERSION_MAJOR ${_LIBPURPLE_VERSION_MAJOR}) unset(_LIBPURPLE_VERSION_MAJOR) STRING(REGEX MATCH "PURPLE_MINOR_VERSION \\\(([0-9]*)\\\)" _LIBPURPLE_VERSION_MINOR ${LIBPURPLE_VERSION_HPP_CONTENTS}) STRING(REGEX MATCH "[0-9]+" LIBPURPLE_VERSION_MINOR ${_LIBPURPLE_VERSION_MINOR}) unset(_LIBPURPLE_VERSION_MINOR) STRING(REGEX MATCH "PURPLE_MICRO_VERSION \\\(([0-9]*)\\\)" _LIBPURPLE_VERSION_PATCH ${LIBPURPLE_VERSION_HPP_CONTENTS}) STRING(REGEX MATCH "[0-9]+" LIBPURPLE_VERSION_PATCH ${_LIBPURPLE_VERSION_PATCH}) unset(_LIBPURPLE_VERSION_PATCH) set(LIBPURPLE_VERSION "${LIBPURPLE_VERSION_MAJOR}.${LIBPURPLE_VERSION_MINOR}.${LIBPURPLE_VERSION_PATCH}") unset(LIBPURPLE_VERSION_HPP_CONTENTS) endif() # we need to check the API of libpurple, but need a couple more libraries - solved via version > 3 # find_package(ICONV) # find_package(GLIB2) # find_package(GObject) # if (LIBPURPLE_FOUND AND GLIB2_FOUND AND ICONV_FOUND AND GOBJECT_FOUND) # set(CMAKE_REQUIRED_INCLUDES ${LIBPURPLE_INCLUDE_DIR} ${GLIB2_INCLUDE_DIRS} ${ICONV_INCLUDE_DIR} ${GOBJECT_INCLUDE_DIR}) # set(CMAKE_REQUIRED_LIBRARIES ${LIBPURPLE_LIBRARY} ${GLIB2_LIBRARIES} ${ICONV_LIBRARIES} ${GOBJECT_LIBRARIES}) # if (LIBPURPLE_FOUND) # check_cxx_source_compiles(" # extern \"C\" { # #include # } # int main(){ # /* # * There was a refactoring to glib datastructures, # * The PurpleRequestFeature occured at the same time. # */ # PurpleRequestFeature _features; # } # " LIBPURPLE_GLIB_DATASTRUCTS) # endif() # set(CMAKE_REQUIRED_INCLUDES) # set(CMAKE_REQUIRED_LIBRARIES) # endif() MARK_AS_ADVANCED(LIBPURPLE_LIBRARY LIBPURPLE_INCLUDE_DIR)