|
|
@@ -21,11 +21,37 @@ IF(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER)
|
|
|
ENDIF($ENV{ASM${ASM_DIALECT}} MATCHES ".+")
|
|
|
|
|
|
# finally list compilers to try
|
|
|
- IF(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT)
|
|
|
- SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST ${CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT})
|
|
|
- ELSE(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT)
|
|
|
- SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}as ${_CMAKE_TOOLCHAIN_PREFIX}gas)
|
|
|
- ENDIF(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT)
|
|
|
+ IF("ASM${ASM_DIALECT}" STREQUAL "ASM") # the generic assembler support
|
|
|
+
|
|
|
+ IF(CMAKE_ASM_COMPILER_INIT)
|
|
|
+ SET(CMAKE_ASM_COMPILER_LIST ${CMAKE_ASM_COMPILER_INIT})
|
|
|
+ ELSE(CMAKE_ASM_COMPILER_INIT)
|
|
|
+
|
|
|
+ IF(CMAKE_C_COMPILER)
|
|
|
+ SET(CMAKE_ASM_COMPILER "${CMAKE_C_COMPILER}" CACHE FILEPATH "The ASM compiler")
|
|
|
+ SET(CMAKE_ASM_COMPILER_ID "${CMAKE_C_COMPILER_ID}")
|
|
|
+ ELSEIF(CMAKE_CXX_COMPILER)
|
|
|
+ SET(CMAKE_ASM_COMPILER "${CMAKE_CXX_COMPILER}" CACHE FILEPATH "The ASM compiler")
|
|
|
+ SET(CMAKE_ASM_COMPILER_ID "${CMAKE_CXX_COMPILER_ID}")
|
|
|
+ ELSE(CMAKE_CXX_COMPILER)
|
|
|
+ # List all default C and CXX compilers
|
|
|
+ SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST ${_CMAKE_TOOLCHAIN_PREFIX}gcc ${_CMAKE_TOOLCHAIN_PREFIX}cc cl bcc xlc
|
|
|
+ ${_CMAKE_TOOLCHAIN_PREFIX}c++ ${_CMAKE_TOOLCHAIN_PREFIX}g++ CC aCC cl bcc xlC)
|
|
|
+ ENDIF(CMAKE_C_COMPILER)
|
|
|
+
|
|
|
+ ENDIF(CMAKE_ASM_COMPILER_INIT)
|
|
|
+
|
|
|
+
|
|
|
+ ELSE("ASM${ASM_DIALECT}" STREQUAL "ASM") # some specific assembler "dialect"
|
|
|
+
|
|
|
+ IF(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT)
|
|
|
+ SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_LIST ${CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT})
|
|
|
+ ELSE(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT)
|
|
|
+ MESSAGE(FATAL_ERROR "CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT must be preset !")
|
|
|
+ ENDIF(CMAKE_ASM${ASM_DIALECT}_COMPILER_INIT)
|
|
|
+
|
|
|
+ ENDIF("ASM${ASM_DIALECT}" STREQUAL "ASM")
|
|
|
+
|
|
|
|
|
|
# Find the compiler.
|
|
|
IF (_CMAKE_USER_CXX_COMPILER_PATH OR _CMAKE_USER_C_COMPILER_PATH)
|
|
|
@@ -63,7 +89,24 @@ IF(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
|
|
|
# Table of per-vendor compiler id flags with expected output.
|
|
|
LIST(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS GNU )
|
|
|
SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_GNU "--version")
|
|
|
- SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_GNU "GNU assembler")
|
|
|
+ SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_GNU "(GNU assembler)|(GCC)|(Free Software Foundation)")
|
|
|
+
|
|
|
+ LIST(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS HP )
|
|
|
+ SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_HP "-V")
|
|
|
+ SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_HP "HP C")
|
|
|
+
|
|
|
+ LIST(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS Intel )
|
|
|
+ SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_Intel "--version")
|
|
|
+ SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_Intel "(ICC)")
|
|
|
+
|
|
|
+ LIST(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS SunPro )
|
|
|
+ SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_SunPro "-V")
|
|
|
+ SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_SunPro "Sun C")
|
|
|
+
|
|
|
+ LIST(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS XL )
|
|
|
+ SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_XL "-qversion")
|
|
|
+ SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_XL "XL C")
|
|
|
+
|
|
|
LIST(APPEND CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDORS TI_DSP )
|
|
|
SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_FLAGS_TI_DSP "-h")
|
|
|
SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID_VENDOR_REGEX_TI_DSP "Texas Instruments")
|
|
|
@@ -71,14 +114,15 @@ IF(NOT CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
|
|
|
INCLUDE(CMakeDetermineCompilerId)
|
|
|
CMAKE_DETERMINE_COMPILER_ID_VENDOR(ASM${ASM_DIALECT})
|
|
|
|
|
|
- IF(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
|
|
|
- MESSAGE(STATUS "The ASM${ASM_DIALECT} compiler identification is ${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}")
|
|
|
- ELSE(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
|
|
|
- MESSAGE(STATUS "The ASM${ASM_DIALECT} compiler identification is unknown")
|
|
|
- ENDIF(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
|
|
|
-
|
|
|
ENDIF()
|
|
|
|
|
|
+IF(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
|
|
|
+ MESSAGE(STATUS "The ASM${ASM_DIALECT} compiler identification is ${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}")
|
|
|
+ELSE(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
|
|
|
+ MESSAGE(STATUS "The ASM${ASM_DIALECT} compiler identification is unknown")
|
|
|
+ENDIF(CMAKE_ASM${ASM_DIALECT}_COMPILER_ID)
|
|
|
+
|
|
|
+
|
|
|
|
|
|
# If we have a gas/as cross compiler, they have usually some prefix, like
|
|
|
# e.g. powerpc-linux-gas, arm-elf-gas or i586-mingw32msvc-gas , optionally
|
|
|
@@ -90,10 +134,25 @@ ENDIF()
|
|
|
IF (NOT _CMAKE_TOOLCHAIN_PREFIX)
|
|
|
GET_FILENAME_COMPONENT(COMPILER_BASENAME "${CMAKE_ASM${ASM_DIALECT}_COMPILER}" NAME)
|
|
|
IF (COMPILER_BASENAME MATCHES "^(.+-)g?as(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
|
|
|
- STRING(REGEX REPLACE "^(.+-)g?as(\\.exe)?$" "\\1" _CMAKE_TOOLCHAIN_PREFIX "${COMPILER_BASENAME}")
|
|
|
+ SET(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
|
|
|
ENDIF (COMPILER_BASENAME MATCHES "^(.+-)g?as(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
|
|
|
ENDIF (NOT _CMAKE_TOOLCHAIN_PREFIX)
|
|
|
|
|
|
+# Now try the C compiler regexp:
|
|
|
+IF (NOT _CMAKE_TOOLCHAIN_PREFIX)
|
|
|
+ IF (COMPILER_BASENAME MATCHES "^(.+-)g?cc(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
|
|
|
+ SET(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
|
|
|
+ ENDIF (COMPILER_BASENAME MATCHES "^(.+-)g?cc(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
|
|
|
+ENDIF (NOT _CMAKE_TOOLCHAIN_PREFIX)
|
|
|
+
|
|
|
+# Finally try the CXX compiler regexp:
|
|
|
+IF (NOT _CMAKE_TOOLCHAIN_PREFIX)
|
|
|
+ IF (COMPILER_BASENAME MATCHES "^(.+-)[gc]\\+\\+(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
|
|
|
+ SET(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
|
|
|
+ ENDIF (COMPILER_BASENAME MATCHES "^(.+-)[gc]\\+\\+(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
|
|
|
+ENDIF (NOT _CMAKE_TOOLCHAIN_PREFIX)
|
|
|
+
|
|
|
+
|
|
|
INCLUDE(CMakeFindBinUtils)
|
|
|
|
|
|
SET(CMAKE_ASM${ASM_DIALECT}_COMPILER_ENV_VAR "ASM${ASM_DIALECT}")
|
|
|
@@ -106,6 +165,7 @@ ENDIF(CMAKE_ASM${ASM_DIALECT}_COMPILER)
|
|
|
|
|
|
|
|
|
SET(_CMAKE_ASM_COMPILER "${CMAKE_ASM${ASM_DIALECT}_COMPILER}")
|
|
|
+SET(_CMAKE_ASM_COMPILER_ID "${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}")
|
|
|
SET(_CMAKE_ASM_COMPILER_ARG1 "${CMAKE_ASM${ASM_DIALECT}_COMPILER_ARG1}")
|
|
|
SET(_CMAKE_ASM_COMPILER_ENV_VAR "${CMAKE_ASM${ASM_DIALECT}_COMPILER_ENV_VAR}")
|
|
|
|