From be0ef3e83ca0dfde8ba7987d1d585077fc5fa3ff Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Fri, 30 Jun 2017 14:17:27 +0200 Subject: [PATCH 01/22] mejorado soporte de pic32 --- Modules/Platform/MicrochipMCU-C-XC32.cmake | 60 ++++++++++++++++++- .../Platform/MicrochipMCU-Initialize.cmake | 1 + toolchain.cmake | 13 +++- 3 files changed, 70 insertions(+), 4 deletions(-) diff --git a/Modules/Platform/MicrochipMCU-C-XC32.cmake b/Modules/Platform/MicrochipMCU-C-XC32.cmake index 9addb1e..f45213c 100644 --- a/Modules/Platform/MicrochipMCU-C-XC32.cmake +++ b/Modules/Platform/MicrochipMCU-C-XC32.cmake @@ -20,6 +20,36 @@ MICROCHIP_PATH_SEARCH(MICROCHIP_XC32_PATH xc32 STORE_VERSION MICROCHIP_C_COMPILER_VERSION ) +function(_xc32_get_version) + execute_process( + COMMAND "${CMAKE_C_COMPILER}" "--version" + OUTPUT_VARIABLE output + ERROR_VARIABLE output + RESULT_VARIABLE result + ) + + if(result) + message(FATAL_ERROR + "Calling '${CMAKE_C_COMPILER} --version' failed." + ) + endif() + + if(output MATCHES "([0-9]+(\.[0-9]+)+).* MPLAB XC32 Compiler .*v([0-9]+(\.[0-9]+)+)") + set(gnu_version ${CMAKE_MATCH_1}) + set(xc32_version ${CMAKE_MATCH_3}) + else() + message(FATAL_ERROR + "Failed to parse output of '${CMAKE_C_COMPILER} --version'." + ) + endif() + + string(REPLACE "_" "." gnu_version ${gnu_version}) + string(REPLACE "_" "." xc32_version ${xc32_version}) + + set(CMAKE_C_COMPILER_VERSION ${gnu_version} PARENT_SCOPE) + set(MICROCHIP_C_COMPILER_VERSION ${xc32_version} PARENT_SCOPE) +endfunction() + if(NOT MICROCHIP_XC32_PATH) message(FATAL_ERROR "No Microchip XC32 compiler was found. Please provide the path" @@ -30,12 +60,36 @@ endif() set(CMAKE_FIND_ROOT_PATH ${MICROCHIP_XC32_PATH}) -set(CMAKE_C_COMPILER xc32-gcc) +#set(CMAKE_C_COMPILER xc32-gcc) +find_program(CMAKE_C_COMPILER "xc32-gcc") set(MICROCHIP_C_COMPILER_ID XC32) +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT 90) +set(CMAKE_CXX_COMPILER_FORCED ON) -add_compile_options( +_xc32_get_version() + +set(link_flags "") +set(compile_flags "") + +string(APPEND compile_flags "-mprocessor=${MICROCHIP_MCU_MODEL}" ) -string(APPEND CMAKE_C_LINK_FLAGS +string(APPEND link_flags " -mprocessor=${MICROCHIP_MCU_MODEL}" ) +if(MICROCHIP_LINK_SCRIPT) + string(APPEND link_flags + " -Wl,--script=\"${MICROCHIP_LINK_SCRIPT}\"" + ) +endif() + + +add_compile_options( + ${compile_flags} +) +string(APPEND CMAKE_C_LINK_FLAGS + ${link_flags} +) +#message(STATUS ${CMAKE_C_LINK_FLAGS}) +set(MICROCHIP_C_LINK_FLAGS ${link_flags} CACHE STRING "link flag cached") +set(MICROCHIP_C_COMPILE_FLAGS ${compile_flags} CACHE STRING "compile flag cached") diff --git a/Modules/Platform/MicrochipMCU-Initialize.cmake b/Modules/Platform/MicrochipMCU-Initialize.cmake index 71eac34..64ef6e4 100644 --- a/Modules/Platform/MicrochipMCU-Initialize.cmake +++ b/Modules/Platform/MicrochipMCU-Initialize.cmake @@ -21,3 +21,4 @@ set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) +set(CMAKE_CXX_COMPILER_FORCED ON) diff --git a/toolchain.cmake b/toolchain.cmake index 86a1429..7de5456 100644 --- a/toolchain.cmake +++ b/toolchain.cmake @@ -23,7 +23,6 @@ # CMP0057 (IN_LIST operator) since 3.3 cmake_minimum_required(VERSION 3.3) - # record the directory containing this script # it will be used as the base for finding our other files set(MICROCHIP_ROOT ${CMAKE_CURRENT_LIST_DIR}) @@ -118,3 +117,15 @@ else() "Invalid MICROCHIP_MCU value '${MICROCHIP_MCU}'." ) endif() + +#En caso de estar ya configurado el compilador, restauro los flags +message(STATUS "microchip toolchain") +if(MICROCHIP_XC32_PATH) + message(STATUS "microchip toolchain2") + string(APPEND CMAKE_C_LINK_FLAGS + ${MICROCHIP_C_LINK_FLAGS} + ) + add_compile_options( + ${MICROCHIP_C_COMPILE_FLAGS} + ) +endif() From cef304dd4dbb2cf144bdc9d8f37a34720442a22c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rait=20R=C3=A4=C3=A4k?= Date: Wed, 4 Oct 2017 10:40:47 +1100 Subject: [PATCH 02/22] XC32 working on windows. --- Modules/Platform/MicrochipMCU-C-XC32.cmake | 14 +++++++------- Modules/Platform/MicrochipMCU-GNU-C.cmake | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/Modules/Platform/MicrochipMCU-C-XC32.cmake b/Modules/Platform/MicrochipMCU-C-XC32.cmake index 9addb1e..10d8f10 100644 --- a/Modules/Platform/MicrochipMCU-C-XC32.cmake +++ b/Modules/Platform/MicrochipMCU-C-XC32.cmake @@ -30,12 +30,12 @@ endif() set(CMAKE_FIND_ROOT_PATH ${MICROCHIP_XC32_PATH}) -set(CMAKE_C_COMPILER xc32-gcc) +set(CMAKE_C_COMPILER ${MICROCHIP_XC32_PATH}/bin/xc32-gcc) +if(WIN32) + set(CMAKE_C_COMPILER ${CMAKE_C_COMPILER}.exe) +endif() + set(MICROCHIP_C_COMPILER_ID XC32) -add_compile_options( - "-mprocessor=${MICROCHIP_MCU_MODEL}" -) -string(APPEND CMAKE_C_LINK_FLAGS - " -mprocessor=${MICROCHIP_MCU_MODEL}" -) +set(CMAKE_C_FLAGS "-mprocessor=${MICROCHIP_MCU_MODEL}" CACHE STRING "" FORCE) +set(CMAKE_EXECUTABLE_SUFFIX_C ".elf" CACHE STRING "" FORCE) diff --git a/Modules/Platform/MicrochipMCU-GNU-C.cmake b/Modules/Platform/MicrochipMCU-GNU-C.cmake index 4fc430f..b0b7991 100644 --- a/Modules/Platform/MicrochipMCU-GNU-C.cmake +++ b/Modules/Platform/MicrochipMCU-GNU-C.cmake @@ -32,3 +32,20 @@ if(MICROCHIP_C_COMPILER_ID STREQUAL "XC16") set(CMAKE_C_COMPILER_ABI ELF) endif() endif() + +if(MICROCHIP_C_COMPILER_ID STREQUAL "XC32") + if(NOT CMAKE_C_COMPILE_FEATURES) + set(CMAKE_C_COMPILE_FEATURES "c_function_prototypes;c_restrict;c_variadic_macros") + set(CMAKE_C90_COMPILE_FEATURES "c_function_prototypes") + set(CMAKE_C99_COMPILE_FEATURES "c_restrict;c_variadic_macros") + set(CMAKE_C11_COMPILE_FEATURES "") + endif() + + if(NOT CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_C_SIZEOF_DATA_PTR 4) + endif() + + if(NOT CMAKE_C_COMPILER_ABI) + set(CMAKE_C_COMPILER_ABI ELF) + endif() +endif() From de389e7a63bf609d66401db84c31b14a10f12abc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rait=20R=C3=A4=C3=A4k?= Date: Thu, 5 Oct 2017 18:35:45 +1100 Subject: [PATCH 03/22] Added bin2hex. --- Modules/Platform/MicrochipMCU-C-XC32.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Modules/Platform/MicrochipMCU-C-XC32.cmake b/Modules/Platform/MicrochipMCU-C-XC32.cmake index 10d8f10..81a5bb8 100644 --- a/Modules/Platform/MicrochipMCU-C-XC32.cmake +++ b/Modules/Platform/MicrochipMCU-C-XC32.cmake @@ -30,11 +30,13 @@ endif() set(CMAKE_FIND_ROOT_PATH ${MICROCHIP_XC32_PATH}) -set(CMAKE_C_COMPILER ${MICROCHIP_XC32_PATH}/bin/xc32-gcc) +set(OS_SUFFIX "") if(WIN32) - set(CMAKE_C_COMPILER ${CMAKE_C_COMPILER}.exe) + string(APPEND OS_SUFFIX ".exe") endif() +set(CMAKE_C_COMPILER ${MICROCHIP_XC32_PATH}/bin/xc32-gcc${OS_SUFFIX} CACHE STRING "" FORCE) +set(CMAKE_BIN2HEX ${MICROCHIP_XC32_PATH}/bin/xc32-bin2hex${OS_SUFFIX} CACHE STRING "" FORCE) set(MICROCHIP_C_COMPILER_ID XC32) set(CMAKE_C_FLAGS "-mprocessor=${MICROCHIP_MCU_MODEL}" CACHE STRING "" FORCE) From 8685588eea415c0beb75e80066434cc4f119672f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rait=20R=C3=A4=C3=A4k?= Date: Fri, 6 Oct 2017 11:57:01 +1100 Subject: [PATCH 04/22] CXX --- Modules/Platform/MicrochipMCU-C-XC32.cmake | 10 +++-- Modules/Platform/MicrochipMCU-CXX-XC32.cmake | 44 ++++++++++++++++++++ Modules/Platform/MicrochipMCU-CXX.cmake | 31 ++++++++++++++ Modules/Platform/MicrochipMCU-GNU-C.cmake | 1 + Modules/Platform/MicrochipMCU-GNU-CXX.cmake | 28 +++++++++++++ 5 files changed, 110 insertions(+), 4 deletions(-) create mode 100644 Modules/Platform/MicrochipMCU-CXX-XC32.cmake create mode 100644 Modules/Platform/MicrochipMCU-CXX.cmake create mode 100644 Modules/Platform/MicrochipMCU-GNU-CXX.cmake diff --git a/Modules/Platform/MicrochipMCU-C-XC32.cmake b/Modules/Platform/MicrochipMCU-C-XC32.cmake index 81a5bb8..8fc4cab 100644 --- a/Modules/Platform/MicrochipMCU-C-XC32.cmake +++ b/Modules/Platform/MicrochipMCU-C-XC32.cmake @@ -15,10 +15,12 @@ # to provide information specific to the XC32 compiler include(MicrochipPathSearch) -MICROCHIP_PATH_SEARCH(MICROCHIP_XC32_PATH xc32 - CACHE "the path to a Microchip XC32 installation" - STORE_VERSION MICROCHIP_C_COMPILER_VERSION -) +if(NOT MICROCHIP_XC32_PATH) + MICROCHIP_PATH_SEARCH(MICROCHIP_XC32_PATH xc32 + CACHE "the path to a Microchip XC32 installation" + STORE_VERSION MICROCHIP_C_COMPILER_VERSION + ) +endif() if(NOT MICROCHIP_XC32_PATH) message(FATAL_ERROR diff --git a/Modules/Platform/MicrochipMCU-CXX-XC32.cmake b/Modules/Platform/MicrochipMCU-CXX-XC32.cmake new file mode 100644 index 0000000..738f711 --- /dev/null +++ b/Modules/Platform/MicrochipMCU-CXX-XC32.cmake @@ -0,0 +1,44 @@ +#============================================================================= +# Copyright 2016 Sam Hanes +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file COPYING.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake-Microchip, +# substitute the full License text for the above reference.) + +# this module is called by `Platform/MicrochipMCU-CXX` +# to provide information specific to the XC32 compiler + +include(MicrochipPathSearch) +if(NOT MICROCHIP_XC32_PATH) + MICROCHIP_PATH_SEARCH(MICROCHIP_XC32_PATH xc32 + CACHE "the path to a Microchip XC32 installation" + STORE_VERSION MICROCHIP_CXX_COMPILER_VERSION + ) +endif() + +if(NOT MICROCHIP_XC32_PATH) + message(FATAL_ERROR + "No Microchip XC32 compiler was found. Please provide the path" + " to an XC32 installation on the command line, for example:\n" + "cmake -DMICROCHIP_XC32_PATH=/opt/microchip/xc32/v1.42 ." + ) +endif() + +set(CMAKE_FIND_ROOT_PATH ${MICROCHIP_XC32_PATH}) + +set(OS_SUFFIX "") +if(WIN32) + string(APPEND OS_SUFFIX ".exe") +endif() + +set(CMAKE_CXX_COMPILER ${MICROCHIP_XC32_PATH}/bin/xc32-g++${OS_SUFFIX} CACHE STRING "" FORCE) +set(MICROCHIP_CXX_COMPILER_ID XC32) + +set(CMAKE_CXX_FLAGS "-mprocessor=${MICROCHIP_MCU_MODEL}" CACHE STRING "" FORCE) +set(CMAKE_EXECUTABLE_SUFFIX_CXX ".elf" CACHE STRING "" FORCE) diff --git a/Modules/Platform/MicrochipMCU-CXX.cmake b/Modules/Platform/MicrochipMCU-CXX.cmake new file mode 100644 index 0000000..ebf18e8 --- /dev/null +++ b/Modules/Platform/MicrochipMCU-CXX.cmake @@ -0,0 +1,31 @@ +#============================================================================= +# Copyright 2016 Sam Hanes +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file COPYING.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake-Microchip, +# substitute the full License text for the above reference.) + +# This module is loaded during the search for a CXX compiler +# to provide the information necessary to find one. + +if(CMAKE_SYSTEM_PROCESSOR STREQUAL "PIC_32") + include(Platform/MicrochipMCU-CXX-XC32) +else() + message(FATAL_ERROR + "No CXX compiler for '${CMAKE_SYSTEM_PROCESSOR}'" + " is supported yet." + ) +endif() + +if(MICROCHIP_CXX_COMPILER_ID) + message(STATUS + "Using Microchip CXX compiler ${MICROCHIP_CXX_COMPILER_ID}" + " ${MICROCHIP_CXX_COMPILER_VERSION}" + ) +endif() diff --git a/Modules/Platform/MicrochipMCU-GNU-C.cmake b/Modules/Platform/MicrochipMCU-GNU-C.cmake index b0b7991..a20b89a 100644 --- a/Modules/Platform/MicrochipMCU-GNU-C.cmake +++ b/Modules/Platform/MicrochipMCU-GNU-C.cmake @@ -16,6 +16,7 @@ # for XC16, inject properties that may have been missed # see `Platform/MicrochipMCU-C-XC16` for explanation + if(MICROCHIP_C_COMPILER_ID STREQUAL "XC16") if(NOT CMAKE_C_COMPILE_FEATURES) set(CMAKE_C_COMPILE_FEATURES "c_function_prototypes;c_restrict;c_variadic_macros") diff --git a/Modules/Platform/MicrochipMCU-GNU-CXX.cmake b/Modules/Platform/MicrochipMCU-GNU-CXX.cmake new file mode 100644 index 0000000..36fa706 --- /dev/null +++ b/Modules/Platform/MicrochipMCU-GNU-CXX.cmake @@ -0,0 +1,28 @@ +#============================================================================= +# Copyright 2016 Sam Hanes +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file COPYING.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake-Microchip, +# substitute the full License text for the above reference.) + +# this module is called after the compiler has been determined +# to set up information specific to Microchip GNU CXX compilers + +# for XC32, inject properties that may have been missed +# see `Platform/MicrochipMCU-CXX-XC32` for explanation + +if(MICROCHIP_CXX_COMPILER_ID STREQUAL "XC32") + if(NOT CMAKE_CXX_SIZEOF_DATA_PTR) + set(CMAKE_CXX_SIZEOF_DATA_PTR 4) + endif() + + if(NOT CMAKE_CXX_COMPILER_ABI) + set(CMAKE_CXX_COMPILER_ABI ELF) + endif() +endif() From 947ffd92f7fe695a4a70efd58b4fbadf1c279f15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rait=20R=C3=A4=C3=A4k?= Date: Fri, 17 Nov 2017 15:11:35 +1100 Subject: [PATCH 05/22] Override Release and Debug flags. --- Modules/Platform/MicrochipMCU-C-XC32.cmake | 2 ++ Modules/Platform/MicrochipMCU-CXX-XC32.cmake | 2 ++ 2 files changed, 4 insertions(+) diff --git a/Modules/Platform/MicrochipMCU-C-XC32.cmake b/Modules/Platform/MicrochipMCU-C-XC32.cmake index 8fc4cab..72e8f0d 100644 --- a/Modules/Platform/MicrochipMCU-C-XC32.cmake +++ b/Modules/Platform/MicrochipMCU-C-XC32.cmake @@ -42,4 +42,6 @@ set(CMAKE_BIN2HEX ${MICROCHIP_XC32_PATH}/bin/xc32-bin2hex${OS_SUFFIX} CACHE STRI set(MICROCHIP_C_COMPILER_ID XC32) set(CMAKE_C_FLAGS "-mprocessor=${MICROCHIP_MCU_MODEL}" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG" CACHE STRING "" FORCE) +set(CMAKE_C_FLAGS_DEBUG "-g" CACHE STRING "" FORCE) set(CMAKE_EXECUTABLE_SUFFIX_C ".elf" CACHE STRING "" FORCE) diff --git a/Modules/Platform/MicrochipMCU-CXX-XC32.cmake b/Modules/Platform/MicrochipMCU-CXX-XC32.cmake index 738f711..8aa707f 100644 --- a/Modules/Platform/MicrochipMCU-CXX-XC32.cmake +++ b/Modules/Platform/MicrochipMCU-CXX-XC32.cmake @@ -41,4 +41,6 @@ set(CMAKE_CXX_COMPILER ${MICROCHIP_XC32_PATH}/bin/xc32-g++${OS_SUFFIX} CACHE STR set(MICROCHIP_CXX_COMPILER_ID XC32) set(CMAKE_CXX_FLAGS "-mprocessor=${MICROCHIP_MCU_MODEL}" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG" CACHE STRING "" FORCE) +set(CMAKE_CXX_FLAGS_DEBUG "-g" CACHE STRING "" FORCE) set(CMAKE_EXECUTABLE_SUFFIX_CXX ".elf" CACHE STRING "" FORCE) From 999477b8c0c39ba0c22f1f1334d0c4fec23f6d43 Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Fri, 30 Jun 2017 17:31:19 +0200 Subject: [PATCH 06/22] agregado soporte para generacion de MAP --- Modules/Platform/MicrochipMCU-C-XC32.cmake | 26 +++++++++++++++++----- toolchain.cmake | 1 - 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/Modules/Platform/MicrochipMCU-C-XC32.cmake b/Modules/Platform/MicrochipMCU-C-XC32.cmake index f45213c..46da74c 100644 --- a/Modules/Platform/MicrochipMCU-C-XC32.cmake +++ b/Modules/Platform/MicrochipMCU-C-XC32.cmake @@ -62,6 +62,7 @@ set(CMAKE_FIND_ROOT_PATH ${MICROCHIP_XC32_PATH}) #set(CMAKE_C_COMPILER xc32-gcc) find_program(CMAKE_C_COMPILER "xc32-gcc") +find_program(CMAKE_CXX_COMPILER "xc32-g++") set(MICROCHIP_C_COMPILER_ID XC32) set(CMAKE_C_STANDARD_COMPUTED_DEFAULT 90) set(CMAKE_CXX_COMPILER_FORCED ON) @@ -71,19 +72,34 @@ _xc32_get_version() set(link_flags "") set(compile_flags "") -string(APPEND compile_flags +list(APPEND compile_flags "-mprocessor=${MICROCHIP_MCU_MODEL}" + -x c ) string(APPEND link_flags " -mprocessor=${MICROCHIP_MCU_MODEL}" ) -if(MICROCHIP_LINK_SCRIPT) +if(MICROCHIP_LINK_SCRIPT OR MICROCHIP_MIN_HEAP_SIZE) string(APPEND link_flags - " -Wl,--script=\"${MICROCHIP_LINK_SCRIPT}\"" - ) + " -Wl" + ) + if(MICROCHIP_LINK_SCRIPT) + string(APPEND link_flags + ",--script=\"${MICROCHIP_LINK_SCRIPT}\"" + ) + endif() + if(MICROCHIP_MIN_HEAP_SIZE) + string(APPEND link_flags + ",--defsym=_min_heap_size=${MICROCHIP_MIN_HEAP_SIZE}" + ) + endif() + if(MICROCHIP_MAP_FILE) + string(APPEND link_flags + ",-Map=\"${MICROCHIP_MAP_FILE}\"" + ) + endif() endif() - add_compile_options( ${compile_flags} ) diff --git a/toolchain.cmake b/toolchain.cmake index 7de5456..3807a71 100644 --- a/toolchain.cmake +++ b/toolchain.cmake @@ -121,7 +121,6 @@ endif() #En caso de estar ya configurado el compilador, restauro los flags message(STATUS "microchip toolchain") if(MICROCHIP_XC32_PATH) - message(STATUS "microchip toolchain2") string(APPEND CMAKE_C_LINK_FLAGS ${MICROCHIP_C_LINK_FLAGS} ) From 08b38f965b1eda1c0664332caf37da4b0d3905b6 Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Fri, 30 Jun 2017 18:07:40 +0200 Subject: [PATCH 07/22] corregido README y agregada explicacion de variables nuevas --- README.rst | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index ca4edfb..ff6cd23 100644 --- a/README.rst +++ b/README.rst @@ -16,7 +16,7 @@ First, you need to somehow get a copy of this project as a subdirectory of your project named ``external/cmake-microchip``. If you use git, the easiest way is to add a submodule:: - git submodule add git://github.com/Elemecca/cmake-microchip.git external/cmake-microchip + git submodule add git://github.com/juanAngel/cmake-microchip.git external/cmake-microchip Then add this snippet at the very top of your ``CMakeLists.txt``:: @@ -25,11 +25,18 @@ Then add this snippet at the very top of your ``CMakeLists.txt``:: # set the default MCU model set(MICROCHIP_MCU PIC24FJ32GB002) +This code fragment must be placed before "project" command to have effect + +"MICROCHIP_MIN_HEAP_SIZE" sets the heap size + +"MICROCHIP_MAP_FILE" allows you to generate a map file The target MCU is set by the ``MICROCHIP_MCU`` variable. It can be set in ``CMakeLists.txt`` as above or on the CMake command line like so:: cmake -DMICROCHIP_MCU=PIC24FJ256GB004 . + +You can set the variable "MICROCHIP_LINK_SCRIPT" to specify a linked script Copying ======= From 8896436484a9ac66eaab59223fbf76ea081409f5 Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Fri, 7 Jul 2017 12:42:56 +0200 Subject: [PATCH 08/22] agregado soporte premilimar para objetivos deploit y run --- Modules/MicrochipIPE.cmake | 38 ++++++++++++++++++++++ Modules/Platform/MicrochipMCU-C-XC32.cmake | 4 +++ Modules/Platform/MicrochipMCU.cmake | 1 + toolchain.cmake | 2 +- 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 Modules/MicrochipIPE.cmake diff --git a/Modules/MicrochipIPE.cmake b/Modules/MicrochipIPE.cmake new file mode 100644 index 0000000..184a183 --- /dev/null +++ b/Modules/MicrochipIPE.cmake @@ -0,0 +1,38 @@ +find_package(Java COMPONENTS Runtime) + +set(IPECMD ${Java_JAVA_EXECUTABLE} -jar "/opt/microchip/mplabx/v3.35/mplab_ipe/ipecmd.jar") +set(IPE_LOG MPLABXLog.xml MPLABXLog.xml.0 MPLABXLog.xml.1 MPLABXLog.xml.2 MPLABXLog.xml.3 MPLABXLog.xml.4 MPLABXLog.xml.5 MPLABXLog.xml.6 MPLABXLog.xml.7) + +function(finIPE) + +endfunction() +function(ipeDeploit target) + + find_program(MICROCHIP_IPECMD + NAMES ${IPECMD} + HINTS ${_CMAKE_TOOLCHAIN_LOCATION} + ) + + if(NOT MICROCHIP_IPECMD) + message(SEND_ERROR "No ipecmd.jar program was found") + endif() + + add_custom_command( + DEPENDS ${target} + COMMAND ${IPECMD} -f${target}.hex -M -P${MICROCHIP_MCU_MODEL} -TPICD3 -Y + OUTPUT log.0 + BYPRODUCTS ${IPE_LOG} + COMMENT "Deploit to pic32" + VERBATIM + ) + add_custom_target(deploit DEPENDS log.0) +endfunction() + +function(ipeRun target device) + + add_custom_target(run DEPENDS deploit + COMMAND ${IPECMD} -f${target}.hex -P${MICROCHIP_MCU_MODEL} -TPICD3 -Y -Q + COMMAND sh -c "cat ${device} | sed '/^\\s*$/d'" + VERBATIM + ) +endfunction() diff --git a/Modules/Platform/MicrochipMCU-C-XC32.cmake b/Modules/Platform/MicrochipMCU-C-XC32.cmake index 46da74c..b685756 100644 --- a/Modules/Platform/MicrochipMCU-C-XC32.cmake +++ b/Modules/Platform/MicrochipMCU-C-XC32.cmake @@ -97,6 +97,10 @@ if(MICROCHIP_LINK_SCRIPT OR MICROCHIP_MIN_HEAP_SIZE) string(APPEND link_flags ",-Map=\"${MICROCHIP_MAP_FILE}\"" ) + set_property(DIRECTORY APPEND + PROPERTY ADDITIONAL_MAKE_CLEAN_FILES + "${MICROCHIP_MAP_FILE}" + ) endif() endif() diff --git a/Modules/Platform/MicrochipMCU.cmake b/Modules/Platform/MicrochipMCU.cmake index ebd1bdd..8cdf3be 100644 --- a/Modules/Platform/MicrochipMCU.cmake +++ b/Modules/Platform/MicrochipMCU.cmake @@ -23,3 +23,4 @@ set(CMAKE_SYSTEM_LIBRARY_PATH /lib) set(CMAKE_SYSTEM_PROGRAM_PATH /bin) include(MicrochipBin2Hex) +include(MicrochipIPE) diff --git a/toolchain.cmake b/toolchain.cmake index 3807a71..16fd1ba 100644 --- a/toolchain.cmake +++ b/toolchain.cmake @@ -98,7 +98,7 @@ elseif(MICROCHIP_MCU STREQUAL "generic32") elseif(MICROCHIP_MCU MATCHES "^(dsPIC|PIC)(32M[XZ]|[0-9]+[A-Z])([A-Z0-9]+)$") set(MICROCHIP_MCU_FAMILY "${CMAKE_MATCH_1}${CMAKE_MATCH_2}") - set(MICROCHIP_MCU_MODEL "${CMAKE_MATCH_2}${CMAKE_MATCH_3}") + set(MICROCHIP_MCU_MODEL "${CMAKE_MATCH_2}${CMAKE_MATCH_3}" CACHE STRING "Modelo de chip") if(MICROCHIP_MCU_FAMILY IN_LIST MICROCHIP_FAMILIES_8) set(CMAKE_SYSTEM_PROCESSOR "PIC_8") From 27c9ceecdae68e4d0ecc9e33944b673132606f16 Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Fri, 7 Jul 2017 17:46:25 +0200 Subject: [PATCH 09/22] mejorado soporte de herramientas mplabx --- Modules/MicrochipBin2Hex.cmake | 19 ++++++++-- Modules/MicrochipIPE.cmake | 65 +++++++++++++++++++++++++++++----- 2 files changed, 72 insertions(+), 12 deletions(-) diff --git a/Modules/MicrochipBin2Hex.cmake b/Modules/MicrochipBin2Hex.cmake index e9912e4..5e02937 100644 --- a/Modules/MicrochipBin2Hex.cmake +++ b/Modules/MicrochipBin2Hex.cmake @@ -12,7 +12,7 @@ # substitute the full License text for the above reference.) -function(bin2hex target) +function(add_bin2hex_target target) find_program(MICROCHIP_BIN2HEX NAMES ${_CMAKE_TOOLCHAIN_PREFIX}bin2hex bin2hex HINTS ${_CMAKE_TOOLCHAIN_LOCATION} @@ -48,12 +48,25 @@ function(bin2hex target) set(out_f "${out_f}.hex") add_custom_command( - TARGET ${target} POST_BUILD + #TARGET ${target} POST_BUILD + OUTPUT ${dir}/${out_f} + DEPENDS ${target} WORKING_DIRECTORY ${dir} COMMAND "${MICROCHIP_BIN2HEX}" "${in_f}" - BYPRODUCTS ${dir}/${out_f} VERBATIM ) + add_custom_target(bin2hex_${target} + DEPENDS ${dir}/${out_f} + ) + + if(NOT TARGET bin2hex) + add_custom_target(bin2hex ALL) + message(STATUS "bin2hex not exits") + endif() + + add_dependencies(bin2hex + bin2hex_${target} + ) set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES diff --git a/Modules/MicrochipIPE.cmake b/Modules/MicrochipIPE.cmake index 184a183..37c98fb 100644 --- a/Modules/MicrochipIPE.cmake +++ b/Modules/MicrochipIPE.cmake @@ -1,24 +1,41 @@ + +include(MicrochipPathSearch) + find_package(Java COMPONENTS Runtime) -set(IPECMD ${Java_JAVA_EXECUTABLE} -jar "/opt/microchip/mplabx/v3.35/mplab_ipe/ipecmd.jar") +#set(IPECMD ${Java_JAVA_EXECUTABLE} -jar "/opt/microchip/mplabx/v3.35/mplab_ipe/ipecmd.jar") set(IPE_LOG MPLABXLog.xml MPLABXLog.xml.0 MPLABXLog.xml.1 MPLABXLog.xml.2 MPLABXLog.xml.3 MPLABXLog.xml.4 MPLABXLog.xml.5 MPLABXLog.xml.6 MPLABXLog.xml.7) -function(finIPE) - +function(finMPLABX) + MICROCHIP_PATH_SEARCH(MICROCHIP_MPLABX_PATH mplabx + CACHE "the path to a Microchip MPLABX installation" + ) + + + if(NOT MICROCHIP_MPLABX_PATH) + message(FATAL_ERROR + "No Microchip MPLABX was found. Please provide the path" + " to an MPLABX installation on the command line, for example:\n" + "cmake -DMICROCHIP_MPLABX_PATH=/opt/microchip/mplabx/v1.42 ." + ) + endif() endfunction() -function(ipeDeploit target) +function(add_ipe_deploit_target target) + + finMPLABX() find_program(MICROCHIP_IPECMD - NAMES ${IPECMD} - HINTS ${_CMAKE_TOOLCHAIN_LOCATION} + NAMES mplab_ipe/ipecmd.jar + HINTS ${MICROCHIP_MPLABX_PATH} ) if(NOT MICROCHIP_IPECMD) message(SEND_ERROR "No ipecmd.jar program was found") endif() + set(IPECMD ${Java_JAVA_EXECUTABLE} -jar ${MICROCHIP_IPECMD}) add_custom_command( - DEPENDS ${target} + DEPENDS ${target}.hex COMMAND ${IPECMD} -f${target}.hex -M -P${MICROCHIP_MCU_MODEL} -TPICD3 -Y OUTPUT log.0 BYPRODUCTS ${IPE_LOG} @@ -28,10 +45,40 @@ function(ipeDeploit target) add_custom_target(deploit DEPENDS log.0) endfunction() -function(ipeRun target device) +function(ipeRestar target) + finMPLABX() + + find_program(MICROCHIP_IPECMD + NAMES mplab_ipe/ipecmd.jar + HINTS ${MICROCHIP_MPLABX_PATH} + ) + + if(NOT MICROCHIP_IPECMD) + message(SEND_ERROR "No ipecmd.jar program was found") + endif() + set(IPECMD ${Java_JAVA_EXECUTABLE} -jar ${MICROCHIP_IPECMD}) + add_custom_target(restart DEPENDS deploit + COMMAND ${IPECMD} -f${target}.hex -P${MICROCHIP_MCU_MODEL} -TPICD3 -Y + VERBATIM + ) +endfunction() + +function(ipeRun target device) + finMPLABX() + + find_program(MICROCHIP_IPECMD + NAMES mplab_ipe/ipecmd.jar + HINTS ${MICROCHIP_MPLABX_PATH} + ) + + if(NOT MICROCHIP_IPECMD) + message(SEND_ERROR "No ipecmd.jar program was found") + endif() + + set(IPECMD ${Java_JAVA_EXECUTABLE} -jar ${MICROCHIP_IPECMD}) + add_custom_target(run DEPENDS deploit - COMMAND ${IPECMD} -f${target}.hex -P${MICROCHIP_MCU_MODEL} -TPICD3 -Y -Q COMMAND sh -c "cat ${device} | sed '/^\\s*$/d'" VERBATIM ) From 8905536d626cedbea421db23be01dfd34c133ec6 Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Mon, 10 Jul 2017 17:50:05 +0200 Subject: [PATCH 10/22] corregido objetivo run --- Modules/MicrochipIPE.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Modules/MicrochipIPE.cmake b/Modules/MicrochipIPE.cmake index 37c98fb..879bb6f 100644 --- a/Modules/MicrochipIPE.cmake +++ b/Modules/MicrochipIPE.cmake @@ -79,7 +79,8 @@ function(ipeRun target device) set(IPECMD ${Java_JAVA_EXECUTABLE} -jar ${MICROCHIP_IPECMD}) add_custom_target(run DEPENDS deploit - COMMAND sh -c "cat ${device} | sed '/^\\s*$/d'" + #COMMAND sh -c "cat ${device} | sed '/^\\s*$/d'" + COMMAND sh -c "cat ${device}" VERBATIM ) endfunction() From 301c5d3a1640a101526746c63c45f27734e55407 Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Fri, 30 Jun 2017 18:29:09 +0200 Subject: [PATCH 11/22] fix syntax error --- README.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index ff6cd23..8127c83 100644 --- a/README.rst +++ b/README.rst @@ -27,9 +27,9 @@ Then add this snippet at the very top of your ``CMakeLists.txt``:: set(MICROCHIP_MCU PIC24FJ32GB002) This code fragment must be placed before "project" command to have effect -"MICROCHIP_MIN_HEAP_SIZE" sets the heap size +``MICROCHIP_MIN_HEAP_SIZE`` sets the heap size -"MICROCHIP_MAP_FILE" allows you to generate a map file +``MICROCHIP_MAP_FILE`` allows you to generate a map file The target MCU is set by the ``MICROCHIP_MCU`` variable. It can be set in ``CMakeLists.txt`` as above or on the CMake command line like so:: From c90ecc6561365b29e441936866829b59a85e6af2 Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Tue, 11 Jul 2017 10:14:38 +0200 Subject: [PATCH 12/22] add gitignore --- .gitignore | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ef1ce3c --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* From e15e89a498a549d4f5d80280855373a0f84464e3 Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Fri, 25 Aug 2017 14:25:02 +0200 Subject: [PATCH 13/22] permite la deteccion de la familia y modelo configurados por parte de los entornos de desarrollo --- toolchain.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/toolchain.cmake b/toolchain.cmake index 16fd1ba..65f33b0 100644 --- a/toolchain.cmake +++ b/toolchain.cmake @@ -102,10 +102,13 @@ elseif(MICROCHIP_MCU MATCHES "^(dsPIC|PIC)(32M[XZ]|[0-9]+[A-Z])([A-Z0-9]+)$") if(MICROCHIP_MCU_FAMILY IN_LIST MICROCHIP_FAMILIES_8) set(CMAKE_SYSTEM_PROCESSOR "PIC_8") + add_definitions(-D__${MICROCHIP_MCU_FAMILY}__ -D__${MICROCHIP_MCU_MODEL}__) elseif(MICROCHIP_MCU_FAMILY IN_LIST MICROCHIP_FAMILIES_16) set(CMAKE_SYSTEM_PROCESSOR "PIC_16") + add_definitions(-D__${MICROCHIP_MCU_FAMILY}__ -D__${MICROCHIP_MCU_MODEL}__) elseif(MICROCHIP_MCU_FAMILY IN_LIST MICROCHIP_FAMILIES_32) set(CMAKE_SYSTEM_PROCESSOR "PIC_32") + add_definitions(-D__${MICROCHIP_MCU_FAMILY}__ -D__${MICROCHIP_MCU_MODEL}__) else() message(FATAL_ERROR "Unsupported MCU family '${MICROCHIP_MCU_FAMILY}'." From 50d81f8c064544b38239a192403714d7a815b380 Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Mon, 28 Aug 2017 02:26:44 +0200 Subject: [PATCH 14/22] agregado soporte para ensamblaor --- Modules/Platform/MicrochipMCU-C-XC32.cmake | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Modules/Platform/MicrochipMCU-C-XC32.cmake b/Modules/Platform/MicrochipMCU-C-XC32.cmake index b685756..59f5387 100644 --- a/Modules/Platform/MicrochipMCU-C-XC32.cmake +++ b/Modules/Platform/MicrochipMCU-C-XC32.cmake @@ -61,12 +61,15 @@ endif() set(CMAKE_FIND_ROOT_PATH ${MICROCHIP_XC32_PATH}) #set(CMAKE_C_COMPILER xc32-gcc) +find_program(CMAKE_ASM_COMPILER "xc32-gcc") find_program(CMAKE_C_COMPILER "xc32-gcc") find_program(CMAKE_CXX_COMPILER "xc32-g++") set(MICROCHIP_C_COMPILER_ID XC32) set(CMAKE_C_STANDARD_COMPUTED_DEFAULT 90) set(CMAKE_CXX_COMPILER_FORCED ON) +message(${CMAKE_ASM_COMPILER}) + _xc32_get_version() set(link_flags "") @@ -74,7 +77,6 @@ set(compile_flags "") list(APPEND compile_flags "-mprocessor=${MICROCHIP_MCU_MODEL}" - -x c ) string(APPEND link_flags " -mprocessor=${MICROCHIP_MCU_MODEL}" From bc6beaeda6aa6b4eae448e3d4e3af6b7c8e41560 Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Mon, 28 Aug 2017 14:57:42 +0200 Subject: [PATCH 15/22] eliminado error --- Modules/MicrochipBin2Hex.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/MicrochipBin2Hex.cmake b/Modules/MicrochipBin2Hex.cmake index 5e02937..0d1172a 100644 --- a/Modules/MicrochipBin2Hex.cmake +++ b/Modules/MicrochipBin2Hex.cmake @@ -61,7 +61,7 @@ function(add_bin2hex_target target) if(NOT TARGET bin2hex) add_custom_target(bin2hex ALL) - message(STATUS "bin2hex not exits") + #message(STATUS "bin2hex not exits") endif() add_dependencies(bin2hex From 6098b80c0adc413b52aa191561085fa7adca9e61 Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Wed, 20 Sep 2017 18:32:11 +0200 Subject: [PATCH 16/22] Mejorado soporte para ensamblador --- Modules/MicrochipBin2Hex.cmake | 2 +- Modules/Platform/MicrochipMCU-C-XC32.cmake | 69 +++++++++++----------- 2 files changed, 36 insertions(+), 35 deletions(-) diff --git a/Modules/MicrochipBin2Hex.cmake b/Modules/MicrochipBin2Hex.cmake index 0d1172a..a229863 100644 --- a/Modules/MicrochipBin2Hex.cmake +++ b/Modules/MicrochipBin2Hex.cmake @@ -19,7 +19,7 @@ function(add_bin2hex_target target) ) if(NOT MICROCHIP_BIN2HEX) - message(SEND_ERROR "No bin2hex program was found") + message(SEND_ERROR "No bin2hex program was found. _CMAKE_TOOLCHAIN_PREFIX=${_CMAKE_TOOLCHAIN_PREFIX}") endif() function(get_target_property_fallback var target) diff --git a/Modules/Platform/MicrochipMCU-C-XC32.cmake b/Modules/Platform/MicrochipMCU-C-XC32.cmake index 59f5387..4c61a3f 100644 --- a/Modules/Platform/MicrochipMCU-C-XC32.cmake +++ b/Modules/Platform/MicrochipMCU-C-XC32.cmake @@ -15,6 +15,7 @@ # to provide information specific to the XC32 compiler include(MicrochipPathSearch) +set(_CMAKE_TOOLCHAIN_PREFIX "xc32-") MICROCHIP_PATH_SEARCH(MICROCHIP_XC32_PATH xc32 CACHE "the path to a Microchip XC32 installation" STORE_VERSION MICROCHIP_C_COMPILER_VERSION @@ -68,42 +69,42 @@ set(MICROCHIP_C_COMPILER_ID XC32) set(CMAKE_C_STANDARD_COMPUTED_DEFAULT 90) set(CMAKE_CXX_COMPILER_FORCED ON) -message(${CMAKE_ASM_COMPILER}) +if(CMAKE_C_COMPILER) + _xc32_get_version() -_xc32_get_version() + set(link_flags "") + set(compile_flags "") -set(link_flags "") -set(compile_flags "") - -list(APPEND compile_flags - "-mprocessor=${MICROCHIP_MCU_MODEL}" -) -string(APPEND link_flags - " -mprocessor=${MICROCHIP_MCU_MODEL}" -) -if(MICROCHIP_LINK_SCRIPT OR MICROCHIP_MIN_HEAP_SIZE) - string(APPEND link_flags - " -Wl" - ) - if(MICROCHIP_LINK_SCRIPT) - string(APPEND link_flags - ",--script=\"${MICROCHIP_LINK_SCRIPT}\"" - ) - endif() - if(MICROCHIP_MIN_HEAP_SIZE) - string(APPEND link_flags - ",--defsym=_min_heap_size=${MICROCHIP_MIN_HEAP_SIZE}" - ) - endif() - if(MICROCHIP_MAP_FILE) - string(APPEND link_flags - ",-Map=\"${MICROCHIP_MAP_FILE}\"" - ) - set_property(DIRECTORY APPEND - PROPERTY ADDITIONAL_MAKE_CLEAN_FILES - "${MICROCHIP_MAP_FILE}" - ) - endif() + list(APPEND compile_flags + "-mprocessor=${MICROCHIP_MCU_MODEL}" + ) + string(APPEND link_flags + " -mprocessor=${MICROCHIP_MCU_MODEL}" + ) + if(MICROCHIP_LINK_SCRIPT OR MICROCHIP_MIN_HEAP_SIZE) + string(APPEND link_flags + " -Wl" + ) + if(MICROCHIP_LINK_SCRIPT) + string(APPEND link_flags + ",--script=\"${MICROCHIP_LINK_SCRIPT}\"" + ) + endif() + if(MICROCHIP_MIN_HEAP_SIZE) + string(APPEND link_flags + ",--defsym=_min_heap_size=${MICROCHIP_MIN_HEAP_SIZE}" + ) + endif() + if(MICROCHIP_MAP_FILE) + string(APPEND link_flags + ",-Map=\"${MICROCHIP_MAP_FILE}\"" + ) + set_property(DIRECTORY APPEND + PROPERTY ADDITIONAL_MAKE_CLEAN_FILES + "${MICROCHIP_MAP_FILE}" + ) + endif() + endif() endif() add_compile_options( From a643a9a97c575cfcb01c7b608dfa61735309c2de Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Tue, 26 Sep 2017 12:56:52 +0200 Subject: [PATCH 17/22] corregidos errores ocasionales de funciones no encontradas --- Modules/Platform/MicrochipMCU-C-XC32.cmake | 1 - toolchain.cmake | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Modules/Platform/MicrochipMCU-C-XC32.cmake b/Modules/Platform/MicrochipMCU-C-XC32.cmake index 4c61a3f..70631f4 100644 --- a/Modules/Platform/MicrochipMCU-C-XC32.cmake +++ b/Modules/Platform/MicrochipMCU-C-XC32.cmake @@ -61,7 +61,6 @@ endif() set(CMAKE_FIND_ROOT_PATH ${MICROCHIP_XC32_PATH}) -#set(CMAKE_C_COMPILER xc32-gcc) find_program(CMAKE_ASM_COMPILER "xc32-gcc") find_program(CMAKE_C_COMPILER "xc32-gcc") find_program(CMAKE_CXX_COMPILER "xc32-g++") diff --git a/toolchain.cmake b/toolchain.cmake index 65f33b0..f5f62a1 100644 --- a/toolchain.cmake +++ b/toolchain.cmake @@ -48,6 +48,10 @@ set(CMAKE_SYSTEM_NAME "MicrochipMCU") # # that makes it possible to set a per-project default model in # CMakeLists.txt that can still be overridden on the command line +include(MicrochipBin2Hex) +include(MicrochipIPE) +include(MicrochipPathSearch) + if(NOT MICROCHIP_MCU) set(MICROCHIP_MCU "generic16") endif() From 05b84344aa037da4fe71789eb662d70b5163f920 Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Wed, 4 Oct 2017 10:10:34 +0200 Subject: [PATCH 18/22] Eliminada advertencia --- Modules/MicrochipPathSearch.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/Modules/MicrochipPathSearch.cmake b/Modules/MicrochipPathSearch.cmake index 0f859e6..0402e2c 100644 --- a/Modules/MicrochipPathSearch.cmake +++ b/Modules/MicrochipPathSearch.cmake @@ -11,6 +11,7 @@ # (To distribute this file outside of CMake-Microchip, # substitute the full License text for the above reference.) +cmake_policy(SET CMP0057 NEW) function(MICROCHIP_PATH_SEARCH outvar target) set(options) list(APPEND oneValueArgs CACHE STORE_VERSION) From d706773f060a81d6ae34e9a1d658be428f36fd93 Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Wed, 11 Oct 2017 19:37:37 +0200 Subject: [PATCH 19/22] Corregido error en la generacion de los flag del compilador --- Modules/Platform/MicrochipMCU-C-XC32.cmake | 44 ---------------------- toolchain.cmake | 37 +++++++++++++++++- 2 files changed, 35 insertions(+), 46 deletions(-) diff --git a/Modules/Platform/MicrochipMCU-C-XC32.cmake b/Modules/Platform/MicrochipMCU-C-XC32.cmake index 70631f4..319bd66 100644 --- a/Modules/Platform/MicrochipMCU-C-XC32.cmake +++ b/Modules/Platform/MicrochipMCU-C-XC32.cmake @@ -70,48 +70,4 @@ set(CMAKE_CXX_COMPILER_FORCED ON) if(CMAKE_C_COMPILER) _xc32_get_version() - - set(link_flags "") - set(compile_flags "") - - list(APPEND compile_flags - "-mprocessor=${MICROCHIP_MCU_MODEL}" - ) - string(APPEND link_flags - " -mprocessor=${MICROCHIP_MCU_MODEL}" - ) - if(MICROCHIP_LINK_SCRIPT OR MICROCHIP_MIN_HEAP_SIZE) - string(APPEND link_flags - " -Wl" - ) - if(MICROCHIP_LINK_SCRIPT) - string(APPEND link_flags - ",--script=\"${MICROCHIP_LINK_SCRIPT}\"" - ) - endif() - if(MICROCHIP_MIN_HEAP_SIZE) - string(APPEND link_flags - ",--defsym=_min_heap_size=${MICROCHIP_MIN_HEAP_SIZE}" - ) - endif() - if(MICROCHIP_MAP_FILE) - string(APPEND link_flags - ",-Map=\"${MICROCHIP_MAP_FILE}\"" - ) - set_property(DIRECTORY APPEND - PROPERTY ADDITIONAL_MAKE_CLEAN_FILES - "${MICROCHIP_MAP_FILE}" - ) - endif() - endif() endif() - -add_compile_options( - ${compile_flags} -) -string(APPEND CMAKE_C_LINK_FLAGS - ${link_flags} -) -#message(STATUS ${CMAKE_C_LINK_FLAGS}) -set(MICROCHIP_C_LINK_FLAGS ${link_flags} CACHE STRING "link flag cached") -set(MICROCHIP_C_COMPILE_FLAGS ${compile_flags} CACHE STRING "compile flag cached") diff --git a/toolchain.cmake b/toolchain.cmake index f5f62a1..215a8bb 100644 --- a/toolchain.cmake +++ b/toolchain.cmake @@ -128,10 +128,43 @@ endif() #En caso de estar ya configurado el compilador, restauro los flags message(STATUS "microchip toolchain") if(MICROCHIP_XC32_PATH) + set(link_flags "") + set(compile_flags "") + + list(APPEND compile_flags + "-mprocessor=${MICROCHIP_MCU_MODEL}" + ) + string(APPEND link_flags + " -mprocessor=${MICROCHIP_MCU_MODEL}" + ) + if(MICROCHIP_LINK_SCRIPT OR MICROCHIP_MIN_HEAP_SIZE) + string(APPEND link_flags + " -Wl" + ) + if(MICROCHIP_LINK_SCRIPT) + string(APPEND link_flags + ",--script=\"${MICROCHIP_LINK_SCRIPT}\"" + ) + endif() + if(MICROCHIP_MIN_HEAP_SIZE) + string(APPEND link_flags + ",--defsym=_min_heap_size=${MICROCHIP_MIN_HEAP_SIZE}" + ) + endif() + if(MICROCHIP_MAP_FILE) + string(APPEND link_flags + ",-Map=\"${MICROCHIP_MAP_FILE}\"" + ) + set_property(DIRECTORY APPEND + PROPERTY ADDITIONAL_MAKE_CLEAN_FILES + "${MICROCHIP_MAP_FILE}" + ) + endif() + endif() string(APPEND CMAKE_C_LINK_FLAGS - ${MICROCHIP_C_LINK_FLAGS} + ${link_flags} ) add_compile_options( - ${MICROCHIP_C_COMPILE_FLAGS} + ${compile_flags} ) endif() From 568ae065f634c32df3dcc1a9841ac2715d0055dc Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Tue, 17 Oct 2017 12:28:14 +0200 Subject: [PATCH 20/22] cambiado mensaje para indicar el soporte de XC32 --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 8127c83..2fe8668 100644 --- a/README.rst +++ b/README.rst @@ -4,7 +4,7 @@ CMake for the Microchip Toolchain This project provides toolchains and other support modules to enable using `CMake`_ with the `Microchip compilers`_, although presently only -XC16 is supported. +XC16 and XC32 is supported. .. _CMake: https://cmake.org/ .. _Microchip compilers: http://www.microchip.com/mplab/compilers From ce3e02b1139e80ed1974bd91ef0d17524c32c624 Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Tue, 19 Dec 2017 15:18:27 +0100 Subject: [PATCH 21/22] fix error --- Modules/Platform/MicrochipMCU-C-XC32.cmake | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/Modules/Platform/MicrochipMCU-C-XC32.cmake b/Modules/Platform/MicrochipMCU-C-XC32.cmake index 8cff0ec..37f9105 100644 --- a/Modules/Platform/MicrochipMCU-C-XC32.cmake +++ b/Modules/Platform/MicrochipMCU-C-XC32.cmake @@ -74,6 +74,47 @@ set(MICROCHIP_C_COMPILER_ID XC32) set(CMAKE_C_STANDARD_COMPUTED_DEFAULT 90) set(CMAKE_CXX_COMPILER_FORCED ON) + +set(link_flags "") +set(compile_flags "") + +list(APPEND compile_flags + "-mprocessor=${MICROCHIP_MCU_MODEL}" +) +string(APPEND link_flags + " -mprocessor=${MICROCHIP_MCU_MODEL}" +) +if(MICROCHIP_LINK_SCRIPT OR MICROCHIP_MIN_HEAP_SIZE) + string(APPEND link_flags + " -Wl" + ) + if(MICROCHIP_LINK_SCRIPT) + string(APPEND link_flags + ",--script=\"${MICROCHIP_LINK_SCRIPT}\"" + ) + endif() + if(MICROCHIP_MIN_HEAP_SIZE) + string(APPEND link_flags + ",--defsym=_min_heap_size=${MICROCHIP_MIN_HEAP_SIZE}" + ) + endif() + if(MICROCHIP_MAP_FILE) + string(APPEND link_flags + ",-Map=\"${MICROCHIP_MAP_FILE}\"" + ) + set_property(DIRECTORY APPEND + PROPERTY ADDITIONAL_MAKE_CLEAN_FILES + "${MICROCHIP_MAP_FILE}" + ) + endif() +endif() +string(APPEND CMAKE_C_LINK_FLAGS + ${link_flags} +) +add_compile_options( + ${compile_flags} +) + if(CMAKE_C_COMPILER) _xc32_get_version() endif() From 32b3ac6cd3b1dfad2184fda5d902b4758dea8997 Mon Sep 17 00:00:00 2001 From: Juan Angel Date: Wed, 3 Oct 2018 12:32:49 +0200 Subject: [PATCH 22/22] Agregado soporte para diferentes programadores --- Modules/MicrochipIPE.cmake | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Modules/MicrochipIPE.cmake b/Modules/MicrochipIPE.cmake index 879bb6f..52a0c05 100644 --- a/Modules/MicrochipIPE.cmake +++ b/Modules/MicrochipIPE.cmake @@ -3,6 +3,10 @@ include(MicrochipPathSearch) find_package(Java COMPONENTS Runtime) + +set(PROGRAMER "ICD3" CACHE STRING "programador a utilizar") +set_property(CACHE PROGRAMER PROPERTY STRINGS ICD3 ICD4 PK3 PK4 PM3 PKOB) + #set(IPECMD ${Java_JAVA_EXECUTABLE} -jar "/opt/microchip/mplabx/v3.35/mplab_ipe/ipecmd.jar") set(IPE_LOG MPLABXLog.xml MPLABXLog.xml.0 MPLABXLog.xml.1 MPLABXLog.xml.2 MPLABXLog.xml.3 MPLABXLog.xml.4 MPLABXLog.xml.5 MPLABXLog.xml.6 MPLABXLog.xml.7) @@ -36,7 +40,7 @@ function(add_ipe_deploit_target target) add_custom_command( DEPENDS ${target}.hex - COMMAND ${IPECMD} -f${target}.hex -M -P${MICROCHIP_MCU_MODEL} -TPICD3 -Y + COMMAND ${IPECMD} -f${target}.hex -M -P${MICROCHIP_MCU_MODEL} -TP${PROGRAMER} -Y OUTPUT log.0 BYPRODUCTS ${IPE_LOG} COMMENT "Deploit to pic32" @@ -59,7 +63,7 @@ function(ipeRestar target) set(IPECMD ${Java_JAVA_EXECUTABLE} -jar ${MICROCHIP_IPECMD}) add_custom_target(restart DEPENDS deploit - COMMAND ${IPECMD} -f${target}.hex -P${MICROCHIP_MCU_MODEL} -TPICD3 -Y + COMMAND ${IPECMD} -f${target}.hex -P${MICROCHIP_MCU_MODEL} -TP${PROGRAMER} -Y VERBATIM ) endfunction()