From 47c4ac25f998e37ab30f8aff10fa5cbbc248d9da Mon Sep 17 00:00:00 2001 From: Marcus10110 Date: Mon, 3 Oct 2016 15:04:42 -0700 Subject: [PATCH] updated and added rename analyzer script, tested on Windows - works. added build analyzer script, but it will need to be updated to work since we moved the libraries. that needs to be fixed on Linux / osx. updated git ignore to remove another visual studio byproduct. --- .gitignore | 3 +- build_analyzer.py | 119 +++++++++++++++++++++++++++++++++++++++++++++ rename_analyzer.py | 83 +++++++++++++++++++++++++++++++ 3 files changed, 204 insertions(+), 1 deletion(-) create mode 100644 build_analyzer.py create mode 100644 rename_analyzer.py diff --git a/.gitignore b/.gitignore index 1dbe41b..45f00b1 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ Debug/ Release/ *.VC.db *.VC.opendb -*.suo \ No newline at end of file +*.suo +*.sln.ecd \ No newline at end of file diff --git a/build_analyzer.py b/build_analyzer.py new file mode 100644 index 0000000..e293b02 --- /dev/null +++ b/build_analyzer.py @@ -0,0 +1,119 @@ +import os, glob, platform + +#find out if we're running on mac or linux and set the dynamic library extension +dylib_ext = "" +if platform.system().lower() == "darwin": + dylib_ext = ".dylib" +else: + dylib_ext = ".so" + +print("Running on " + platform.system()) + +#make sure the release folder exists, and clean out any .o/.so file if there are any +if not os.path.exists( "release" ): + os.makedirs( "release" ) + +os.chdir( "release" ) +o_files = glob.glob( "*.o" ) +o_files.extend( glob.glob( "*" + dylib_ext ) ) +for o_file in o_files: + os.remove( o_file ) +os.chdir( ".." ) + + +#make sure the debug folder exists, and clean out any .o/.so files if there are any +if not os.path.exists( "debug" ): + os.makedirs( "debug" ) + +os.chdir( "debug" ) +o_files = glob.glob( "*.o" ); +o_files.extend( glob.glob( "*" + dylib_ext ) ) +for o_file in o_files: + os.remove( o_file ) +os.chdir( ".." ) + +#find all the cpp files in /source. We'll compile all of them +os.chdir( "source" ) +cpp_files = glob.glob( "*.cpp" ); +os.chdir( ".." ) + +#specify the search paths/dependencies/options for gcc +include_paths = [ "../include" ] +link_paths = [ "../lib" ] +link_dependencies = [ "-lAnalyzer" ] #refers to libAnalyzer.dylib or libAnalyzer.so + +debug_compile_flags = "-O0 -w -c -fpic -g" +release_compile_flags = "-O3 -w -c -fpic" + +#loop through all the cpp files, build up the gcc command line, and attempt to compile each cpp file +for cpp_file in cpp_files: + + #g++ + command = "g++ " + + #include paths + for path in include_paths: + command += "-I\"" + path + "\" " + + release_command = command + release_command += release_compile_flags + release_command += " -o\"release/" + cpp_file.replace( ".cpp", ".o" ) + "\" " #the output file + release_command += "\"" + "source/" + cpp_file + "\"" #the cpp file to compile + + debug_command = command + debug_command += debug_compile_flags + debug_command += " -o\"debug/" + cpp_file.replace( ".cpp", ".o" ) + "\" " #the output file + debug_command += "\"" + "source/" + cpp_file + "\"" #the cpp file to compile + + #run the commands from the command line + print(release_command) + os.system( release_command ) + print(debug_command) + os.system( debug_command ) + +#lastly, link +#g++ +command = "g++ " + +#add the library search paths +for link_path in link_paths: + command += "-L\"" + link_path + "\" " + +#add libraries to link against +for link_dependency in link_dependencies: + command += link_dependency + " " + +#make a dynamic (shared) library (.so/.dylib) + +if dylib_ext == ".dylib": + command += "-dynamiclib " +else: + command += "-shared " + +#figgure out what the name of this analyzer is +analyzer_name = "" +for cpp_file in cpp_files: + if cpp_file.endswith( "Analyzer.cpp" ): + analyzer_name = cpp_file.replace( "Analyzer.cpp", "" ) + break + +#the files to create (.so/.dylib files) +if dylib_ext == ".dylib": + release_command = command + "-o release/lib" + analyzer_name + "Analyzer.dylib " + debug_command = command + "-o debug/lib" + analyzer_name + "Analyzer.dylib " +else: + release_command = command + "-o\"release/lib" + analyzer_name + "Analyzer.so\" " + debug_command = command + "-o\"debug/lib" + analyzer_name + "Analyzer.so\" " + +#add all the object files to link +for cpp_file in cpp_files: + release_command += "release/" + cpp_file.replace( ".cpp", ".o" ) + " " + debug_command += "debug/" + cpp_file.replace( ".cpp", ".o" ) + " " + +#run the commands from the command line +print(release_command) +os.system( release_command ) +print(debug_command) +os.system( debug_command ) + + diff --git a/rename_analyzer.py b/rename_analyzer.py new file mode 100644 index 0000000..d5c35ab --- /dev/null +++ b/rename_analyzer.py @@ -0,0 +1,83 @@ +import os +import glob +import sys + +# Fix Python 2.x. +try: + input = raw_input +except NameError: pass + +print("") +print("") +print("What would you like to call your new analyzer?") +print("") +print(">>The files under '/source' will be modified to use it.") +print(">>Examples include Serial, MySerial, JoesSerial, Gamecube, Wiimote, 2Wire, etc.") +print(">>Do not inclide the trailing word 'Analyzer' this will be added automaticly.") +print("") +print("(press CTRL-C to cancel)") +print("") + +new_analyzer_name = input( "Your new analyzer name: " ) + +print("") +print("") +print("What is the analyzer's title? (as shown in the add new anlayzer drop down)") +print("") +print(">>Examples include Async Serial, I2C, Joe's Serial, Gamecube, Wiimote, 2Wire, etc.") +print("") +print("(press CTRL-C to cancel)") +print("") + +new_analyzer_title = input( "Your new analyzer's title: " ) + +original_name = "SimpleSerial" + + +vs_project_path = "Visual Studio" +os.chdir( vs_project_path ) + +project_files = glob.glob("*.sln") + glob.glob("*.vcxproj") #returns only the file names, no paths. + +for file in project_files: + contents = open( file, 'r' ).read() + contents = contents.replace( original_name + "Analyzer", new_analyzer_name + "Analyzer" ) + contents = contents.replace( original_name.upper() + "ANALYZER", new_analyzer_name.upper() + "ANALYZER" ) + contents = contents.replace( original_name + "SimulationDataGenerator", new_analyzer_name + "SimulationDataGenerator" ) + open( file, 'w' ).write( contents ) + +os.rename( glob.glob("*.sln")[0], new_analyzer_name + "Analyzer.sln" ) +os.rename( glob.glob("*.vcxproj")[0], new_analyzer_name + "Analyzer.vcxproj" ) + +source_path = "source" +os.chdir( ".." ) +os.chdir( source_path ) + +files = dict() + +cpp_files = glob.glob( "*.cpp" ); +h_files = glob.glob( "*.h" ); + +for file in cpp_files: + files[file] = ".cpp" + +for file in h_files: + files[ file ] = ".h" + +new_files = [] + +for file, extension in files.items(): + name_root = file.replace( original_name, "" ) + new_name = new_analyzer_name + name_root + #print "renaming file " + file + " to " + new_name + os.rename( file, new_name ) + new_files.append( new_name ) + +for file in new_files: + contents = open( file, 'r' ).read() + contents = contents.replace( original_name + "Analyzer", new_analyzer_name + "Analyzer" ) + contents = contents.replace( original_name.upper() + "_ANALYZER_", new_analyzer_name.upper() + "_ANALYZER_" ) + contents = contents.replace( original_name.upper() + "_SIMULATION_DATA_GENERATOR", new_analyzer_name.upper() + "_SIMULATION_DATA_GENERATOR" ) + contents = contents.replace( original_name + "SimulationDataGenerator", new_analyzer_name + "SimulationDataGenerator" ) + contents = contents.replace( "Simple Serial", new_analyzer_title ) + open( file, 'w' ).write( contents ) \ No newline at end of file