lutin/lutin.py

185 lines
5.3 KiB
Python
Raw Normal View History

2013-04-17 21:41:41 +02:00
#!/usr/bin/python
# for path inspection:
import sys
2013-04-17 21:41:41 +02:00
import os
import inspect
2013-04-17 21:41:41 +02:00
import fnmatch
import lutinDebug as debug
import lutinEnv
import lutinModule
2013-04-17 21:41:41 +02:00
"""
Display the help of this makefile
2013-04-17 21:41:41 +02:00
"""
def usage():
print "usage:"
print " " + sys.argv[0] + " [options] [cible/properties] ..."
print " [help] display this help"
print " [option] : keep the last set"
print " -h / --help"
print " Display this help and break"
print " -v / -v? / --verbose=?"
print " Display makefile debug level (verbose) default =2"
print " 0 : None"
print " 1 : error"
print " 2 : warning"
print " 3 : info"
print " 4 : debug"
print " 5 : verbose"
print " -c / --color"
print " Display makefile output in color"
print " -f / --force"
print " Force the rebuild without checking the dependency"
print " [properties] : keep in the sequency of the cible"
print " -t=... / --target=..."
print " (Android/Linux/MacOs/Windows) Select a target (by default the platform is the computer that compile this"
print " -C= / --compilator="
print " (clang/gcc) Compile with clang or Gcc mode (by default gcc will be used)"
print " -m=... / --mode=..."
print " (debug/release) Compile in release or debug mode (default release)"
print " [cible] : generate in order set"
print " all"
print " Build all (only for the current selected board) (bynary and packages)"
print " clean"
print " Clean all (same as previous)"
print " dump"
print " Dump all the module dependency and properties"
listOfAllModule = lutinModule.ListAllModuleWithDesc()
for mod in listOfAllModule:
print " " + mod[0] + " / " + mod[0] + "-clean / " + mod[0] + "-dump"
print " " + mod[1]
print " ex: " + sys.argv[0] + " all board=Android all board=Windows all help"
exit(0)
2013-04-17 21:41:41 +02:00
# preparse the argument to get the erbose element for debug mode
def parseGenericArg(argument,active):
if argument == "-h" or argument == "--help":
#display help
if active==False:
usage()
return True
elif argument[:2] == "-v":
if active==True:
if len(argument)==2:
debug.SetLevel(5)
else:
debug.SetLevel(int(argument[2:]))
return True
elif argument[:9] == "--verbose":
if active==True:
if len(argument)==9:
debug.SetLevel(5)
else:
if argument[:10] == "--verbose=":
debug.SetLevel(int(argument[10:]))
else:
debug.SetLevel(int(argument[9:]))
return True
elif argument == "-c" or argument == "--color":
if active==True:
debug.EnableColor()
return True
elif argument == "-f" or argument == "--force":
if active==True:
lutinEnv.SetForceMode(True)
return True
return False
# parse default unique argument:
if __name__ == "__main__":
sys.path.append(os.path.dirname(__file__) + "/corePython/" )
for argument in sys.argv:
parseGenericArg(argument, True)
# now import other standard module (must be done here and not before ...
import lutinTarget
import lutinHost
import lutinTools
2013-04-17 21:41:41 +02:00
"""
Run everything that is needed in the system
2013-04-17 21:41:41 +02:00
"""
def Start():
#available target : Linux / MacOs / Windows / Android ...
targetName=lutinHost.OS
#compilation base
compilator="gcc"
# build mode
mode="release"
# load the default target :
target = None
actionDone=False
# parse all argument
for argument in sys.argv[1:]:
if True==parseGenericArg(argument, False):
None # nothing to do ...
elif argument[:13] == "--compilator=" or argument[:3] == "-C=":
tmpArg=""
if argument[:3] == "-p=":
tmpArg=argument[3:]
else:
tmpArg=argument[13:]
# check input ...
if tmpArg=="gcc" or tmpArg=="clang":
if compilator!=tmpArg:
debug.debug("change compilator ==> " + tmpArg)
compilator=tmpArg
#remove previous target
target = None
else:
debug.error("Set --compilator/-C: '" + tmpArg + "' but only availlable : [gcc/clang]")
elif argument[:9] == "--target=" or argument[:3] == "-t=":
tmpArg=""
if argument[:3] == "-t=":
tmpArg=argument[3:]
else:
tmpArg=argument[9:]
# No check input ==> this will be verify automaticly chen the target will be loaded
if targetName!=tmpArg:
debug.debug("change target ==> " + tmpArg + " & reset mode : gcc&release")
targetName=tmpArg
#reset properties by defauult:
compilator="gcc"
mode="release"
#remove previous target
target = None
elif argument[:7] == "--mode=" or argument[:3] == "-m=":
tmpArg=""
if argument[:3] == "-m=":
tmpArg=argument[3:]
else:
tmpArg=argument[11:]
if "debug"==tmpArg or "release"==tmpArg:
if mode!=tmpArg:
debug.debug("change mode ==> " + tmpArg)
mode = tmpArg
#remove previous target
target = None
else:
debug.error("Set --mode/-m: '" + tmpArg + "' but only availlable : [debug/release]")
else:
#load the target if needed :
if target == None:
target = lutinTarget.TargetLoad(targetName, compilator, mode)
target.Build(argument)
actionDone=True
# if no action done : we do "all" ...
if actionDone==False:
#load the target if needed :
if target == None:
target = lutinTarget.TargetLoad(targetName, compilator, mode)
target.Build("all")
2013-04-17 21:41:41 +02:00
"""
When the user use with make.py we initialise ourself
2013-04-17 21:41:41 +02:00
"""
if __name__ == '__main__':
debug.verbose("Use Make as a make stadard")
sys.path.append(lutinTools.GetRunFolder())
debug.verbose(" try to impoert module 'lutinBase.py'")
__import__("lutinBase")
Start()
2013-04-17 21:41:41 +02:00