diff --git a/find-modules/FindPythonModuleGeneration.cmake b/find-modules/FindPythonModuleGeneration.cmake --- a/find-modules/FindPythonModuleGeneration.cmake +++ b/find-modules/FindPythonModuleGeneration.cmake @@ -180,7 +180,7 @@ if (NOT libclang_LIBRARY) set(_LIBCLANG_MAX_MAJOR_VERSION 7) - set(_LIBCLANG_MIN_MAJOR_VERSION 4) + set(_LIBCLANG_MIN_MAJOR_VERSION 5) find_library(libclang_LIBRARY clang-${_LIBCLANG_MAX_MAJOR_VERSION}.0) @@ -195,12 +195,6 @@ find_library(libclang_LIBRARY clang-${_LIBCLANG_FIND_VERSION}.0) endwhile() - if (NOT libclang_LIBRARY) - find_library(libclang_LIBRARY clang-3.9) - if (NOT libclang_LIBRARY) - find_library(libclang_LIBRARY clang-3.8) - endif() - endif() if (NOT libclang_LIBRARY) find_library(libclang_LIBRARY clang) endif() @@ -210,7 +204,7 @@ endif() if (NOT libclang_LIBRARY) - _report_NOT_FOUND("Could not find libclang version 3.8 or greater.") + _report_NOT_FOUND("Could not find libclang version 5.0 or greater.") else() message(STATUS "Found ${libclang_LIBRARY}") endif() diff --git a/find-modules/sip_generator.py b/find-modules/sip_generator.py --- a/find-modules/sip_generator.py +++ b/find-modules/sip_generator.py @@ -416,7 +416,10 @@ def _enum_get(self, container, enum, level): pad = " " * (level * 4) - decl = pad + "enum {} {{\n".format(enum.displayname) + scoped = "" + if enum.is_scoped_enum(): + scoped = "class " + decl = pad + "enum {}{} {{\n".format(scoped, enum.displayname) enumerations = [] for enum in enum.get_children(): # @@ -609,7 +612,10 @@ typeText = text typeInit = "" - prefix = parameterType.spelling.rsplit("::", 1)[0] + if parameterType.kind == TypeKind.ENUM and parameterType.get_declaration().is_scoped_enum(): + prefix = parameterType.spelling + else: + prefix = parameterType.spelling.rsplit("::", 1)[0] if "::" in typeText: typeText = typeText.rsplit("::", 1)[1] return prefix + "::" + typeText + typeInit