Sun OS platforms (legacy solaris but illumos based ones too). (#176)
large pages set via a hint.
diff --git a/build/ninja/clang.py b/build/ninja/clang.py
index a6d2127..bae4417 100644
--- a/build/ninja/clang.py
+++ b/build/ninja/clang.py
@@ -70,7 +70,7 @@
self.parse_default_variables(variables)
self.read_build_prefs()
- if self.target.is_linux() or self.target.is_bsd() or self.target.is_raspberrypi():
+ if self.target.is_linux() or self.target.is_bsd() or self.target.is_raspberrypi() or self.target.is_sunos():
self.cflags += ['-D_GNU_SOURCE=1']
self.linkflags += ['-pthread']
self.oslibs += ['m']
@@ -335,7 +335,7 @@
flags = []
if targettype == 'sharedlib':
flags += ['-DBUILD_DYNAMIC_LINK=1']
- if self.target.is_linux() or self.target.is_bsd():
+ if self.target.is_linux() or self.target.is_bsd() or self.target.is_sunos():
flags += ['-fPIC']
flags += self.make_targetarchflags(arch, targettype)
return flags
diff --git a/build/ninja/gcc.py b/build/ninja/gcc.py
index 20646c1..299be53 100644
--- a/build/ninja/gcc.py
+++ b/build/ninja/gcc.py
@@ -49,7 +49,7 @@
self.parse_default_variables(variables)
self.read_build_prefs()
- if self.target.is_linux() or self.target.is_bsd() or self.target.is_raspberrypi():
+ if self.target.is_linux() or self.target.is_bsd() or self.target.is_raspberrypi() or self.target.is_sunos():
self.cflags += ['-D_GNU_SOURCE=1']
self.linkflags += ['-pthread']
if self.target.is_linux() or self.target.is_raspberrypi():
@@ -186,7 +186,7 @@
flags = []
if targettype == 'sharedlib':
flags += ['-DBUILD_DYNAMIC_LINK=1']
- if self.target.is_linux() or self.target.is_bsd():
+ if self.target.is_linux() or self.target.is_bsd() or self.target.is_sunos():
flags += ['-fPIC']
flags += self.make_targetarchflags(arch, targettype)
return flags
diff --git a/build/ninja/platform.py b/build/ninja/platform.py
index 68cf0ab..cf91c14 100644
--- a/build/ninja/platform.py
+++ b/build/ninja/platform.py
@@ -5,7 +5,7 @@
import sys
def supported_platforms():
- return [ 'windows', 'linux', 'macos', 'bsd', 'ios', 'android', 'raspberrypi', 'tizen' ]
+ return [ 'windows', 'linux', 'macos', 'bsd', 'ios', 'android', 'raspberrypi', 'tizen', 'sunos' ]
class Platform(object):
def __init__(self, platform):
@@ -30,6 +30,8 @@
self.platform = 'raspberrypi'
elif self.platform.startswith('tizen'):
self.platform = 'tizen'
+ elif self.platform.startswith('sunos'):
+ self.platform = 'sunos'
def platform(self):
return self.platform
@@ -58,5 +60,8 @@
def is_tizen(self):
return self.platform == 'tizen'
+ def is_sunos(self):
+ return self.platform == 'sunos'
+
def get(self):
return self.platform
diff --git a/build/ninja/toolchain.py b/build/ninja/toolchain.py
index dd5f4ac..d10d840 100644
--- a/build/ninja/toolchain.py
+++ b/build/ninja/toolchain.py
@@ -132,7 +132,7 @@
def initialize_default_archs(self):
if self.target.is_windows():
self.archs = ['x86-64']
- elif self.target.is_linux() or self.target.is_bsd():
+ elif self.target.is_linux() or self.target.is_bsd() or self.target.is_sunos():
localarch = subprocess.check_output(['uname', '-m']).decode().strip()
if localarch == 'x86_64' or localarch == 'amd64':
self.archs = ['x86-64']
diff --git a/rpmalloc/rpmalloc.c b/rpmalloc/rpmalloc.c
index 84227b3..d011bcc 100644
--- a/rpmalloc/rpmalloc.c
+++ b/rpmalloc/rpmalloc.c
@@ -757,6 +757,9 @@
void* ptr = mmap(0, size + padding, PROT_READ | PROT_WRITE, flags, fd, 0);
# elif defined(MAP_HUGETLB)
void* ptr = mmap(0, size + padding, PROT_READ | PROT_WRITE, (_memory_huge_pages ? MAP_HUGETLB : 0) | flags, -1, 0);
+# elif defined(MAP_ALIGN)
+ caddr_t base = (_memory_huge_pages ? (caddr_t)(4 << 20) : 0);
+ void* ptr = mmap(base, size + padding, PROT_READ | PROT_WRITE, (_memory_huge_pages ? MAP_ALIGN : 0) | flags, -1, 0);
# else
void* ptr = mmap(0, size + padding, PROT_READ | PROT_WRITE, flags, -1, 0);
# endif