diff --git a/etg/webview.py b/etg/webview.py index 033064246..92dc84476 100644 --- a/etg/webview.py +++ b/etg/webview.py @@ -44,11 +44,13 @@ def run(): # customizing the generated code and docstrings. module.addHeaderCode("""\ + #if wxUSE_WEBVIEW #include #if wxUSE_WEBVIEW_IE && defined(__WXMSW__) #include #include #endif + #endif """) module.addHeaderCode('#include ') @@ -213,7 +215,7 @@ def run(): # these methods with a new implementation that does the RightThing using # sys.executable. c.addCppCode(r""" - #if wxUSE_WEBVIEW_IE && defined(__WXMSW__) + #if wxUSE_WEBVIEW && wxUSE_WEBVIEW_IE && defined(__WXMSW__) #include #include diff --git a/etgtools/sip_generator.py b/etgtools/sip_generator.py index 80a0921fa..c71f42fa3 100644 --- a/etgtools/sip_generator.py +++ b/etgtools/sip_generator.py @@ -443,6 +443,9 @@ def generateClass(self, klass, stream, indent=''): if klass.ignored: return + # For any header filename starting with these prefixes, protect the #include with an #if wxUSE_ guard + optional_wx_modules = [ "webview" ] + # Propagate preMethodCode setting to the ctors if klass.preMethodCode: for item in klass.allItems(): @@ -466,7 +469,15 @@ def generateClass(self, klass, stream, indent=''): if klass.includes: stream.write('%s%%TypeHeaderCode\n' % indent2) for inc in klass.includes: + header_basename = inc.split('/')[-1].split('.')[0] + need_endif = False + for module_name in optional_wx_modules: + if header_basename.startswith(module_name): + stream.write('%s #if wxUSE_%s\n' % (indent2, module_name.upper())) + need_endif = True stream.write('%s #include <%s>\n' % (indent2, inc)) + if need_endif: + stream.write('%s #endif\n' % indent2) stream.write('%s%%End\n\n' % indent2) # C++ code to be written to the Type's header