summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorSumeet Koli2018-06-18 14:46:14 +0530
committerSumeet Koli2018-06-18 14:46:14 +0530
commit44ad9efa7e729739cde3103d8fc1e475efa2a923 (patch)
treef87994e13c9b4d0082f7a743f29e1eafc9690fa9 /Source
parent931fdbe021ec59e211ac13b807c18a9b2ca9a76c (diff)
downloadOpenModelicaEmbedded-44ad9efa7e729739cde3103d8fc1e475efa2a923.tar.gz
OpenModelicaEmbedded-44ad9efa7e729739cde3103d8fc1e475efa2a923.tar.bz2
OpenModelicaEmbedded-44ad9efa7e729739cde3103d8fc1e475efa2a923.zip
Change in directory structure
Diffstat (limited to 'Source')
-rwxr-xr-xSource/CMakeCache.txt307
-rwxr-xr-xSource/CMakeCache.txt~307
-rwxr-xr-xSource/CMakeFiles/3.5.1/CMakeCCompiler.cmake67
-rwxr-xr-xSource/CMakeFiles/3.5.1/CMakeCXXCompiler.cmake68
-rwxr-xr-xSource/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_C.binbin0 -> 8640 bytes
-rwxr-xr-xSource/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_CXX.binbin0 -> 8656 bytes
-rwxr-xr-xSource/CMakeFiles/3.5.1/CMakeSystem.cmake15
-rwxr-xr-xSource/CMakeFiles/3.5.1/CompilerIdC/CMakeCCompilerId.c544
-rwxr-xr-xSource/CMakeFiles/3.5.1/CompilerIdC/a.outbin0 -> 8800 bytes
-rwxr-xr-xSource/CMakeFiles/3.5.1/CompilerIdCXX/CMakeCXXCompilerId.cpp533
-rwxr-xr-xSource/CMakeFiles/3.5.1/CompilerIdCXX/a.outbin0 -> 8808 bytes
-rwxr-xr-xSource/CMakeFiles/CMakeDirectoryInformation.cmake16
-rwxr-xr-xSource/CMakeFiles/CMakeOutput.log554
-rwxr-xr-xSource/CMakeFiles/Makefile.cmake115
-rwxr-xr-xSource/CMakeFiles/Makefile2108
-rwxr-xr-xSource/CMakeFiles/TargetDirectories.txt3
-rwxr-xr-xSource/CMakeFiles/cmake.check_cache1
-rwxr-xr-xSource/CMakeFiles/feature_tests.binbin0 -> 12696 bytes
-rwxr-xr-xSource/CMakeFiles/feature_tests.c34
-rwxr-xr-xSource/CMakeFiles/feature_tests.cxx405
-rwxr-xr-xSource/CMakeFiles/modelPlugFirmata.dir/CXX.includecache108
-rwxr-xr-xSource/CMakeFiles/modelPlugFirmata.dir/DependInfo.cmake26
-rwxr-xr-xSource/CMakeFiles/modelPlugFirmata.dir/build.make140
-rwxr-xr-xSource/CMakeFiles/modelPlugFirmata.dir/cmake_clean.cmake11
-rwxr-xr-xSource/CMakeFiles/modelPlugFirmata.dir/depend.internal10
-rwxr-xr-xSource/CMakeFiles/modelPlugFirmata.dir/depend.make10
-rwxr-xr-xSource/CMakeFiles/modelPlugFirmata.dir/flags.make10
-rwxr-xr-xSource/CMakeFiles/modelPlugFirmata.dir/link.txt1
-rwxr-xr-xSource/CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.obin0 -> 39400 bytes
-rwxr-xr-xSource/CMakeFiles/modelPlugFirmata.dir/progress.make4
-rwxr-xr-xSource/CMakeFiles/modelPlugFirmata.dir/serial.cpp.obin0 -> 37096 bytes
-rwxr-xr-xSource/CMakeFiles/progress.marks1
-rwxr-xr-xSource/CMakeLists.txt20
-rwxr-xr-xSource/COPYING674
-rwxr-xr-xSource/Makefile208
-rwxr-xr-xSource/Makefile~208
-rwxr-xr-xSource/README2
-rwxr-xr-xSource/cmake_install.cmake44
-rwxr-xr-xSource/libmodelPlugFirmata.sobin0 -> 56334 bytes
-rwxr-xr-xSource/modelPlugFirmata.cpp680
-rwxr-xr-xSource/modelPlugFirmata.h30
-rwxr-xr-xSource/serial.cpp905
-rwxr-xr-xSource/serial.h57
43 files changed, 6226 insertions, 0 deletions
diff --git a/Source/CMakeCache.txt b/Source/CMakeCache.txt
new file mode 100755
index 0000000..6fd94a2
--- /dev/null
+++ b/Source/CMakeCache.txt
@@ -0,0 +1,307 @@
+# This is the CMakeCache file.
+# For build in directory: /home/sumeet/OpenModelicaArduino/Source
+# It was generated by CMake: /usr/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//Path to a program.
+CMAKE_AR:FILEPATH=/usr/bin/ar
+
+//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or
+// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.
+CMAKE_BUILD_TYPE:STRING=
+
+//Enable/Disable color output during build.
+CMAKE_COLOR_MAKEFILE:BOOL=ON
+
+//CXX compiler
+CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the compiler during release builds for minimum
+// size.
+CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the compiler during release builds with debug info.
+CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//C compiler
+CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the compiler during release builds for minimum
+// size.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the compiler during release builds with debug info.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Enable/Disable output of compile commands during generation.
+CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/usr/bin/ld
+
+//Path to a program.
+CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/usr/bin/nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=Project
+
+//Path to a program.
+CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_STRIP:FILEPATH=/usr/bin/strip
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//Value Computed by CMake
+Project_BINARY_DIR:STATIC=/home/sumeet/OpenModelicaArduino/Source
+
+//Value Computed by CMake
+Project_SOURCE_DIR:STATIC=/home/sumeet/OpenModelicaArduino/Source
+
+//Dependencies for target
+modelPlugFirmata_LIB_DEPENDS:STATIC=
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/home/sumeet/OpenModelicaArduino/Source
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=5
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
+CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/usr/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest
+//ADVANCED property for variable: CMAKE_CXX_COMPILER
+CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS
+CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
+CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
+CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
+CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
+CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER
+CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Executable file format
+CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
+CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Unix Makefiles
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/home/sumeet/OpenModelicaArduino/Source
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
+CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.5
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Source/CMakeCache.txt~ b/Source/CMakeCache.txt~
new file mode 100755
index 0000000..04be850
--- /dev/null
+++ b/Source/CMakeCache.txt~
@@ -0,0 +1,307 @@
+# This is the CMakeCache file.
+# For build in directory: /home/sumeet/OpenModelicaArduino/Source
+# It was generated by CMake: /usr/bin/cmake
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//Path to a program.
+CMAKE_AR:FILEPATH=/usr/bin/ar
+
+//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or
+// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.
+CMAKE_BUILD_TYPE:STRING=
+
+//Enable/Disable color output during build.
+CMAKE_COLOR_MAKEFILE:BOOL=ON
+
+//CXX compiler
+CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the compiler during release builds for minimum
+// size.
+CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the compiler during release builds with debug info.
+CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//C compiler
+CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the compiler during release builds for minimum
+// size.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the compiler during release builds with debug info.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Enable/Disable output of compile commands during generation.
+CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=/usr/local
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=/usr/bin/ld
+
+//Path to a program.
+CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=/usr/bin/nm
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=Project
+
+//Path to a program.
+CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_STRIP:FILEPATH=/usr/bin/strip
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make. This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//Value Computed by CMake
+Project_BINARY_DIR:STATIC=/home/sumeet/OpenModelicaArduino/Source
+
+//Value Computed by CMake
+Project_SOURCE_DIR:STATIC=/home/sumeet/OpenModelicaArduino/Source
+
+//Dependencies for target
+modelPlugFirmata_LIB_DEPENDS:STATIC=
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=/home/sumeet/OpenModelicaArduino/Source
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=5
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=1
+//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
+CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=/usr/bin/cmake
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest
+//ADVANCED property for variable: CMAKE_CXX_COMPILER
+CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS
+CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
+CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
+CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
+CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
+CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER
+CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Executable file format
+CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
+CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=Unix Makefiles
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=/home/user/Downloads/libs/Source
+//Install .so files without execute permission.
+CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
+CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.5
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//uname command
+CMAKE_UNAME:INTERNAL=/bin/uname
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/Source/CMakeFiles/3.5.1/CMakeCCompiler.cmake b/Source/CMakeFiles/3.5.1/CMakeCCompiler.cmake
new file mode 100755
index 0000000..f40522e
--- /dev/null
+++ b/Source/CMakeFiles/3.5.1/CMakeCCompiler.cmake
@@ -0,0 +1,67 @@
+set(CMAKE_C_COMPILER "/usr/bin/cc")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "GNU")
+set(CMAKE_C_COMPILER_VERSION "5.4.0")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_function_prototypes;c_restrict;c_variadic_macros;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "Linux")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+set(CMAKE_AR "/usr/bin/ar")
+set(CMAKE_RANLIB "/usr/bin/ranlib")
+set(CMAKE_LINKER "/usr/bin/ld")
+set(CMAKE_COMPILER_IS_GNUCC 1)
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "ELF")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "c")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/5;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Source/CMakeFiles/3.5.1/CMakeCXXCompiler.cmake b/Source/CMakeFiles/3.5.1/CMakeCXXCompiler.cmake
new file mode 100755
index 0000000..013ee92
--- /dev/null
+++ b/Source/CMakeFiles/3.5.1/CMakeCXXCompiler.cmake
@@ -0,0 +1,68 @@
+set(CMAKE_CXX_COMPILER "/usr/bin/c++")
+set(CMAKE_CXX_COMPILER_ARG1 "")
+set(CMAKE_CXX_COMPILER_ID "GNU")
+set(CMAKE_CXX_COMPILER_VERSION "5.4.0")
+set(CMAKE_CXX_COMPILER_WRAPPER "")
+set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "98")
+set(CMAKE_CXX_COMPILE_FEATURES "cxx_template_template_parameters;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
+set(CMAKE_CXX98_COMPILE_FEATURES "cxx_template_template_parameters")
+set(CMAKE_CXX11_COMPILE_FEATURES "cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
+set(CMAKE_CXX14_COMPILE_FEATURES "cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
+
+set(CMAKE_CXX_PLATFORM_ID "Linux")
+set(CMAKE_CXX_SIMULATE_ID "")
+set(CMAKE_CXX_SIMULATE_VERSION "")
+
+set(CMAKE_AR "/usr/bin/ar")
+set(CMAKE_RANLIB "/usr/bin/ranlib")
+set(CMAKE_LINKER "/usr/bin/ld")
+set(CMAKE_COMPILER_IS_GNUCXX 1)
+set(CMAKE_CXX_COMPILER_LOADED 1)
+set(CMAKE_CXX_COMPILER_WORKS TRUE)
+set(CMAKE_CXX_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW )
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+ set(CYGWIN 1)
+ set(UNIX 1)
+endif()
+
+set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
+
+if(CMAKE_COMPILER_IS_MINGW)
+ set(MINGW 1)
+endif()
+set(CMAKE_CXX_COMPILER_ID_RUN 1)
+set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;mm;CPP)
+set(CMAKE_CXX_LINKER_PREFERENCE 30)
+set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
+
+# Save compiler ABI information.
+set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
+set(CMAKE_CXX_COMPILER_ABI "ELF")
+set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
+
+if(CMAKE_CXX_SIZEOF_DATA_PTR)
+ set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_CXX_COMPILER_ABI)
+ set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
+endif()
+
+if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
+ set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
+endif()
+
+set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
+ set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;c")
+set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/5;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
+set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/Source/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_C.bin b/Source/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_C.bin
new file mode 100755
index 0000000..5bf96b2
--- /dev/null
+++ b/Source/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_C.bin
Binary files differ
diff --git a/Source/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_CXX.bin b/Source/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_CXX.bin
new file mode 100755
index 0000000..871d1fb
--- /dev/null
+++ b/Source/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_CXX.bin
Binary files differ
diff --git a/Source/CMakeFiles/3.5.1/CMakeSystem.cmake b/Source/CMakeFiles/3.5.1/CMakeSystem.cmake
new file mode 100755
index 0000000..6de073d
--- /dev/null
+++ b/Source/CMakeFiles/3.5.1/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Linux-4.10.0-42-generic")
+set(CMAKE_HOST_SYSTEM_NAME "Linux")
+set(CMAKE_HOST_SYSTEM_VERSION "4.10.0-42-generic")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
+
+
+
+set(CMAKE_SYSTEM "Linux-4.10.0-42-generic")
+set(CMAKE_SYSTEM_NAME "Linux")
+set(CMAKE_SYSTEM_VERSION "4.10.0-42-generic")
+set(CMAKE_SYSTEM_PROCESSOR "x86_64")
+
+set(CMAKE_CROSSCOMPILING "FALSE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/Source/CMakeFiles/3.5.1/CompilerIdC/CMakeCCompilerId.c b/Source/CMakeFiles/3.5.1/CompilerIdC/CMakeCCompilerId.c
new file mode 100755
index 0000000..570a15e
--- /dev/null
+++ b/Source/CMakeFiles/3.5.1/CompilerIdC/CMakeCCompilerId.c
@@ -0,0 +1,544 @@
+#ifdef __cplusplus
+# error "A C++ compiler has been selected for C."
+#endif
+
+#if defined(__18CXX)
+# define ID_VOID_MAIN
+#endif
+
+
+/* Version number components: V=Version, R=Revision, P=Patch
+ Version date components: YYYY=Year, MM=Month, DD=Day */
+
+#if defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+# if defined(_MSC_VER)
+# define SIMULATE_ID "MSVC"
+# endif
+ /* __INTEL_COMPILER = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
+# if defined(__INTEL_COMPILER_UPDATE)
+# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
+# else
+# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
+# endif
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+ /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+# endif
+# if defined(_MSC_VER)
+ /* _MSC_VER = VVRR */
+# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+
+#elif defined(__PATHCC__)
+# define COMPILER_ID "PathScale"
+# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+# if defined(__PATHCC_PATCHLEVEL__)
+# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+# endif
+
+#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
+# define COMPILER_ID "Embarcadero"
+# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
+# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
+# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+ /* __BORLANDC__ = 0xVRR */
+# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
+# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
+
+#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
+# define COMPILER_ID "Watcom"
+ /* __WATCOMC__ = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "OpenWatcom"
+ /* __WATCOMC__ = VVRP + 1100 */
+# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__SUNPRO_C)
+# define COMPILER_ID "SunPro"
+# if __SUNPRO_C >= 0x5100
+ /* __SUNPRO_C = 0xVRRP */
+# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12)
+# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
+# else
+ /* __SUNPRO_CC = 0xVRP */
+# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8)
+# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF)
+# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF)
+# endif
+
+#elif defined(__HP_cc)
+# define COMPILER_ID "HP"
+ /* __HP_cc = VVRRPP */
+# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000)
+# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100)
+
+#elif defined(__DECC)
+# define COMPILER_ID "Compaq"
+ /* __DECC_VER = VVRRTPPPP */
+# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000)
+# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100)
+# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000)
+
+#elif defined(__IBMC__) && defined(__COMPILER_VER__)
+# define COMPILER_ID "zOS"
+ /* __IBMC__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
+
+#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800
+# define COMPILER_ID "XL"
+ /* __IBMC__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
+
+#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800
+# define COMPILER_ID "VisualAge"
+ /* __IBMC__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10)
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# if defined(__PGIC_PATCHLEVEL__)
+# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
+# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI"
+ /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
+# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
+# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
+# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
+
+#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version)
+# define COMPILER_ID "Fujitsu"
+
+#elif defined(__TINYC__)
+# define COMPILER_ID "TinyCC"
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__clang__) && defined(__apple_build_version__)
+# define COMPILER_ID "AppleClang"
+# if defined(_MSC_VER)
+# define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+ /* _MSC_VER = VVRR */
+# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+# if defined(_MSC_VER)
+# define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+ /* _MSC_VER = VVRR */
+# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+
+#elif defined(__GNUC__)
+# define COMPILER_ID "GNU"
+# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+# if defined(__GNUC_MINOR__)
+# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+# endif
+# if defined(__GNUC_PATCHLEVEL__)
+# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+ /* _MSC_VER = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
+# if defined(_MSC_FULL_VER)
+# if _MSC_VER >= 1400
+ /* _MSC_FULL_VER = VVRRPPPPP */
+# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
+# else
+ /* _MSC_FULL_VER = VVRRPPPP */
+# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
+# endif
+# endif
+# if defined(_MSC_BUILD)
+# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
+# endif
+
+#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
+# define COMPILER_ID "ADSP"
+#if defined(__VISUALDSPVERSION__)
+ /* __VISUALDSPVERSION__ = 0xVVRRPP00 */
+# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
+# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF)
+#endif
+
+#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC)
+# define COMPILER_ID "IAR"
+
+#elif defined(__ARMCC_VERSION)
+# define COMPILER_ID "ARMCC"
+#if __ARMCC_VERSION >= 1000000
+ /* __ARMCC_VERSION = VRRPPPP */
+ # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
+ # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
+ # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
+#else
+ /* __ARMCC_VERSION = VRPPPP */
+ # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
+ # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
+ # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
+#endif
+
+
+#elif defined(SDCC)
+# define COMPILER_ID "SDCC"
+ /* SDCC = VRP */
+# define COMPILER_VERSION_MAJOR DEC(SDCC/100)
+# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(SDCC % 10)
+
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+# define COMPILER_ID "MIPSpro"
+# if defined(_SGI_COMPILER_VERSION)
+ /* _SGI_COMPILER_VERSION = VRP */
+# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
+# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10)
+# else
+ /* _COMPILER_VERSION = VRP */
+# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
+# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10)
+# endif
+
+
+/* These compilers are either not known or too old to define an
+ identification macro. Try to identify the platform and guess that
+ it is the native compiler. */
+#elif defined(__sgi)
+# define COMPILER_ID "MIPSpro"
+
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+ getting matched. Store it in a pointer rather than an array
+ because some compilers will just produce instructions to fill the
+ array rather than assigning a pointer to a static array. */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+#ifdef SIMULATE_ID
+char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
+#endif
+
+#ifdef __QNXNTO__
+char const* qnxnto = "INFO" ":" "qnxnto[]";
+#endif
+
+#if defined(__CRAYXE) || defined(__CRAYXC)
+char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
+#endif
+
+#define STRINGIFY_HELPER(X) #X
+#define STRINGIFY(X) STRINGIFY_HELPER(X)
+
+/* Identify known platforms by name. */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+# define PLATFORM_ID "IRIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU__)
+# define PLATFORM_ID "Haiku"
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#elif defined(__WATCOMC__)
+# if defined(__LINUX__)
+# define PLATFORM_ID "Linux"
+
+# elif defined(__DOS__)
+# define PLATFORM_ID "DOS"
+
+# elif defined(__OS2__)
+# define PLATFORM_ID "OS2"
+
+# elif defined(__WINDOWS__)
+# define PLATFORM_ID "Windows3x"
+
+# else /* unknown platform */
+# define PLATFORM_ID ""
+# endif
+
+#else /* unknown platform */
+# define PLATFORM_ID ""
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+ the architecture of the compiler being used. This is because
+ the compilers do not have flags that can change the architecture,
+ but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+# define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+# define ARCHITECTURE_ID "x64"
+
+# elif defined(_M_IX86)
+# define ARCHITECTURE_ID "X86"
+
+# elif defined(_M_ARM)
+# if _M_ARM == 4
+# define ARCHITECTURE_ID "ARMV4I"
+# elif _M_ARM == 5
+# define ARCHITECTURE_ID "ARMV5I"
+# else
+# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
+# endif
+
+# elif defined(_M_MIPS)
+# define ARCHITECTURE_ID "MIPS"
+
+# elif defined(_M_SH)
+# define ARCHITECTURE_ID "SHx"
+
+# else /* unknown architecture */
+# define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__WATCOMC__)
+# if defined(_M_I86)
+# define ARCHITECTURE_ID "I86"
+
+# elif defined(_M_IX86)
+# define ARCHITECTURE_ID "X86"
+
+# else /* unknown architecture */
+# define ARCHITECTURE_ID ""
+# endif
+
+#else
+# define ARCHITECTURE_ID ""
+#endif
+
+/* Convert integer to decimal digit literals. */
+#define DEC(n) \
+ ('0' + (((n) / 10000000)%10)), \
+ ('0' + (((n) / 1000000)%10)), \
+ ('0' + (((n) / 100000)%10)), \
+ ('0' + (((n) / 10000)%10)), \
+ ('0' + (((n) / 1000)%10)), \
+ ('0' + (((n) / 100)%10)), \
+ ('0' + (((n) / 10)%10)), \
+ ('0' + ((n) % 10))
+
+/* Convert integer to hex digit literals. */
+#define HEX(n) \
+ ('0' + ((n)>>28 & 0xF)), \
+ ('0' + ((n)>>24 & 0xF)), \
+ ('0' + ((n)>>20 & 0xF)), \
+ ('0' + ((n)>>16 & 0xF)), \
+ ('0' + ((n)>>12 & 0xF)), \
+ ('0' + ((n)>>8 & 0xF)), \
+ ('0' + ((n)>>4 & 0xF)), \
+ ('0' + ((n) & 0xF))
+
+/* Construct a string literal encoding the version number components. */
+#ifdef COMPILER_VERSION_MAJOR
+char const info_version[] = {
+ 'I', 'N', 'F', 'O', ':',
+ 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
+ COMPILER_VERSION_MAJOR,
+# ifdef COMPILER_VERSION_MINOR
+ '.', COMPILER_VERSION_MINOR,
+# ifdef COMPILER_VERSION_PATCH
+ '.', COMPILER_VERSION_PATCH,
+# ifdef COMPILER_VERSION_TWEAK
+ '.', COMPILER_VERSION_TWEAK,
+# endif
+# endif
+# endif
+ ']','\0'};
+#endif
+
+/* Construct a string literal encoding the version number components. */
+#ifdef SIMULATE_VERSION_MAJOR
+char const info_simulate_version[] = {
+ 'I', 'N', 'F', 'O', ':',
+ 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
+ SIMULATE_VERSION_MAJOR,
+# ifdef SIMULATE_VERSION_MINOR
+ '.', SIMULATE_VERSION_MINOR,
+# ifdef SIMULATE_VERSION_PATCH
+ '.', SIMULATE_VERSION_PATCH,
+# ifdef SIMULATE_VERSION_TWEAK
+ '.', SIMULATE_VERSION_TWEAK,
+# endif
+# endif
+# endif
+ ']','\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+ getting matched. Store it in a pointer rather than an array
+ because some compilers will just produce instructions to fill the
+ array rather than assigning a pointer to a static array. */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+
+const char* info_language_dialect_default = "INFO" ":" "dialect_default["
+#if !defined(__STDC_VERSION__)
+ "90"
+#elif __STDC_VERSION__ >= 201000L
+ "11"
+#elif __STDC_VERSION__ >= 199901L
+ "99"
+#else
+#endif
+"]";
+
+/*--------------------------------------------------------------------------*/
+
+#ifdef ID_VOID_MAIN
+void main() {}
+#else
+int main(int argc, char* argv[])
+{
+ int require = 0;
+ require += info_compiler[argc];
+ require += info_platform[argc];
+ require += info_arch[argc];
+#ifdef COMPILER_VERSION_MAJOR
+ require += info_version[argc];
+#endif
+#ifdef SIMULATE_ID
+ require += info_simulate[argc];
+#endif
+#ifdef SIMULATE_VERSION_MAJOR
+ require += info_simulate_version[argc];
+#endif
+#if defined(__CRAYXE) || defined(__CRAYXC)
+ require += info_cray[argc];
+#endif
+ require += info_language_dialect_default[argc];
+ (void)argv;
+ return require;
+}
+#endif
diff --git a/Source/CMakeFiles/3.5.1/CompilerIdC/a.out b/Source/CMakeFiles/3.5.1/CompilerIdC/a.out
new file mode 100755
index 0000000..ec0b632
--- /dev/null
+++ b/Source/CMakeFiles/3.5.1/CompilerIdC/a.out
Binary files differ
diff --git a/Source/CMakeFiles/3.5.1/CompilerIdCXX/CMakeCXXCompilerId.cpp b/Source/CMakeFiles/3.5.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
new file mode 100755
index 0000000..e6d8536
--- /dev/null
+++ b/Source/CMakeFiles/3.5.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
@@ -0,0 +1,533 @@
+/* This source file must have a .cpp extension so that all C++ compilers
+ recognize the extension without flags. Borland does not know .cxx for
+ example. */
+#ifndef __cplusplus
+# error "A C compiler has been selected for C++."
+#endif
+
+
+/* Version number components: V=Version, R=Revision, P=Patch
+ Version date components: YYYY=Year, MM=Month, DD=Day */
+
+#if defined(__COMO__)
+# define COMPILER_ID "Comeau"
+ /* __COMO_VERSION__ = VRR */
+# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100)
+# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100)
+
+#elif defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+# if defined(_MSC_VER)
+# define SIMULATE_ID "MSVC"
+# endif
+ /* __INTEL_COMPILER = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
+# if defined(__INTEL_COMPILER_UPDATE)
+# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
+# else
+# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10)
+# endif
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+ /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+# endif
+# if defined(_MSC_VER)
+ /* _MSC_VER = VVRR */
+# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+
+#elif defined(__PATHCC__)
+# define COMPILER_ID "PathScale"
+# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+# if defined(__PATHCC_PATCHLEVEL__)
+# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+# endif
+
+#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
+# define COMPILER_ID "Embarcadero"
+# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
+# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
+# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF)
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+ /* __BORLANDC__ = 0xVRR */
+# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
+# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
+
+#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
+# define COMPILER_ID "Watcom"
+ /* __WATCOMC__ = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "OpenWatcom"
+ /* __WATCOMC__ = VVRP + 1100 */
+# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__SUNPRO_CC)
+# define COMPILER_ID "SunPro"
+# if __SUNPRO_CC >= 0x5100
+ /* __SUNPRO_CC = 0xVRRP */
+# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12)
+# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
+# else
+ /* __SUNPRO_CC = 0xVRP */
+# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8)
+# define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF)
+# define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC & 0xF)
+# endif
+
+#elif defined(__HP_aCC)
+# define COMPILER_ID "HP"
+ /* __HP_aCC = VVRRPP */
+# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000)
+# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__HP_aCC % 100)
+
+#elif defined(__DECCXX)
+# define COMPILER_ID "Compaq"
+ /* __DECCXX_VER = VVRRTPPPP */
+# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000)
+# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000 % 100)
+# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER % 10000)
+
+#elif defined(__IBMCPP__) && defined(__COMPILER_VER__)
+# define COMPILER_ID "zOS"
+ /* __IBMCPP__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
+
+#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800
+# define COMPILER_ID "XL"
+ /* __IBMCPP__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
+
+#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800
+# define COMPILER_ID "VisualAge"
+ /* __IBMCPP__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMCPP__ % 10)
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# if defined(__PGIC_PATCHLEVEL__)
+# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
+# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI"
+ /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
+# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
+# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000)
+# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000)
+
+#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version)
+# define COMPILER_ID "Fujitsu"
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__clang__) && defined(__apple_build_version__)
+# define COMPILER_ID "AppleClang"
+# if defined(_MSC_VER)
+# define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+ /* _MSC_VER = VVRR */
+# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+# if defined(_MSC_VER)
+# define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+ /* _MSC_VER = VVRR */
+# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+
+#elif defined(__GNUC__)
+# define COMPILER_ID "GNU"
+# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+# if defined(__GNUC_MINOR__)
+# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+# endif
+# if defined(__GNUC_PATCHLEVEL__)
+# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+ /* _MSC_VER = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
+# if defined(_MSC_FULL_VER)
+# if _MSC_VER >= 1400
+ /* _MSC_FULL_VER = VVRRPPPPP */
+# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
+# else
+ /* _MSC_FULL_VER = VVRRPPPP */
+# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
+# endif
+# endif
+# if defined(_MSC_BUILD)
+# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
+# endif
+
+#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
+# define COMPILER_ID "ADSP"
+#if defined(__VISUALDSPVERSION__)
+ /* __VISUALDSPVERSION__ = 0xVVRRPP00 */
+# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
+# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF)
+#endif
+
+#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC)
+# define COMPILER_ID "IAR"
+
+#elif defined(__ARMCC_VERSION)
+# define COMPILER_ID "ARMCC"
+#if __ARMCC_VERSION >= 1000000
+ /* __ARMCC_VERSION = VRRPPPP */
+ # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
+ # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
+ # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
+#else
+ /* __ARMCC_VERSION = VRPPPP */
+ # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
+ # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
+ # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000)
+#endif
+
+
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+# define COMPILER_ID "MIPSpro"
+# if defined(_SGI_COMPILER_VERSION)
+ /* _SGI_COMPILER_VERSION = VRP */
+# define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
+# define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION % 10)
+# else
+ /* _COMPILER_VERSION = VRP */
+# define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
+# define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION % 10)
+# endif
+
+
+/* These compilers are either not known or too old to define an
+ identification macro. Try to identify the platform and guess that
+ it is the native compiler. */
+#elif defined(__sgi)
+# define COMPILER_ID "MIPSpro"
+
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+ getting matched. Store it in a pointer rather than an array
+ because some compilers will just produce instructions to fill the
+ array rather than assigning a pointer to a static array. */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+#ifdef SIMULATE_ID
+char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
+#endif
+
+#ifdef __QNXNTO__
+char const* qnxnto = "INFO" ":" "qnxnto[]";
+#endif
+
+#if defined(__CRAYXE) || defined(__CRAYXC)
+char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
+#endif
+
+#define STRINGIFY_HELPER(X) #X
+#define STRINGIFY(X) STRINGIFY_HELPER(X)
+
+/* Identify known platforms by name. */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+# define PLATFORM_ID "IRIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU__)
+# define PLATFORM_ID "Haiku"
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#elif defined(__WATCOMC__)
+# if defined(__LINUX__)
+# define PLATFORM_ID "Linux"
+
+# elif defined(__DOS__)
+# define PLATFORM_ID "DOS"
+
+# elif defined(__OS2__)
+# define PLATFORM_ID "OS2"
+
+# elif defined(__WINDOWS__)
+# define PLATFORM_ID "Windows3x"
+
+# else /* unknown platform */
+# define PLATFORM_ID ""
+# endif
+
+#else /* unknown platform */
+# define PLATFORM_ID ""
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+ the architecture of the compiler being used. This is because
+ the compilers do not have flags that can change the architecture,
+ but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+# define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+# define ARCHITECTURE_ID "x64"
+
+# elif defined(_M_IX86)
+# define ARCHITECTURE_ID "X86"
+
+# elif defined(_M_ARM)
+# if _M_ARM == 4
+# define ARCHITECTURE_ID "ARMV4I"
+# elif _M_ARM == 5
+# define ARCHITECTURE_ID "ARMV5I"
+# else
+# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
+# endif
+
+# elif defined(_M_MIPS)
+# define ARCHITECTURE_ID "MIPS"
+
+# elif defined(_M_SH)
+# define ARCHITECTURE_ID "SHx"
+
+# else /* unknown architecture */
+# define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__WATCOMC__)
+# if defined(_M_I86)
+# define ARCHITECTURE_ID "I86"
+
+# elif defined(_M_IX86)
+# define ARCHITECTURE_ID "X86"
+
+# else /* unknown architecture */
+# define ARCHITECTURE_ID ""
+# endif
+
+#else
+# define ARCHITECTURE_ID ""
+#endif
+
+/* Convert integer to decimal digit literals. */
+#define DEC(n) \
+ ('0' + (((n) / 10000000)%10)), \
+ ('0' + (((n) / 1000000)%10)), \
+ ('0' + (((n) / 100000)%10)), \
+ ('0' + (((n) / 10000)%10)), \
+ ('0' + (((n) / 1000)%10)), \
+ ('0' + (((n) / 100)%10)), \
+ ('0' + (((n) / 10)%10)), \
+ ('0' + ((n) % 10))
+
+/* Convert integer to hex digit literals. */
+#define HEX(n) \
+ ('0' + ((n)>>28 & 0xF)), \
+ ('0' + ((n)>>24 & 0xF)), \
+ ('0' + ((n)>>20 & 0xF)), \
+ ('0' + ((n)>>16 & 0xF)), \
+ ('0' + ((n)>>12 & 0xF)), \
+ ('0' + ((n)>>8 & 0xF)), \
+ ('0' + ((n)>>4 & 0xF)), \
+ ('0' + ((n) & 0xF))
+
+/* Construct a string literal encoding the version number components. */
+#ifdef COMPILER_VERSION_MAJOR
+char const info_version[] = {
+ 'I', 'N', 'F', 'O', ':',
+ 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
+ COMPILER_VERSION_MAJOR,
+# ifdef COMPILER_VERSION_MINOR
+ '.', COMPILER_VERSION_MINOR,
+# ifdef COMPILER_VERSION_PATCH
+ '.', COMPILER_VERSION_PATCH,
+# ifdef COMPILER_VERSION_TWEAK
+ '.', COMPILER_VERSION_TWEAK,
+# endif
+# endif
+# endif
+ ']','\0'};
+#endif
+
+/* Construct a string literal encoding the version number components. */
+#ifdef SIMULATE_VERSION_MAJOR
+char const info_simulate_version[] = {
+ 'I', 'N', 'F', 'O', ':',
+ 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
+ SIMULATE_VERSION_MAJOR,
+# ifdef SIMULATE_VERSION_MINOR
+ '.', SIMULATE_VERSION_MINOR,
+# ifdef SIMULATE_VERSION_PATCH
+ '.', SIMULATE_VERSION_PATCH,
+# ifdef SIMULATE_VERSION_TWEAK
+ '.', SIMULATE_VERSION_TWEAK,
+# endif
+# endif
+# endif
+ ']','\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+ getting matched. Store it in a pointer rather than an array
+ because some compilers will just produce instructions to fill the
+ array rather than assigning a pointer to a static array. */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+
+const char* info_language_dialect_default = "INFO" ":" "dialect_default["
+#if __cplusplus >= 201402L
+ "14"
+#elif __cplusplus >= 201103L
+ "11"
+#else
+ "98"
+#endif
+"]";
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char* argv[])
+{
+ int require = 0;
+ require += info_compiler[argc];
+ require += info_platform[argc];
+#ifdef COMPILER_VERSION_MAJOR
+ require += info_version[argc];
+#endif
+#ifdef SIMULATE_ID
+ require += info_simulate[argc];
+#endif
+#ifdef SIMULATE_VERSION_MAJOR
+ require += info_simulate_version[argc];
+#endif
+#if defined(__CRAYXE) || defined(__CRAYXC)
+ require += info_cray[argc];
+#endif
+ require += info_language_dialect_default[argc];
+ (void)argv;
+ return require;
+}
diff --git a/Source/CMakeFiles/3.5.1/CompilerIdCXX/a.out b/Source/CMakeFiles/3.5.1/CompilerIdCXX/a.out
new file mode 100755
index 0000000..f493287
--- /dev/null
+++ b/Source/CMakeFiles/3.5.1/CompilerIdCXX/a.out
Binary files differ
diff --git a/Source/CMakeFiles/CMakeDirectoryInformation.cmake b/Source/CMakeFiles/CMakeDirectoryInformation.cmake
new file mode 100755
index 0000000..8481ace
--- /dev/null
+++ b/Source/CMakeFiles/CMakeDirectoryInformation.cmake
@@ -0,0 +1,16 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.5
+
+# Relative path conversion top directories.
+set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/user/Downloads/libs/Source")
+set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/user/Downloads/libs/Source")
+
+# Force unix paths in dependencies.
+set(CMAKE_FORCE_UNIX_PATHS 1)
+
+
+# The C and CXX include file regular expressions for this directory.
+set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
+set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
+set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
+set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
diff --git a/Source/CMakeFiles/CMakeOutput.log b/Source/CMakeFiles/CMakeOutput.log
new file mode 100755
index 0000000..359cb39
--- /dev/null
+++ b/Source/CMakeFiles/CMakeOutput.log
@@ -0,0 +1,554 @@
+The system is: Linux - 4.10.0-42-generic - x86_64
+Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
+Compiler: /usr/bin/cc
+Build flags:
+Id flags:
+
+The output was:
+0
+
+
+Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out"
+
+The C compiler identification is GNU, found in "/home/user/Downloads/libs/Source/CMakeFiles/3.5.1/CompilerIdC/a.out"
+
+Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
+Compiler: /usr/bin/c++
+Build flags:
+Id flags:
+
+The output was:
+0
+
+
+Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out"
+
+The CXX compiler identification is GNU, found in "/home/user/Downloads/libs/Source/CMakeFiles/3.5.1/CompilerIdCXX/a.out"
+
+Determining if the C compiler works passed with the following output:
+Change Dir: /home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_9b1f4/fast"
+/usr/bin/make -f CMakeFiles/cmTC_9b1f4.dir/build.make CMakeFiles/cmTC_9b1f4.dir/build
+make[1]: Entering directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+Building C object CMakeFiles/cmTC_9b1f4.dir/testCCompiler.c.o
+/usr/bin/cc -o CMakeFiles/cmTC_9b1f4.dir/testCCompiler.c.o -c /home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp/testCCompiler.c
+Linking C executable cmTC_9b1f4
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_9b1f4.dir/link.txt --verbose=1
+/usr/bin/cc CMakeFiles/cmTC_9b1f4.dir/testCCompiler.c.o -o cmTC_9b1f4 -rdynamic
+make[1]: Leaving directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+
+
+Detecting C compiler ABI info compiled with the following output:
+Change Dir: /home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_1b7eb/fast"
+/usr/bin/make -f CMakeFiles/cmTC_1b7eb.dir/build.make CMakeFiles/cmTC_1b7eb.dir/build
+make[1]: Entering directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+Building C object CMakeFiles/cmTC_1b7eb.dir/CMakeCCompilerABI.c.o
+/usr/bin/cc -o CMakeFiles/cmTC_1b7eb.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.5/Modules/CMakeCCompilerABI.c
+Linking C executable cmTC_1b7eb
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_1b7eb.dir/link.txt --verbose=1
+/usr/bin/cc -v CMakeFiles/cmTC_1b7eb.dir/CMakeCCompilerABI.c.o -o cmTC_1b7eb -rdynamic
+Using built-in specs.
+COLLECT_GCC=/usr/bin/cc
+COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
+Target: x86_64-linux-gnu
+Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.5' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
+Thread model: posix
+gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)
+COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/
+LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../:/lib/:/usr/lib/
+COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_1b7eb' '-rdynamic' '-mtune=generic' '-march=x86-64'
+ /usr/lib/gcc/x86_64-linux-gnu/5/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper -plugin-opt=-fresolution=/tmp/ccDgIFp2.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTC_1b7eb /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. CMakeFiles/cmTC_1b7eb.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/5/crtend.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o
+make[1]: Leaving directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+
+
+Parsed C implicit link information from above output:
+ link line regex: [^( *|.*[/\])(ld|([^/\]+-)?ld|collect2)[^/\]*( |$)]
+ ignore line: [Change Dir: /home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp]
+ ignore line: []
+ ignore line: [Run Build Command:"/usr/bin/make" "cmTC_1b7eb/fast"]
+ ignore line: [/usr/bin/make -f CMakeFiles/cmTC_1b7eb.dir/build.make CMakeFiles/cmTC_1b7eb.dir/build]
+ ignore line: [make[1]: Entering directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp']
+ ignore line: [Building C object CMakeFiles/cmTC_1b7eb.dir/CMakeCCompilerABI.c.o]
+ ignore line: [/usr/bin/cc -o CMakeFiles/cmTC_1b7eb.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.5/Modules/CMakeCCompilerABI.c]
+ ignore line: [Linking C executable cmTC_1b7eb]
+ ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_1b7eb.dir/link.txt --verbose=1]
+ ignore line: [/usr/bin/cc -v CMakeFiles/cmTC_1b7eb.dir/CMakeCCompilerABI.c.o -o cmTC_1b7eb -rdynamic ]
+ ignore line: [Using built-in specs.]
+ ignore line: [COLLECT_GCC=/usr/bin/cc]
+ ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper]
+ ignore line: [Target: x86_64-linux-gnu]
+ ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.5' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu]
+ ignore line: [Thread model: posix]
+ ignore line: [gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5) ]
+ ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/]
+ ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../:/lib/:/usr/lib/]
+ ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_1b7eb' '-rdynamic' '-mtune=generic' '-march=x86-64']
+ link line: [ /usr/lib/gcc/x86_64-linux-gnu/5/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper -plugin-opt=-fresolution=/tmp/ccDgIFp2.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTC_1b7eb /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. CMakeFiles/cmTC_1b7eb.dir/CMakeCCompilerABI.c.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/5/crtend.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o]
+ arg [/usr/lib/gcc/x86_64-linux-gnu/5/collect2] ==> ignore
+ arg [-plugin] ==> ignore
+ arg [/usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so] ==> ignore
+ arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper] ==> ignore
+ arg [-plugin-opt=-fresolution=/tmp/ccDgIFp2.res] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
+ arg [-plugin-opt=-pass-through=-lc] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
+ arg [--sysroot=/] ==> ignore
+ arg [--build-id] ==> ignore
+ arg [--eh-frame-hdr] ==> ignore
+ arg [-m] ==> ignore
+ arg [elf_x86_64] ==> ignore
+ arg [--hash-style=gnu] ==> ignore
+ arg [--as-needed] ==> ignore
+ arg [-export-dynamic] ==> ignore
+ arg [-dynamic-linker] ==> ignore
+ arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
+ arg [-zrelro] ==> ignore
+ arg [-o] ==> ignore
+ arg [cmTC_1b7eb] ==> ignore
+ arg [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o] ==> ignore
+ arg [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o] ==> ignore
+ arg [/usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o] ==> ignore
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/5] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5]
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu]
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib]
+ arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
+ arg [-L/lib/../lib] ==> dir [/lib/../lib]
+ arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
+ arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/5/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../..]
+ arg [CMakeFiles/cmTC_1b7eb.dir/CMakeCCompilerABI.c.o] ==> ignore
+ arg [-lgcc] ==> lib [gcc]
+ arg [--as-needed] ==> ignore
+ arg [-lgcc_s] ==> lib [gcc_s]
+ arg [--no-as-needed] ==> ignore
+ arg [-lc] ==> lib [c]
+ arg [-lgcc] ==> lib [gcc]
+ arg [--as-needed] ==> ignore
+ arg [-lgcc_s] ==> lib [gcc_s]
+ arg [--no-as-needed] ==> ignore
+ arg [/usr/lib/gcc/x86_64-linux-gnu/5/crtend.o] ==> ignore
+ arg [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o] ==> ignore
+ remove lib [gcc]
+ remove lib [gcc_s]
+ remove lib [gcc]
+ remove lib [gcc_s]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5] ==> [/usr/lib/gcc/x86_64-linux-gnu/5]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib] ==> [/usr/lib]
+ collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
+ collapse library dir [/lib/../lib] ==> [/lib]
+ collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+ collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../..] ==> [/usr/lib]
+ implicit libs: [c]
+ implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/5;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
+ implicit fwks: []
+
+
+
+
+Detecting C [-std=c11] compiler features compiled with the following output:
+Change Dir: /home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_4b3f2/fast"
+/usr/bin/make -f CMakeFiles/cmTC_4b3f2.dir/build.make CMakeFiles/cmTC_4b3f2.dir/build
+make[1]: Entering directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+Building C object CMakeFiles/cmTC_4b3f2.dir/feature_tests.c.o
+/usr/bin/cc -std=c11 -o CMakeFiles/cmTC_4b3f2.dir/feature_tests.c.o -c /home/user/Downloads/libs/Source/CMakeFiles/feature_tests.c
+Linking C executable cmTC_4b3f2
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_4b3f2.dir/link.txt --verbose=1
+/usr/bin/cc CMakeFiles/cmTC_4b3f2.dir/feature_tests.c.o -o cmTC_4b3f2 -rdynamic
+make[1]: Leaving directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+
+
+ Feature record: C_FEATURE:1c_function_prototypes
+ Feature record: C_FEATURE:1c_restrict
+ Feature record: C_FEATURE:1c_static_assert
+ Feature record: C_FEATURE:1c_variadic_macros
+
+
+Detecting C [-std=c99] compiler features compiled with the following output:
+Change Dir: /home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_8c0d8/fast"
+/usr/bin/make -f CMakeFiles/cmTC_8c0d8.dir/build.make CMakeFiles/cmTC_8c0d8.dir/build
+make[1]: Entering directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+Building C object CMakeFiles/cmTC_8c0d8.dir/feature_tests.c.o
+/usr/bin/cc -std=c99 -o CMakeFiles/cmTC_8c0d8.dir/feature_tests.c.o -c /home/user/Downloads/libs/Source/CMakeFiles/feature_tests.c
+Linking C executable cmTC_8c0d8
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_8c0d8.dir/link.txt --verbose=1
+/usr/bin/cc CMakeFiles/cmTC_8c0d8.dir/feature_tests.c.o -o cmTC_8c0d8 -rdynamic
+make[1]: Leaving directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+
+
+ Feature record: C_FEATURE:1c_function_prototypes
+ Feature record: C_FEATURE:1c_restrict
+ Feature record: C_FEATURE:0c_static_assert
+ Feature record: C_FEATURE:1c_variadic_macros
+
+
+Detecting C [-std=c90] compiler features compiled with the following output:
+Change Dir: /home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_6cd3b/fast"
+/usr/bin/make -f CMakeFiles/cmTC_6cd3b.dir/build.make CMakeFiles/cmTC_6cd3b.dir/build
+make[1]: Entering directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+Building C object CMakeFiles/cmTC_6cd3b.dir/feature_tests.c.o
+/usr/bin/cc -std=c90 -o CMakeFiles/cmTC_6cd3b.dir/feature_tests.c.o -c /home/user/Downloads/libs/Source/CMakeFiles/feature_tests.c
+Linking C executable cmTC_6cd3b
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_6cd3b.dir/link.txt --verbose=1
+/usr/bin/cc CMakeFiles/cmTC_6cd3b.dir/feature_tests.c.o -o cmTC_6cd3b -rdynamic
+make[1]: Leaving directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+
+
+ Feature record: C_FEATURE:1c_function_prototypes
+ Feature record: C_FEATURE:0c_restrict
+ Feature record: C_FEATURE:0c_static_assert
+ Feature record: C_FEATURE:0c_variadic_macros
+Determining if the CXX compiler works passed with the following output:
+Change Dir: /home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_1c713/fast"
+/usr/bin/make -f CMakeFiles/cmTC_1c713.dir/build.make CMakeFiles/cmTC_1c713.dir/build
+make[1]: Entering directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+Building CXX object CMakeFiles/cmTC_1c713.dir/testCXXCompiler.cxx.o
+/usr/bin/c++ -o CMakeFiles/cmTC_1c713.dir/testCXXCompiler.cxx.o -c /home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp/testCXXCompiler.cxx
+Linking CXX executable cmTC_1c713
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_1c713.dir/link.txt --verbose=1
+/usr/bin/c++ CMakeFiles/cmTC_1c713.dir/testCXXCompiler.cxx.o -o cmTC_1c713 -rdynamic
+make[1]: Leaving directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+
+
+Detecting CXX compiler ABI info compiled with the following output:
+Change Dir: /home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_8ec97/fast"
+/usr/bin/make -f CMakeFiles/cmTC_8ec97.dir/build.make CMakeFiles/cmTC_8ec97.dir/build
+make[1]: Entering directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+Building CXX object CMakeFiles/cmTC_8ec97.dir/CMakeCXXCompilerABI.cpp.o
+/usr/bin/c++ -o CMakeFiles/cmTC_8ec97.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.5/Modules/CMakeCXXCompilerABI.cpp
+Linking CXX executable cmTC_8ec97
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_8ec97.dir/link.txt --verbose=1
+/usr/bin/c++ -v CMakeFiles/cmTC_8ec97.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_8ec97 -rdynamic
+Using built-in specs.
+COLLECT_GCC=/usr/bin/c++
+COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
+Target: x86_64-linux-gnu
+Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.5' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
+Thread model: posix
+gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)
+COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/
+LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../:/lib/:/usr/lib/
+COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_8ec97' '-rdynamic' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
+ /usr/lib/gcc/x86_64-linux-gnu/5/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper -plugin-opt=-fresolution=/tmp/ccUvW5JG.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTC_8ec97 /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. CMakeFiles/cmTC_8ec97.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/5/crtend.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o
+make[1]: Leaving directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+
+
+Parsed CXX implicit link information from above output:
+ link line regex: [^( *|.*[/\])(ld|([^/\]+-)?ld|collect2)[^/\]*( |$)]
+ ignore line: [Change Dir: /home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp]
+ ignore line: []
+ ignore line: [Run Build Command:"/usr/bin/make" "cmTC_8ec97/fast"]
+ ignore line: [/usr/bin/make -f CMakeFiles/cmTC_8ec97.dir/build.make CMakeFiles/cmTC_8ec97.dir/build]
+ ignore line: [make[1]: Entering directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp']
+ ignore line: [Building CXX object CMakeFiles/cmTC_8ec97.dir/CMakeCXXCompilerABI.cpp.o]
+ ignore line: [/usr/bin/c++ -o CMakeFiles/cmTC_8ec97.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.5/Modules/CMakeCXXCompilerABI.cpp]
+ ignore line: [Linking CXX executable cmTC_8ec97]
+ ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_8ec97.dir/link.txt --verbose=1]
+ ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_8ec97.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_8ec97 -rdynamic ]
+ ignore line: [Using built-in specs.]
+ ignore line: [COLLECT_GCC=/usr/bin/c++]
+ ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper]
+ ignore line: [Target: x86_64-linux-gnu]
+ ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.5' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu]
+ ignore line: [Thread model: posix]
+ ignore line: [gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5) ]
+ ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/]
+ ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/5/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/5/../../../:/lib/:/usr/lib/]
+ ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_8ec97' '-rdynamic' '-shared-libgcc' '-mtune=generic' '-march=x86-64']
+ link line: [ /usr/lib/gcc/x86_64-linux-gnu/5/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper -plugin-opt=-fresolution=/tmp/ccUvW5JG.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --sysroot=/ --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -export-dynamic -dynamic-linker /lib64/ld-linux-x86-64.so.2 -z relro -o cmTC_8ec97 /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. CMakeFiles/cmTC_8ec97.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/5/crtend.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o]
+ arg [/usr/lib/gcc/x86_64-linux-gnu/5/collect2] ==> ignore
+ arg [-plugin] ==> ignore
+ arg [/usr/lib/gcc/x86_64-linux-gnu/5/liblto_plugin.so] ==> ignore
+ arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper] ==> ignore
+ arg [-plugin-opt=-fresolution=/tmp/ccUvW5JG.res] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
+ arg [-plugin-opt=-pass-through=-lc] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
+ arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
+ arg [--sysroot=/] ==> ignore
+ arg [--build-id] ==> ignore
+ arg [--eh-frame-hdr] ==> ignore
+ arg [-m] ==> ignore
+ arg [elf_x86_64] ==> ignore
+ arg [--hash-style=gnu] ==> ignore
+ arg [--as-needed] ==> ignore
+ arg [-export-dynamic] ==> ignore
+ arg [-dynamic-linker] ==> ignore
+ arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
+ arg [-zrelro] ==> ignore
+ arg [-o] ==> ignore
+ arg [cmTC_8ec97] ==> ignore
+ arg [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o] ==> ignore
+ arg [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o] ==> ignore
+ arg [/usr/lib/gcc/x86_64-linux-gnu/5/crtbegin.o] ==> ignore
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/5] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5]
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu]
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib]
+ arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
+ arg [-L/lib/../lib] ==> dir [/lib/../lib]
+ arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
+ arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
+ arg [-L/usr/lib/gcc/x86_64-linux-gnu/5/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../..]
+ arg [CMakeFiles/cmTC_8ec97.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore
+ arg [-lstdc++] ==> lib [stdc++]
+ arg [-lm] ==> lib [m]
+ arg [-lgcc_s] ==> lib [gcc_s]
+ arg [-lgcc] ==> lib [gcc]
+ arg [-lc] ==> lib [c]
+ arg [-lgcc_s] ==> lib [gcc_s]
+ arg [-lgcc] ==> lib [gcc]
+ arg [/usr/lib/gcc/x86_64-linux-gnu/5/crtend.o] ==> ignore
+ arg [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o] ==> ignore
+ remove lib [gcc_s]
+ remove lib [gcc]
+ remove lib [gcc_s]
+ remove lib [gcc]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5] ==> [/usr/lib/gcc/x86_64-linux-gnu/5]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib] ==> [/usr/lib]
+ collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
+ collapse library dir [/lib/../lib] ==> [/lib]
+ collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
+ collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
+ collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/5/../../..] ==> [/usr/lib]
+ implicit libs: [stdc++;m;c]
+ implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/5;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
+ implicit fwks: []
+
+
+
+
+Detecting CXX [-std=c++14] compiler features compiled with the following output:
+Change Dir: /home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_0304a/fast"
+/usr/bin/make -f CMakeFiles/cmTC_0304a.dir/build.make CMakeFiles/cmTC_0304a.dir/build
+make[1]: Entering directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+Building CXX object CMakeFiles/cmTC_0304a.dir/feature_tests.cxx.o
+/usr/bin/c++ -std=c++14 -o CMakeFiles/cmTC_0304a.dir/feature_tests.cxx.o -c /home/user/Downloads/libs/Source/CMakeFiles/feature_tests.cxx
+Linking CXX executable cmTC_0304a
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_0304a.dir/link.txt --verbose=1
+/usr/bin/c++ CMakeFiles/cmTC_0304a.dir/feature_tests.cxx.o -o cmTC_0304a -rdynamic
+make[1]: Leaving directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+
+
+ Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers
+ Feature record: CXX_FEATURE:1cxx_alias_templates
+ Feature record: CXX_FEATURE:1cxx_alignas
+ Feature record: CXX_FEATURE:1cxx_alignof
+ Feature record: CXX_FEATURE:1cxx_attributes
+ Feature record: CXX_FEATURE:1cxx_attribute_deprecated
+ Feature record: CXX_FEATURE:1cxx_auto_type
+ Feature record: CXX_FEATURE:1cxx_binary_literals
+ Feature record: CXX_FEATURE:1cxx_constexpr
+ Feature record: CXX_FEATURE:1cxx_contextual_conversions
+ Feature record: CXX_FEATURE:1cxx_decltype
+ Feature record: CXX_FEATURE:1cxx_decltype_auto
+ Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
+ Feature record: CXX_FEATURE:1cxx_default_function_template_args
+ Feature record: CXX_FEATURE:1cxx_defaulted_functions
+ Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
+ Feature record: CXX_FEATURE:1cxx_delegating_constructors
+ Feature record: CXX_FEATURE:1cxx_deleted_functions
+ Feature record: CXX_FEATURE:1cxx_digit_separators
+ Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
+ Feature record: CXX_FEATURE:1cxx_explicit_conversions
+ Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
+ Feature record: CXX_FEATURE:1cxx_extern_templates
+ Feature record: CXX_FEATURE:1cxx_final
+ Feature record: CXX_FEATURE:1cxx_func_identifier
+ Feature record: CXX_FEATURE:1cxx_generalized_initializers
+ Feature record: CXX_FEATURE:1cxx_generic_lambdas
+ Feature record: CXX_FEATURE:1cxx_inheriting_constructors
+ Feature record: CXX_FEATURE:1cxx_inline_namespaces
+ Feature record: CXX_FEATURE:1cxx_lambdas
+ Feature record: CXX_FEATURE:1cxx_lambda_init_captures
+ Feature record: CXX_FEATURE:1cxx_local_type_template_args
+ Feature record: CXX_FEATURE:1cxx_long_long_type
+ Feature record: CXX_FEATURE:1cxx_noexcept
+ Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
+ Feature record: CXX_FEATURE:1cxx_nullptr
+ Feature record: CXX_FEATURE:1cxx_override
+ Feature record: CXX_FEATURE:1cxx_range_for
+ Feature record: CXX_FEATURE:1cxx_raw_string_literals
+ Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
+ Feature record: CXX_FEATURE:1cxx_relaxed_constexpr
+ Feature record: CXX_FEATURE:1cxx_return_type_deduction
+ Feature record: CXX_FEATURE:1cxx_right_angle_brackets
+ Feature record: CXX_FEATURE:1cxx_rvalue_references
+ Feature record: CXX_FEATURE:1cxx_sizeof_member
+ Feature record: CXX_FEATURE:1cxx_static_assert
+ Feature record: CXX_FEATURE:1cxx_strong_enums
+ Feature record: CXX_FEATURE:1cxx_template_template_parameters
+ Feature record: CXX_FEATURE:1cxx_thread_local
+ Feature record: CXX_FEATURE:1cxx_trailing_return_types
+ Feature record: CXX_FEATURE:1cxx_unicode_literals
+ Feature record: CXX_FEATURE:1cxx_uniform_initialization
+ Feature record: CXX_FEATURE:1cxx_unrestricted_unions
+ Feature record: CXX_FEATURE:1cxx_user_literals
+ Feature record: CXX_FEATURE:1cxx_variable_templates
+ Feature record: CXX_FEATURE:1cxx_variadic_macros
+ Feature record: CXX_FEATURE:1cxx_variadic_templates
+
+
+Detecting CXX [-std=c++11] compiler features compiled with the following output:
+Change Dir: /home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_ddb42/fast"
+/usr/bin/make -f CMakeFiles/cmTC_ddb42.dir/build.make CMakeFiles/cmTC_ddb42.dir/build
+make[1]: Entering directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+Building CXX object CMakeFiles/cmTC_ddb42.dir/feature_tests.cxx.o
+/usr/bin/c++ -std=c++11 -o CMakeFiles/cmTC_ddb42.dir/feature_tests.cxx.o -c /home/user/Downloads/libs/Source/CMakeFiles/feature_tests.cxx
+Linking CXX executable cmTC_ddb42
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_ddb42.dir/link.txt --verbose=1
+/usr/bin/c++ CMakeFiles/cmTC_ddb42.dir/feature_tests.cxx.o -o cmTC_ddb42 -rdynamic
+make[1]: Leaving directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+
+
+ Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers
+ Feature record: CXX_FEATURE:1cxx_alias_templates
+ Feature record: CXX_FEATURE:1cxx_alignas
+ Feature record: CXX_FEATURE:1cxx_alignof
+ Feature record: CXX_FEATURE:1cxx_attributes
+ Feature record: CXX_FEATURE:0cxx_attribute_deprecated
+ Feature record: CXX_FEATURE:1cxx_auto_type
+ Feature record: CXX_FEATURE:0cxx_binary_literals
+ Feature record: CXX_FEATURE:1cxx_constexpr
+ Feature record: CXX_FEATURE:0cxx_contextual_conversions
+ Feature record: CXX_FEATURE:1cxx_decltype
+ Feature record: CXX_FEATURE:0cxx_decltype_auto
+ Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
+ Feature record: CXX_FEATURE:1cxx_default_function_template_args
+ Feature record: CXX_FEATURE:1cxx_defaulted_functions
+ Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
+ Feature record: CXX_FEATURE:1cxx_delegating_constructors
+ Feature record: CXX_FEATURE:1cxx_deleted_functions
+ Feature record: CXX_FEATURE:0cxx_digit_separators
+ Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
+ Feature record: CXX_FEATURE:1cxx_explicit_conversions
+ Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
+ Feature record: CXX_FEATURE:1cxx_extern_templates
+ Feature record: CXX_FEATURE:1cxx_final
+ Feature record: CXX_FEATURE:1cxx_func_identifier
+ Feature record: CXX_FEATURE:1cxx_generalized_initializers
+ Feature record: CXX_FEATURE:0cxx_generic_lambdas
+ Feature record: CXX_FEATURE:1cxx_inheriting_constructors
+ Feature record: CXX_FEATURE:1cxx_inline_namespaces
+ Feature record: CXX_FEATURE:1cxx_lambdas
+ Feature record: CXX_FEATURE:0cxx_lambda_init_captures
+ Feature record: CXX_FEATURE:1cxx_local_type_template_args
+ Feature record: CXX_FEATURE:1cxx_long_long_type
+ Feature record: CXX_FEATURE:1cxx_noexcept
+ Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
+ Feature record: CXX_FEATURE:1cxx_nullptr
+ Feature record: CXX_FEATURE:1cxx_override
+ Feature record: CXX_FEATURE:1cxx_range_for
+ Feature record: CXX_FEATURE:1cxx_raw_string_literals
+ Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
+ Feature record: CXX_FEATURE:0cxx_relaxed_constexpr
+ Feature record: CXX_FEATURE:0cxx_return_type_deduction
+ Feature record: CXX_FEATURE:1cxx_right_angle_brackets
+ Feature record: CXX_FEATURE:1cxx_rvalue_references
+ Feature record: CXX_FEATURE:1cxx_sizeof_member
+ Feature record: CXX_FEATURE:1cxx_static_assert
+ Feature record: CXX_FEATURE:1cxx_strong_enums
+ Feature record: CXX_FEATURE:1cxx_template_template_parameters
+ Feature record: CXX_FEATURE:1cxx_thread_local
+ Feature record: CXX_FEATURE:1cxx_trailing_return_types
+ Feature record: CXX_FEATURE:1cxx_unicode_literals
+ Feature record: CXX_FEATURE:1cxx_uniform_initialization
+ Feature record: CXX_FEATURE:1cxx_unrestricted_unions
+ Feature record: CXX_FEATURE:1cxx_user_literals
+ Feature record: CXX_FEATURE:0cxx_variable_templates
+ Feature record: CXX_FEATURE:1cxx_variadic_macros
+ Feature record: CXX_FEATURE:1cxx_variadic_templates
+
+
+Detecting CXX [-std=c++98] compiler features compiled with the following output:
+Change Dir: /home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp
+
+Run Build Command:"/usr/bin/make" "cmTC_cf362/fast"
+/usr/bin/make -f CMakeFiles/cmTC_cf362.dir/build.make CMakeFiles/cmTC_cf362.dir/build
+make[1]: Entering directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+Building CXX object CMakeFiles/cmTC_cf362.dir/feature_tests.cxx.o
+/usr/bin/c++ -std=c++98 -o CMakeFiles/cmTC_cf362.dir/feature_tests.cxx.o -c /home/user/Downloads/libs/Source/CMakeFiles/feature_tests.cxx
+Linking CXX executable cmTC_cf362
+/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_cf362.dir/link.txt --verbose=1
+/usr/bin/c++ CMakeFiles/cmTC_cf362.dir/feature_tests.cxx.o -o cmTC_cf362 -rdynamic
+make[1]: Leaving directory '/home/user/Downloads/libs/Source/CMakeFiles/CMakeTmp'
+
+
+ Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers
+ Feature record: CXX_FEATURE:0cxx_alias_templates
+ Feature record: CXX_FEATURE:0cxx_alignas
+ Feature record: CXX_FEATURE:0cxx_alignof
+ Feature record: CXX_FEATURE:0cxx_attributes
+ Feature record: CXX_FEATURE:0cxx_attribute_deprecated
+ Feature record: CXX_FEATURE:0cxx_auto_type
+ Feature record: CXX_FEATURE:0cxx_binary_literals
+ Feature record: CXX_FEATURE:0cxx_constexpr
+ Feature record: CXX_FEATURE:0cxx_contextual_conversions
+ Feature record: CXX_FEATURE:0cxx_decltype
+ Feature record: CXX_FEATURE:0cxx_decltype_auto
+ Feature record: CXX_FEATURE:0cxx_decltype_incomplete_return_types
+ Feature record: CXX_FEATURE:0cxx_default_function_template_args
+ Feature record: CXX_FEATURE:0cxx_defaulted_functions
+ Feature record: CXX_FEATURE:0cxx_defaulted_move_initializers
+ Feature record: CXX_FEATURE:0cxx_delegating_constructors
+ Feature record: CXX_FEATURE:0cxx_deleted_functions
+ Feature record: CXX_FEATURE:0cxx_digit_separators
+ Feature record: CXX_FEATURE:0cxx_enum_forward_declarations
+ Feature record: CXX_FEATURE:0cxx_explicit_conversions
+ Feature record: CXX_FEATURE:0cxx_extended_friend_declarations
+ Feature record: CXX_FEATURE:0cxx_extern_templates
+ Feature record: CXX_FEATURE:0cxx_final
+ Feature record: CXX_FEATURE:0cxx_func_identifier
+ Feature record: CXX_FEATURE:0cxx_generalized_initializers
+ Feature record: CXX_FEATURE:0cxx_generic_lambdas
+ Feature record: CXX_FEATURE:0cxx_inheriting_constructors
+ Feature record: CXX_FEATURE:0cxx_inline_namespaces
+ Feature record: CXX_FEATURE:0cxx_lambdas
+ Feature record: CXX_FEATURE:0cxx_lambda_init_captures
+ Feature record: CXX_FEATURE:0cxx_local_type_template_args
+ Feature record: CXX_FEATURE:0cxx_long_long_type
+ Feature record: CXX_FEATURE:0cxx_noexcept
+ Feature record: CXX_FEATURE:0cxx_nonstatic_member_init
+ Feature record: CXX_FEATURE:0cxx_nullptr
+ Feature record: CXX_FEATURE:0cxx_override
+ Feature record: CXX_FEATURE:0cxx_range_for
+ Feature record: CXX_FEATURE:0cxx_raw_string_literals
+ Feature record: CXX_FEATURE:0cxx_reference_qualified_functions
+ Feature record: CXX_FEATURE:0cxx_relaxed_constexpr
+ Feature record: CXX_FEATURE:0cxx_return_type_deduction
+ Feature record: CXX_FEATURE:0cxx_right_angle_brackets
+ Feature record: CXX_FEATURE:0cxx_rvalue_references
+ Feature record: CXX_FEATURE:0cxx_sizeof_member
+ Feature record: CXX_FEATURE:0cxx_static_assert
+ Feature record: CXX_FEATURE:0cxx_strong_enums
+ Feature record: CXX_FEATURE:1cxx_template_template_parameters
+ Feature record: CXX_FEATURE:0cxx_thread_local
+ Feature record: CXX_FEATURE:0cxx_trailing_return_types
+ Feature record: CXX_FEATURE:0cxx_unicode_literals
+ Feature record: CXX_FEATURE:0cxx_uniform_initialization
+ Feature record: CXX_FEATURE:0cxx_unrestricted_unions
+ Feature record: CXX_FEATURE:0cxx_user_literals
+ Feature record: CXX_FEATURE:0cxx_variable_templates
+ Feature record: CXX_FEATURE:0cxx_variadic_macros
+ Feature record: CXX_FEATURE:0cxx_variadic_templates
diff --git a/Source/CMakeFiles/Makefile.cmake b/Source/CMakeFiles/Makefile.cmake
new file mode 100755
index 0000000..616dbc0
--- /dev/null
+++ b/Source/CMakeFiles/Makefile.cmake
@@ -0,0 +1,115 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.5
+
+# The generator used is:
+set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles")
+
+# The top level Makefile was generated from the following files:
+set(CMAKE_MAKEFILE_DEPENDS
+ "CMakeCache.txt"
+ "CMakeFiles/3.5.1/CMakeCCompiler.cmake"
+ "CMakeFiles/3.5.1/CMakeCXXCompiler.cmake"
+ "CMakeFiles/3.5.1/CMakeSystem.cmake"
+ "CMakeFiles/feature_tests.c"
+ "CMakeFiles/feature_tests.cxx"
+ "CMakeLists.txt"
+ "/usr/share/cmake-3.5/Modules/CMakeCCompiler.cmake.in"
+ "/usr/share/cmake-3.5/Modules/CMakeCCompilerABI.c"
+ "/usr/share/cmake-3.5/Modules/CMakeCInformation.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeCXXCompiler.cmake.in"
+ "/usr/share/cmake-3.5/Modules/CMakeCXXCompilerABI.cpp"
+ "/usr/share/cmake-3.5/Modules/CMakeCXXInformation.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeCommonLanguageInclude.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeCompilerIdDetection.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeDetermineCCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeDetermineCXXCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeDetermineCompileFeatures.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeDetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeDetermineCompilerABI.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeDetermineCompilerId.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeDetermineSystem.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeFindBinUtils.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeGenericSystem.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeLanguageInformation.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeParseArguments.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeParseImplicitLinkInfo.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeSystem.cmake.in"
+ "/usr/share/cmake-3.5/Modules/CMakeSystemSpecificInformation.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeSystemSpecificInitialize.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeTestCCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeTestCXXCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeTestCompilerCommon.cmake"
+ "/usr/share/cmake-3.5/Modules/CMakeUnixFindMake.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/ADSP-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/ARMCC-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/AppleClang-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/Borland-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/Clang-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/Clang-DetermineCompilerInternal.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/Compaq-C-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/Cray-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/Embarcadero-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/Fujitsu-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/GHS-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/GNU-C-FeatureTests.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/GNU-C.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/GNU-CXX-FeatureTests.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/GNU-CXX.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/GNU-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/GNU.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/HP-C-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/HP-CXX-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/IAR-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/Intel-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/MIPSpro-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/MSVC-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/PGI-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/PathScale-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/SCO-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/SDCC-C-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/SunPro-C-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/TI-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/Watcom-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/XL-C-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/XL-CXX-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/zOS-C-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake"
+ "/usr/share/cmake-3.5/Modules/Internal/FeatureTesting.cmake"
+ "/usr/share/cmake-3.5/Modules/MultiArchCross.cmake"
+ "/usr/share/cmake-3.5/Modules/Platform/Linux-CXX.cmake"
+ "/usr/share/cmake-3.5/Modules/Platform/Linux-GNU-C.cmake"
+ "/usr/share/cmake-3.5/Modules/Platform/Linux-GNU-CXX.cmake"
+ "/usr/share/cmake-3.5/Modules/Platform/Linux-GNU.cmake"
+ "/usr/share/cmake-3.5/Modules/Platform/Linux.cmake"
+ "/usr/share/cmake-3.5/Modules/Platform/UnixPaths.cmake"
+ )
+
+# The corresponding makefile is:
+set(CMAKE_MAKEFILE_OUTPUTS
+ "Makefile"
+ "CMakeFiles/cmake.check_cache"
+ )
+
+# Byproducts of CMake generate step:
+set(CMAKE_MAKEFILE_PRODUCTS
+ "CMakeFiles/3.5.1/CMakeSystem.cmake"
+ "CMakeFiles/3.5.1/CMakeCCompiler.cmake"
+ "CMakeFiles/3.5.1/CMakeCXXCompiler.cmake"
+ "CMakeFiles/3.5.1/CMakeCCompiler.cmake"
+ "CMakeFiles/3.5.1/CMakeCXXCompiler.cmake"
+ "CMakeFiles/CMakeDirectoryInformation.cmake"
+ )
+
+# Dependency information for all targets:
+set(CMAKE_DEPEND_INFO_FILES
+ "CMakeFiles/modelPlugFirmata.dir/DependInfo.cmake"
+ )
diff --git a/Source/CMakeFiles/Makefile2 b/Source/CMakeFiles/Makefile2
new file mode 100755
index 0000000..dca4480
--- /dev/null
+++ b/Source/CMakeFiles/Makefile2
@@ -0,0 +1,108 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.5
+
+# Default target executed when no arguments are given to make.
+default_target: all
+
+.PHONY : default_target
+
+# The main recursive all target
+all:
+
+.PHONY : all
+
+# The main recursive preinstall target
+preinstall:
+
+.PHONY : preinstall
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+
+# A target that is always out of date.
+cmake_force:
+
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/user/Downloads/libs/Source
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/user/Downloads/libs/Source
+
+#=============================================================================
+# Target rules for target CMakeFiles/modelPlugFirmata.dir
+
+# All Build rule for target.
+CMakeFiles/modelPlugFirmata.dir/all:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/depend
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/build
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/user/Downloads/libs/Source/CMakeFiles --progress-num=1,2,3 "Built target modelPlugFirmata"
+.PHONY : CMakeFiles/modelPlugFirmata.dir/all
+
+# Include target in all.
+all: CMakeFiles/modelPlugFirmata.dir/all
+
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+CMakeFiles/modelPlugFirmata.dir/rule: cmake_check_build_system
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/user/Downloads/libs/Source/CMakeFiles 3
+ $(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/modelPlugFirmata.dir/all
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/user/Downloads/libs/Source/CMakeFiles 0
+.PHONY : CMakeFiles/modelPlugFirmata.dir/rule
+
+# Convenience name for target.
+modelPlugFirmata: CMakeFiles/modelPlugFirmata.dir/rule
+
+.PHONY : modelPlugFirmata
+
+# clean rule for target.
+CMakeFiles/modelPlugFirmata.dir/clean:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/clean
+.PHONY : CMakeFiles/modelPlugFirmata.dir/clean
+
+# clean rule for target.
+clean: CMakeFiles/modelPlugFirmata.dir/clean
+
+.PHONY : clean
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+ $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/Source/CMakeFiles/TargetDirectories.txt b/Source/CMakeFiles/TargetDirectories.txt
new file mode 100755
index 0000000..d9400b3
--- /dev/null
+++ b/Source/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+/home/user/Downloads/libs/Source/CMakeFiles/rebuild_cache.dir
+/home/user/Downloads/libs/Source/CMakeFiles/edit_cache.dir
+/home/user/Downloads/libs/Source/CMakeFiles/modelPlugFirmata.dir
diff --git a/Source/CMakeFiles/cmake.check_cache b/Source/CMakeFiles/cmake.check_cache
new file mode 100755
index 0000000..3dccd73
--- /dev/null
+++ b/Source/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/Source/CMakeFiles/feature_tests.bin b/Source/CMakeFiles/feature_tests.bin
new file mode 100755
index 0000000..42c19f3
--- /dev/null
+++ b/Source/CMakeFiles/feature_tests.bin
Binary files differ
diff --git a/Source/CMakeFiles/feature_tests.c b/Source/CMakeFiles/feature_tests.c
new file mode 100755
index 0000000..6590dde
--- /dev/null
+++ b/Source/CMakeFiles/feature_tests.c
@@ -0,0 +1,34 @@
+
+ const char features[] = {"\n"
+"C_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404
+"1"
+#else
+"0"
+#endif
+"c_function_prototypes\n"
+"C_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+"1"
+#else
+"0"
+#endif
+"c_restrict\n"
+"C_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201000L
+"1"
+#else
+"0"
+#endif
+"c_static_assert\n"
+"C_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+"1"
+#else
+"0"
+#endif
+"c_variadic_macros\n"
+
+};
+
+int main(int argc, char** argv) { (void)argv; return features[argc]; }
diff --git a/Source/CMakeFiles/feature_tests.cxx b/Source/CMakeFiles/feature_tests.cxx
new file mode 100755
index 0000000..b93418c
--- /dev/null
+++ b/Source/CMakeFiles/feature_tests.cxx
@@ -0,0 +1,405 @@
+
+ const char features[] = {"\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L
+"1"
+#else
+"0"
+#endif
+"cxx_aggregate_default_initializers\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_alias_templates\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_alignas\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_alignof\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_attributes\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_attribute_deprecated\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_auto_type\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_binary_literals\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_constexpr\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_contextual_conversions\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_decltype\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_decltype_auto\n"
+"CXX_FEATURE:"
+#if ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40801) && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_decltype_incomplete_return_types\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_default_function_template_args\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_defaulted_functions\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_defaulted_move_initializers\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_delegating_constructors\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_deleted_functions\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_digit_separators\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_enum_forward_declarations\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_explicit_conversions\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_extended_friend_declarations\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_extern_templates\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_final\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_func_identifier\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_generalized_initializers\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_generic_lambdas\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_inheriting_constructors\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_inline_namespaces\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_lambdas\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_lambda_init_captures\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_local_type_template_args\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_long_long_type\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_noexcept\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_nonstatic_member_init\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_nullptr\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_override\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_range_for\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_raw_string_literals\n"
+"CXX_FEATURE:"
+#if ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40801) && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_reference_qualified_functions\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L
+"1"
+#else
+"0"
+#endif
+"cxx_relaxed_constexpr\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_return_type_deduction\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_right_angle_brackets\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_rvalue_references\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_sizeof_member\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_static_assert\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_strong_enums\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && __cplusplus
+"1"
+#else
+"0"
+#endif
+"cxx_template_template_parameters\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_thread_local\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_trailing_return_types\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_unicode_literals\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_uniform_initialization\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_unrestricted_unions\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_user_literals\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L
+"1"
+#else
+"0"
+#endif
+"cxx_variable_templates\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_variadic_macros\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_variadic_templates\n"
+
+};
+
+int main(int argc, char** argv) { (void)argv; return features[argc]; }
diff --git a/Source/CMakeFiles/modelPlugFirmata.dir/CXX.includecache b/Source/CMakeFiles/modelPlugFirmata.dir/CXX.includecache
new file mode 100755
index 0000000..17718e5
--- /dev/null
+++ b/Source/CMakeFiles/modelPlugFirmata.dir/CXX.includecache
@@ -0,0 +1,108 @@
+#IncludeRegexLine: ^[ ]*#[ ]*(include|import)[ ]*[<"]([^">]+)([">])
+
+#IncludeRegexScan: ^.*$
+
+#IncludeRegexComplain: ^$
+
+#IncludeRegexTransform:
+
+/home/user/Downloads/libs/Source/modelPlugFirmata.cpp
+stdio.h
+-
+stdint.h
+-
+algorithm
+-
+vector
+-
+serial.h
+/home/user/Downloads/libs/Source/serial.h
+modelPlugFirmata.h
+/home/user/Downloads/libs/Source/modelPlugFirmata.h
+
+/home/user/Downloads/libs/Source/modelPlugFirmata.h
+
+/home/user/Downloads/libs/Source/serial.cpp
+serial.h
+/home/user/Downloads/libs/Source/serial.h
+sys/types.h
+-
+fcntl.h
+-
+errno.h
+-
+sys/select.h
+-
+termios.h
+-
+unistd.h
+-
+dirent.h
+-
+sys/stat.h
+-
+sys/ioctl.h
+-
+linux/serial.h
+-
+errno.h
+-
+stdio.h
+-
+string.h
+-
+stdio.h
+-
+string.h
+-
+unistd.h
+-
+fcntl.h
+-
+sys/ioctl.h
+-
+errno.h
+-
+paths.h
+-
+termios.h
+-
+sysexits.h
+-
+sys/param.h
+-
+sys/select.h
+-
+sys/time.h
+-
+time.h
+-
+CoreFoundation/CoreFoundation.h
+-
+IOKit/IOKitLib.h
+-
+IOKit/serial/IOSerialKeys.h
+-
+IOKit/IOBSD.h
+-
+windows.h
+-
+
+/home/user/Downloads/libs/Source/serial.h
+stdint.h
+-
+termios.h
+-
+termios.h
+-
+windows.h
+-
+vector
+-
+string
+-
+sstream
+-
+algorithm
+-
+
diff --git a/Source/CMakeFiles/modelPlugFirmata.dir/DependInfo.cmake b/Source/CMakeFiles/modelPlugFirmata.dir/DependInfo.cmake
new file mode 100755
index 0000000..c1e23de
--- /dev/null
+++ b/Source/CMakeFiles/modelPlugFirmata.dir/DependInfo.cmake
@@ -0,0 +1,26 @@
+# The set of languages for which implicit dependencies are needed:
+set(CMAKE_DEPENDS_LANGUAGES
+ "CXX"
+ )
+# The set of files for implicit dependencies of each language:
+set(CMAKE_DEPENDS_CHECK_CXX
+ "/home/user/Downloads/libs/Source/modelPlugFirmata.cpp" "/home/user/Downloads/libs/Source/CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o"
+ "/home/user/Downloads/libs/Source/serial.cpp" "/home/user/Downloads/libs/Source/CMakeFiles/modelPlugFirmata.dir/serial.cpp.o"
+ )
+set(CMAKE_CXX_COMPILER_ID "GNU")
+
+# Preprocessor definitions for this target.
+set(CMAKE_TARGET_DEFINITIONS_CXX
+ "LINUX"
+ )
+
+# The include file search paths:
+set(CMAKE_CXX_TARGET_INCLUDE_PATH
+ )
+
+# Targets to which this target links.
+set(CMAKE_TARGET_LINKED_INFO_FILES
+ )
+
+# Fortran module output directory.
+set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/Source/CMakeFiles/modelPlugFirmata.dir/build.make b/Source/CMakeFiles/modelPlugFirmata.dir/build.make
new file mode 100755
index 0000000..5d0d8e9
--- /dev/null
+++ b/Source/CMakeFiles/modelPlugFirmata.dir/build.make
@@ -0,0 +1,140 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.5
+
+# Delete rule output on recipe failure.
+.DELETE_ON_ERROR:
+
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+
+# A target that is always out of date.
+cmake_force:
+
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/user/Downloads/libs/Source
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/user/Downloads/libs/Source
+
+# Include any dependencies generated for this target.
+include CMakeFiles/modelPlugFirmata.dir/depend.make
+
+# Include the progress variables for this target.
+include CMakeFiles/modelPlugFirmata.dir/progress.make
+
+# Include the compile flags for this target's objects.
+include CMakeFiles/modelPlugFirmata.dir/flags.make
+
+CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o: CMakeFiles/modelPlugFirmata.dir/flags.make
+CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o: modelPlugFirmata.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/user/Downloads/libs/Source/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o"
+ /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o -c /home/user/Downloads/libs/Source/modelPlugFirmata.cpp
+
+CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.i"
+ /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/user/Downloads/libs/Source/modelPlugFirmata.cpp > CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.i
+
+CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.s"
+ /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/user/Downloads/libs/Source/modelPlugFirmata.cpp -o CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.s
+
+CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o.requires:
+
+.PHONY : CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o.requires
+
+CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o.provides: CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o.requires
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o.provides.build
+.PHONY : CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o.provides
+
+CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o.provides.build: CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o
+
+
+CMakeFiles/modelPlugFirmata.dir/serial.cpp.o: CMakeFiles/modelPlugFirmata.dir/flags.make
+CMakeFiles/modelPlugFirmata.dir/serial.cpp.o: serial.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/user/Downloads/libs/Source/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object CMakeFiles/modelPlugFirmata.dir/serial.cpp.o"
+ /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/modelPlugFirmata.dir/serial.cpp.o -c /home/user/Downloads/libs/Source/serial.cpp
+
+CMakeFiles/modelPlugFirmata.dir/serial.cpp.i: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/modelPlugFirmata.dir/serial.cpp.i"
+ /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/user/Downloads/libs/Source/serial.cpp > CMakeFiles/modelPlugFirmata.dir/serial.cpp.i
+
+CMakeFiles/modelPlugFirmata.dir/serial.cpp.s: cmake_force
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/modelPlugFirmata.dir/serial.cpp.s"
+ /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/user/Downloads/libs/Source/serial.cpp -o CMakeFiles/modelPlugFirmata.dir/serial.cpp.s
+
+CMakeFiles/modelPlugFirmata.dir/serial.cpp.o.requires:
+
+.PHONY : CMakeFiles/modelPlugFirmata.dir/serial.cpp.o.requires
+
+CMakeFiles/modelPlugFirmata.dir/serial.cpp.o.provides: CMakeFiles/modelPlugFirmata.dir/serial.cpp.o.requires
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/serial.cpp.o.provides.build
+.PHONY : CMakeFiles/modelPlugFirmata.dir/serial.cpp.o.provides
+
+CMakeFiles/modelPlugFirmata.dir/serial.cpp.o.provides.build: CMakeFiles/modelPlugFirmata.dir/serial.cpp.o
+
+
+# Object files for target modelPlugFirmata
+modelPlugFirmata_OBJECTS = \
+"CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o" \
+"CMakeFiles/modelPlugFirmata.dir/serial.cpp.o"
+
+# External object files for target modelPlugFirmata
+modelPlugFirmata_EXTERNAL_OBJECTS =
+
+libmodelPlugFirmata.so: CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o
+libmodelPlugFirmata.so: CMakeFiles/modelPlugFirmata.dir/serial.cpp.o
+libmodelPlugFirmata.so: CMakeFiles/modelPlugFirmata.dir/build.make
+libmodelPlugFirmata.so: CMakeFiles/modelPlugFirmata.dir/link.txt
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/user/Downloads/libs/Source/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Linking CXX shared library libmodelPlugFirmata.so"
+ $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/modelPlugFirmata.dir/link.txt --verbose=$(VERBOSE)
+
+# Rule to build all files generated by this target.
+CMakeFiles/modelPlugFirmata.dir/build: libmodelPlugFirmata.so
+
+.PHONY : CMakeFiles/modelPlugFirmata.dir/build
+
+CMakeFiles/modelPlugFirmata.dir/requires: CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o.requires
+CMakeFiles/modelPlugFirmata.dir/requires: CMakeFiles/modelPlugFirmata.dir/serial.cpp.o.requires
+
+.PHONY : CMakeFiles/modelPlugFirmata.dir/requires
+
+CMakeFiles/modelPlugFirmata.dir/clean:
+ $(CMAKE_COMMAND) -P CMakeFiles/modelPlugFirmata.dir/cmake_clean.cmake
+.PHONY : CMakeFiles/modelPlugFirmata.dir/clean
+
+CMakeFiles/modelPlugFirmata.dir/depend:
+ cd /home/user/Downloads/libs/Source && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/user/Downloads/libs/Source /home/user/Downloads/libs/Source /home/user/Downloads/libs/Source /home/user/Downloads/libs/Source /home/user/Downloads/libs/Source/CMakeFiles/modelPlugFirmata.dir/DependInfo.cmake --color=$(COLOR)
+.PHONY : CMakeFiles/modelPlugFirmata.dir/depend
+
diff --git a/Source/CMakeFiles/modelPlugFirmata.dir/cmake_clean.cmake b/Source/CMakeFiles/modelPlugFirmata.dir/cmake_clean.cmake
new file mode 100755
index 0000000..c752d2c
--- /dev/null
+++ b/Source/CMakeFiles/modelPlugFirmata.dir/cmake_clean.cmake
@@ -0,0 +1,11 @@
+file(REMOVE_RECURSE
+ "CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o"
+ "CMakeFiles/modelPlugFirmata.dir/serial.cpp.o"
+ "libmodelPlugFirmata.pdb"
+ "libmodelPlugFirmata.so"
+)
+
+# Per-language clean rules from dependency scanning.
+foreach(lang CXX)
+ include(CMakeFiles/modelPlugFirmata.dir/cmake_clean_${lang}.cmake OPTIONAL)
+endforeach()
diff --git a/Source/CMakeFiles/modelPlugFirmata.dir/depend.internal b/Source/CMakeFiles/modelPlugFirmata.dir/depend.internal
new file mode 100755
index 0000000..7c66c02
--- /dev/null
+++ b/Source/CMakeFiles/modelPlugFirmata.dir/depend.internal
@@ -0,0 +1,10 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.5
+
+CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o
+ /home/user/Downloads/libs/Source/modelPlugFirmata.cpp
+ /home/user/Downloads/libs/Source/modelPlugFirmata.h
+ /home/user/Downloads/libs/Source/serial.h
+CMakeFiles/modelPlugFirmata.dir/serial.cpp.o
+ /home/user/Downloads/libs/Source/serial.cpp
+ /home/user/Downloads/libs/Source/serial.h
diff --git a/Source/CMakeFiles/modelPlugFirmata.dir/depend.make b/Source/CMakeFiles/modelPlugFirmata.dir/depend.make
new file mode 100755
index 0000000..9555e47
--- /dev/null
+++ b/Source/CMakeFiles/modelPlugFirmata.dir/depend.make
@@ -0,0 +1,10 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.5
+
+CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o: modelPlugFirmata.cpp
+CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o: modelPlugFirmata.h
+CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o: serial.h
+
+CMakeFiles/modelPlugFirmata.dir/serial.cpp.o: serial.cpp
+CMakeFiles/modelPlugFirmata.dir/serial.cpp.o: serial.h
+
diff --git a/Source/CMakeFiles/modelPlugFirmata.dir/flags.make b/Source/CMakeFiles/modelPlugFirmata.dir/flags.make
new file mode 100755
index 0000000..bab2d24
--- /dev/null
+++ b/Source/CMakeFiles/modelPlugFirmata.dir/flags.make
@@ -0,0 +1,10 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.5
+
+# compile CXX with /usr/bin/c++
+CXX_FLAGS = -O3 -DNDEBUG -fPIC
+
+CXX_DEFINES = -DLINUX -DmodelPlugFirmata_EXPORTS
+
+CXX_INCLUDES =
+
diff --git a/Source/CMakeFiles/modelPlugFirmata.dir/link.txt b/Source/CMakeFiles/modelPlugFirmata.dir/link.txt
new file mode 100755
index 0000000..051743d
--- /dev/null
+++ b/Source/CMakeFiles/modelPlugFirmata.dir/link.txt
@@ -0,0 +1 @@
+/usr/bin/c++ -fPIC -O3 -DNDEBUG -shared -Wl,-soname,libmodelPlugFirmata.so -o libmodelPlugFirmata.so CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o CMakeFiles/modelPlugFirmata.dir/serial.cpp.o
diff --git a/Source/CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o b/Source/CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o
new file mode 100755
index 0000000..3ac3933
--- /dev/null
+++ b/Source/CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o
Binary files differ
diff --git a/Source/CMakeFiles/modelPlugFirmata.dir/progress.make b/Source/CMakeFiles/modelPlugFirmata.dir/progress.make
new file mode 100755
index 0000000..6a9dc74
--- /dev/null
+++ b/Source/CMakeFiles/modelPlugFirmata.dir/progress.make
@@ -0,0 +1,4 @@
+CMAKE_PROGRESS_1 = 1
+CMAKE_PROGRESS_2 = 2
+CMAKE_PROGRESS_3 = 3
+
diff --git a/Source/CMakeFiles/modelPlugFirmata.dir/serial.cpp.o b/Source/CMakeFiles/modelPlugFirmata.dir/serial.cpp.o
new file mode 100755
index 0000000..082767e
--- /dev/null
+++ b/Source/CMakeFiles/modelPlugFirmata.dir/serial.cpp.o
Binary files differ
diff --git a/Source/CMakeFiles/progress.marks b/Source/CMakeFiles/progress.marks
new file mode 100755
index 0000000..00750ed
--- /dev/null
+++ b/Source/CMakeFiles/progress.marks
@@ -0,0 +1 @@
+3
diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
new file mode 100755
index 0000000..6f2a222
--- /dev/null
+++ b/Source/CMakeLists.txt
@@ -0,0 +1,20 @@
+set(CMAKE_BUILD_TYPE Release)
+
+cmake_minimum_required(VERSION 2.8)
+
+if(WIN32)
+ add_definitions(-DWINDOWS)
+elseif(UNIX AND NOT APPLE)
+ add_definitions(-DLINUX)
+elseif(APPLE)
+ add_definitions(-DMACOSX)
+ SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -framework CoreFoundation -framework IOKit" )
+else()
+ message(SEND_ERROR "Undefined platform")
+endif()
+
+
+
+set(SRC modelPlugFirmata.cpp modelPlugFirmata.h serial.cpp serial.h)
+
+add_library(modelPlugFirmata SHARED ${SRC})
diff --git a/Source/COPYING b/Source/COPYING
new file mode 100755
index 0000000..94a9ed0
--- /dev/null
+++ b/Source/COPYING
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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 3 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, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/Source/Makefile b/Source/Makefile
new file mode 100755
index 0000000..22f2ae1
--- /dev/null
+++ b/Source/Makefile
@@ -0,0 +1,208 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.5
+
+# Default target executed when no arguments are given to make.
+default_target: all
+
+.PHONY : default_target
+
+# Allow only one "make -f Makefile2" at a time, but pass parallelism.
+.NOTPARALLEL:
+
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+
+# A target that is always out of date.
+cmake_force:
+
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/user/Downloads/libs/Source
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/user/Downloads/libs/Source
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
+ /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+
+.PHONY : rebuild_cache/fast
+
+# Special rule for the target edit_cache
+edit_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
+ /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+
+.PHONY : edit_cache/fast
+
+# The main all target
+all: cmake_check_build_system
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/user/Downloads/libs/Source/CMakeFiles /home/user/Downloads/libs/Source/CMakeFiles/progress.marks
+ $(MAKE) -f CMakeFiles/Makefile2 all
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/user/Downloads/libs/Source/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
+clean:
+ $(MAKE) -f CMakeFiles/Makefile2 clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+ $(MAKE) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+ $(MAKE) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+ $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+#=============================================================================
+# Target rules for targets named modelPlugFirmata
+
+# Build rule for target.
+modelPlugFirmata: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 modelPlugFirmata
+.PHONY : modelPlugFirmata
+
+# fast build rule for target.
+modelPlugFirmata/fast:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/build
+.PHONY : modelPlugFirmata/fast
+
+modelPlugFirmata.o: modelPlugFirmata.cpp.o
+
+.PHONY : modelPlugFirmata.o
+
+# target to build an object file
+modelPlugFirmata.cpp.o:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o
+.PHONY : modelPlugFirmata.cpp.o
+
+modelPlugFirmata.i: modelPlugFirmata.cpp.i
+
+.PHONY : modelPlugFirmata.i
+
+# target to preprocess a source file
+modelPlugFirmata.cpp.i:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.i
+.PHONY : modelPlugFirmata.cpp.i
+
+modelPlugFirmata.s: modelPlugFirmata.cpp.s
+
+.PHONY : modelPlugFirmata.s
+
+# target to generate assembly for a file
+modelPlugFirmata.cpp.s:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.s
+.PHONY : modelPlugFirmata.cpp.s
+
+serial.o: serial.cpp.o
+
+.PHONY : serial.o
+
+# target to build an object file
+serial.cpp.o:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/serial.cpp.o
+.PHONY : serial.cpp.o
+
+serial.i: serial.cpp.i
+
+.PHONY : serial.i
+
+# target to preprocess a source file
+serial.cpp.i:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/serial.cpp.i
+.PHONY : serial.cpp.i
+
+serial.s: serial.cpp.s
+
+.PHONY : serial.s
+
+# target to generate assembly for a file
+serial.cpp.s:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/serial.cpp.s
+.PHONY : serial.cpp.s
+
+# Help Target
+help:
+ @echo "The following are some of the valid targets for this Makefile:"
+ @echo "... all (the default if no target is provided)"
+ @echo "... clean"
+ @echo "... depend"
+ @echo "... rebuild_cache"
+ @echo "... edit_cache"
+ @echo "... modelPlugFirmata"
+ @echo "... modelPlugFirmata.o"
+ @echo "... modelPlugFirmata.i"
+ @echo "... modelPlugFirmata.s"
+ @echo "... serial.o"
+ @echo "... serial.i"
+ @echo "... serial.s"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+ $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/Source/Makefile~ b/Source/Makefile~
new file mode 100755
index 0000000..d809949
--- /dev/null
+++ b/Source/Makefile~
@@ -0,0 +1,208 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.5
+
+# Default target executed when no arguments are given to make.
+default_target: all
+
+.PHONY : default_target
+
+# Allow only one "make -f Makefile2" at a time, but pass parallelism.
+.NOTPARALLEL:
+
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+
+# A target that is always out of date.
+cmake_force:
+
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/sumeet/OpenModelicaArduino/Source
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/sumeet/OpenModelicaArduino/Source
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
+ /usr/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+
+.PHONY : rebuild_cache/fast
+
+# Special rule for the target edit_cache
+edit_cache:
+ @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
+ /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+
+.PHONY : edit_cache/fast
+
+# The main all target
+all: cmake_check_build_system
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/sumeet/OpenModelicaArduino/Source/CMakeFiles /home/sumeet/OpenModelicaArduino/Source/CMakeFiles/progress.marks
+ $(MAKE) -f CMakeFiles/Makefile2 all
+ $(CMAKE_COMMAND) -E cmake_progress_start /home/sumeet/OpenModelicaArduino/Source/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
+clean:
+ $(MAKE) -f CMakeFiles/Makefile2 clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+ $(MAKE) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+ $(MAKE) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+ $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+#=============================================================================
+# Target rules for targets named modelPlugFirmata
+
+# Build rule for target.
+modelPlugFirmata: cmake_check_build_system
+ $(MAKE) -f CMakeFiles/Makefile2 modelPlugFirmata
+.PHONY : modelPlugFirmata
+
+# fast build rule for target.
+modelPlugFirmata/fast:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/build
+.PHONY : modelPlugFirmata/fast
+
+modelPlugFirmata.o: modelPlugFirmata.cpp.o
+
+.PHONY : modelPlugFirmata.o
+
+# target to build an object file
+modelPlugFirmata.cpp.o:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.o
+.PHONY : modelPlugFirmata.cpp.o
+
+modelPlugFirmata.i: modelPlugFirmata.cpp.i
+
+.PHONY : modelPlugFirmata.i
+
+# target to preprocess a source file
+modelPlugFirmata.cpp.i:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.i
+.PHONY : modelPlugFirmata.cpp.i
+
+modelPlugFirmata.s: modelPlugFirmata.cpp.s
+
+.PHONY : modelPlugFirmata.s
+
+# target to generate assembly for a file
+modelPlugFirmata.cpp.s:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/modelPlugFirmata.cpp.s
+.PHONY : modelPlugFirmata.cpp.s
+
+serial.o: serial.cpp.o
+
+.PHONY : serial.o
+
+# target to build an object file
+serial.cpp.o:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/serial.cpp.o
+.PHONY : serial.cpp.o
+
+serial.i: serial.cpp.i
+
+.PHONY : serial.i
+
+# target to preprocess a source file
+serial.cpp.i:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/serial.cpp.i
+.PHONY : serial.cpp.i
+
+serial.s: serial.cpp.s
+
+.PHONY : serial.s
+
+# target to generate assembly for a file
+serial.cpp.s:
+ $(MAKE) -f CMakeFiles/modelPlugFirmata.dir/build.make CMakeFiles/modelPlugFirmata.dir/serial.cpp.s
+.PHONY : serial.cpp.s
+
+# Help Target
+help:
+ @echo "The following are some of the valid targets for this Makefile:"
+ @echo "... all (the default if no target is provided)"
+ @echo "... clean"
+ @echo "... depend"
+ @echo "... rebuild_cache"
+ @echo "... edit_cache"
+ @echo "... modelPlugFirmata"
+ @echo "... modelPlugFirmata.o"
+ @echo "... modelPlugFirmata.i"
+ @echo "... modelPlugFirmata.s"
+ @echo "... serial.o"
+ @echo "... serial.i"
+ @echo "... serial.s"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+ $(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/Source/README b/Source/README
new file mode 100755
index 0000000..f541d06
--- /dev/null
+++ b/Source/README
@@ -0,0 +1,2 @@
+The software included in this product contains copyrighted
+software that is licensed under the GPLv3. \ No newline at end of file
diff --git a/Source/cmake_install.cmake b/Source/cmake_install.cmake
new file mode 100755
index 0000000..4ccf09d
--- /dev/null
+++ b/Source/cmake_install.cmake
@@ -0,0 +1,44 @@
+# Install script for directory: /home/user/Downloads/libs/Source
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set(CMAKE_INSTALL_PREFIX "/usr/local")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+ if(BUILD_TYPE)
+ string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+ CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+ else()
+ set(CMAKE_INSTALL_CONFIG_NAME "Release")
+ endif()
+ message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+ if(COMPONENT)
+ message(STATUS "Install component: \"${COMPONENT}\"")
+ set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+ else()
+ set(CMAKE_INSTALL_COMPONENT)
+ endif()
+endif()
+
+# Install shared libraries without execute permission?
+if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
+ set(CMAKE_INSTALL_SO_NO_EXE "1")
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+ set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+ set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+ "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "/home/user/Downloads/libs/Source/${CMAKE_INSTALL_MANIFEST}"
+ "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/Source/libmodelPlugFirmata.so b/Source/libmodelPlugFirmata.so
new file mode 100755
index 0000000..22d3c01
--- /dev/null
+++ b/Source/libmodelPlugFirmata.so
Binary files differ
diff --git a/Source/modelPlugFirmata.cpp b/Source/modelPlugFirmata.cpp
new file mode 100755
index 0000000..cd4441e
--- /dev/null
+++ b/Source/modelPlugFirmata.cpp
@@ -0,0 +1,680 @@
+
+/* ModelPlug: Modelica connection to Firmata
+ * Author: Leonardo Laguna Ruiz
+ * Based on Firmata GUI-friendly queries test by Paul Stoffregen (paul@pjrc.com)
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdio.h>
+#include <stdint.h>
+#include <algorithm>
+#include <vector>
+
+#include "serial.h"
+#include "modelPlugFirmata.h"
+
+
+typedef struct {
+ uint8_t mode;
+ uint8_t analog_channel;
+ uint64_t supported_modes;
+ uint32_t value;
+ uint32_t next_value;
+ uint8_t ready;
+} pin_t;
+
+#define MODE_INPUT 0x00
+#define MODE_OUTPUT 0x01
+#define MODE_ANALOG 0x02
+#define MODE_PWM 0x03
+#define MODE_SERVO 0x04
+#define MODE_SHIFT 0x05
+#define MODE_I2C 0x06
+
+#define START_SYSEX 0xF0 // start a MIDI Sysex message
+#define END_SYSEX 0xF7 // end a MIDI Sysex message
+#define PIN_MODE_QUERY 0x72 // ask for current and supported pin modes
+#define PIN_MODE_RESPONSE 0x73 // reply with current and supported pin modes
+
+#define RESERVED_COMMAND 0x00 // 2nd SysEx data byte is a chip-specific command (AVR, PIC, TI, etc).
+#define ANALOG_MAPPING_QUERY 0x69 // ask for mapping of analog to pin numbers
+#define ANALOG_MAPPING_RESPONSE 0x6A // reply with mapping info
+#define CAPABILITY_QUERY 0x6B // ask for supported modes and resolution of all pins
+#define CAPABILITY_RESPONSE 0x6C // reply with supported modes and resolution
+#define PIN_STATE_QUERY 0x6D // ask for a pin's current mode and value
+#define PIN_STATE_RESPONSE 0x6E // reply with a pin's current mode and value
+#define EXTENDED_ANALOG 0x6F // analog write (PWM, Servo, etc) to any pin
+#define SERVO_CONFIG 0x70 // set max angle, minPulse, maxPulse, freq
+#define STRING_DATA 0x71 // a string message with 14-bits per char
+#define SHIFT_DATA 0x75 // shiftOut config/data message (34 bits)
+#define I2C_REQUEST 0x76 // I2C request messages from a host to an I/O board
+#define I2C_REPLY 0x77 // I2C reply messages from an I/O board to a host
+#define I2C_CONFIG 0x78 // Configure special I2C settings such as power pins and delay times
+#define REPORT_FIRMWARE 0x79 // report name and version of the firmware
+#define SAMPLING_INTERVAL 0x7A // sampling interval
+#define SYSEX_NON_REALTIME 0x7E // MIDI Reserved for non-realtime messages
+#define SYSEX_REALTIME 0x7F // MIDI Reserved for realtime messages
+
+class firmataBoard
+{
+public:
+ firmataBoard(std::string port = "dummy",bool showCapabilitites=false,int samplingMs=10,int baudRate=57600,bool fake=true);
+ ~firmataBoard(){};
+
+ std::string getPortName();
+ int openPort();
+ void closePort();
+ std::vector<std::string> getPortList();
+ void setPinMode(uint32_t pin, uint32_t mode);
+ void writeDigitalPin(uint32_t pin,uint32_t value);
+ void writeAnalogPin(uint32_t pin, uint32_t value);
+ void writeServoPin(uint32_t pin, uint32_t value, int min, int max);
+ double readAnalogPin(uint32_t pin, double min, double max, double init);
+ uint32_t readDigitalPin(uint32_t pin, int init);
+ void setServoConfig(uint32_t pin,uint32_t min,uint32_t max);
+
+public:
+ void initialize(bool dtr);
+ void updateBoard(int timeout);
+ void reportFirmware();
+ void showPinCapabilities();
+ void setSamplingInterval();
+ void setAsFakePort();
+private:
+
+ int write(const void *ptr, int len);
+ int read(void *ptr, int count,int timeout);
+ void Parse(const uint8_t *buf, int len);
+ void DoMessage(void);
+
+ pin_t pin_info[128];
+ std::string port_name;
+ bool show_capabilitites;
+ int sampling;
+ int baudrate;
+ Serial serial_port;
+ bool ready;
+ bool is_fake_port;
+
+
+ std::string firmata_name;
+ int parse_count;
+ int parse_command_len;
+ uint8_t parse_buf[4096];
+};
+
+// This is an external object that we want to use in our modelica code.
+class firmataBoardHandler {
+ firmataBoardHandler(){
+ try
+ {
+ std::vector<std::string> available_ports = dummyPort.getPortList();
+ printf("[ModelPlug.Firmata]: Available ports:\n"); fflush(stdout);
+ for (std::vector<std::string>::iterator it = available_ports.begin() ; it != available_ports.end(); ++it){
+ printf("- %s\n",(*it).c_str());fflush(stdout);
+ }
+ }
+ catch(std::exception&)
+ {
+ printf("[ModelPlug.Firmata]: Failed to show the port names\n");fflush(stdout);
+ }
+ }
+
+public:
+ static firmataBoardHandler *instance()
+ {
+ if (!s_instance)
+ s_instance = new firmataBoardHandler;
+ return s_instance;
+ }
+ firmataBoard* registerBoard(char* port,bool showCapabilitites,int samplingMs,int baudRate,bool dtr);
+ int getPortIndex(firmataBoard* elem);
+
+ firmataBoard* getBoard(uint32_t id);
+
+private:
+ std::vector<firmataBoard*> ports;
+
+ firmataBoard dummyPort;
+
+ static firmataBoardHandler *s_instance;
+
+};
+
+firmataBoardHandler *firmataBoardHandler::s_instance = 0;
+
+int firmataBoard::write(const void *ptr, int len){
+ if(!is_fake_port) return serial_port.Write(ptr,len);
+ return 0;
+}
+
+int firmataBoard::read(void *ptr, int count, int timeout){
+ if(!is_fake_port){
+ if (serial_port.Is_open() && (serial_port.Input_wait(timeout)>0))
+ return serial_port.Read(ptr, count);
+ return 0;
+ }
+ return 0;
+}
+
+void firmataBoard::setAsFakePort(){
+ is_fake_port = true;
+}
+
+firmataBoard::firmataBoard(std::string port, bool showCapabilitites, int samplingMs, int baudRate, bool fake)
+ :port_name(port),show_capabilitites(showCapabilitites),sampling(samplingMs),baudrate(baudRate),is_fake_port(fake){
+ // Initialize the pin information
+ for (int i=0; i < 128; i++) {
+ pin_info[i].mode = 255;
+ pin_info[i].analog_channel = 127;
+ pin_info[i].supported_modes = 0;
+ pin_info[i].value = 0;
+ pin_info[i].next_value = 0;
+ pin_info[i].ready = 0;
+ }
+ ready = false;
+}
+
+void firmataBoard::setPinMode(uint32_t pin, uint32_t mode){
+
+ if (mode != pin_info[pin].mode && ready) {
+ // send the mode change message
+ uint8_t buf[4];
+ buf[0] = 0xF4;
+ buf[1] = pin;
+ buf[2] = mode;
+ write(buf, 3);
+ pin_info[pin].mode = mode;
+ pin_info[pin].value = 0;
+ pin_info[pin].next_value = 0;
+ printf("[ModelPlug.Firmata]: %s setting pin %i to mode %i\n",port_name.c_str(),pin,mode);
+ }
+}
+
+void firmataBoard::setServoConfig(uint32_t pin,uint32_t min,uint32_t max){
+ if(ready){
+ uint8_t buf[8];
+ buf[0] = START_SYSEX;
+ buf[1] = SERVO_CONFIG;
+ buf[2] = pin;
+ buf[3] = min & 0x7F;
+ buf[4] = (min >> 7) & 0x7F;
+ buf[5] = max & 0x7F;
+ buf[6] = (max >> 7) & 0x7F;
+ buf[7] = END_SYSEX;
+ write(buf, 8);
+ }
+}
+
+void firmataBoard::writeDigitalPin(uint32_t pin,uint32_t value){
+ if(ready){
+ if(pin_info[pin].mode!=MODE_OUTPUT)
+ setPinMode(pin,MODE_OUTPUT);
+ pin_info[pin].next_value = value;
+ }
+}
+
+void firmataBoard::writeAnalogPin(uint32_t pin, uint32_t value){
+ if(ready){
+ if(pin_info[pin].mode!=MODE_PWM)
+ setPinMode(pin,MODE_PWM);
+ pin_info[pin].next_value = value;
+ }
+}
+
+void firmataBoard::writeServoPin(uint32_t pin, uint32_t value, int min, int max){
+ if(ready){
+ if(pin_info[pin].mode!=MODE_SERVO){
+ setPinMode(pin,MODE_SERVO);
+ setServoConfig(pin,min,max);
+ }
+ pin_info[pin].next_value = value;
+ }
+}
+
+double firmataBoard::readAnalogPin(uint32_t pin,double min, double max, double init){
+ if(ready){
+ if(pin_info[pin].mode!=MODE_ANALOG)
+ setPinMode(pin,MODE_ANALOG);
+ if(pin_info[pin].ready)
+ return min+((pin_info[pin].value/1023.0)*(max-min));
+ else
+ return init;
+ }
+ return init;
+}
+
+uint32_t firmataBoard::readDigitalPin(uint32_t pin, int init){
+ if(ready){
+ if(pin_info[pin].mode!=MODE_INPUT)
+ setPinMode(pin,MODE_INPUT);
+ if(pin_info[pin].ready)
+ return pin_info[pin].value;
+ else
+ return init;
+ }
+ return init;
+}
+
+void firmataBoard::reportFirmware(){
+ uint8_t buf[3];
+ buf[0] = START_SYSEX;
+ buf[1] = REPORT_FIRMWARE; // read firmata name & version
+ buf[2] = END_SYSEX;
+ write(buf, 3);
+}
+
+void firmataBoard::setSamplingInterval(){
+ uint8_t buf[5];
+ buf[0] = START_SYSEX;
+ buf[1] = SAMPLING_INTERVAL; // read firmata name & version
+ buf[2] = sampling & 0x7F;
+ buf[3] = (sampling >> 7) & 0x7F;
+ buf[4] = END_SYSEX;
+ write(buf, 5);
+ printf("[ModelPlug.Firmata]: Setting sampling interval to %i ms for board %s\n",sampling,port_name.c_str()); fflush(stdout);
+}
+
+void firmataBoard::showPinCapabilities(){
+ printf("[ModelPlug.Firmata]: Board %s capabilities\n", port_name.c_str());
+ for (int pin=0; pin<128; pin++) {
+ if(pin_info[pin].supported_modes!=0){
+ printf("- Pin %i supports: ",pin);
+ if (pin_info[pin].supported_modes & (1<<MODE_INPUT)) printf(" DigitalInput");
+ if (pin_info[pin].supported_modes & (1<<MODE_OUTPUT)) printf(" - DigitalOutput");
+ if (pin_info[pin].supported_modes & (1<<MODE_ANALOG)) printf(" - AnalogInput(A%d)",pin_info[pin].analog_channel);
+ if (pin_info[pin].supported_modes & (1<<MODE_PWM)) printf(" - AnalogOutput");
+ if (pin_info[pin].supported_modes & (1<<MODE_SERVO)) printf(" - Servo");
+ printf("\n");
+ }
+ }
+ fflush(stdout);
+}
+
+void firmataBoard::updateBoard(int timeout){
+ uint8_t buf[1024];
+ int r;
+ // write the output values
+ if(ready)
+ for (int pin=0; pin<128; pin++) {
+ if(pin_info[pin].value!=pin_info[pin].next_value && (pin_info[pin].mode==MODE_OUTPUT || pin_info[pin].mode==MODE_PWM || pin_info[pin].mode==MODE_SERVO)){
+
+ pin_info[pin].value=pin_info[pin].next_value;
+
+ // Digital output
+ if(pin_info[pin].mode==MODE_OUTPUT){
+ int port_num = pin / 8;
+ int port_val = 0;
+ for (int i=0; i<8; i++) {
+ int p = port_num * 8 + i;
+ if (pin_info[p].mode == MODE_OUTPUT || pin_info[p].mode == MODE_INPUT) {
+ if (pin_info[p].value) {
+ port_val |= (1<<i);
+ }
+ }
+ }
+ uint8_t buf[3];
+ buf[0] = 0x90 | port_num;
+ buf[1] = port_val & 0x7F;
+ buf[2] = (port_val >> 7) & 0x7F;
+ write(buf, 3);
+ }
+ // Analog output or servo
+ if(pin_info[pin].mode==MODE_PWM || pin_info[pin].mode==MODE_SERVO){
+ uint32_t value = pin_info[pin].value;
+
+ if (pin <= 15 && value <= 16383) {
+ uint8_t buf[3];
+ buf[0] = 0xE0 | pin;
+ buf[1] = value & 0x7F;
+ buf[2] = (value >> 7) & 0x7F;
+ write(buf, 3);
+ } else {
+ uint8_t buf[12];
+ int len=4;
+ buf[0] = 0xF0;
+ buf[1] = 0x6F;
+ buf[2] = pin;
+ buf[3] = value & 0x7F;
+ if (value > 0x00000080) buf[len++] = (value >> 7) & 0x7F;
+ if (value > 0x00004000) buf[len++] = (value >> 14) & 0x7F;
+ if (value > 0x00200000) buf[len++] = (value >> 21) & 0x7F;
+ if (value > 0x10000000) buf[len++] = (value >> 28) & 0x7F;
+ buf[len++] = 0xF7;
+ write(buf, len);
+ }
+ }
+ }
+ }
+ // receieve bytes from the serial port
+ r = read(buf, sizeof(buf),timeout);
+ if (r) {
+ Parse(buf, r);
+ }
+}
+
+void firmataBoard::Parse(const uint8_t *buf, int len)
+{
+ const uint8_t *p, *end;
+
+ p = buf;
+ end = p + len;
+ for (p = buf; p < end; p++) {
+ uint8_t msn = *p & 0xF0;
+ if (msn == 0xE0 || msn == 0x90 || *p == 0xF9) {
+ parse_command_len = 3;
+ parse_count = 0;
+ } else if (msn == 0xC0 || msn == 0xD0) {
+ parse_command_len = 2;
+ parse_count = 0;
+ } else if (*p == START_SYSEX) {
+ parse_count = 0;
+ parse_command_len = sizeof(parse_buf);
+ } else if (*p == END_SYSEX) {
+ parse_command_len = parse_count + 1;
+ } else if (*p & 0x80) {
+ parse_command_len = 1;
+ parse_count = 0;
+ }
+ if (parse_count < (int)sizeof(parse_buf)) {
+ parse_buf[parse_count++] = *p;
+ }
+ if (parse_count == parse_command_len) {
+ DoMessage();
+ parse_count = parse_command_len = 0;
+ }
+ }
+}
+
+void firmataBoard::DoMessage(void)
+{
+ uint8_t cmd = (parse_buf[0] & 0xF0);
+
+ if (cmd == 0xE0 && parse_count == 3) {
+ int analog_ch = (parse_buf[0] & 0x0F);
+ int analog_val = parse_buf[1] | (parse_buf[2] << 7);
+ for (int pin=0; pin<128; pin++) {
+ if (pin_info[pin].analog_channel == analog_ch) {
+ pin_info[pin].value = analog_val;
+ pin_info[pin].ready = 1;
+ return;
+ }
+ }
+ return;
+ }
+ if (cmd == 0x90 && parse_count == 3) {
+ int port_num = (parse_buf[0] & 0x0F);
+ int port_val = parse_buf[1] | (parse_buf[2] << 7);
+ int pin = port_num * 8;
+ //printf("port_num = %d, port_val = %d\n", port_num, port_val);
+ for (int mask=1; mask & 0xFF; mask <<= 1, pin++) {
+ if (pin_info[pin].mode == MODE_INPUT) {
+ uint32_t val = (port_val & mask) ? 1 : 0;
+ if (pin_info[pin].value != val) {
+ pin_info[pin].value = val;
+ pin_info[pin].ready = 1;
+ }
+ }
+ }
+ return;
+ }
+
+
+ if (parse_buf[0] == START_SYSEX && parse_buf[parse_count-1] == END_SYSEX) {
+ // Sysex message
+ if (parse_buf[1] == REPORT_FIRMWARE) {
+ char name[140];
+ int len=0;
+ for (int i=4; i < parse_count-2; i+=2) {
+ name[len++] = (parse_buf[i] & 0x7F)
+ | ((parse_buf[i+1] & 0x7F) << 7);
+ }
+ name[len++] = '-';
+ name[len++] = parse_buf[2] + '0';
+ name[len++] = '.';
+ name[len++] = parse_buf[3] + '0';
+ name[len++] = 0;
+ firmata_name = name;
+ printf("[ModelPlug.Firmata]: %s %s\n",port_name.c_str(),name);
+ ready = true;
+ // query the board's capabilities only after hearing the
+ // REPORT_FIRMWARE message. For boards that reset when
+ // the port open (eg, Arduino with reset=DTR), they are
+ // not ready to communicate for some time, so the only
+ // way to reliably query their capabilities is to wait
+ // until the REPORT_FIRMWARE message is heard.
+ uint8_t buf[80];
+ len=0;
+ buf[len++] = START_SYSEX;
+ buf[len++] = ANALOG_MAPPING_QUERY; // read analog to pin # info
+ buf[len++] = END_SYSEX;
+ buf[len++] = START_SYSEX;
+ buf[len++] = CAPABILITY_QUERY; // read capabilities
+ buf[len++] = END_SYSEX;
+ for (int i=0; i<16; i++) {
+ buf[len++] = 0xC0 | i; // report analog
+ buf[len++] = 1;
+ buf[len++] = 0xD0 | i; // report digital
+ buf[len++] = 1;
+ }
+ write(buf, len);
+ setSamplingInterval();
+ } else if (parse_buf[1] == CAPABILITY_RESPONSE) {
+ int pin, i, n;
+ for (pin=0; pin < 128; pin++) {
+ pin_info[pin].supported_modes = 0;
+ }
+ for (i=2, n=0, pin=0; i<parse_count; i++) {
+ if (parse_buf[i] == 127) {
+ pin++;
+ n = 0;
+ continue;
+ }
+ if (n == 0) {
+ // first byte is supported mode
+ pin_info[pin].supported_modes |= (1<<parse_buf[i]);
+ }
+ n = n ^ 1;
+ }
+ if(show_capabilitites) {
+ showPinCapabilities();
+ show_capabilitites = false;
+ }
+ // send a state query for for every pin with any modes
+ for (pin=0; pin < 128; pin++) {
+ uint8_t buf[512];
+ int len=0;
+ if (pin_info[pin].supported_modes) {
+ buf[len++] = START_SYSEX;
+ buf[len++] = PIN_STATE_QUERY;
+ buf[len++] = pin;
+ buf[len++] = END_SYSEX;
+ }
+ write(buf, len);
+ }
+ } else if (parse_buf[1] == ANALOG_MAPPING_RESPONSE) {
+ int pin=0;
+ for (int i=2; i<parse_count-1; i++) {
+ pin_info[pin].analog_channel = parse_buf[i];
+ pin++;
+ }
+ return;
+ } else if (parse_buf[1] == PIN_STATE_RESPONSE && parse_count >= 6) {
+ int pin = parse_buf[2];
+ pin_info[pin].mode = parse_buf[3];
+ pin_info[pin].value = parse_buf[4];
+ if (parse_count > 6) pin_info[pin].value |= (parse_buf[5] << 7);
+ if (parse_count > 7) pin_info[pin].value |= (parse_buf[6] << 14);
+ //add_pin(pin);
+ }
+ return;
+ }
+}
+
+std::vector<std::string> firmataBoard::getPortList(){
+ return serial_port.port_list();
+}
+
+firmataBoard* firmataBoardHandler::getBoard(uint32_t id){
+ if(id<0)
+ return &dummyPort;
+ else
+ return ports[id];
+}
+
+firmataBoard* firmataBoardHandler::registerBoard(char* port,bool showCapabilitites,int samplingMs,int baudRate,bool dtr){
+
+ // Check if the port exists
+ bool port_exists = false;
+ bool fake_port = false;
+ std::string port_name(port);
+ std::vector<std::string> available_ports = dummyPort.getPortList();
+ for (std::vector<std::string>::iterator it = available_ports.begin() ; it != available_ports.end(); ++it){
+ if((*it).compare(port_name)==0){
+ port_exists = true;
+ break;
+ }
+ }
+
+ if(!port_exists) {
+ printf("[ModelPlug.Firmata]: ERROR The port %s does not exist\n",port); fflush(stdout);
+ fake_port |= true;
+ }
+
+ // Check if the port is already used
+ for (std::vector<firmataBoard*>::iterator it = ports.begin() ; it != ports.end(); ++it){
+ if ((*it)->getPortName().compare(port_name)==0)
+ {
+ // Print duplicated port, report error
+ printf("[ModelPlug.Firmata]: ERROR: Trying to use two boards with the port %s\n",port);fflush(stdout);
+ fake_port |= true;
+ }
+ }
+
+ firmataBoard* new_port = new firmataBoard(port_name,showCapabilitites,samplingMs,baudRate,fake_port);
+
+ if(new_port->openPort()==0){
+ ports.push_back(new_port);
+ new_port->initialize(dtr);
+ return new_port;
+ }
+ else{
+ // Could not open the port return error
+ printf("[ModelPlug.Firmata]: ERROR Failed to open the port %s\n",port); fflush(stdout);
+ new_port->setAsFakePort();
+ return new_port;
+ }
+ return new_port;
+}
+
+int firmataBoardHandler::getPortIndex(firmataBoard* elem) {
+ unsigned pos = std::find(ports.begin(), ports.end(), elem) - ports.begin();
+ if(pos >= ports.size()){ // not found
+ return -1;
+ }
+ return pos;
+}
+
+std::string firmataBoard::getPortName(){
+ return port_name;
+}
+
+int firmataBoard::openPort(){
+ if(is_fake_port){
+ return 0;
+ } else {
+ serial_port.Open(port_name);
+ serial_port.Set_baud(baudrate);
+ if(serial_port.Is_open()){
+ printf("[ModelPlug.Firmata]: Using port %s with baud rate %i\n",port_name.c_str(),baudrate); fflush(stdout);
+ return 0;
+ }
+ else
+ return -1;
+ }
+ return -1;
+}
+
+void firmataBoard::initialize(bool dtr){
+ serial_port.Set_control(dtr?1:0,-1);
+ updateBoard(5);
+ reportFirmware();
+ updateBoard(5);
+}
+
+void firmataBoard::closePort(){
+ if(is_fake_port) return;
+ else
+ if(serial_port.Is_open())
+ serial_port.Close();
+}
+
+extern "C"
+
+{
+
+
+EXPORT void* boardConstructor(char* port,bool showCapabilitites,int samplingMs,int baudRate,bool dtr){
+ firmataBoardHandler* boards = firmataBoardHandler::instance();
+ void* object = (void*)boards->registerBoard(port,showCapabilitites,samplingMs,baudRate,dtr);
+ return object;
+}
+EXPORT void boardDestructor(void* object){
+ if(object!=NULL){
+ firmataBoard* board = (firmataBoard*)object;
+ board->closePort();
+ delete board;
+ }
+}
+
+EXPORT void updateBoard(int id){
+ firmataBoard* board = firmataBoardHandler::instance()->getBoard(id);
+ board->updateBoard(0);
+}
+
+EXPORT int getBoardId(void* object){
+ if(object!=NULL){
+ return firmataBoardHandler::instance()->getPortIndex((firmataBoard*)object);
+ }
+ else
+ return -1;
+}
+
+EXPORT double readAnalogPin(int pin, double min, double max, double init, int id){
+ firmataBoard* board = firmataBoardHandler::instance()->getBoard(id);
+ double value = board->readAnalogPin(pin,min,max,init);
+ return value;
+}
+EXPORT int readDigitalPin(int pin, int init, int id){
+ firmataBoard* board = firmataBoardHandler::instance()->getBoard(id);
+ int value = board->readDigitalPin(pin,init);
+ return value;
+}
+EXPORT void writeAnalogPin(int pin, int id,double value){
+ double croped = value>1.0?1.0:(value<0.0?0.0:value);
+ firmataBoard* board = firmataBoardHandler::instance()->getBoard(id);
+ board->writeAnalogPin(pin,(uint32_t)(croped*1023));
+}
+EXPORT void writeDigitalPin(int pin, int id,int value){
+ firmataBoard* board = firmataBoardHandler::instance()->getBoard(id);
+ board->writeDigitalPin(pin,value);
+}
+EXPORT void writeServoPin(int pin, int id,double value,int min,int max){
+ double croped = value>1.0?1.0:(value<0.0?0.0:value);
+ firmataBoard* board = firmataBoardHandler::instance()->getBoard(id);
+ board->writeServoPin(pin,(int)(croped*180),min,max);
+}
+
+} // end extern "C"
diff --git a/Source/modelPlugFirmata.h b/Source/modelPlugFirmata.h
new file mode 100755
index 0000000..3aa1034
--- /dev/null
+++ b/Source/modelPlugFirmata.h
@@ -0,0 +1,30 @@
+#ifndef MODELPLUG_H
+#define MODELPLUG_H
+
+
+#if defined(_MSC_VER)
+ // Microsoft VC++
+ #define EXPORT __declspec(dllexport)
+#else
+ // GCC
+ #define EXPORT __attribute__((visibility("default")))
+#endif
+
+extern "C" {
+
+EXPORT void* boardConstructor(char* port,bool showCapabilitites,int samplingMs,int baudRate,bool dtr);
+EXPORT void boardDestructor(void* object);
+
+EXPORT void updateBoard(int id);
+EXPORT int getBoardId(void* object);
+
+
+EXPORT double readAnalogPin (int pin, double min, double max, double init, int id, int adcResolution);
+EXPORT int readDigitalPin (int pin, int init, int id);
+EXPORT void writeAnalogPin (int pin, int id,double value);
+EXPORT void writeDigitalPin(int pin, int id,int value);
+EXPORT void writeServoPin (int pin, int id,double value, int min, int max);
+
+}
+
+#endif \ No newline at end of file
diff --git a/Source/serial.cpp b/Source/serial.cpp
new file mode 100755
index 0000000..67e9be3
--- /dev/null
+++ b/Source/serial.cpp
@@ -0,0 +1,905 @@
+/* Serial port object for use with wxWidgets
+ * Copyright 2010, Paul Stoffregen (paul@pjrc.com)
+ * Modified by: Leonardo Laguna Ruiz
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "serial.h"
+
+
+#if defined(LINUX)
+ #include <sys/types.h>
+ #include <fcntl.h>
+ #include <errno.h>
+ #include <sys/select.h>
+ #include <termios.h>
+ #include <unistd.h>
+ #include <dirent.h>
+ #include <sys/stat.h>
+ #include <sys/ioctl.h>
+ #include <linux/serial.h>
+ #include <errno.h>
+ #include <stdio.h>
+ #include <string.h>
+#elif defined(MACOSX)
+ #include <stdio.h>
+ #include <string.h>
+ #include <unistd.h>
+ #include <fcntl.h>
+ #include <sys/ioctl.h>
+ #include <errno.h>
+ #include <paths.h>
+ #include <termios.h>
+ #include <sysexits.h>
+ #include <sys/param.h>
+ #include <sys/select.h>
+ #include <sys/time.h>
+ #include <time.h>
+ #include <CoreFoundation/CoreFoundation.h>
+ #include <IOKit/IOKitLib.h>
+ #include <IOKit/serial/IOSerialKeys.h>
+ #include <IOKit/IOBSD.h>
+#elif defined(WINDOWS)
+ #include <windows.h>
+ #define win32_err(s) FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, \
+ GetLastError(), 0, (s), sizeof(s), NULL)
+ #define QUERYDOSDEVICE_BUFFER_SIZE 262144
+ #if _MSC_VER
+ #define snprintf _snprintf_s
+ #endif
+#else
+ #error "This platform is unsupported, sorry"
+#endif
+
+
+
+
+Serial::Serial()
+{
+ port_is_open = 0;
+ baud_rate = 38400; // default baud rate
+}
+
+Serial::~Serial()
+{
+ Close();
+}
+
+
+
+// Open a port, by name. Return 0 on success, non-zero for error
+int Serial::Open(const string& name)
+{
+ Close();
+#if defined(LINUX)
+ struct serial_struct kernel_serial_settings;
+ int bits;
+ port_fd = open(name.c_str(), O_RDWR | O_NOCTTY | O_NONBLOCK);
+ if (port_fd < 0) {
+ if (errno == EACCES) {
+ error_msg = "Unable to access " + name + ", insufficient permission";
+ // TODO: we could look at the permission bits and owner
+ // to make a better message here
+ } else if (errno == EISDIR) {
+ error_msg = "Unable to open " + name +
+ ", Object is a directory, not a serial port";
+ } else if (errno == ENODEV || errno == ENXIO) {
+ error_msg = "Unable to open " + name +
+ ", Serial port hardware not installed";
+ } else if (errno == ENOENT) {
+ error_msg = "Unable to open " + name +
+ ", Device name does not exist";
+ } else {
+ error_msg = "Unable to open " + name +
+ ", " + strerror(errno);
+ }
+ return -1;
+ }
+ if (ioctl(port_fd, TIOCMGET, &bits) < 0) {
+ close(port_fd);
+ error_msg = "Unable to query serial port signals";
+ return -1;
+ }
+ bits &= ~(TIOCM_DTR | TIOCM_RTS);
+ if (ioctl(port_fd, TIOCMSET, &bits) < 0) {
+ close(port_fd);
+ error_msg = "Unable to control serial port signals";
+ return -1;
+ }
+ if (tcgetattr(port_fd, &settings_orig) != 0) {
+ close(port_fd);
+ error_msg = "Unable to query serial port settings (perhaps not a serial port)";
+ return -1;
+ }
+ memset(&settings, 0, sizeof(settings));
+ settings.c_iflag = IGNBRK | IGNPAR;
+ settings.c_cflag = CS8 | CREAD | HUPCL | CLOCAL;
+ Set_baud(baud_rate);
+ if (ioctl(port_fd, TIOCGSERIAL, &kernel_serial_settings) == 0) {
+ kernel_serial_settings.flags |= ASYNC_LOW_LATENCY;
+ ioctl(port_fd, TIOCSSERIAL, &kernel_serial_settings);
+ }
+ tcflush(port_fd, TCIFLUSH);
+#elif defined(MACOSX)
+ int bits;
+ port_fd = open(name.c_str(), O_RDWR | O_NOCTTY | O_NONBLOCK);
+ if (port_fd < 0) {
+ error_msg = "Unable to open " + name + ", " + strerror(errno);
+ return -1;
+ }
+ if (ioctl(port_fd, TIOCEXCL) == -1) {
+ close(port_fd);
+ error_msg = "Unable to get exclussive access to port " + name;
+ return -1;
+ }
+ if (ioctl(port_fd, TIOCMGET, &bits) < 0) {
+ close(port_fd);
+ error_msg = "Unable to query serial port signals on " + name;
+ return -1;
+ }
+ bits &= ~(TIOCM_DTR | TIOCM_RTS);
+ if (ioctl(port_fd, TIOCMSET, &bits) < 0) {
+ close(port_fd);
+ error_msg = "Unable to control serial port signals on " + name;
+ return -1;
+ }
+ if (tcgetattr(port_fd, &settings_orig) < 0) {
+ close(port_fd);
+ error_msg = "Unable to access baud rate on port " + name;
+ return -1;
+ }
+ memset(&settings, 0, sizeof(settings));
+ settings.c_cflag = CS8 | CLOCAL | CREAD | HUPCL;
+ settings.c_iflag = IGNBRK | IGNPAR;
+ Set_baud(baud_rate);
+ tcflush(port_fd, TCIFLUSH);
+#elif defined(WINDOWS)
+ COMMCONFIG cfg;
+ COMMTIMEOUTS timeouts;
+ int got_default_cfg=0, port_num;
+ char buf[1024], name_createfile[64], name_commconfig[64], *p;
+ DWORD len;
+
+ snprintf(buf, sizeof(buf), "%s", name.c_str());
+ p = strstr(buf, "COM");
+ if (p && sscanf(p + 3, "%d", &port_num) == 1) {
+ //printf("port_num = %d\n", port_num);
+ snprintf(name_createfile, sizeof(name_createfile), "\\\\.\\COM%d", port_num);
+ snprintf(name_commconfig, sizeof(name_commconfig), "COM%d", port_num);
+ } else {
+ snprintf(name_createfile, sizeof(name_createfile), "%s", name.c_str());
+ snprintf(name_commconfig, sizeof(name_commconfig), "%s", name.c_str());
+ }
+ len = sizeof(COMMCONFIG);
+ if (GetDefaultCommConfig(name_commconfig, &cfg, &len)) {
+ // this prevents unintentionally raising DTR when opening
+ // might only work on COM1 to COM9
+ got_default_cfg = 1;
+ memcpy(&port_cfg_orig, &cfg, sizeof(COMMCONFIG));
+ cfg.dcb.fDtrControl = DTR_CONTROL_DISABLE;
+ cfg.dcb.fRtsControl = RTS_CONTROL_DISABLE;
+ SetDefaultCommConfig(name_commconfig, &cfg, sizeof(COMMCONFIG));
+ } else {
+ printf("error with GetDefaultCommConfig\n");
+ }
+ port_handle = CreateFile(name_createfile, GENERIC_READ | GENERIC_WRITE,
+ 0, 0, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
+ if (port_handle == INVALID_HANDLE_VALUE) {
+ win32_err(buf);
+ error_msg = "Unable to open " + name + ", " + buf;
+ return -1;
+ }
+ len = sizeof(COMMCONFIG);
+ if (!GetCommConfig(port_handle, &port_cfg, &len)) {
+ CloseHandle(port_handle);
+ win32_err(buf);
+ error_msg = "Unable to read communication config on " + name + ", " + buf;
+ return -1;
+ }
+ if (!got_default_cfg) {
+ memcpy(&port_cfg_orig, &port_cfg, sizeof(COMMCONFIG));
+ }
+ // http://msdn2.microsoft.com/en-us/library/aa363188(VS.85).aspx
+ port_cfg.dcb.BaudRate = baud_rate;
+ port_cfg.dcb.fBinary = TRUE;
+ port_cfg.dcb.fParity = FALSE;
+ port_cfg.dcb.fOutxCtsFlow = FALSE;
+ port_cfg.dcb.fOutxDsrFlow = FALSE;
+ port_cfg.dcb.fDtrControl = DTR_CONTROL_ENABLE;
+ port_cfg.dcb.fDsrSensitivity = FALSE;
+ port_cfg.dcb.fTXContinueOnXoff = TRUE; // ???
+ port_cfg.dcb.fOutX = FALSE;
+ port_cfg.dcb.fInX = FALSE;
+ port_cfg.dcb.fErrorChar = FALSE;
+ port_cfg.dcb.fNull = FALSE;
+ port_cfg.dcb.fRtsControl = RTS_CONTROL_DISABLE;
+ port_cfg.dcb.fAbortOnError = FALSE;
+ port_cfg.dcb.ByteSize = 8;
+ port_cfg.dcb.Parity = NOPARITY;
+ port_cfg.dcb.StopBits = ONESTOPBIT;
+ if (!SetCommConfig(port_handle, &port_cfg, sizeof(COMMCONFIG))) {
+ CloseHandle(port_handle);
+ win32_err(buf);
+ error_msg = "Unable to write communication config to " + name + ", " + buf;
+ return -1;
+ }
+ if (!EscapeCommFunction(port_handle, CLRDTR | CLRRTS)) {
+ CloseHandle(port_handle);
+ win32_err(buf);
+ error_msg = "Unable to control serial port signals on " + name + ", " + buf;
+ return -1;
+ }
+ // http://msdn2.microsoft.com/en-us/library/aa363190(VS.85).aspx
+ // setting to all zeros means timeouts are not used
+ //timeouts.ReadIntervalTimeout = 0;
+ timeouts.ReadIntervalTimeout = MAXDWORD;
+ timeouts.ReadTotalTimeoutMultiplier = 0;
+ timeouts.ReadTotalTimeoutConstant = 0;
+ timeouts.WriteTotalTimeoutMultiplier = 0;
+ timeouts.WriteTotalTimeoutConstant = 0;
+ if (!SetCommTimeouts(port_handle, &timeouts)) {
+ CloseHandle(port_handle);
+ win32_err(buf);
+ error_msg = "Unable to write timeout settings to " + name + ", " + buf;
+ return -1;
+ }
+#endif
+ port_name = name;
+ port_is_open = 1;
+ return 0;
+}
+
+string Serial::get_name(void)
+{
+ if (!port_is_open) return "";
+ return port_name;
+}
+
+
+
+// Return the last error message in a (hopefully) user friendly format
+string Serial::error_message(void)
+{
+ return error_msg;
+}
+
+int Serial::Is_open(void)
+{
+ return port_is_open;
+}
+
+// Close the port
+void Serial::Close(void)
+{
+ if (!port_is_open) return;
+ Output_flush();
+ Input_discard();
+ port_is_open = 0;
+ port_name = "";
+#if defined(LINUX) || defined(MACOSX)
+ tcsetattr(port_fd, TCSANOW, &settings_orig);
+ close(port_fd);
+#elif defined(WINDOWS)
+ //SetCommConfig(port_handle, &port_cfg_orig, sizeof(COMMCONFIG));
+ CloseHandle(port_handle);
+#endif
+}
+
+
+
+
+
+
+// set the baud rate
+int Serial::Set_baud(int baud)
+{
+ if (baud <= 0) return -1;
+ //printf("set_baud: %d\n", baud);
+ baud_rate = baud;
+ if (!port_is_open) return -1;
+#if defined(LINUX)
+ speed_t spd;
+ switch (baud) {
+ case 230400: spd = B230400; break;
+ case 115200: spd = B115200; break;
+ case 57600: spd = B57600; break;
+ case 38400: spd = B38400; break;
+ case 19200: spd = B19200; break;
+ case 9600: spd = B9600; break;
+ case 4800: spd = B4800; break;
+ case 2400: spd = B2400; break;
+ case 1800: spd = B1800; break;
+ case 1200: spd = B1200; break;
+ case 600: spd = B600; break;
+ case 300: spd = B300; break;
+ case 200: spd = B200; break;
+ case 150: spd = B150; break;
+ case 134: spd = B134; break;
+ case 110: spd = B110; break;
+ case 75: spd = B75; break;
+ case 50: spd = B50; break;
+ #ifdef B460800
+ case 460800: spd = B460800; break;
+ #endif
+ #ifdef B500000
+ case 500000: spd = B500000; break;
+ #endif
+ #ifdef B576000
+ case 576000: spd = B576000; break;
+ #endif
+ #ifdef B921600
+ case 921600: spd = B921600; break;
+ #endif
+ #ifdef B1000000
+ case 1000000: spd = B1000000; break;
+ #endif
+ #ifdef B1152000
+ case 1152000: spd = B1152000; break;
+ #endif
+ #ifdef B1500000
+ case 1500000: spd = B1500000; break;
+ #endif
+ #ifdef B2000000
+ case 2000000: spd = B2000000; break;
+ #endif
+ #ifdef B2500000
+ case 2500000: spd = B2500000; break;
+ #endif
+ #ifdef B3000000
+ case 3000000: spd = B3000000; break;
+ #endif
+ #ifdef B3500000
+ case 3500000: spd = B3500000; break;
+ #endif
+ #ifdef B4000000
+ case 4000000: spd = B4000000; break;
+ #endif
+ #ifdef B7200
+ case 7200: spd = B7200; break;
+ #endif
+ #ifdef B14400
+ case 14400: spd = B14400; break;
+ #endif
+ #ifdef B28800
+ case 28800: spd = B28800; break;
+ #endif
+ #ifdef B76800
+ case 76800: spd = B76800; break;
+ #endif
+ default: {
+ return -1;
+ }
+ }
+ cfsetospeed(&settings, spd);
+ cfsetispeed(&settings, spd);
+ if (tcsetattr(port_fd, TCSANOW, &settings) < 0) return -1;
+#elif defined(MACOSX)
+ cfsetospeed(&settings, (speed_t)baud);
+ cfsetispeed(&settings, (speed_t)baud);
+ if (tcsetattr(port_fd, TCSANOW, &settings) < 0) return -1;
+#elif defined(WINDOWS)
+ DWORD len = sizeof(COMMCONFIG);
+ port_cfg.dcb.BaudRate = baud;
+ SetCommConfig(port_handle, &port_cfg, len);
+#endif
+ return 0;
+}
+
+int Serial::Set_baud(const string& baud_str)
+{
+ unsigned long b;
+ b = atoi(baud_str.c_str());
+ if (!b) return -1;
+ return Set_baud((int)b);
+}
+
+
+// Read from the serial port. Returns only the bytes that are
+// already received, up to count. This always returns without delay,
+// returning 0 if nothing has been received
+int Serial::Read(void *ptr, int count)
+{
+ if (!port_is_open) return -1;
+ if (count <= 0) return 0;
+#if defined(LINUX)
+ int n, bits;
+ n = read(port_fd, ptr, count);
+ if (n < 0 && (errno == EAGAIN || errno == EINTR)) return 0;
+ if (n == 0 && ioctl(port_fd, TIOCMGET, &bits) < 0) return -99;
+ return n;
+#elif defined(MACOSX)
+ int n;
+ n = read(port_fd, ptr, count);
+ if (n < 0 && (errno == EAGAIN || errno == EINTR)) return 0;
+ return n;
+#elif defined(WINDOWS)
+ // first, we'll find out how many bytes have been received
+ // and are currently waiting for us in the receive buffer.
+ // http://msdn.microsoft.com/en-us/library/ms885167.aspx
+ // http://msdn.microsoft.com/en-us/library/ms885173.aspx
+ // http://source.winehq.org/WineAPI/ClearCommError.html
+ COMSTAT st;
+ DWORD errmask=0, num_read, num_request;
+ OVERLAPPED ov;
+ int r;
+ if (!ClearCommError(port_handle, &errmask, &st)) return -1;
+ //printf("Read, %d requested, %lu buffered\n", count, st.cbInQue);
+ if (st.cbInQue <= 0) return 0;
+ // now do a ReadFile, now that we know how much we can read
+ // a blocking (non-overlapped) read would be simple, but win32
+ // is all-or-nothing on async I/O and we must have it enabled
+ // because it's the only way to get a timeout for WaitCommEvent
+ num_request = ((DWORD)count < st.cbInQue) ? (DWORD)count : st.cbInQue;
+ ov.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+ if (ov.hEvent == NULL) return -1;
+ ov.Internal = ov.InternalHigh = 0;
+ ov.Offset = ov.OffsetHigh = 0;
+ if (ReadFile(port_handle, ptr, num_request, &num_read, &ov)) {
+ // this should usually be the result, since we asked for
+ // data we knew was already buffered
+ //printf("Read, immediate complete, num_read=%lu\n", num_read);
+ r = num_read;
+ } else {
+ if (GetLastError() == ERROR_IO_PENDING) {
+ if (GetOverlappedResult(port_handle, &ov, &num_read, TRUE)) {
+ //printf("Read, delayed, num_read=%lu\n", num_read);
+ r = num_read;
+ } else {
+ //printf("Read, delayed error\n");
+ r = -1;
+ }
+ } else {
+ //printf("Read, error\n");
+ r = -1;
+ }
+ }
+ CloseHandle(ov.hEvent);
+ // TODO: how much overhead does creating new event objects on
+ // every I/O request really cost? Would it be better to create
+ // just 3 when we open the port, and reset/reuse them every time?
+ // Would mutexes or critical sections be needed to protect them?
+ return r;
+#endif
+}
+
+// Write to the serial port. This blocks until the data is
+// sent (or in a buffer to be sent). All bytes are written,
+// unless there is some sort of error.
+int Serial::Write(const void *ptr, int len)
+{
+ //printf("Write %d\n", len);
+ if (!port_is_open) return -1;
+#if defined(LINUX) || defined(MACOSX)
+ int n, written=0;
+ fd_set wfds;
+ struct timeval tv;
+ while (written < len) {
+ n = write(port_fd, (const char *)ptr + written, len - written);
+ if (n < 0 && (errno == EAGAIN || errno == EINTR)) n = 0;
+ //printf("Write, n = %d\n", n);
+ if (n < 0) return -1;
+ if (n > 0) {
+ written += n;
+ } else {
+ tv.tv_sec = 10;
+ tv.tv_usec = 0;
+ FD_ZERO(&wfds);
+ FD_SET(port_fd, &wfds);
+ n = select(port_fd+1, NULL, &wfds, NULL, &tv);
+ if (n < 0 && errno == EINTR) n = 1;
+ if (n <= 0) return -1;
+ }
+ }
+ return written;
+#elif defined(WINDOWS)
+ DWORD num_written;
+ OVERLAPPED ov;
+ int r;
+ ov.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+ if (ov.hEvent == NULL) return -1;
+ ov.Internal = ov.InternalHigh = 0;
+ ov.Offset = ov.OffsetHigh = 0;
+ if (WriteFile(port_handle, ptr, len, &num_written, &ov)) {
+ //printf("Write, immediate complete, num_written=%lu\n", num_written);
+ r = num_written;
+ } else {
+ if (GetLastError() == ERROR_IO_PENDING) {
+ if (GetOverlappedResult(port_handle, &ov, &num_written, TRUE)) {
+ //printf("Write, delayed, num_written=%lu\n", num_written);
+ r = num_written;
+ } else {
+ //printf("Write, delayed error\n");
+ r = -1;
+ }
+ } else {
+ //printf("Write, error\n");
+ r = -1;
+ }
+ };
+ CloseHandle(ov.hEvent);
+ return r;
+#endif
+}
+
+// Wait up to msec for data to become available for reading.
+// return 0 if timeout, or non-zero if one or more bytes are
+// received and can be read. -1 if an error occurs
+int Serial::Input_wait(int msec)
+{
+ if (!port_is_open) return -1;
+#if defined(LINUX) || defined(MACOSX)
+ fd_set rfds;
+ struct timeval tv;
+ tv.tv_sec = msec / 1000;
+ tv.tv_usec = (msec % 1000) * 1000;
+ FD_ZERO(&rfds);
+ FD_SET(port_fd, &rfds);
+ return select(port_fd+1, &rfds, NULL, NULL, &tv);
+#elif defined(WINDOWS)
+ // http://msdn2.microsoft.com/en-us/library/aa363479(VS.85).aspx
+ // http://msdn2.microsoft.com/en-us/library/aa363424(VS.85).aspx
+ // http://source.winehq.org/WineAPI/WaitCommEvent.html
+ COMSTAT st;
+ DWORD errmask=0, eventmask=EV_RXCHAR, ret;
+ OVERLAPPED ov;
+ int r;
+ // first, request comm event when characters arrive
+ if (!SetCommMask(port_handle, EV_RXCHAR)) return -1;
+ // look if there are characters in the buffer already
+ if (!ClearCommError(port_handle, &errmask, &st)) return -1;
+ //printf("Input_wait, %lu buffered, timeout = %d ms\n", st.cbInQue, msec);
+ if (st.cbInQue > 0) return 1;
+
+ ov.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+ if (ov.hEvent == NULL) return -1;
+ ov.Internal = ov.InternalHigh = 0;
+ ov.Offset = ov.OffsetHigh = 0;
+ if (WaitCommEvent(port_handle, &eventmask, &ov)) {
+ //printf("Input_wait, WaitCommEvent, immediate success\n");
+ r = 1;
+ } else {
+ if (GetLastError() == ERROR_IO_PENDING) {
+ ret = WaitForSingleObject(ov.hEvent, msec);
+ if (ret == WAIT_OBJECT_0) {
+ //printf("Input_wait, WaitCommEvent, delayed success\n");
+ r = 1;
+ } else if (ret == WAIT_TIMEOUT) {
+ //printf("Input_wait, WaitCommEvent, timeout\n");
+ GetCommMask(port_handle, &eventmask);
+ r = 0;
+ } else { // WAIT_FAILED or WAIT_ABANDONED
+ //printf("Input_wait, WaitCommEvent, delayed error\n");
+ r = -1;
+ }
+ } else {
+ //printf("Input_wait, WaitCommEvent, immediate error\n");
+ r = -1;
+ }
+ }
+ SetCommMask(port_handle, 0);
+ CloseHandle(ov.hEvent);
+ return r;
+#endif
+}
+
+// Discard all received data that hasn't been read
+void Serial::Input_discard(void)
+{
+ if (!port_is_open) return;
+#if defined(LINUX) || defined(MACOSX)
+ // does this really work properly (and is it thread safe) on Linux??
+ tcflush(port_fd, TCIFLUSH);
+#elif defined(WINDOWS)
+ PurgeComm(port_handle, PURGE_RXCLEAR);
+#endif
+}
+
+// Wait for all transmitted data with Write to actually leave the serial port
+void Serial::Output_flush(void)
+{
+ if (!port_is_open) return;
+#if defined(LINUX) || defined(MACOSX)
+ tcdrain(port_fd);
+#elif defined(WINDOWS)
+ FlushFileBuffers(port_handle);
+#endif
+}
+
+
+// set DTR and RTS, 0 = low, 1=high, -1=unchanged
+int Serial::Set_control(int dtr, int rts)
+{
+ if (!port_is_open) return -1;
+#if defined(LINUX) || defined(MACOSX)
+ // on Mac OS X, "man 4 tty"
+ // on Linux, where is this actually documented?
+ int bits;
+ if (ioctl(port_fd, TIOCMGET, &bits) < 0) return -1;
+ if (dtr == 1) {
+ bits |= TIOCM_DTR;
+ } else if (dtr == 0) {
+ bits &= ~TIOCM_DTR;
+ }
+ if (rts == 1) {
+ bits |= TIOCM_RTS;
+ } else if (rts == 0) {
+ bits &= ~TIOCM_RTS;
+ }
+ if (ioctl(port_fd, TIOCMSET, &bits) < 0) return -1;;
+#elif defined(WINDOWS)
+ // http://msdn.microsoft.com/en-us/library/aa363254(VS.85).aspx
+ if (dtr == 1) {
+ if (!EscapeCommFunction(port_handle, SETDTR)) return -1;
+ } else if (dtr == 0) {
+ if (!EscapeCommFunction(port_handle, CLRDTR)) return -1;
+ }
+ if (rts == 1) {
+ if (!EscapeCommFunction(port_handle, SETRTS)) return -1;
+ } else if (rts == 0) {
+ if (!EscapeCommFunction(port_handle, CLRRTS)) return -1;
+ }
+#endif
+ return 0;
+}
+
+
+
+#if defined(LINUX)
+// All linux serial port device names. Hopefully all of them anyway. This
+// is a long list, but each entry takes only a few bytes and a quick strcmp()
+static const char *devnames[] = {
+"S", // "normal" Serial Ports - MANY drivers using this
+"USB", // USB to serial converters
+"ACM", // USB serial modem, CDC class, Abstract Control Model
+"MI", // MOXA Smartio/Industio family multiport serial... nice card, I have one :-)
+"MX", // MOXA Intellio family multiport serial
+"C", // Cyclades async multiport, no longer available, but I have an old ISA one! :-)
+"D", // Digiboard (still in 2.6 but no longer supported), new Moschip MCS9901
+"P", // Hayes ESP serial cards (obsolete)
+"M", // PAM Software's multimodem & Multitech ISI-Cards
+"E", // Stallion intelligent multiport (no longer made)
+"L", // RISCom/8 multiport serial
+"W", // specialix IO8+ multiport serial
+"X", // Specialix SX series cards, also SI & XIO series
+"SR", // Specialix RIO serial card 257+
+"n", // Digi International Neo (yes lowercase 'n', drivers/serial/jsm/jsm_driver.c)
+"FB", // serial port on the 21285 StrongArm-110 core logic chip
+"AM", // ARM AMBA-type serial ports (no DTR/RTS)
+"AMA", // ARM AMBA-type serial ports (no DTR/RTS)
+"AT", // Atmel AT91 / AT32 Serial ports
+"BF", // Blackfin 5xx serial ports (Analog Devices embedded DSP chips)
+"CL", // CLPS711x serial ports (ARM processor)
+"A", // ICOM Serial
+"SMX", // Motorola IMX serial ports
+"SOIC", // ioc3 serial
+"IOC", // ioc4 serial
+"PSC", // Freescale MPC52xx PSCs configured as UARTs
+"MM", // MPSC (UART mode) on Marvell GT64240, GT64260, MV64340...
+"B", // Mux console found in some PA-RISC servers
+"NX", // NetX serial port
+"PZ", // PowerMac Z85c30 based ESCC cell found in the "macio" ASIC
+"SAC", // Samsung S3C24XX onboard UARTs
+"SA", // SA11x0 serial ports
+"AM", // KS8695 serial ports & Sharp LH7A40X embedded serial ports
+"TX", // TX3927/TX4927/TX4925/TX4938 internal SIO controller
+"SC", // Hitachi SuperH on-chip serial module
+"SG", // C-Brick Serial Port (and console) SGI Altix machines
+"HV", // SUN4V hypervisor console
+"UL", // Xilinx uartlite serial controller
+"VR", // NEC VR4100 series Serial Interface Unit
+"CPM", // CPM (SCC/SMC) serial ports; core driver
+"Y", // Amiga A2232 board
+"SL", // Microgate SyncLink ISA and PCI high speed multiprotocol serial
+"SLG", // Microgate SyncLink GT (might be sync HDLC only?)
+"SLM", // Microgate SyncLink Multiport high speed multiprotocol serial
+"CH", // Chase Research AT/PCI-Fast serial card
+"F", // Computone IntelliPort serial card
+"H", // Chase serial card
+"I", // virtual modems
+"R", // Comtrol RocketPort
+"SI", // SmartIO serial card
+"T", // Technology Concepts serial card
+"V" // Comtrol VS-1000 serial controller
+};
+#define NUM_DEVNAMES (sizeof(devnames) / sizeof(const char *))
+#endif
+
+
+
+#if defined(MACOSX)
+static void macos_ports(io_iterator_t * PortIterator, vector<string>& list)
+{
+ io_object_t modemService;
+ CFTypeRef nameCFstring;
+ char s[MAXPATHLEN];
+
+ while ((modemService = IOIteratorNext(*PortIterator))) {
+ nameCFstring = IORegistryEntryCreateCFProperty(modemService,
+ CFSTR(kIOCalloutDeviceKey), kCFAllocatorDefault, 0);
+ if (nameCFstring) {
+ if (CFStringGetCString((const __CFString *)nameCFstring,
+ s, sizeof(s), kCFStringEncodingASCII)) {
+ list.push_back(s);
+ }
+ CFRelease(nameCFstring);
+ }
+ IOObjectRelease(modemService);
+ }
+}
+#endif
+
+
+// Return a list of all serial ports
+vector<string> Serial::port_list()
+{
+ vector<string> list;
+#if defined(LINUX)
+ // This is ugly guessing, but Linux doesn't seem to provide anything else.
+ // If there really is an API to discover serial devices on Linux, please
+ // email paul@pjrc.com with the info. Please?
+ // The really BAD aspect is all ports get DTR raised briefly, because linux
+ // has no way to open the port without raising DTR, and there isn't any way
+ // to tell if the device file really represents hardware without opening it.
+ // maybe sysfs or udev provides a useful API??
+ DIR *dir;
+ struct dirent *f;
+ struct stat st;
+ unsigned int i, len[NUM_DEVNAMES];
+ char s[512];
+ int fd, bits;
+ termios mytios;
+
+ dir = opendir("/dev/");
+ if (dir == NULL) return list;
+ for (i=0; i<NUM_DEVNAMES; i++) len[i] = strlen(devnames[i]);
+ // Read all the filenames from the /dev directory...
+ while ((f = readdir(dir)) != NULL) {
+ // ignore everything that doesn't begin with "tty"
+ if (strncmp(f->d_name, "tty", 3)) continue;
+ // ignore anything that's not a known serial device name
+ for (i=0; i<NUM_DEVNAMES; i++) {
+ if (!strncmp(f->d_name + 3, devnames[i], len[i])) break;
+ }
+ if (i >= NUM_DEVNAMES) continue;
+ snprintf(s, sizeof(s), "/dev/%s", f->d_name);
+ // check if it's a character type device (almost certainly is)
+ if (stat(s, &st) != 0 || !(st.st_mode & S_IFCHR)) continue;
+ // now see if we can open the file - if the device file is
+ // populating /dev but doesn't actually represent a loaded
+ // driver, this is where we will detect it.
+ fd = open(s, O_RDONLY | O_NOCTTY | O_NONBLOCK);
+ if (fd < 0) {
+ // if permission denied, give benefit of the doubt
+ // (otherwise the port will be invisible to the user
+ // and we won't have a to alert them to the permssion
+ // problem)
+ if (errno == EACCES) list.push_back(s);
+ // any other error, assume it's not a real device
+ continue;
+ }
+ // does it respond to termios requests? (probably will since
+ // the name began with tty). Some devices where a single
+ // driver exports multiple names will open but this is where
+ // we can really tell if they work with real hardare.
+ if (tcgetattr(fd, &mytios) != 0) {
+ close(fd);
+ continue;
+ }
+ // does it respond to reading the control signals? If it's
+ // some sort of non-serial terminal (eg, pseudo terminals)
+ // this is where we will detect it's not really a serial port
+ if (ioctl(fd, TIOCMGET, &bits) < 0) {
+ close(fd);
+ continue;
+ }
+ // it passed all the tests, it's a serial port, or some sort
+ // of "terminal" that looks exactly like a real serial port!
+ close(fd);
+ // unfortunately, Linux always raises DTR when open is called.
+ // not nice! Every serial port is going to get DTR raised
+ // and then lowered. I wish there were a way to prevent this,
+ // but it seems impossible.
+ list.push_back(s);
+ }
+ closedir(dir);
+#elif defined(MACOSX)
+ // adapted from SerialPortSample.c, by Apple
+ // http://developer.apple.com/samplecode/SerialPortSample/listing2.html
+ // and also testserial.c, by Keyspan
+ // http://www.keyspan.com/downloads-files/developer/macosx/KesypanTestSerial.c
+ // www.rxtx.org, src/SerialImp.c seems to be based on Keyspan's testserial.c
+ // neither keyspan nor rxtx properly release memory allocated.
+ // more documentation at:
+ // http://developer.apple.com/documentation/DeviceDrivers/Conceptual/WorkingWSerial/WWSerial_SerialDevs/chapter_2_section_6.html
+ mach_port_t masterPort;
+ CFMutableDictionaryRef classesToMatch;
+ io_iterator_t serialPortIterator;
+ if (IOMasterPort(NULL, &masterPort) != KERN_SUCCESS) return list;
+ // a usb-serial adaptor is usually considered a "modem",
+ // especially when it implements the CDC class spec
+ classesToMatch = IOServiceMatching(kIOSerialBSDServiceValue);
+ if (!classesToMatch) return list;
+ CFDictionarySetValue(classesToMatch, CFSTR(kIOSerialBSDTypeKey),
+ CFSTR(kIOSerialBSDModemType));
+ if (IOServiceGetMatchingServices(masterPort, classesToMatch,
+ &serialPortIterator) != KERN_SUCCESS) return list;
+ macos_ports(&serialPortIterator, list);
+ IOObjectRelease(serialPortIterator);
+ // but it might be considered a "rs232 port", so repeat this
+ // search for rs232 ports
+ classesToMatch = IOServiceMatching(kIOSerialBSDServiceValue);
+ if (!classesToMatch) return list;
+ CFDictionarySetValue(classesToMatch, CFSTR(kIOSerialBSDTypeKey),
+ CFSTR(kIOSerialBSDRS232Type));
+ if (IOServiceGetMatchingServices(masterPort, classesToMatch,
+ &serialPortIterator) != KERN_SUCCESS) return list;
+ macos_ports(&serialPortIterator, list);
+ IOObjectRelease(serialPortIterator);
+#elif defined(WINDOWS)
+ // http://msdn.microsoft.com/en-us/library/aa365461(VS.85).aspx
+ // page with 7 ways - not all of them work!
+ // http://www.naughter.com/enumser.html
+ // may be possible to just query the windows registary
+ // http://it.gps678.com/2/ca9c8631868fdd65.html
+ // search in HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
+ // Vista has some special new way, vista-only
+ // http://msdn2.microsoft.com/en-us/library/aa814070(VS.85).aspx
+ char *buffer, *p;
+ //DWORD size = QUERYDOSDEVICE_BUFFER_SIZE;
+ DWORD ret;
+
+ buffer = (char *)malloc(QUERYDOSDEVICE_BUFFER_SIZE);
+ if (buffer == NULL) return list;
+ memset(buffer, 0, QUERYDOSDEVICE_BUFFER_SIZE);
+ ret = QueryDosDeviceA(NULL, buffer, QUERYDOSDEVICE_BUFFER_SIZE);
+ if (ret) {
+ //printf("Detect Serial using QueryDosDeviceA: ");
+ for (p = buffer; *p; p += strlen(p) + 1) {
+ if (strncmp(p, "COM", 3)) continue;
+ list.push_back(string(p) );
+ //printf(": %s\n", p);
+ }
+ } else {
+ char buf[1024];
+ win32_err(buf);
+ printf("QueryDosDeviceA failed, error \"%s\"\n", buf);
+ printf("Detect Serial using brute force GetDefaultCommConfig probing: ");
+ for (int i=1; i<=32; i++) {
+ printf("try %s", buf);
+ COMMCONFIG cfg;
+ DWORD len;
+ snprintf(buf, sizeof(buf), "COM%d", i);
+ if (GetDefaultCommConfig(buf, &cfg, &len)) {
+ std::ostringstream name;
+ name << "COM" << i << ":";
+ list.push_back(name.str());
+ printf(": %s", buf);
+ }
+ }
+ }
+ free(buffer);
+#endif
+ std::sort (list.begin(), list.end());
+ return list;
+}
+
+
+
+
+
+
+
+
diff --git a/Source/serial.h b/Source/serial.h
new file mode 100755
index 0000000..e49b4a7
--- /dev/null
+++ b/Source/serial.h
@@ -0,0 +1,57 @@
+#ifndef __serial_h__
+#define __serial_h__
+
+#include <stdint.h>
+
+#if defined(LINUX)
+#include <termios.h>
+#elif defined(MACOSX)
+#include <termios.h>
+#elif defined(WINDOWS)
+#include <windows.h>
+#endif
+
+#include <vector>
+#include <string>
+#include <sstream>
+#include <algorithm>
+
+using namespace std;
+
+class Serial
+{
+public:
+ Serial();
+ ~Serial();
+ vector<string> port_list();
+ int Open(const string& name);
+ string error_message();
+ int Set_baud(int baud);
+ int Set_baud(const string& baud_str);
+ int Read(void *ptr, int count);
+ int Write(const void *ptr, int len);
+ int Input_wait(int msec);
+ void Input_discard(void);
+ int Set_control(int dtr, int rts);
+ void Output_flush();
+ void Close(void);
+ int Is_open(void);
+ string get_name(void);
+private:
+ int port_is_open;
+ string port_name;
+ int baud_rate;
+ string error_msg;
+private:
+#if defined(LINUX) || defined(MACOSX)
+ int port_fd;
+ struct termios settings_orig;
+ struct termios settings;
+#elif defined(WINDOWS)
+ HANDLE port_handle;
+ COMMCONFIG port_cfg_orig;
+ COMMCONFIG port_cfg;
+#endif
+};
+
+#endif // __serial_h__