mirror of https://gitlab.com/ita1024/waf.git
Made this project build on Linux
This commit is contained in:
parent
8083205b81
commit
69e51290fd
|
@ -1,11 +1,16 @@
|
||||||
|
#! /usr/bin/env python
|
||||||
from cffi import FFI
|
from cffi import FFI
|
||||||
import os.path
|
import os.path
|
||||||
import re
|
import re
|
||||||
|
|
||||||
_ffi = FFI()
|
_ffi = FFI()
|
||||||
|
|
||||||
|
pat = '%s.dll'
|
||||||
|
if os.sep == '/':
|
||||||
|
pat = 'lib%s.so'
|
||||||
|
|
||||||
_apifile = os.path.join(os.path.dirname(__file__),'funi.h')
|
_apifile = os.path.join(os.path.dirname(__file__),'funi.h')
|
||||||
_dllname = os.path.join(os.path.split(__file__)[0],'funi.dll')
|
_dllname = os.path.join(os.path.split(__file__)[0], pat % 'funi')
|
||||||
def _api():
|
def _api():
|
||||||
with open(_apifile) as f:
|
with open(_apifile) as f:
|
||||||
api = f.readlines()
|
api = f.readlines()
|
||||||
|
|
|
@ -1,18 +1,17 @@
|
||||||
|
#! /usr/bin/env python
|
||||||
|
# encoding: utf-8
|
||||||
#vim syntax=python
|
#vim syntax=python
|
||||||
|
|
||||||
from build import *
|
|
||||||
|
|
||||||
funi = bld.env.dllname
|
funi = bld.env.dllname
|
||||||
gui = bld.env.guiname+'.exe'
|
gui = bld.env.guiname+'.exe'
|
||||||
funidll = funi +'.dll'
|
|
||||||
csdll = bld.env.dllname+'_cs.dll'
|
csdll = bld.env.dllname+'_cs.dll'
|
||||||
|
|
||||||
bld(rule=stpl,source='funi.c.stpl',target='funi.c')
|
bld(rule=bld.stpl,source='funi.c.stpl',target='funi.c')
|
||||||
bld(rule=stpl,source='funi.h.stpl',target='funi.h')
|
bld(rule=bld.stpl,source='funi.h.stpl',target='funi.h')
|
||||||
bld(rule=stpl,source='funi_cs.cs.stpl',target='funi_cs.cs')
|
bld(rule=bld.stpl,source='funi_cs.cs.stpl',target='funi_cs.cs')
|
||||||
bld(rule=stpl,source='funi.py.stpl',target='funi.py')
|
bld(rule=bld.stpl,source='funi.py.stpl',target='funi.py')
|
||||||
bld(rule=stpl,source='test_funi.py.stpl',target='test_funi.py')
|
bld(rule=bld.stpl,source='test_funi.py.stpl',target='test_funi.py')
|
||||||
bld(rule=stpl,source='test_funi.cpp.stpl',target='test_funi.cpp')
|
bld(rule=bld.stpl,source='test_funi.cpp.stpl',target='test_funi.cpp')
|
||||||
|
|
||||||
bld.add_group()
|
bld.add_group()
|
||||||
|
|
||||||
|
@ -24,10 +23,10 @@ bld.shlib(
|
||||||
bld.program(
|
bld.program(
|
||||||
source = 'test_funi.cpp',
|
source = 'test_funi.cpp',
|
||||||
includes = ['.'],
|
includes = ['.'],
|
||||||
target = 'test_funi.exe',
|
target = 'test_funi',
|
||||||
use = funi)
|
use = funi)
|
||||||
|
|
||||||
bld.add_group()
|
bld.add_group()
|
||||||
|
|
||||||
bld(features='cs',source='funi_cs.cs',gen=csdll,includes='.')
|
bld(features='cs',source='funi_cs.cs',gen=csdll,includes='.', name='csdll')
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
#! /usr/bin/env python
|
||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import codecs
|
import codecs
|
||||||
|
@ -12,11 +15,14 @@ def stpl(tsk):
|
||||||
st=bottle.template(name,template_lookup=[lookup], company = bld.env.company, guiname=bld.env.guiname, version=bld.env.version,
|
st=bottle.template(name,template_lookup=[lookup], company = bld.env.company, guiname=bld.env.guiname, version=bld.env.version,
|
||||||
dllname=bld.env.dllname, maxfuni=bld.env.maxfuni)
|
dllname=bld.env.dllname, maxfuni=bld.env.maxfuni)
|
||||||
with codecs.open(pt,mode='w',encoding="utf-8") as f: f.write(st)
|
with codecs.open(pt,mode='w',encoding="utf-8") as f: f.write(st)
|
||||||
|
os.chmod(pt, 493)
|
||||||
|
|
||||||
#for files that will be created
|
# copy files that already exist
|
||||||
def cp(self):
|
def src2bld(self, filename):
|
||||||
shutil.copy(self.inputs[0].abspath(),self.outputs[0].abspath())
|
self(features='subst', source=filename, target=filename, is_copy=True)
|
||||||
|
|
||||||
#for files that already exist
|
def build(bld):
|
||||||
src2bld = lambda bld,x: shutil.copy(bld.path.find_node(x).abspath(), bld.path.get_bld().make_node(x).write('').abspath())
|
# clean initialization
|
||||||
|
bld.src2bld = src2bld
|
||||||
|
bld.stpl = stpl
|
||||||
|
|
||||||
|
|
|
@ -1,26 +1,34 @@
|
||||||
|
#! /usr/bin/env python
|
||||||
|
# encoding: utf-8
|
||||||
#vim syntax=python
|
#vim syntax=python
|
||||||
|
|
||||||
import sys
|
import os, sys, shutil
|
||||||
import shutil
|
from waflib import Utils
|
||||||
|
|
||||||
import os
|
|
||||||
sys.path += [os.getcwd()]
|
|
||||||
|
|
||||||
from build import *
|
|
||||||
|
|
||||||
bld.add_group()
|
bld.add_group()
|
||||||
|
|
||||||
funigui = ctx.env.guiname+'.exe'
|
funigui = ctx.env.guiname+'.exe'
|
||||||
funidll = ctx.env.dllname+'.dll'
|
|
||||||
csdll = ctx.env.dllname+'_cs.dll'
|
csdll = ctx.env.dllname+'_cs.dll'
|
||||||
funi = bld.path.find_or_declare(funidll)
|
|
||||||
funi_cs = bld.path.find_or_declare(csdll)
|
funi_cs = bld.path.find_or_declare(csdll)
|
||||||
|
|
||||||
bld(rule=cp, source=bld.path.get_bld().make_node('../api/'+funidll) , target=funi )
|
# obtain the file names to copy
|
||||||
bld(rule=cp, source=bld.path.get_bld().make_node('../api/'+csdll) , target=funi_cs)
|
from waflib import TaskGen
|
||||||
src2bld(bld,'Resources/Icon1.ico')
|
@TaskGen.feature('copy_over')
|
||||||
|
@TaskGen.before_method('process_subst')
|
||||||
|
def get_filenames_to_copy_from_task_generators(self):
|
||||||
|
src = self.bld.get_tgen_by_name(self.from_tg).tasks[-1].outputs[0]
|
||||||
|
self.source = [src]
|
||||||
|
self.target = [src.name]
|
||||||
|
self.is_copy = True
|
||||||
|
|
||||||
bld(rule=stpl,source='AssemblyInfo.cs.stpl',target='AssemblyInfo.cs')
|
# just copy the files to this folder
|
||||||
|
bld(features='copy_over subst', from_tg='funi')
|
||||||
|
bld(features='copy_over subst', from_tg='csdll')
|
||||||
|
|
||||||
|
# copy the same file to the build directory
|
||||||
|
bld.src2bld(bld, 'Resources/Icon1.ico')
|
||||||
|
|
||||||
|
bld(rule=bld.stpl,source='AssemblyInfo.cs.stpl',target='AssemblyInfo.cs')
|
||||||
|
|
||||||
bld.add_group()
|
bld.add_group()
|
||||||
|
|
||||||
|
@ -35,6 +43,18 @@ refs = """
|
||||||
System
|
System
|
||||||
System.Core
|
System.Core
|
||||||
System.Windows.Forms
|
System.Windows.Forms
|
||||||
|
System.Xml
|
||||||
|
System.Xml.Linq
|
||||||
|
System.Data
|
||||||
|
System.Data.DataSetExtensions
|
||||||
|
System.Drawing
|
||||||
|
""".strip().split()
|
||||||
|
|
||||||
|
if Utils.is_win32:
|
||||||
|
refs = """
|
||||||
|
System
|
||||||
|
System.Core
|
||||||
|
System.Windows.Forms
|
||||||
System.Linq
|
System.Linq
|
||||||
System.RunTime.InteropServices
|
System.RunTime.InteropServices
|
||||||
System.Xml
|
System.Xml
|
||||||
|
@ -53,9 +73,10 @@ def csflag(x):
|
||||||
CSFLAGS+=[x]
|
CSFLAGS+=[x]
|
||||||
csflag(r'/platform:x64')
|
csflag(r'/platform:x64')
|
||||||
csflag(r'/errorreport:prompt')
|
csflag(r'/errorreport:prompt')
|
||||||
csflag(r'/errorendlocation')
|
if Utils.is_win32:
|
||||||
csflag(r'/preferreduilang:en-US')
|
csflag(r'/errorendlocation')
|
||||||
csflag(r'/highentropyva-')
|
csflag(r'/preferreduilang:en-US')
|
||||||
|
csflag(r'/highentropyva-')
|
||||||
csflag(r'/debug:pdbonly')
|
csflag(r'/debug:pdbonly')
|
||||||
csflag(r'/filealign:512')
|
csflag(r'/filealign:512')
|
||||||
csflag(r'/define:'+ctx.env.guiname[1:]) #EstimPRO or EstimRESEARCH
|
csflag(r'/define:'+ctx.env.guiname[1:]) #EstimPRO or EstimRESEARCH
|
||||||
|
@ -77,4 +98,5 @@ bld(features='cs',source=src,gen=funigui,csflags=CSFLAGS,use=[r+'.dll' for r in
|
||||||
|
|
||||||
bld.add_group()
|
bld.add_group()
|
||||||
|
|
||||||
bld(features='satellite_assembly',source='Resources/resources.fr.txt',gen=funigui)
|
bld(features='satellite_assembly',source='Resources/resources.fr.txt', gen=funigui)
|
||||||
|
|
||||||
|
|
|
@ -10,14 +10,16 @@
|
||||||
# - GUI localization via satellite assemblies
|
# - GUI localization via satellite assemblies
|
||||||
# - Wrapper for Python
|
# - Wrapper for Python
|
||||||
#
|
#
|
||||||
# Python libs required: bottle, cffi
|
# 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
|
||||||
|
#
|
||||||
|
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
import os.path
|
|
||||||
import shutil
|
|
||||||
|
|
||||||
sys.path += [os.getcwd()]
|
from waflib import Utils
|
||||||
|
import sys, os, shutil
|
||||||
|
|
||||||
APPNAME = "funigui"
|
APPNAME = "funigui"
|
||||||
DLLNAME = "funi"
|
DLLNAME = "funi"
|
||||||
|
@ -37,7 +39,7 @@ PYTEST = ''
|
||||||
def configure (ctx):
|
def configure (ctx):
|
||||||
global PYTEST
|
global PYTEST
|
||||||
try:
|
try:
|
||||||
PYTEST = ctx.find_program('py.test') [0]
|
PYTEST = ctx.find_program('py.test')[0]
|
||||||
except:
|
except:
|
||||||
PYTEST = ctx.find_program('py.test',path_list=[r'C:\Python35\Scripts']) [0]
|
PYTEST = ctx.find_program('py.test',path_list=[r'C:\Python35\Scripts']) [0]
|
||||||
|
|
||||||
|
@ -48,7 +50,7 @@ def configure (ctx):
|
||||||
ctx.env.append_value('DEFINES',['NDEBUG'])
|
ctx.env.append_value('DEFINES',['NDEBUG'])
|
||||||
|
|
||||||
ctx.load('compiler_c compiler_cxx cs resx satellite_assembly')
|
ctx.load('compiler_c compiler_cxx cs resx satellite_assembly')
|
||||||
if sys.platform != 'linux':
|
if Utils.is_win32:
|
||||||
ctx.load('wix')
|
ctx.load('wix')
|
||||||
|
|
||||||
if ctx.env['CC_NAME'] == 'msvc':
|
if ctx.env['CC_NAME'] == 'msvc':
|
||||||
|
@ -71,17 +73,19 @@ def configure (ctx):
|
||||||
ctx.env.dllname = DLLNAME
|
ctx.env.dllname = DLLNAME
|
||||||
ctx.env.maxfuni = MAXFUNI
|
ctx.env.maxfuni = MAXFUNI
|
||||||
ctx.env.company = COMPANY
|
ctx.env.company = COMPANY
|
||||||
|
ctx.load('print_commands')
|
||||||
|
|
||||||
def build(ctx):
|
def build(ctx):
|
||||||
|
ctx.load('build', tooldir='.') # additional stuff
|
||||||
ctx.recurse('api')
|
ctx.recurse('api')
|
||||||
ctx.recurse('gui')
|
ctx.recurse('gui')
|
||||||
if sys.platform != 'linux':
|
if Utils.is_win32:
|
||||||
ctx.recurse('msi')
|
ctx.recurse('msi')
|
||||||
|
|
||||||
def test(ctx):
|
def test(ctx):
|
||||||
if ctx.options.stubs:
|
if ctx.options.stubs:
|
||||||
cwd = ctx.path.find_node('../build/api').abspath()
|
cwd = ctx.path.find_node('../build/api').abspath()
|
||||||
print('running test in ',cwd)
|
print('running test in ',cwd)
|
||||||
ctx.cmd_and_log(os.path.join(cwd,'test_funi.exe'),cwd=cwd)
|
ctx.cmd_and_log(os.path.join(cwd,'test_funi'),cwd=cwd)
|
||||||
ctx.cmd_and_log(PYTEST+' test_funi.py',cwd=cwd)
|
ctx.cmd_and_log(PYTEST+' test_funi.py',cwd=cwd)
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ def wix_bin_path():
|
||||||
for i in range(cnt-1,-1,-1):
|
for i in range(cnt-1,-1,-1):
|
||||||
thiskey = winreg.EnumKey(query,i)
|
thiskey = winreg.EnumKey(query,i)
|
||||||
if 'WiX' in thiskey:
|
if 'WiX' in thiskey:
|
||||||
break;
|
break
|
||||||
winreg.CloseKey(query)
|
winreg.CloseKey(query)
|
||||||
return os.path.normpath(winreg.QueryValue(winreg.HKEY_LOCAL_MACHINE, basekey+r'\\'+thiskey)+'..\\bin')
|
return os.path.normpath(winreg.QueryValue(winreg.HKEY_LOCAL_MACHINE, basekey+r'\\'+thiskey)+'..\\bin')
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue