Skip to content

Commit 2f4da62

Browse files
committed
Fix Windows build
1 parent bd0d50a commit 2f4da62

File tree

14 files changed

+90
-68
lines changed

14 files changed

+90
-68
lines changed

graalpython/com.oracle.graal.python.cext/CMakeLists.txt

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ function(require_var var)
3535
endif()
3636
endfunction()
3737

38+
if(MSVC)
39+
message(FATAL_ERROR "C API cannot be built with MSVC")
40+
endif()
41+
3842
if(WIN32)
3943
require_var(GRAALVM_LLVM_LIB_DIR)
4044
endif()
@@ -52,27 +56,17 @@ set(TARGET_LIBPYTHON "python-${LLVM_MODE}")
5256
# common variables and compile/link options (for all build targets)
5357
######################################################################
5458

55-
if(NOT WIN32)
56-
set(CFLAGS_WARNINGS -Werror -Wno-int-to-pointer-cast -Wno-int-conversion -Wno-void-pointer-to-int-cast
57-
-Wno-incompatible-pointer-types-discards-qualifiers -Wno-pointer-type-mismatch
58-
-Wno-braced-scalar-init -Wno-deprecated-declarations)
59-
else()
60-
set(CFLAGS_WARNINGS)
61-
endif()
59+
set(CFLAGS_WARNINGS -Wno-int-to-pointer-cast -Wno-int-conversion -Wno-void-pointer-to-int-cast
60+
-Wno-incompatible-pointer-types-discards-qualifiers -Wno-pointer-type-mismatch
61+
-Wno-braced-scalar-init -Wno-deprecated-declarations)
6262

6363
# preprocessor defines for all platforms
6464
add_compile_definitions(
6565
NDEBUG
6666
GRAALVM_PYTHON_LLVM
67-
Py_BUILD_CORE_MODULE
6867
)
6968

