diff --git a/.travis.yml b/.travis.yml index bf9c42724..c4349f39c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,7 @@ cache: # Supported Operating systems dist: bionic -compiler: g++-8 +#compiler: g++-8 addons: apt: sources: @@ -33,8 +33,6 @@ addons: - doxygen - flex - fontconfig - - g++-8 - - gcc-8 - gdb - git - gperf @@ -56,6 +54,19 @@ addons: - zip - qt5-default - clang-format-7 +# Add all the supported compilers + - g++-5 + - gcc-5 + - g++-6 + - gcc-6 + - g++-7 + - gcc-7 + - g++-8 + - gcc-8 + - g++-9 + - gcc-9 + - clang-6.0 + - clang-8 #- os: osx # osx_image: xcode10.2 # we target latest MacOS Mojave # sudo: true @@ -76,6 +87,10 @@ addons: # - libxml++ # - qt5 +# Use gcc-8 as default compiler +env: + - MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" + before_script: - source .travis/common.sh - source .travis/install.sh @@ -116,6 +131,55 @@ jobs: - source .travis/build.sh - source .travis/fpga_spice_reg_test.sh + - stage: Test + name: "Build Compatibility: GCC-5 (Ubuntu Bionic 18.04)" + env: + - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5" + script: + - source .travis/build.sh + + - stage: Test + name: "Build Compatibility: GCC-6 (Ubuntu Bionic 18.04)" + env: + - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6" + script: + - source .travis/build.sh + + - stage: Test + name: "Build Compatibility: GCC-7 (Ubuntu Bionic 18.04)" + env: + - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" + script: + - source .travis/build.sh + + - stage: Test + name: "Build Compatibility: GCC-8 (Ubuntu Bionic 18.04)" + env: + - MATRIX_EVAL="CC=gcc-8 && CXX=g++-8" + script: + - source .travis/build.sh + + - stage: Test + name: "Build Compatibility: GCC-9 (Ubuntu Bionic 18.04)" + env: + - MATRIX_EVAL="CC=gcc-9 && CXX=g++-9" + script: + - source .travis/build.sh + + - stage: Test + name: "Build Compatibility: Clang-6 (Ubuntu Bionic 18.04)" + env: + - MATRIX_EVAL="CC=clang-6.0 && CXX=clang++-6.0" + script: + - source .travis/build.sh + + - stage: Test + name: "Build Compatibility: Clang-8 (Ubuntu Bionic 18.04)" + env: + - MATRIX_EVAL="CC=clang-8 && CXX=clang++-8" + script: + - source .travis/build.sh + #after_failure: # - .travis/after_failure.sh diff --git a/.travis/common.sh b/.travis/common.sh index a293cb00f..a5a7274de 100644 --- a/.travis/common.sh +++ b/.travis/common.sh @@ -39,8 +39,9 @@ if [[ $TRAVIS_OS_NAME == 'osx' ]]; then sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target / -allowUntrusted else # For linux, we use g++-8 and gcc-8 as default compilers - export CC=gcc-8 - export CXX=g++-8 + eval "${MATRIX_EVAL}" + export "CC=$CC" + export "CXX=$CXX" fi diff --git a/libopenfpga/libarchopenfpga/src/read_xml_circuit_library.cpp b/libopenfpga/libarchopenfpga/src/read_xml_circuit_library.cpp index 9fb61a654..0954a0086 100644 --- a/libopenfpga/libarchopenfpga/src/read_xml_circuit_library.cpp +++ b/libopenfpga/libarchopenfpga/src/read_xml_circuit_library.cpp @@ -459,7 +459,7 @@ void read_xml_output_mask(pugi::xml_node& xml_port, if (circuit_lib.port_size(port) != mask_vector.size()) { archfpga_throw(loc_data.filename_c_str(), loc_data.line(xml_port), "Invalid lut_output_mask attribute '%s'! It must match the port size (=%lu)\n", - output_mask_attr, circuit_lib.port_size(port)); + output_mask_attr.c_str(), circuit_lib.port_size(port)); } } else { /* By default, we give a mask vector covering each pin of the port */ diff --git a/libopenfpga/libopenfpgashell/src/command_parser.cpp b/libopenfpga/libopenfpgashell/src/command_parser.cpp index 5e0397421..b2daf12f7 100644 --- a/libopenfpga/libopenfpgashell/src/command_parser.cpp +++ b/libopenfpga/libopenfpgashell/src/command_parser.cpp @@ -67,7 +67,7 @@ bool parse_command(const std::vector& argv, /* Validate that the command name matches argv[0] */ if (argv[0] != cmd.name()) { VTR_LOG("Unexpected command name '%s'!\n", - argv[0]); + argv[0].c_str()); return false; } diff --git a/libopenfpga/libopenfpgautil/src/openfpga_decode.h b/libopenfpga/libopenfpgautil/src/openfpga_decode.h index ab6778c86..85809fee2 100644 --- a/libopenfpga/libopenfpgautil/src/openfpga_decode.h +++ b/libopenfpga/libopenfpgautil/src/openfpga_decode.h @@ -4,6 +4,7 @@ /******************************************************************** * Include header files that are required by function declaration *******************************************************************/ +#include #include /******************************************************************** diff --git a/libopenfpga/libopenfpgautil/src/openfpga_scale.cpp b/libopenfpga/libopenfpgautil/src/openfpga_scale.cpp index 9baa753d1..66364501d 100644 --- a/libopenfpga/libopenfpgautil/src/openfpga_scale.cpp +++ b/libopenfpga/libopenfpgautil/src/openfpga_scale.cpp @@ -140,7 +140,7 @@ float string_to_unit(const std::string& scale) { /* Invalid unit report error */ VTR_LOGF_ERROR(__FILE__, __LINE__, "Invalid unit %s!\nAcceptable units are [a|f|p|n|u|k|M|B|T] or empty\n", - scale); + scale.c_str()); exit(1); } @@ -153,13 +153,13 @@ float string_to_time_unit(const std::string& scale) { && (2 != scale.length()) ) { VTR_LOGF_ERROR(__FILE__, __LINE__, "Time unit (='%s') must contain only one or two characters!\n", - scale); + scale.c_str()); } /* The last character must be 's' */ if ('s' != scale.back()) { VTR_LOGF_ERROR(__FILE__, __LINE__, "Time unit (='%s') must end with 's'!\n", - scale); + scale.c_str()); } float unit = 1.; diff --git a/openfpga/src/base/io_location_map.h b/openfpga/src/base/io_location_map.h index de6422d23..ef326a66a 100644 --- a/openfpga/src/base/io_location_map.h +++ b/openfpga/src/base/io_location_map.h @@ -4,6 +4,7 @@ /******************************************************************** * Include header files required by the data structure definition *******************************************************************/ +#include #include /* Begin namespace openfpga */