1 #!/usr/bin/python 2 3 import os 4 import sys 5 import shutil 6 7 ScriptHome = os.path.split(sys.argv[0])[0] 8 ConfFile = open(os.path.join(ScriptHome, "camera_build.conf"), "rt") 9 HomeDir = os.getcwd() 10 11 stub = os.environ.get("ANDROID_STUB_ROOT", "") 12 13 if (stub == ""): 14 print("Warning: ANDROID_STUB_ROOT environment variable is not set or is empty") 15 16 for s in ConfFile.readlines(): 17 s = s[0:s.find("#")] 18 if (not s): 19 continue 20 keys = s.split(";") 21 if (len(keys) < 4): 22 print("Error: invalid config line: \"%s\"" % s) 23 continue 24 MakeTarget = str.strip(keys[0]) 25 Arch = str.strip(keys[1]) 26 NativeApiLevel = str.strip(keys[2]) 27 AndroidTreeRoot = str.strip(keys[3]) 28 AndroidTreeRoot = str.strip(AndroidTreeRoot, "\n") 29 AndroidTreeRoot = os.path.expandvars(AndroidTreeRoot) 30 print("Building %s for %s" % (MakeTarget, Arch)) 31 BuildDir = os.path.join(HomeDir, MakeTarget + "_" + Arch) 32 33 if (os.path.exists(BuildDir)): 34 shutil.rmtree(BuildDir) 35 36 try: 37 os.mkdir(BuildDir) 38 except: 39 print("Error: cannot create direcotry \"%s\"" % BuildDir) 40 continue 41 42 shutil.rmtree(os.path.join(AndroidTreeRoot, "out", "target", "product", "generic", "system"), ignore_errors=True) 43 44 LinkerLibs = os.path.join(AndroidTreeRoot, "bin_arm", "system") 45 if (Arch == "x86"): 46 LinkerLibs = os.path.join(AndroidTreeRoot, "bin_x86", "system") 47 elif (Arch == "mips"): 48 LinkerLibs = os.path.join(AndroidTreeRoot, "bin_mips", "system") 49 50 if (not os.path.exists(LinkerLibs)): 51 print("Error: Paltform libs for linker in path \"%s\" not found" % LinkerLibs) 52 print("Building %s for %s\t[\033[91mFAILED\033[0m]" % (MakeTarget, Arch)) 53 continue 54 55 shutil.copytree(LinkerLibs, os.path.join(AndroidTreeRoot, "out", "target", "product", "generic", "system")) 56 57 os.chdir(BuildDir) 58 BuildLog = os.path.join(BuildDir, "build.log") 59 CmakeCmdLine = "cmake -DCMAKE_TOOLCHAIN_FILE=../android/android.toolchain.cmake -DANDROID_SOURCE_TREE=\"%s\" -DANDROID_NATIVE_API_LEVEL=\"%s\" -DANDROID_ABI=\"%s\" -DANDROID_STL=stlport_static ../.. > \"%s\" 2>&1" % (AndroidTreeRoot, NativeApiLevel, Arch, BuildLog) 60 MakeCmdLine = "make %s >> \"%s\" 2>&1" % (MakeTarget, BuildLog); 61 #print(CmakeCmdLine) 62 os.system(CmakeCmdLine) 63 #print(MakeCmdLine) 64 os.system(MakeCmdLine) 65 os.chdir(HomeDir) 66 CameraLib = os.path.join(BuildDir, "lib", Arch, "lib" + MakeTarget + ".so") 67 if (os.path.exists(CameraLib)): 68 try: 69 shutil.copyfile(CameraLib, os.path.join("..", "3rdparty", "lib", Arch, "lib" + MakeTarget + ".so")) 70 print("Building %s for %s\t[\033[92mOK\033[0m]" % (MakeTarget, Arch)); 71 except: 72 print("Building %s for %s\t[\033[91mFAILED\033[0m]" % (MakeTarget, Arch)); 73 else: 74 print("Building %s for %s\t[\033[91mFAILED\033[0m]" % (MakeTarget, Arch)); 75 76 ConfFile.close() 77