build fixes for macos and posix

This commit is contained in:
Mattias Jansson
2018-01-24 20:22:35 +01:00
parent 4b4221014f
commit bf22266303
7 changed files with 55 additions and 10 deletions

View File

@@ -36,7 +36,7 @@ class ClangToolchain(toolchain.Toolchain):
self.ccdeps = 'gcc'
self.ccdepfile = '$out.d'
self.arcmd = self.rmcmd('$out') + ' && $toolchain$ar crsD $ararchflags $arflags $out $in'
self.linkcmd = '$toolchain$cc $libpaths $configlibpaths $linkflags $linkarchflags $linkconfigflags -o $out $in $libs $archlibs $oslibs $frameworks'
self.linkcmd = '$toolchain$link $libpaths $configlibpaths $linkflags $linkarchflags $linkconfigflags -o $out $in $libs $archlibs $oslibs $frameworks'
#Base flags
self.cflags = ['-D' + project.upper() + '_COMPILE=1',
@@ -348,6 +348,8 @@ class ClangToolchain(toolchain.Toolchain):
flags = []
if targettype == 'sharedlib':
flags += ['-DBUILD_DYNAMIC_LINK=1']
if self.target.is_linux():
flags += ['-fPIC']
flags += self.make_targetarchflags(arch, targettype)
return flags
@@ -393,6 +395,12 @@ class ClangToolchain(toolchain.Toolchain):
flags += ['-Xlinker', '/DLL']
elif targettype == 'bin':
flags += ['-Xlinker', '/SUBSYSTEM:CONSOLE']
else:
if targettype == 'sharedlib':
if self.target.is_macos() or self.target.is_ios():
flags += ['-dynamiclib']
else:
flags += ['-shared']
return flags
def make_linkarchlibs(self, arch, targettype):

View File

@@ -25,7 +25,7 @@ class GCCToolchain(toolchain.Toolchain):
self.ccdeps = 'gcc'
self.ccdepfile = '$out.d'
self.arcmd = self.rmcmd('$out') + ' && $toolchain$ar crsD $ararchflags $arflags $out $in'
self.linkcmd = '$toolchain$cc $libpaths $configlibpaths $linkflags $linkarchflags $linkconfigflags -o $out $in $libs $archlibs $oslibs'
self.linkcmd = '$toolchain$link $libpaths $configlibpaths $linkflags $linkarchflags $linkconfigflags -o $out $in $libs $archlibs $oslibs'
#Base flags
self.cflags = ['-D' + project.upper() + '_COMPILE=1',
@@ -82,6 +82,7 @@ class GCCToolchain(toolchain.Toolchain):
#Builders
self.builders['c'] = self.builder_cc
self.builders['cc'] = self.builder_cxx
self.builders['cpp'] = self.builder_cxx
self.builders['lib'] = self.builder_lib
self.builders['multilib'] = self.builder_multicopy
self.builders['sharedlib'] = self.builder_sharedlib
@@ -182,6 +183,8 @@ class GCCToolchain(toolchain.Toolchain):
flags = []
if targettype == 'sharedlib':
flags += ['-DBUILD_DYNAMIC_LINK=1']
if self.target.is_linux():
flags += ['-fPIC']
flags += self.make_targetarchflags(arch, targettype)
return flags
@@ -212,6 +215,17 @@ class GCCToolchain(toolchain.Toolchain):
def make_linkconfigflags(self, config, targettype):
flags = []
if self.target.is_windows():
if targettype == 'sharedlib':
flags += ['-Xlinker', '/DLL']
elif targettype == 'bin':
flags += ['-Xlinker', '/SUBSYSTEM:CONSOLE']
else:
if targettype == 'sharedlib':
if self.target.is_macosx() or self.target.is_ios():
flags += ['-dynamiclib']
else:
flags += ['-shared']
return flags
def make_libs(self, libs):

View File

@@ -28,7 +28,8 @@ class MSVCToolchain(toolchain.Toolchain):
self.linkcmd = '$toolchain$link $libpaths $configlibpaths $linkflags $linkarchflags $linkconfigflags /DEBUG /NOLOGO /SUBSYSTEM:CONSOLE /DYNAMICBASE /NXCOMPAT /MANIFEST /MANIFESTUAC:\"level=\'asInvoker\' uiAccess=\'false\'\" /TLBID:1 /PDB:$pdbpath /OUT:$out $in $libs $archlibs $oslibs'
self.dllcmd = self.linkcmd + ' /DLL'
self.cflags = ['/D', '"' + project.upper() + '_COMPILE=1"', '/D', '"_UNICODE"', '/D', '"UNICODE"', '/Zi', '/W3', '/WX', '/Oi', '/Oy-', '/GS-', '/Gy-', '/Qpar-', '/fp:fast', '/fp:except-', '/Zc:forScope', '/Zc:wchar_t', '/GR-', '/openmp-']
self.cflags = ['/D', '"' + project.upper() + '_COMPILE=1"', '/D', '"_UNICODE"', '/D', '"UNICODE"', '/Zi', '/Oi', '/Oy-', '/GS-', '/Gy-', '/Qpar-', '/fp:fast', '/fp:except-', '/Zc:forScope', '/Zc:wchar_t', '/GR-', '/openmp-']
self.cwarnflags = ['/W3', '/WX']
self.cmoreflags = []
self.arflags = ['/ignore:4221'] #Ignore empty object file warning]
self.linkflags = ['/DEBUG']
@@ -49,11 +50,17 @@ class MSVCToolchain(toolchain.Toolchain):
if self.is_monolithic():
self.cflags += ['/D', '"BUILD_MONOLITHIC=1"']
if not 'nowarning' in variables or not variables['nowarning']:
self.cflags += self.cwarnflags
self.cxxflags = list(self.cflags)
#Overrides
self.objext = '.obj'
#Builders
self.builders['c'] = self.builder_cc
self.builders['cc'] = self.builder_cxx
self.builders['cpp'] = self.builder_cxx
self.builders['lib'] = self.builder_lib
self.builders['multilib'] = self.builder_multicopy
self.builders['sharedlib'] = self.builder_sharedlib
@@ -89,6 +96,7 @@ class MSVCToolchain(toolchain.Toolchain):
writer.variable('cflags', self.cflags)
writer.variable('carchflags', '')
writer.variable('cconfigflags', '')
writer.variable('cxxflags', self.cxxflags)
writer.variable('cmoreflags', self.cmoreflags)
writer.variable('arflags', self.arflags)
writer.variable('ararchflags', '')

View File

@@ -62,3 +62,6 @@ class Platform(object):
def is_tizen(self):
return self.platform == 'tizen'
def get(self):
return self.platform

View File

@@ -73,7 +73,10 @@ class Toolchain(object):
else:
self.libprefix = 'lib'
self.staticlibext = '.a'
self.dynamiclibext = '.so'
if target.is_macos() or target.is_ios():
self.dynamiclibext = '.dylib'
else:
self.dynamiclibext = '.so'
self.binprefix = ''
self.binext = ''
@@ -156,7 +159,7 @@ class Toolchain(object):
self.initialize_default_configs()
def initialize_default_configs(self):
self.configs = ['debug', 'release', 'profile', 'deploy']
self.configs = ['debug', 'release'] #, 'profile', 'deploy']
def initialize_toolchain(self):
if self.android != None:

View File

@@ -13,6 +13,10 @@
{
"follow_symlinks": true,
"path": "../rpmalloc"
},
{
"follow_symlinks": true,
"path": "../test"
}
],
"settings":

15
test/main.c vendored
View File

@@ -13,18 +13,20 @@
#include <string.h>
#include <math.h>
#ifndef ENABLE_GUARDS
# define ENABLE_GUARDS 0
#endif
#if ENABLE_GUARDS
#ifdef _MSC_VER
# define PRIsize "Iu"
#else
# define PRIsize "zu"
#endif
#endif
#define pointer_offset(ptr, ofs) (void*)((char*)(ptr) + (ptrdiff_t)(ofs))
#define pointer_diff(first, second) (ptrdiff_t)((const char*)(first) - (const char*)(second))
#ifndef ENABLE_GUARDS
# define ENABLE_GUARDS 0
#endif
//#define pointer_diff(first, second) (ptrdiff_t)((const char*)(first) - (const char*)(second))
static int
test_alloc(void) {
@@ -486,6 +488,7 @@ static int test_overwrite_detected;
static void
test_overwrite_cb(void* addr) {
(void)sizeof(addr);
++test_overwrite_detected;
}
@@ -543,6 +546,8 @@ test_overwrite(void) {
int
test_run(int argc, char** argv) {
(void)sizeof(argc);
(void)sizeof(argv);
if (test_alloc())
return -1;
if (test_threaded())