Skip to content

Commit f0474c6

Browse files
committed
Try fix building C++ modules for Python. Fixes for WMI module
1 parent 19cd310 commit f0474c6

File tree

3 files changed

+17
-10
lines changed

3 files changed

+17
-10
lines changed

Makefile.pre.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ CONFIGURE_LDFLAGS= @LDFLAGS@
104104
# values.
105105
PY_CFLAGS= $(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)
106106
PY_CFLAGS_NODIST=$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal -I$(srcdir)/Include/internal/mimalloc
107+
PY_CXXFLAGS_NODIST=$(filter-out -std=c11,$(PY_CFLAGS_NODIST)) -std=c++17
107108
# Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to
108109
# be able to build extension modules using the directories specified in the
109110
# environment variables
@@ -121,7 +122,9 @@ ARFLAGS= @ARFLAGS@
121122
CFLAGSFORSHARED=@CFLAGSFORSHARED@
122123
# C flags used for building the interpreter object files
123124
PY_STDMODULE_CFLAGS= $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)
125+
PY_STDMODULE_CXXFLAGS= $(PY_CFLAGS) $(PY_CXXFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)
124126
PY_BUILTIN_MODULE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN
127+
PY_BUILTIN_MODULE_CXXFLAGS= $(PY_STDMODULE_CXXFLAGS) -DPy_BUILD_CORE_BUILTIN
125128
PY_CORE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE
126129
# Linker flags used for building the interpreter object files
127130
PY_CORE_LDFLAGS=$(PY_LDFLAGS) $(PY_LDFLAGS_NODIST)

Modules/makesetup

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -228,13 +228,13 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' |
228228
for src in $srcs
229229
do
230230
case $src in
231-
*.c) obj=`basename $src .c`.o; cc='$(CC)'; ccld='$(BLDSHARED)';;
232-
*.cc) obj=`basename $src .cc`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)';;
233-
*.c++) obj=`basename $src .c++`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)';;
234-
*.C) obj=`basename $src .C`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)';;
235-
*.cxx) obj=`basename $src .cxx`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)';;
236-
*.cpp) obj=`basename $src .cpp`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)';;
237-
*.m) obj=`basename $src .m`.o; cc='$(CC)'; ccld='$(BLDSHARED)';; # Obj-C
231+
*.c) obj=`basename $src .c`.o; cc='$(CC)'; ccld='$(BLDSHARED)'; ccflags='$(PY_STDMODULE_CFLAGS)';;
232+
*.cc) obj=`basename $src .cc`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)'; ccflags='$(PY_STDMODULE_CXXFLAGS)';;
233+
*.c++) obj=`basename $src .c++`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)'; ccflags='$(PY_STDMODULE_CXXFLAGS)';;
234+
*.C) obj=`basename $src .C`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)'; ccflags='$(PY_STDMODULE_CXXFLAGS)';;
235+
*.cxx) obj=`basename $src .cxx`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)'; ccflags='$(PY_STDMODULE_CXXFLAGS)';;
236+
*.cpp) obj=`basename $src .cpp`.o; cc='$(CXX)'; ccld='$(LDCXXSHARED)'; ccflags='$(PY_STDMODULE_CXXFLAGS)';;
237+
*.m) obj=`basename $src .m`.o; cc='$(CC)'; ccld='$(BLDSHARED)'; ccflags='$(PY_STDMODULE_CFLAGS)';; # Obj-C
238238
*) continue;;
239239
esac
240240
case $src in
@@ -251,7 +251,7 @@ sed -e 's/[ ]*#.*//' -e '/^[ ]*$/d' |
251251
# custom flags first, PY_STDMODULE_CFLAGS may contain -I with system libmpdec
252252
case $doconfig in
253253
no)
254-
cc="$cc $cpps \$(PY_STDMODULE_CFLAGS) \$(CCSHARED)"
254+
cc="$cc $cpps $ccflags \$(CCSHARED)"
255255
rule="$obj: $src \$(MODULE_${mods_upper}_DEPS) \$(MODULE_DEPS_SHARED) \$(PYTHON_HEADERS); $cc -c $src -o $obj"
256256
;;
257257
*)

PC/_wmimodule.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,12 @@ _query_thread(LPVOID param)
100100
hr = HRESULT_FROM_WIN32(GetLastError());
101101
}
102102
if (SUCCEEDED(hr)) {
103+
BSTR bstr_wql = SysAllocString(L"ROOT\\CIMV2");
103104
hr = locator->ConnectServer(
104-
bstr_t(L"ROOT\\CIMV2"),
105+
bstr_wql,
105106
NULL, NULL, 0, NULL, 0, 0, &services
106107
);
108+
SysFreeString(bstr_wql);
107109
}
108110
if (SUCCEEDED(hr) && !SetEvent(data.connectEvent)) {
109111
hr = HRESULT_FROM_WIN32(GetLastError());
@@ -116,13 +118,15 @@ _query_thread(LPVOID param)
116118
);
117119
}
118120
if (SUCCEEDED(hr)) {
121+
BSTR bstr_wql = SysAllocString(L"WQL");
119122
hr = services->ExecQuery(
120-
bstr_t("WQL"),
123+
bstr_wql,
121124
bstrQuery,
122125
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
123126
NULL,
124127
&enumerator
125128
);
129+
SysFreeString(bstr_wql);
126130
}
127131

128132
// Okay, after all that, at this stage we should have an enumerator

0 commit comments

Comments
 (0)