Alibek Omarov
5 years ago
2 changed files with 128 additions and 1 deletions
@ -0,0 +1,127 @@
@@ -0,0 +1,127 @@
|
||||
#! /usr/bin/env python |
||||
# Copyright 2019 (C) a1batross |
||||
|
||||
from waflib import Configure, Errors, Utils |
||||
|
||||
# TODO: make generic |
||||
CHECK_SYMBOL_EXISTS_FRAGMENT = ''' |
||||
#include "build.h" |
||||
|
||||
int main(int argc, char** argv) |
||||
{ |
||||
(void)argv; |
||||
#ifndef %s |
||||
return ((int*)(&%s))[argc]; |
||||
#else |
||||
(void)argc; |
||||
return 0; |
||||
#endif |
||||
} |
||||
''' |
||||
|
||||
DEFINES = [ |
||||
'XASH_64BIT', |
||||
'XASH_AMD64', |
||||
'XASH_ANDROID', |
||||
'XASH_APPLE', |
||||
'XASH_ARM', |
||||
'XASH_ARM64', |
||||
'XASH_ARM_HARDFP', |
||||
'XASH_ARM_SOFTFP', |
||||
'XASH_ARMv4', |
||||
'XASH_ARMv5', |
||||
'XASH_ARMv6', |
||||
'XASH_ARMv7', |
||||
'XASH_BIG_ENDIAN', |
||||
'XASH_BSD', |
||||
'XASH_E2K', |
||||
'XASH_EMSCRIPTEN', |
||||
'XASH_FREEBSD', |
||||
'XASH_IOS', |
||||
'XASH_JS', |
||||
'XASH_LINUX', |
||||
'XASH_LITTLE_ENDIAN', |
||||
'XASH_MINGW', |
||||
'XASH_MIPS', |
||||
'XASH_MOBILE_PLATFORM', |
||||
'XASH_MSVC', |
||||
'XASH_NETBSD', |
||||
'XASH_OPENBSD', |
||||
'XASH_WIN32', |
||||
'XASH_WIN64', |
||||
'XASH_X86' |
||||
] |
||||
|
||||
def configure(conf): |
||||
conf.env.stash() |
||||
conf.start_msg('Determining library postfix') |
||||
tests = map(lambda x: { |
||||
'fragment': CHECK_SYMBOL_EXISTS_FRAGMENT % (x, x), |
||||
'includes': [conf.path.find_node('public/').abspath()], |
||||
'define_name': x }, DEFINES ) |
||||
|
||||
conf.multicheck(*tests, msg = '', mandatory = False, quiet = True) |
||||
|
||||
# engine/common/build.c |
||||
if conf.env.XASH_ANDROID: |
||||
buildos = "android" |
||||
elif conf.env.XASH_WIN32 or conf.env.XASH_LINUX or conf.env.XASH_APPLE: |
||||
buildos = "" # no prefix for default OS |
||||
elif conf.env.XASH_FREEBSD: |
||||
buildos = "freebsd" |
||||
elif conf.env.XASH_NETBSD: |
||||
buildos = "netbsd" |
||||
elif conf.env.XASH_OPENBSD: |
||||
buildos = "openbsd" |
||||
elif conf.env.XASH_EMSCRIPTEN: |
||||
buildos = "emscripten" |
||||
else: |
||||
conf.fatal("Place your operating system name here! If this is a mistake, try to fix conditions above and report a bug") |
||||
|
||||
if conf.env.XASH_AMD64: |
||||
buildarch = "amd64" |
||||
elif conf.env.XASH_X86: |
||||
buildarch = "" |
||||
elif conf.env.XASH_ARM64: |
||||
buildarch = "arm64" |
||||
elif conf.env.XASH_ARM: |
||||
buildarch = "armv" |
||||
if conf.env.XASH_ARMv7: |
||||
buildarch += "7" |
||||
elif conf.env.XASH_ARMv6: |
||||
buildarch += "6" |
||||
elif conf.env.XASH_ARMv5: |
||||
buildarch += "5" |
||||
elif conf.env.XASH_ARMv4: |
||||
buildarch += "4" |
||||
else: |
||||
raise conf.fatal('Unknown ARM') |
||||
|
||||
if conf.env.XASH_ARM_HARDFP: |
||||
buildarch += "hf" |
||||
else: |
||||
buildarch += "l" |
||||
elif conf.env.XASH_MIPS and conf.env.XASH_BIG_ENDIAN: |
||||
buildarch = "mips" |
||||
elif conf.env.XASH_MIPS and conf.env.XASH_LITTLE_ENDIAN: |
||||
buildarch = "mipsel" |
||||
elif conf.env.XASH_JS: |
||||
buildarch = "javascript" |
||||
elif conf.env.XASH_E2K: |
||||
buildarch = "e2k" |
||||
else: |
||||
raise conf.fatal("Place your architecture name here! If this is a mistake, try to fix conditions above and report a bug") |
||||
|
||||
conf.env.revert() |
||||
|
||||
if buildos == 'android': |
||||
# force disable for Android, as Android ports aren't distributed in normal way and doesn't follow library naming |
||||
conf.env.POSTFIX = '' |
||||
elif buildos != '' and buildarch != '': |
||||
conf.env.POSTFIX = '_%s_%s' % (buildos,buildarch) |
||||
elif buildarch != '': |
||||
conf.env.POSTFIX = '_%s' % buildarch |
||||
else: |
||||
conf.env.POSTFIX = '' |
||||
|
||||
conf.end_msg(conf.env.POSTFIX) |
Loading…
Reference in new issue