forked from DOI-USGS/ISIS3
-
Notifications
You must be signed in to change notification settings - Fork 0
/
configure.py
88 lines (69 loc) · 2.93 KB
/
configure.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import os
import sys
import sipconfig
import sipdistutils
import PyQt5
import subprocess
import argparse
from os.path import splitext
from os.path import dirname
from glob import glob
from distutils.spawn import find_executable
from PyQt5.QtCore import PYQT_CONFIGURATION
from plio.utils.utils import find_in_dict
from PyQt5.QtCore import PYQT_CONFIGURATION as qtconfigdict
from sipconfig import ModuleMakefile
def main (module):
# The name of the SIP build file generated by SIP and used by the build
# system.
sipy_sip_dir = "sipfiles/"
module = sipy_sip_dir+module + '.sip'
build_file = "bundle"+".sbf"
target = module+".so"
# Get the extra SIP flags needed by the imported qt module. Note that
# this normally only includes those flags (-x and -t) that relate to SIP's
# versioning system.
qt_sip_flags = qtconfigdict["sip_flags"]
# sip_bin = current_env_path + "/bin/sip"
sip_bin = find_executable('sip')
pyqt_sip_dir = dirname(dirname(sip_bin)) + "/share/sip/PyQt5"
# Get the PyQt configuration information.
config = sipconfig.Configuration()
# Run SIP to generate the code. Note that we tell SIP where to find the qt
# module's specification files using the -I flag.
errcode = os.system(" ".join([sip_bin, "-e","-c", ".", "-b", build_file, "-I",
pyqt_sip_dir, qt_sip_flags, module]))
if errcode != 0:
print('sip exited with non zero error code: {}'.format(errcode))
# We are going to install the SIP specification file for this module and
# its configuration module.
installs = []
installs.append([module, os.path.join(pyqt_sip_dir, "isis3")])
isis_root = os.getenv("ISISROOT")
if not isis_root:
raise("Please set ISIS")
extra_libs = ["$(ALLLIBS)", "-Wl,-rpath,"+isis_root+"/lib", "-Wl,-rpath,"+isis_root+"/3rdParty/lib"]
makefile = ModuleMakefile(configuration=config, build_file=build_file, installs=installs)
makefile.extra_cxxflags = ["$(ALLINCDIRS)", "-Wstrict-aliasing=0", "-Wno-unused-variable"]
makefile.extra_lflags = ["$(ALLLIBDIRS)"]
makefile.extra_include_dirs = [x[0] for x in os.walk('incs/')]
makefile.extra_lib_dirs = [isis_root + '/3rdParty/lib', isis_root + 'lib']
makefile.generate()
# add import line for isismake.os
isis_makefile = "include " + isis_root + "/make/isismake.os"
with open("Makefile", 'r+') as f:
content = f.read()
content = content.replace("LIBS =", "LIBS = " + ' '.join(extra_libs))
f.seek(0, 0)
f.write(isis_makefile + '\n\n' + content)
if __name__ == "__main__":
clean = ['cpp', 'c', 'h', 'hpp', 'o', 'sbf']
# If clean is passed in, clear up all the files genreated by the scripts
if len(sys.argv) > 1 and sys.argv[1] == 'clean':
files = []
for filetype in clean:
files.extend(glob('*.{}'.format(filetype)))
for f in files:
os.remove(f)
exit()
main('master')