diff --git a/src/include/openssl/base.h b/src/include/openssl/base.h index 7a3adfb..88012ad 100644 --- a/src/include/openssl/base.h +++ b/src/include/openssl/base.h @@ -94,6 +94,8 @@ extern "C" { #define OPENSSL_PNACL #elif defined(__myriad2__) #define OPENSSL_32_BIT +#elif defined(__s390x__) +#define OPENSSL_64_BIT #else #error "Unknown target CPU" #endif diff --git a/BUILD b/BUILD index 6b645e61..c90b7beb 100644 --- a/BUILD +++ b/BUILD @@ -40,29 +40,46 @@ config_setting( values = {"cpu": "darwin"}, ) -boringssl_copts = [ - # Assembler option --noexecstack adds .note.GNU-stack to each object to - # ensure that binaries can be built with non-executable stack. - "-Wa,--noexecstack", - - # This is needed on Linux systems (at least) to get rwlock in pthread. - "-D_XOPEN_SOURCE=700", - - # This list of warnings should match those in the top-level CMakeLists.txt. - "-Wall", - "-Werror", - "-Wformat=2", - "-Wsign-compare", - "-Wmissing-field-initializers", - "-Wwrite-strings", - "-Wshadow", - "-fno-common", - - # Modern build environments should be able to set this to use atomic - # operations for reference counting rather than locks. However, it's - # known not to work on some Android builds. - # "-DOPENSSL_C11_ATOMIC", -] + select({ +config_setting( + name = "windows", + values = {"cpu": "x64_windows"}, + visibility = ["//visibility:public"], +) + +config_setting( + name = "windows_msvc", + values = {"cpu": "x64_windows_msvc"}, + visibility = ["//visibility:public"], +) + +boringssl_copts = select({ + ":windows": [ + "-DWIN32_LEAN_AND_MEAN", + ], + "//conditions:default": [ + # Assembler option --noexecstack adds .note.GNU-stack to each object to + # ensure that binaries can be built with non-executable stack. + "-Wa,--noexecstack", + + # This is needed on Linux systems (at least) to get rwlock in pthread. + "-D_XOPEN_SOURCE=700", + + # This list of warnings should match those in the top-level CMakeLists.txt. + "-Wall", + "-Werror", + "-Wformat=2", + "-Wsign-compare", + "-Wmissing-field-initializers", + "-Wwrite-strings", + "-Wshadow", + "-fno-common", + + # Modern build environments should be able to set this to use atomic + # operations for reference counting rather than locks. However, it's + # known not to work on some Android builds. + # "-DOPENSSL_C11_ATOMIC", + ], +}) + select({ ":linux_x86_64": [], ":mac_x86_64": [], "//conditions:default": ["-DOPENSSL_NO_ASM"], @@ -75,18 +92,26 @@ crypto_sources_asm = select({ }) # For C targets only (not C++), compile with C11 support. -boringssl_copts_c11 = boringssl_copts + [ - "-std=c11", - "-Wmissing-prototypes", - "-Wold-style-definition", - "-Wstrict-prototypes", -] +boringssl_copts_c11 = boringssl_copts + select({ + ":windows": [], + ":windows_msvc": [], + "//conditions:default": [ + "-std=c11", + "-Wmissing-prototypes", + "-Wold-style-definition", + "-Wstrict-prototypes", + ], +}) # For C targets only (not C++), compile with C11 support. -boringssl_copts_cxx = boringssl_copts + [ - "-std=c++11", - "-Wmissing-declarations", -] +boringssl_copts_cxx = boringssl_copts + select({ + ":windows": [], + ":windows_msvc": [], + "//conditions:default": [ + "-std=c++11", + "-Wmissing-declarations", + ], +}) cc_library( name = "crypto", @@ -96,6 +121,8 @@ cc_library( includes = ["src/include"], linkopts = select({ ":mac_x86_64": [], + ":windows": [], + ":windows_msvc": [], "//conditions:default": ["-lpthread"], }), visibility = ["//visibility:public"],