Merge pull request #46 from junyer/master
Initial tweaks to get MSVC working.
diff --git a/WORKSPACE b/WORKSPACE
new file mode 100644
index 0000000..09a8f71
--- /dev/null
+++ b/WORKSPACE
@@ -0,0 +1,2 @@
+# Bazel extensions for pybind11
+workspace(name = "pybind11_bazel")
diff --git a/build_defs.bzl b/build_defs.bzl
index 1e55548..cde1e93 100644
--- a/build_defs.bzl
+++ b/build_defs.bzl
@@ -8,9 +8,12 @@
def register_extension_info(**kwargs):
pass
-PYBIND_COPTS = [
- "-fexceptions",
-]
+PYBIND_COPTS = select({
+ "@pybind11//:msvc_compiler": [],
+ "//conditions:default": [
+ "-fexceptions",
+ ],
+})
PYBIND_FEATURES = [
"-use_header_modules", # Required for pybind11.
@@ -38,9 +41,15 @@
native.cc_binary(
name = name + ".so",
- copts = copts + PYBIND_COPTS + ["-fvisibility=hidden"],
+ copts = copts + PYBIND_COPTS + select({
+ "@pybind11//:msvc_compiler": [],
+ "//conditions:default": [
+ "-fvisibility=hidden",
+ ],
+ }),
features = features + PYBIND_FEATURES,
linkopts = linkopts + select({
+ "@pybind11//:msvc_compiler": [],
"@pybind11//:osx": [],
"//conditions:default": ["-Wl,-Bsymbolic"],
}),
diff --git a/pybind11.BUILD b/pybind11.BUILD
index 4d7d77a..15590aa 100644
--- a/pybind11.BUILD
+++ b/pybind11.BUILD
@@ -7,13 +7,16 @@
exports_files(["LICENSE"])
-OPTIONS = [
- "-fexceptions",
- # Useless warnings
- "-Xclang-only=-Wno-undefined-inline",
- "-Xclang-only=-Wno-pragma-once-outside-header",
- "-Xgcc-only=-Wno-error", # no way to just disable the pragma-once warning in gcc
-]
+OPTIONS = select({
+ ":msvc_compiler": [],
+ "//conditions:default": [
+ "-fexceptions",
+ # Useless warnings
+ "-Xclang-only=-Wno-undefined-inline",
+ "-Xclang-only=-Wno-pragma-once-outside-header",
+ "-Xgcc-only=-Wno-error", # no way to just disable the pragma-once warning in gcc
+ ],
+})
INCLUDES = [
"include/pybind11/*.h",
@@ -48,6 +51,11 @@
)
config_setting(
+ name = "msvc_compiler",
+ flag_values = {"@bazel_tools//tools/cpp:compiler": "msvc-cl"},
+)
+
+config_setting(
name = "osx",
constraint_values = ["@platforms//os:osx"],
)
diff --git a/python_configure.bzl b/python_configure.bzl
index 2107022..7c8fa59 100644
--- a/python_configure.bzl
+++ b/python_configure.bzl
@@ -161,6 +161,8 @@
python_bin = repository_ctx.os.environ.get(_PYTHON_BIN_PATH)
if python_bin != None:
+ if _is_windows(repository_ctx):
+ python_bin = _norm_path(python_bin)
return python_bin
python_short_name = "python" + repository_ctx.attr.python_version
@@ -179,6 +181,8 @@
"""Gets the bash bin path."""
bash_bin = repository_ctx.os.environ.get(_BAZEL_SH)
if bash_bin != None:
+ if _is_windows(repository_ctx):
+ bash_bin = _norm_path(bash_bin)
return bash_bin
else:
bash_bin_path = repository_ctx.which("bash")
@@ -196,6 +200,8 @@
"""Gets the python lib path."""
python_lib = repository_ctx.os.environ.get(_PYTHON_LIB_PATH)
if python_lib != None:
+ if _is_windows(repository_ctx):
+ python_lib = _norm_path(python_lib)
return python_lib
print_lib = ("<<END\n" +
"from __future__ import print_function\n" +
@@ -300,6 +306,8 @@
"""
python_config = repository_ctx.os.environ.get(_PYTHON_CONFIG_BIN_PATH)
if python_config != None:
+ if _is_windows(repository_ctx):
+ python_config = _norm_path(python_config)
return python_config
bin_dir = repository_ctx.path(python_bin).dirname