waf/playground/stpl_c_py_cs_satellite_wix/src/wscript

92 lines
2.7 KiB
Python

# vim: syntax=python
#
# needs waf created with
# python waf-light --tools=resx,satellite_assembly,wix
#
# Assumed situation:
# - Logic in C, which depends on an external device; some code is generated
# - Wrapper for C#
# - GUI in C# using C# Wrapper
# - GUI localization via satellite assemblies
# - Wrapper for Python
#
# Python libs required: bottle, cffi, pytest
#
# This project requires plenty of applications and libraries such as:
# gcc, mono-devel, pytest, cffi
# LD_LIBRARY_PATH=$PWD/../build/api/: PATH=$PATH:$LD_LIBRARY_PATH waf configure build test --stubs
#
from waflib import Utils
import sys, os, shutil
APPNAME = "funigui"
DLLNAME = "funi"
VERSION = "1.0"
COMPANY = "FuniCo"
MAXFUNI = 4
top = "."
out = "../build"
def options(ctx):
ctx.add_option("--stubs", action="store_true", default=False, help="Compile with stubs instead of using external device")
ctx.load('compiler_c compiler_cxx cs')
PYTEST = ''
def configure (ctx):
global PYTEST
try:
PYTEST = ctx.find_program('py.test')[0]
except:
PYTEST = ctx.find_program('py.test',path_list=[r'C:\Python35\Scripts']) [0]
if ctx.options.stubs:
print('!USING STUBS!')
ctx.env.append_value('DEFINES',['STUBS','DEBUG'])
else:
ctx.env.append_value('DEFINES',['NDEBUG'])
ctx.load('compiler_c compiler_cxx cs resx satellite_assembly')
if Utils.is_win32:
ctx.load('wix')
if ctx.env['CC_NAME'] == 'msvc':
if ctx.options.stubs:
ctx.env.append_value('CFLAGS',['/Z7','/EHsc','/W3'])
ctx.env.append_value('CXXFLAGS',['/Z7','/EHsc','/W3'])
else:
ctx.env.append_value('CFLAGS',['/Ox','/EHsc','/DNDEBUG','/W3'])
ctx.env.append_value('CXXFLAGS',['/Ox','/EHsc','/DNDEBUG','/W3'])
print(ctx.env['CC_NAME'])
else:
if ctx.options.stubs:
ctx.env.append_value('CFLAGS',['-g','-w'])
ctx.env.append_value('CXXFLAGS',['-g','-w'])
else:
ctx.env.append_value('CFLAGS',['-O2','-w'])
ctx.env.append_value('CXXFLAGS',['-O2','-w'])
ctx.env.guiname = APPNAME
ctx.env.version = VERSION
ctx.env.dllname = DLLNAME
ctx.env.maxfuni = MAXFUNI
ctx.env.company = COMPANY
ctx.load('print_commands')
def build(ctx):
ctx.load('build', tooldir='.') # additional stuff
ctx.recurse('api')
ctx.recurse('gui')
if Utils.is_win32:
ctx.recurse('msi')
def test(ctx):
if ctx.options.stubs:
cwd = ctx.path.find_node('../build/api').abspath()
print('running test in ',cwd)
ctx.cmd_and_log(os.path.join(cwd,'test_funi'),cwd=cwd)
ctx.cmd_and_log(PYTEST+' test_funi.py',cwd=cwd)