forked from michele-segata/plexe
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfigure
executable file
·94 lines (77 loc) · 3.54 KB
/
configure
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
89
90
91
92
93
94
#!/usr/bin/env python2
#
# Copyright (C) 2013-2019 Christoph Sommer <[email protected]>
#
# Documentation for these modules is at http://veins.car2x.org/
#
# SPDX-License-Identifier: GPL-2.0-or-later
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
"""
Creates Makefile(s) for building this project.
"""
import argparse
import os
import sys
import subprocess
from logging import info, warning, error
if sys.version_info[0] == 3:
warning("Warning: running configure with python3 might result in subtle errors.")
# Option handling
parser = argparse.ArgumentParser()
parser.add_argument('--with-veins', dest='veins', required=True, help="link with a version of Veins installed in PATH", metavar="PATH")
args = parser.parse_args()
# Start with default flags
makemake_flags = ['-f', '--deep', '--no-deep-includes', '--make-so', '-I', '.', '-o', 'plexe', '-O', 'out', '-p', 'PLEXE']
run_libs = [os.path.join('src', 'plexe')]
run_neds = [os.path.join('src', 'plexe')]
run_imgs = [os.path.join('images')]
# Add flags for Veins
if True:
fname = os.path.join(args.veins, 'print-veins-version')
expect_version = ['5.0', '5.0-alpha2']
try:
print 'Running "%s" to determine Veins version.' % fname
version = subprocess.check_output(['env', fname]).strip()
if not version in expect_version:
print ''
print '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
warning('Unsupported Veins Version. Expecting %s, found "%s"' % (' or '.join(expect_version), version))
print '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
print ''
else:
print 'Found Veins version "%s". Okay.' % version
except subprocess.CalledProcessError as e:
error('Could not determine Veins Version (by running %s): %s. Check the path to Veins (--with-veins=... option) and the Veins version (should be version %s)' % (fname, e, ' or '.join(expect_version)))
sys.exit(1)
veins_header_dirs = [os.path.join(os.path.relpath(args.veins, 'src'), 'src')]
veins_includes = ['-I' + s for s in veins_header_dirs]
veins_link = ["-L" + os.path.join(os.path.relpath(args.veins, 'src'), 'src'), "-lveins$(D)"]
veins_defs = []
makemake_flags += veins_includes + veins_link + veins_defs
run_libs = [os.path.relpath(os.path.join(args.veins, 'src', 'veins'))] + run_libs
run_neds = [os.path.relpath(os.path.join(args.veins, 'src', 'veins'))] + run_neds
run_imgs = [os.path.relpath(os.path.join(args.veins, 'images'))] + run_imgs
# Start creating files
if not os.path.isdir('out'):
os.mkdir('out')
f = open(os.path.join('out', 'config.py'), 'w')
f.write('run_libs = %s\n' % repr(run_libs))
f.write('run_neds = %s\n' % repr(run_neds))
f.write('run_imgs = %s\n' % repr(run_imgs))
f.close()
subprocess.check_call(['env', 'opp_makemake'] + makemake_flags, cwd='src')
info('Configure done. You can now run "make".')