diff --git a/.github/travis/cmake-build.sh b/.github/travis/cmake-build.sh index e0746b5ea..734e03d74 100755 --- a/.github/travis/cmake-build.sh +++ b/.github/travis/cmake-build.sh @@ -4,7 +4,7 @@ rm -rf build mkdir build cd build cmake .. \ - -DCMAKE_TOOLCHAIN_FILE="../cmake/LocalAvrGcc.cmake" \ + -DCMAKE_TOOLCHAIN_FILE="../cmake/AvrGcc.cmake" \ -DCMAKE_BUILD_TYPE=Release \ -G Ninja ninja ALL_FIRMWARE diff --git a/.vscode/cmake-kits.json b/.vscode/cmake-kits.json index 8a66a68a8..8e3bae6d6 100644 --- a/.vscode/cmake-kits.json +++ b/.vscode/cmake-kits.json @@ -1,7 +1,7 @@ [ { - "name": "Local_avr-gcc-none-eabi", - "toolchainFile": "${workspaceFolder}/cmake/LocalAvrGcc.cmake", + "name": "avr-gcc", + "toolchainFile": "${workspaceFolder}/cmake/AvrGcc.cmake", "cmakeSettings": { "CMAKE_MAKE_PROGRAM": "${workspaceFolder}/.dependencies/ninja-1.10.2/ninja", "CMAKE_BUILD_TYPE": "Release" diff --git a/CMakeLists.txt b/CMakeLists.txt index 06d1c3211..be0b24efd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,6 +92,7 @@ message("Language maximum size (from config.h): ${LANG_MAX_SIZE} bytes") # Ditto, this in xflash_layout.h but needs invocation of the preprocessor... :-/ set(LANG_BIN_MAX 249856) +# Check GCC Version get_recommended_gcc_version(RECOMMENDED_TOOLCHAIN_VERSION) if(CMAKE_CROSSCOMPILING AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL ${RECOMMENDED_TOOLCHAIN_VERSION} diff --git a/cmake/LocalAvrGcc.cmake b/cmake/AnyAvrGcc.cmake similarity index 95% rename from cmake/LocalAvrGcc.cmake rename to cmake/AnyAvrGcc.cmake index 17ea199ae..656a35e5c 100644 --- a/cmake/LocalAvrGcc.cmake +++ b/cmake/AnyAvrGcc.cmake @@ -2,9 +2,7 @@ get_filename_component(PROJECT_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY) include("${PROJECT_CMAKE_DIR}/Utilities.cmake") set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_PROCESSOR avr) -set(CMAKE_CROSSCOMPILING 1) -get_dependency_directory("avr-gcc" AVR_TOOLCHAIN_DIR) -message( "tc dir is ${AVR_TOOLCHAIN_DIR}") + # # Utilities @@ -27,6 +25,7 @@ set(TOOLCHAIN_PREFIX avr-) if(AVR_TOOLCHAIN_DIR) # using toolchain set by AvrGcc.cmake (locked version) + message("ToolChain dir is ${AVR_TOOLCHAIN_DIR}") set(BINUTILS_PATH "${AVR_TOOLCHAIN_DIR}/bin") else() # search for ANY avr-gcc toolchain diff --git a/cmake/AvrGcc.cmake b/cmake/AvrGcc.cmake new file mode 100644 index 000000000..c9d8eb1a4 --- /dev/null +++ b/cmake/AvrGcc.cmake @@ -0,0 +1,4 @@ +get_filename_component(PROJECT_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY) +include("${PROJECT_CMAKE_DIR}/Utilities.cmake") +get_dependency_directory("avr-gcc" AVR_TOOLCHAIN_DIR) +include("${PROJECT_CMAKE_DIR}/AnyAvrGcc.cmake") diff --git a/utils/bootstrap.py b/utils/bootstrap.py index 517ba1a07..cc1c7ef59 100755 --- a/utils/bootstrap.py +++ b/utils/bootstrap.py @@ -47,9 +47,9 @@ dependencies = { 'avr-gcc': { 'version': '7.3.0', 'url': { - 'Linux': 'http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-x86_64-pc-linux-gnu.tar.bz2', - 'Windows': 'http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-i686-w64-mingw32.zip', - 'Darwin': 'http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-x86_64-apple-darwin14.tar.bz2', + 'Linux': 'https://ww1.microchip.com/downloads/aemDocuments/documents/DEV/ProductDocuments/SoftwareTools/avr8-gnu-toolchain-3.7.0.1796-linux.any.x86_64.tar.gz', + 'Windows': 'https://ww1.microchip.com/downloads/aemDocuments/documents/DEV/ProductDocuments/SoftwareTools/avr8-gnu-toolchain-3.7.0.1796-win32.any.x86_64.zip', + 'Darwin': 'https://ww1.microchip.com/downloads/aemDocuments/documents/DEV/ProductDocuments/SoftwareTools/avr8-gnu-toolchain-osx-3.7.0.518-darwin.any.x86_64.tar.gz', }, }, 'prusa3dboards': { @@ -141,6 +141,15 @@ def install_dependency(dependency): fix_executable_permissions(dependency, installation_directory) +def get_dependency_version(dependency): + return dependencies[dependency]['version'] + + +def get_dependency_directory(dependency) -> Path: + version = dependencies[dependency]['version'] + return Path(directory_for_dependency(dependency, version)) + + def main() -> int: parser = ArgumentParser() # yapf: disable @@ -155,8 +164,7 @@ def main() -> int: if args.print_dependency_version: try: - version = dependencies[args.print_dependency_version]['version'] - print(version) + print(get_dependency_version(args.print_dependency_version)) return 0 except KeyError: print('Unknown dependency "%s"' % args.print_dependency_version) @@ -164,10 +172,7 @@ def main() -> int: if args.print_dependency_directory: try: - dependency = args.print_dependency_directory - version = dependencies[dependency]['version'] - install_dir = directory_for_dependency(dependency, version) - print(install_dir) + print(get_dependency_directory(args.print_dependency_directory)) return 0 except KeyError: print('Unknown dependency "%s"' % args.print_dependency_directory)