Skip to content

Commit

Permalink
Add necessary flags for building MSVC binding
Browse files Browse the repository at this point in the history
Using C++14 mode is necessary because MSVC's std headers include some
C++14 syntax. "utility" is converted to "/utility" to exclude MSVC's
"xutility" header.
  • Loading branch information
upsuper committed Jul 19, 2016
1 parent cfc27b3 commit 49f7f54
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions ports/geckolib/gecko_bindings/tools/regen.py
Expand Up @@ -21,7 +21,7 @@
# Flags common for all the targets.
COMMON_BUILD_KEY: {
"flags": [
"-x", "c++", "-std=gnu++0x",
"-x", "c++", "-std=c++14",
"-allow-unknown-types", "-no-bitfield-methods",
"-no-type-renaming", "-no-namespaced-constants",
"-DTRACING=1", "-DIMPL_LIBXUL", "-DMOZ_STYLO_BINDINGS=1",
Expand Down Expand Up @@ -71,10 +71,11 @@
"gfxFontFamilyList.h", "gfxFontFeatures.h", "imgRequestProxy.h",
"nsIRequest.h", "imgIRequest.h", "CounterStyleManager.h",
"nsStyleConsts.h", "nsCSSValue.h", "SheetType.h", "nsIPrincipal.h",
"nsDataHashtable.h", "nsCSSScanner.h", "utility", "nsTArray",
"nsDataHashtable.h", "nsCSSScanner.h", "nsTArray",
"pair", "SheetParsingMode.h", "StaticPtr.h", "nsProxyRelease.h",
"mozilla/dom/AnimationEffectReadOnlyBinding.h",
"/Types.h", # <- Disallow UnionTypes.h
"/utility", # <- Disallow xutility
"nsINode.h", # <- For `NodeFlags`.
],
"blacklist": [
Expand Down Expand Up @@ -140,6 +141,27 @@ def platform_dependent_defines():
ret.append("-DOS_LINUX=1")
elif system == "Darwin":
ret.append("-DOS_MACOSX=1")
elif system == "Windows":
ret.append("-DOS_WIN=1")
ret.append("-DWIN32=1")
ret.append("-use-msvc-mangling")
msvc_platform = os.environ["PLATFORM"]
if msvc_platform == "X86":
ret.append("--target=i686-pc-win32")
elif msvc_platform == "X64":
ret.append("--target=x86_64-pc-win32")
else:
raise Exception("Only MSVC builds are supported on Windows")
# For compatibility with MSVC 2015
ret.append("-fms-compatibility-version=19")
# To enable the builtin __builtin_offsetof so that CRT wouldn't
# use reinterpret_cast in offsetof() which is not allowed inside
# static_assert().
ret.append("-D_CRT_USE_BUILTIN_OFFSETOF")
# Enable hidden attribute (which is not supported by MSVC and
# thus not enabled by default with a MSVC-compatibile build)
# to exclude hidden symbols from the generated file.
ret.append("-DHAVE_VISIBILITY_HIDDEN_ATTRIBUTE=1")
else:
raise Exception("Unknown platform")

Expand Down

0 comments on commit 49f7f54

Please sign in to comment.