]> granicus.if.org Git - esp-idf/commitdiff
ulp: check assembler version
authorRenz Bagaporo <renz@espressif.com>
Fri, 31 Aug 2018 09:32:24 +0000 (17:32 +0800)
committerRenz Christian Bagaporo <renz@espressif.com>
Tue, 27 Nov 2018 11:25:22 +0000 (19:25 +0800)
components/ulp/cmake/CMakeLists.txt
components/ulp/component_ulp_common.mk
components/ulp/toolchain_ulp_version.mk [new file with mode: 0644]

index c18867e1f9bc6edc57b4cfbf3f70d09fa6518d33..7eeef033e861d9b553fdebb75b0048d91e764fcb 100644 (file)
@@ -3,6 +3,28 @@ cmake_minimum_required(VERSION 3.5)
 include(${IDF_PATH}/tools/cmake/utilities.cmake)
 project(${ULP_APP_NAME} ASM C)
 
+set(version_pattern "[a-z0-9\.-]+")
+
+# Check assembler version
+execute_process(
+    COMMAND ${CMAKE_ASM_COMPILER} --version
+    OUTPUT_VARIABLE as_output
+    ERROR_QUIET)
+
+string(REGEX MATCH "GNU assembler \\(GNU Binutils\\) (${version_pattern})" as_version ${as_output})
+set(as_version ${CMAKE_MATCH_1})
+
+# Check the supported assembler version
+file(STRINGS ${IDF_PATH}/components/ulp/toolchain_ulp_version.mk version_file_contents)
+string(REGEX MATCH "SUPPORTED_ULP_ASSEMBLER_VERSION = (${version_pattern})" as_supported_version ${version_file_contents})
+set(as_supported_version ${CMAKE_MATCH_1})
+
+if(NOT as_version STREQUAL as_supported_version)
+    message(WARNING "WARNING: ULP assembler version ${as_version} is not supported. Expected to see version: \
+                    ${as_supported_version}. Please check ESP-IDF ULP setup instructions and update \
+                    the toolchain, or proceed at your own risk.")
+endif()
+
 set(ULP_MAP_GEN ${IDF_PATH}/components/ulp/esp32ulp_mapgen.py)
 set(ULP_LD_TEMPLATE ${IDF_PATH}/components/ulp/ld/esp32.ulp.ld)
 
@@ -71,7 +93,7 @@ add_custom_command( OUTPUT ${ULP_APP_NAME}.ld ${ULP_APP_NAME}.h
 # ULP files being built.
 add_custom_target(build
                 DEPENDS ${ULP_APP_NAME} ${ULP_APP_NAME}.bin ${ULP_APP_NAME}.sym
-                        ${CMAKE_CURRENT_BINARY_DIR}/${ULP_APP_NAME}.ld 
+                        ${CMAKE_CURRENT_BINARY_DIR}/${ULP_APP_NAME}.ld
                         ${CMAKE_CURRENT_BINARY_DIR}/${ULP_APP_NAME}.h
                 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
 
index e051af078953966d881d3cab6da185914b15feb6..ba566e9df1f4d7ea5ef0733a2d9dca3cc08d9dd2 100644 (file)
@@ -24,6 +24,16 @@ ULP_PREPROCESSOR_ARGS := \
 
 -include $(ULP_DEP)
 
+# Check the assembler version
+include $(IDF_PATH)/components/ulp/toolchain_ulp_version.mk
+ULP_AS_VER := $(shell $(ULP_AS) --version | sed -E -n 's|GNU assembler \(GNU Binutils\) ([a-z0-9\.-]+)|\1|gp')
+
+ifeq (,$(findstring $(ULP_AS_VER), $(SUPPORTED_ULP_ASSEMBLER_VERSION)))
+$(info WARNING: ULP assembler version $(ULP_AS_VER) is not supported.)
+$(info Expected to see version: $(SUPPORTED_ULP_ASSEMBLER_VERSION))
+$(info Please check ESP-IDF ULP setup instructions and update the toolchain, or proceed at your own risk.)
+endif
+
 # Preprocess LD script used to link ULP program
 $(ULP_LD_SCRIPT): $(ULP_LD_TEMPLATE)
        $(summary) CPP $(patsubst $(PWD)/%,%,$(CURDIR))/$@
diff --git a/components/ulp/toolchain_ulp_version.mk b/components/ulp/toolchain_ulp_version.mk
new file mode 100644 (file)
index 0000000..1ca859c
--- /dev/null
@@ -0,0 +1 @@
+SUPPORTED_ULP_ASSEMBLER_VERSION = 2.28.51.20170517
\ No newline at end of file