From 9e95d235b436b7bd4132cf72296fb4504eb76b35 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Sun, 15 Jun 2014 15:26:20 -0700 Subject: [PATCH] Create separate CMake toolchain file. Add references to toolchain file in each firmware CMakeLists.txt. I suspect this can be simpler still, just not sure how, yet... --- firmware/CMakeLists.txt | 2 + firmware/blinky/CMakeLists.txt | 2 + firmware/hackrf-common.cmake | 36 ------------- firmware/hackrf_usb/CMakeLists.txt | 2 + firmware/mixertx/CMakeLists.txt | 2 + firmware/sgpio-rx/CMakeLists.txt | 2 + firmware/sgpio/CMakeLists.txt | 2 + firmware/sgpio_passthrough/CMakeLists.txt | 2 + firmware/simpletx/CMakeLists.txt | 2 + firmware/spiflash/CMakeLists.txt | 2 + firmware/startup/CMakeLists.txt | 2 + firmware/startup_systick/CMakeLists.txt | 2 + firmware/startup_systick_perfo/CMakeLists.txt | 2 + firmware/toolchain-arm-cortex-m.cmake | 54 +++++++++++++++++++ 14 files changed, 78 insertions(+), 36 deletions(-) create mode 100644 firmware/toolchain-arm-cortex-m.cmake diff --git a/firmware/CMakeLists.txt b/firmware/CMakeLists.txt index 5bf6d6c4..1f9ae191 100644 --- a/firmware/CMakeLists.txt +++ b/firmware/CMakeLists.txt @@ -21,6 +21,8 @@ # Top directory CMake project for HackRF firmware cmake_minimum_required(VERSION 2.8.9) +set(CMAKE_TOOLCHAIN_FILE toolchain-arm-cortex-m.cmake) + project (hackrf_firmware_all) add_subdirectory(blinky) diff --git a/firmware/blinky/CMakeLists.txt b/firmware/blinky/CMakeLists.txt index a1c1bf20..97eb18de 100644 --- a/firmware/blinky/CMakeLists.txt +++ b/firmware/blinky/CMakeLists.txt @@ -20,6 +20,8 @@ # cmake_minimum_required(VERSION 2.8.9) +set(CMAKE_TOOLCHAIN_FILE ../toolchain-arm-cortex-m.cmake) + project(blinky) include(../hackrf-common.cmake) diff --git a/firmware/hackrf-common.cmake b/firmware/hackrf-common.cmake index f8051914..243b1c1f 100644 --- a/firmware/hackrf-common.cmake +++ b/firmware/hackrf-common.cmake @@ -24,44 +24,8 @@ # derived primarily from Makefiles in libopencm3 -cmake_minimum_required(VERSION 2.8.9) - enable_language(C CXX ASM) -include(CMakeForceCompiler) - -set(CMAKE_SYSTEM_NAME Generic) -set(CMAKE_SYSTEM_PROCESSOR cortex-m4) - -CMAKE_FORCE_C_COMPILER(arm-none-eabi-gcc GNU) -CMAKE_FORCE_CXX_COMPILER(arm-none-eabi-g++ GNU) - -execute_process( - COMMAND ${CMAKE_C_COMPILER} -print-file-name=libc.a - OUTPUT_VARIABLE CMAKE_INSTALL_PREFIX - OUTPUT_STRIP_TRAILING_WHITESPACE -) -get_filename_component(CMAKE_INSTALL_PREFIX - "${CMAKE_INSTALL_PREFIX}" PATH -) -get_filename_component(CMAKE_INSTALL_PREFIX - "${CMAKE_INSTALL_PREFIX}/.." REALPATH -) -set(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} CACHE FILEPATH - "Install path prefix, prepended onto install directories.") - -message(STATUS "Cross-compiling with the gcc-arm-embedded toolchain") -message(STATUS "Toolchain prefix: ${CMAKE_INSTALL_PREFIX}") - -set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) -#set(CMAKE_LD ${CMAKE_INSTALL_PREFIX}/bin/ld CACHE INTERNAL "ld tool") -set(CMAKE_OBJCOPY ${CMAKE_INSTALL_PREFIX}/bin/objcopy CACHE INTERNAL "objcopy tool") - -set(CMAKE_FIND_ROOT_PATH ${CMAKE_INSTALL_PREFIX}) -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) - SET(PATH_HACKRF ../..) SET(PATH_HACKRF_FIRMWARE ${PATH_HACKRF}/firmware) SET(PATH_HACKRF_FIRMWARE_COMMON ${PATH_HACKRF_FIRMWARE}/common) diff --git a/firmware/hackrf_usb/CMakeLists.txt b/firmware/hackrf_usb/CMakeLists.txt index be88e0d2..a4a0b0ee 100644 --- a/firmware/hackrf_usb/CMakeLists.txt +++ b/firmware/hackrf_usb/CMakeLists.txt @@ -19,6 +19,8 @@ # cmake_minimum_required(VERSION 2.8.9) +set(CMAKE_TOOLCHAIN_FILE ../toolchain-arm-cortex-m.cmake) + project(hackrf_usb) include(../hackrf-common.cmake) diff --git a/firmware/mixertx/CMakeLists.txt b/firmware/mixertx/CMakeLists.txt index aa8d5a10..84a911d7 100644 --- a/firmware/mixertx/CMakeLists.txt +++ b/firmware/mixertx/CMakeLists.txt @@ -19,6 +19,8 @@ # cmake_minimum_required(VERSION 2.8.9) +set(CMAKE_TOOLCHAIN_FILE ../toolchain-arm-cortex-m.cmake) + project(mixertx) include(../hackrf-common.cmake) diff --git a/firmware/sgpio-rx/CMakeLists.txt b/firmware/sgpio-rx/CMakeLists.txt index 2d403e77..26d91d0e 100644 --- a/firmware/sgpio-rx/CMakeLists.txt +++ b/firmware/sgpio-rx/CMakeLists.txt @@ -19,6 +19,8 @@ # cmake_minimum_required(VERSION 2.8.9) +set(CMAKE_TOOLCHAIN_FILE ../toolchain-arm-cortex-m.cmake) + project(sgpio-rx) include(../hackrf-common.cmake) diff --git a/firmware/sgpio/CMakeLists.txt b/firmware/sgpio/CMakeLists.txt index 31e29229..1125ae21 100644 --- a/firmware/sgpio/CMakeLists.txt +++ b/firmware/sgpio/CMakeLists.txt @@ -19,6 +19,8 @@ # cmake_minimum_required(VERSION 2.8.9) +set(CMAKE_TOOLCHAIN_FILE ../toolchain-arm-cortex-m.cmake) + project(sgpio_test) include(../hackrf-common.cmake) diff --git a/firmware/sgpio_passthrough/CMakeLists.txt b/firmware/sgpio_passthrough/CMakeLists.txt index 843274d0..80c50612 100644 --- a/firmware/sgpio_passthrough/CMakeLists.txt +++ b/firmware/sgpio_passthrough/CMakeLists.txt @@ -20,6 +20,8 @@ # cmake_minimum_required(VERSION 2.8.9) +set(CMAKE_TOOLCHAIN_FILE ../toolchain-arm-cortex-m.cmake) + project(sgpio_passthrough) include(../hackrf-common.cmake) diff --git a/firmware/simpletx/CMakeLists.txt b/firmware/simpletx/CMakeLists.txt index b656dd60..01f7b394 100644 --- a/firmware/simpletx/CMakeLists.txt +++ b/firmware/simpletx/CMakeLists.txt @@ -19,6 +19,8 @@ # cmake_minimum_required(VERSION 2.8.9) +set(CMAKE_TOOLCHAIN_FILE ../toolchain-arm-cortex-m.cmake) + project(simpletx) include(../hackrf-common.cmake) diff --git a/firmware/spiflash/CMakeLists.txt b/firmware/spiflash/CMakeLists.txt index a4bbbb0d..160caa37 100644 --- a/firmware/spiflash/CMakeLists.txt +++ b/firmware/spiflash/CMakeLists.txt @@ -20,6 +20,8 @@ # cmake_minimum_required(VERSION 2.8.9) +set(CMAKE_TOOLCHAIN_FILE ../toolchain-arm-cortex-m.cmake) + project(spiflash) include(../hackrf-common.cmake) diff --git a/firmware/startup/CMakeLists.txt b/firmware/startup/CMakeLists.txt index 9989da88..28e1a3f4 100644 --- a/firmware/startup/CMakeLists.txt +++ b/firmware/startup/CMakeLists.txt @@ -19,6 +19,8 @@ # cmake_minimum_required(VERSION 2.8.9) +set(CMAKE_TOOLCHAIN_FILE ../toolchain-arm-cortex-m.cmake) + project(startup) include(../hackrf-common.cmake) diff --git a/firmware/startup_systick/CMakeLists.txt b/firmware/startup_systick/CMakeLists.txt index c3549463..f2190caf 100644 --- a/firmware/startup_systick/CMakeLists.txt +++ b/firmware/startup_systick/CMakeLists.txt @@ -19,6 +19,8 @@ # cmake_minimum_required(VERSION 2.8.9) +set(CMAKE_TOOLCHAIN_FILE ../toolchain-arm-cortex-m.cmake) + project(startup_systick) include(../hackrf-common.cmake) diff --git a/firmware/startup_systick_perfo/CMakeLists.txt b/firmware/startup_systick_perfo/CMakeLists.txt index faa1ac74..6d8905d1 100644 --- a/firmware/startup_systick_perfo/CMakeLists.txt +++ b/firmware/startup_systick_perfo/CMakeLists.txt @@ -19,6 +19,8 @@ # cmake_minimum_required(VERSION 2.8.9) +set(CMAKE_TOOLCHAIN_FILE ../toolchain-arm-cortex-m.cmake) + project(startup_systick_perfo_SPIFI) include(../hackrf-common.cmake) diff --git a/firmware/toolchain-arm-cortex-m.cmake b/firmware/toolchain-arm-cortex-m.cmake new file mode 100644 index 00000000..65ddb1c4 --- /dev/null +++ b/firmware/toolchain-arm-cortex-m.cmake @@ -0,0 +1,54 @@ +# Copyright 2014 Jared Boone +# +# This file is part of HackRF. +# +# 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 2, 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; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + +set(CMAKE_SYSTEM_NAME Generic) +set(CMAKE_SYSTEM_VERSION 1) +set(CMAKE_SYSTEM_PROCESSOR arm) + +include(CMakeForceCompiler) + +CMAKE_FORCE_C_COMPILER(arm-none-eabi-gcc GNU) +CMAKE_FORCE_CXX_COMPILER(arm-none-eabi-g++ GNU) + +execute_process( + COMMAND ${CMAKE_C_COMPILER} -print-file-name=libc.a + OUTPUT_VARIABLE CMAKE_INSTALL_PREFIX + OUTPUT_STRIP_TRAILING_WHITESPACE +) +get_filename_component(CMAKE_INSTALL_PREFIX + "${CMAKE_INSTALL_PREFIX}" PATH +) +get_filename_component(CMAKE_INSTALL_PREFIX + "${CMAKE_INSTALL_PREFIX}/.." REALPATH +) +set(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} CACHE FILEPATH + "Install path prefix, prepended onto install directories.") + +message(STATUS "Cross-compiling with the gcc-arm-embedded toolchain") +message(STATUS "Toolchain prefix: ${CMAKE_INSTALL_PREFIX}") + +set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) +#set(CMAKE_LD ${CMAKE_INSTALL_PREFIX}/bin/ld CACHE INTERNAL "ld tool") +set(CMAKE_OBJCOPY ${CMAKE_INSTALL_PREFIX}/bin/objcopy CACHE INTERNAL "objcopy tool") + +set(CMAKE_FIND_ROOT_PATH ${CMAKE_INSTALL_PREFIX}) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)