7069
if(WIN32)
71-
add_compile_options(
72-
/Z7
73-
/O2
74-
/WX
75-
)
7670
add_compile_definitions(
7771
MS_WINDOWS
7872
Py_ENABLE_SHARED
@@ -156,9 +150,14 @@ function(native_module name core src_files)
156150
target_compile_definitions(${name} PRIVATE Py_BUILD_CORE)
157151
target_include_directories(${name} PRIVATE "${SRC_DIR}/include/internal")
158152
endif()
159-
set_target_properties(${name} PROPERTIES SUFFIX "${GRAALPY_EXT}")
160-
set_target_properties(${name} PROPERTIES PREFIX "")
153+
target_compile_definitions(${name} PRIVATE Py_BUILD_CORE_MODULE)
154+
set_target_properties(${name} PROPERTIES SUFFIX "${GRAALPY_EXT}"
155+
PREFIX "")
161156
target_sources(${name} PRIVATE ${src_files})
157+
if(WIN32)
158+
target_link_directories(${name} PRIVATE ${CMAKE_BINARY_DIR})
159+
target_link_libraries(${name} PRIVATE ${TARGET_LIBPYTHON})
160+
endif()
162161
install(TARGETS ${name} DESTINATION "bin/modules")
163162
endfunction()
164163

@@ -222,6 +221,7 @@ target_include_directories(${TARGET_LIBPYTHON} PRIVATE
222221
# target-specific compile and link options
223222
######################################################################
224223

224+
target_compile_definitions(${TARGET_LIBPYTHON} PRIVATE Py_BUILD_CORE)
225225
target_compile_options(${TARGET_LIBPYTHON} PRIVATE ${CFLAGS_WARNINGS})
226226

227227
if(WIN32)

graalpython/com.oracle.graal.python.cext/include/pyconfig.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,6 @@
115115
#define CHAR_BIT __CHAR_BIT__
116116
#endif
117117
// #define Py_LIMITED_API 1
118-
#define _Py_BEGIN_SUPPRESS_IPH
119-
#define _Py_END_SUPPRESS_IPH
120118
// END TRUFFLE DEFS
121119

122120
#define HAVE_ACOSH 1

graalpython/com.oracle.graal.python.cext/src/capi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ void PyTruffle_Tuple_Dealloc(PyTupleObject* tuple);
103103
PyAPI_DATA(PyTypeObject) _PyExc_BaseException;
104104
PyAPI_DATA(PyTypeObject) _PyExc_StopIteration;
105105

106+
PyTypeObject PyType_Type = PY_TRUFFLE_TYPE_WITH_ITEMSIZE("type", &PyType_Type, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_TYPE_SUBCLASS, sizeof(PyHeapTypeObject), sizeof(PyMemberDef));
106107
PyTypeObject _PyExc_BaseException = PY_TRUFFLE_TYPE("BaseException", &PyType_Type, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_BASE_EXC_SUBCLASS, sizeof(PyBaseExceptionObject));
107108
PyTypeObject _PyExc_StopIteration = PY_TRUFFLE_TYPE("StopIteration", &PyType_Type, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_BASE_EXC_SUBCLASS, sizeof(PyStopIterationObject));
108109
PyTypeObject _PyNamespace_Type = PY_TRUFFLE_TYPE("SimpleNamespace", &PyType_Type, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, sizeof(_PyNamespaceObject));
@@ -147,7 +148,6 @@ PyTypeObject PyStaticMethod_Type = PY_TRUFFLE_TYPE("staticmethod", &PyType_Ty
147148
PyTypeObject PySuper_Type = PY_TRUFFLE_TYPE("super", &PyType_Type, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, sizeof(superobject));
148149
PyTypeObject PyTraceBack_Type = PY_TRUFFLE_TYPE("traceback", &PyType_Type, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, sizeof(PyTypeObject));
149150
PyTypeObject PyTuple_Type = PY_TRUFFLE_TYPE_GENERIC("tuple", &PyType_Type, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_TUPLE_SUBCLASS | _Py_TPFLAGS_MATCH_SELF | Py_TPFLAGS_SEQUENCE, sizeof(PyTupleObject) - sizeof(PyObject *), sizeof(PyObject *), PyTruffle_Tuple_Alloc, (destructor)PyTruffle_Tuple_Dealloc, 0, 0);
150-
PyTypeObject PyType_Type = PY_TRUFFLE_TYPE_WITH_ITEMSIZE("type", &PyType_Type, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_TYPE_SUBCLASS, sizeof(PyHeapTypeObject), sizeof(PyMemberDef));
151151
PyTypeObject PyUnicode_Type = PY_TRUFFLE_TYPE("str", &PyType_Type, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_UNICODE_SUBCLASS | _Py_TPFLAGS_MATCH_SELF, sizeof(PyUnicodeObject));
152152
/* NOTE: we use the same Python type (namely 'PBuiltinFunction') for 'wrapper_descriptor' as for 'method_descriptor'; so the flags must be the same! */
153153
PyTypeObject PyWrapperDescr_Type = PY_TRUFFLE_TYPE("wrapper_descriptor", &PyType_Type, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_METHOD_DESCRIPTOR, sizeof(PyWrapperDescrObject));

graalpython/com.oracle.graal.python.hpy.llvm/CMakeLists.txt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,16 +101,30 @@ target_compile_definitions(${TARGET_LIB} PRIVATE
101101
HPY_UNIVERSAL_ABI
102102
NDEBUG
103103
GRAALVM_PYTHON_LLVM
104+
Py_BUILD_CORE
104105
)
105106

106107
if(WIN32)
107108
require_var(GRAALVM_LLVM_LIB_DIR)
108109
target_link_directories(${TARGET_LIB} PRIVATE ${GRAALVM_LLVM_LIB_DIR})
109-
target_link_libraries(${TARGET_LIB} graalvm-llvm)
110+
target_link_libraries(${TARGET_LIB} PRIVATE graalvm-llvm)
111+
# Following defines are for 'Python.h'. Since HPy includes it, we need them.
112+
target_compile_definitions(${TARGET_LIB} PRIVATE
113+
MS_WINDOWS
114+
Py_ENABLE_SHARED
115+
HAVE_DECLSPEC_DLL
116+
)
117+
endif()
118+
119+
if(MSVC)
110120
target_compile_options(${TARGET_LIB} PRIVATE /Z7 /O2 /WX)
111121
else()
122+
if(NOT WIN32)
123+
target_compile_options(${TARGET_LIB} PRIVATE
124+
-Werror
125+
)
126+
endif()
112127
target_compile_options(${TARGET_LIB} PRIVATE
113-
-Werror
114128
-Wno-int-to-pointer-cast
115129
-Wno-int-conversion
116130
-Wno-void-pointer-to-int-cast

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/CApiContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -659,7 +659,7 @@ public static CApiContext ensureCapiWasLoaded(Node node, PythonContext context,
659659

660660
TruffleFile homePath = env.getInternalTruffleFile(context.getCAPIHome().toJavaStringUncached());
661661
// e.g. "libpython-native.so"
662-
String libName = context.getLLVMSupportExt("libpython");
662+
String libName = context.getLLVMSupportExt("python");
663663
TruffleFile capiFile = homePath.resolve(libName);
664664
try {
665665
SourceBuilder capiSrcBuilder = Source.newBuilder(J_LLVM_LANGUAGE, capiFile);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/hpy/llvm/GraalHPyLLVMContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ public static Object loadLLVMLibrary(PythonContext context) throws IOException {
236236
Env env = context.getEnv();
237237
TruffleFile homePath = env.getInternalTruffleFile(context.getCAPIHome().toJavaStringUncached());
238238
// e.g. "libhpy-native.so"
239-
TruffleFile capiFile = homePath.resolve(context.getLLVMSupportExt("libhpy"));
239+
TruffleFile capiFile = homePath.resolve(context.getLLVMSupportExt("hpy"));
240240
try {
241241
LOGGER.fine("Loading HPy LLVM backend from " + capiFile);
242242
SourceBuilder capiSrcBuilder = Source.newBuilder(J_LLVM_LANGUAGE, capiFile);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/StringLiterals.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,14 @@ public abstract class StringLiterals {
162162
public static final String J_TYPE_ID = "_typeid";
163163
public static final TruffleString T_TYPE_ID = tsLiteral(J_TYPE_ID);
164164

165+
public static final String J_LIB_PREFIX = "lib";
166+
165167
public static final String J_EXT_SO = ".so";
166168
public static final TruffleString T_EXT_SO = tsLiteral(J_EXT_SO);
167169
public static final String J_EXT_PYD = ".pyd";
168170
public static final TruffleString T_EXT_PYD = tsLiteral(J_EXT_PYD);
169171
public static final String J_EXT_DYLIB = ".dylib";
170-
public static final TruffleString T_EXT_DYLIB = tsLiteral(J_EXT_DYLIB);
172+
public static final String J_EXT_DLL = ".dll";
171173

172174
public static final String J_NATIVE = "native";
173175
public static final TruffleString T_NATIVE = tsLiteral(J_NATIVE);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/NFIBz2Support.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ public String signature() {
145145
}
146146
}
147147

148-
private static final String SUPPORTING_NATIVE_LIB_NAME = "libbz2support";
148+
private static final String SUPPORTING_NATIVE_LIB_NAME = "bz2support";
149149

150150
private final PythonContext pythonContext;
151151
private final NativeLibrary.TypedNativeLibrary<Bz2NativeFunctions> typedNativeLib;
@@ -155,7 +155,7 @@ public String signature() {
155155
private NFIBz2Support(PythonContext context, NativeLibrary.NFIBackend backend, String noNativeAccessHelp) {
156156
if (context.isNativeAccessAllowed()) {
157157
this.pythonContext = context;
158-
this.typedNativeLib = NativeLibrary.create(SUPPORTING_NATIVE_LIB_NAME + PythonContext.getSupportExt(), Bz2NativeFunctions.values(),
158+
this.typedNativeLib = NativeLibrary.create(PythonContext.getSupportLibName(SUPPORTING_NATIVE_LIB_NAME), Bz2NativeFunctions.values(),
159159
backend, noNativeAccessHelp, false);
160160
this.available = true;
161161
} else {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/NFILZMASupport.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ public String signature() {
285285
}
286286
}
287287

288-
private static final String SUPPORTING_NATIVE_LIB_NAME = "liblzmasupport";
288+
private static final String SUPPORTING_NATIVE_LIB_NAME = "lzmasupport";
289289

290290
private final PythonContext pythonContext;
291291
private final NativeLibrary.TypedNativeLibrary<LZMANativeFunctions> typedNativeLib;
@@ -295,7 +295,7 @@ public String signature() {
295295
private NFILZMASupport(PythonContext context, NativeLibrary.NFIBackend backend, String noNativeAccessHelp) {
296296
if (context.isNativeAccessAllowed()) {
297297
this.pythonContext = context;
298-
this.typedNativeLib = NativeLibrary.create(SUPPORTING_NATIVE_LIB_NAME + PythonContext.getSupportExt(), LZMANativeFunctions.values(),
298+
this.typedNativeLib = NativeLibrary.create(PythonContext.getSupportLibName(SUPPORTING_NATIVE_LIB_NAME), LZMANativeFunctions.values(),
299299
backend, noNativeAccessHelp, true);
300300
this.available = true;
301301
} else {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/NFIPosixSupport.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@
126126
*/
127127
@ExportLibrary(PosixSupportLibrary.class)
128128
public final class NFIPosixSupport extends PosixSupport {
129-
private static final String SUPPORTING_NATIVE_LIB_NAME = "libposix";
129+
private static final String SUPPORTING_NATIVE_LIB_NAME = "posix";
130130

131131
private static final int UNAME_BUF_LENGTH = 256;
132132
private static final int DIRENT_NAME_BUF_LENGTH = 256;
@@ -336,7 +336,7 @@ public byte callByte(NFIPosixSupport posix, PosixNativeFunction function, Object
336336
// Temporary - will be replaced with something else when we move this to Truffle
337337
private static String getLibPath(PythonContext context) {
338338
CompilerAsserts.neverPartOfCompilation();
339-
String libPythonName = NFIPosixSupport.SUPPORTING_NATIVE_LIB_NAME + PythonContext.getSupportExt();
339+
String libPythonName = PythonContext.getSupportLibName(NFIPosixSupport.SUPPORTING_NATIVE_LIB_NAME);
340340
TruffleFile homePath = context.getEnv().getInternalTruffleFile(context.getCAPIHome().toJavaStringUncached());
341341
TruffleFile file = homePath.resolve(libPythonName);
342342
return file.getPath();

0 commit comments

Comments
 (0)