[DEV] add getter version of gcc

This commit is contained in:
Edouard DUPIN 2015-02-20 21:40:03 +01:00
parent 95b2206da6
commit 91b0cecc28
3 changed files with 49 additions and 5 deletions

View File

@ -112,7 +112,7 @@ class Module:
"-Wall",
"-Wsign-compare",
"-Wreturn-type",
"-Wint-to-pointer-cast",
#"-Wint-to-pointer-cast",
"-Wno-write-strings",
"-Woverloaded-virtual",
"-Wnon-virtual-dtor",

View File

@ -49,6 +49,28 @@ def store_command(cmdLine, file):
file2.flush()
file2.close()
##
## @brief Execute the command and ruturn generate data
##
def run_command_direct(cmdLine):
# prepare command line:
args = shlex.split(cmdLine)
debug.verbose("cmd = " + str(args))
try:
# create the subprocess
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except subprocess.CalledProcessError as e:
debug.error("subprocess.CalledProcessError : " + str(args))
# launch the subprocess:
output, err = p.communicate()
# Check error :
if p.returncode == 0:
if output == None:
return err[:-1];
return output[:-1];
else:
return False
def run_command(cmdLine, storeCmdLine="", buildId=-1, file=""):
global errorOccured
@ -62,10 +84,8 @@ def run_command(cmdLine, storeCmdLine="", buildId=-1, file=""):
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
except subprocess.CalledProcessError as e:
debug.error("subprocess.CalledProcessError : TODO ...")
debug.verbose("done 1")
# launch the subprocess:
output, err = p.communicate()
debug.verbose("done 2")
# Check error :
if p.returncode == 0:
debug.debug(lutinEnv.print_pretty(cmdLine))

View File

@ -19,6 +19,7 @@ import lutinModule
import lutinSystem
import lutinImage
import lutinHost
import lutinMultiprocess as multiprocess
class Target:
def __init__(self, name, config, arch):
@ -60,8 +61,13 @@ class Target:
'-D_REENTRANT']
if self.name != "Windows":
self.global_flags_xx=['-std=c++11']
self.global_flags_mm=['-std=c++11']
if self.config["compilator"] == "clang" \
or self.xx_version > 4007000:
self.global_flags_xx=['-std=c++11']
self.global_flags_mm=['-std=c++11']
else:
self.global_flags_xx=['-std=c++0x']
self.global_flags_mm=['-std=c++0x']
else:
self.global_flags_xx=['-static-libgcc', '-static-libstdc++', '-std=c++11']
self.global_flags_mm=[]
@ -118,6 +124,16 @@ class Target:
self.folder_staging="/staging/" + self.config["compilator"]
self.folder_build="/build/" + self.config["compilator"]
def create_number_from_version_string(self, data):
list = data.split(".")
out = 0;
offset = 1000**(len(list)-1)
for elem in list:
out += offset*int(elem)
debug.verbose("get : " + str(int(elem)) + " tmp" + str(out))
offset /= 1000
return out
def set_cross_base(self, cross=""):
self.cross = cross
debug.debug("== Target='" + self.cross + "'");
@ -133,6 +149,14 @@ class Target:
self.xx = self.cross + "g++"
#self.ar=self.cross + "ar"
#self.ranlib=self.cross + "ranlib"
#get g++ compilation version :
ret = multiprocess.run_command_direct(self.xx + " -dumpversion");
if ret == False:
debug.error("Can not get the g++/clang++ version ...")
self.xx_version = self.create_number_from_version_string(ret)
debug.debug(self.config["compilator"] + "++ version=" + str(ret) + " number=" + str(self.xx_version))
self.ld = self.cross + "ld"
self.nm = self.cross + "nm"
self.strip = self.cross + "strip"