summaryrefslogtreecommitdiff
path: root/cmake/ps2/cmaketoolchain/CMakeDetermineDSMCompiler.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/ps2/cmaketoolchain/CMakeDetermineDSMCompiler.cmake')
-rw-r--r--cmake/ps2/cmaketoolchain/CMakeDetermineDSMCompiler.cmake87
1 files changed, 87 insertions, 0 deletions
diff --git a/cmake/ps2/cmaketoolchain/CMakeDetermineDSMCompiler.cmake b/cmake/ps2/cmaketoolchain/CMakeDetermineDSMCompiler.cmake
new file mode 100644
index 0000000..d3bda8b
--- /dev/null
+++ b/cmake/ps2/cmaketoolchain/CMakeDetermineDSMCompiler.cmake
@@ -0,0 +1,87 @@
+include(${CMAKE_ROOT}/Modules/CMakeDetermineCompiler.cmake)
+
+if (NOT CMAKE_DSM_COMPILER)
+ message(FATAL_ERROR "Need CMAKE_DSM_COMPILER set")
+endif()
+
+_cmake_find_compiler_path(DSM)
+mark_as_advanced(CMAKE_DSM_COMPILER)
+
+if (NOT CMAKE_DSM_COMPILER_ID)
+ # Table of per-vendor compiler id flags with expected output.
+ list(APPEND CMAKE_DSM_COMPILER_ID_VENDORS GNU )
+ set(CMAKE_DSM_COMPILER_ID_VENDOR_FLAGS_GNU "--version")
+ set(CMAKE_DSM_COMPILER_ID_VENDOR_REGEX_GNU "(GNU assembler)|(GCC)|(Free Software Foundation)")
+
+ include(CMakeDetermineCompilerId)
+ cmake_determine_compiler_id_vendor(DSM "")
+
+endif()
+
+if (NOT _CMAKE_TOOLCHAIN_LOCATION)
+ get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_DSM_COMPILER}" PATH)
+endif()
+
+if (CMAKE_DSM_COMPILER_ID)
+ if (CMAKE_DSM_COMPILER_VERSION)
+ set(_version " ${CMAKE_DSM_COMPILER_VERSION}")
+ else()
+ set(_version "")
+ endif()
+ message(STATUS "The DSM compiler identification is ${CMAKE_DSM_COMPILER_ID}${_version}")
+ unset(_version)
+else()
+ message(STATUS "The DSM compiler identification is unknown")
+endif()
+
+if (NOT _CMAKE_TOOLCHAIN_PREFIX)
+ get_filename_component(COMPILER_BASENAME "${CMAKE_DSM_COMPILER}" NAME)
+ if (COMPILER_BASENAME MATCHES "^(.+1)g?as(-[0-9]+\\.[0-9]+\\.[0-9]+)?(\\.exe)?$")
+ set(_CMAKE_TOOLCHAIN_PREFIX ${CMAKE_MATCH_1})
+ endif()
+
+endif()
+
+set(_CMAKE_PROCESSING_LANGUAGE "DSM")
+find_program(CMAKE_DSM_COMPILER_AR NAMES ${_CMAKE_TOOLCHAIN_PREFIX}ar HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
+find_program(CMAKE_DSM_COMPILER_RANLIB NAMES ${_CMAKE_TOOLCHAIN_PREFIX}ranlib HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
+find_program(CMAKE_DSM_COMPILER_STRIP NAMES ${_CMAKE_TOOLCHAIN_PREFIX}strip HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
+find_program(CMAKE_DSM_COMPILER_NM NAMES ${_CMAKE_TOOLCHAIN_PREFIX}nm HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
+find_program(CMAKE_DSM_COMPILER_OBJDUMP NAMES ${_CMAKE_TOOLCHAIN_PREFIX}objdump HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
+find_program(CMAKE_DSM_COMPILER_OBJCOPY NAMES ${_CMAKE_TOOLCHAIN_PREFIX}objcopy HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
+
+unset(_CMAKE_PROCESSING_LANGUAGE)
+
+set(CMAKE_DSM_COMPILER_ENV_VAR "DSM")
+
+if (CMAKE_DSM_COMPILER)
+ message(STATUS "Found DSM assembler: ${CMAKE_DSM_COMPILER}")
+else()
+ message(STATUS "Didn't find assembler")
+endif()
+
+foreach(_var
+ COMPILER
+ COMPILER_ID
+ COMPILER_ARG1
+ COMPILER_ENV_VAR
+ COMPILER_AR
+ COMPILER_RANLIB
+ COMPILER_VERSION
+ )
+ set(_CMAKE_DSM_${_var} "${CMAKE_DSM_${_var}}")
+endforeach()
+
+configure_file("${CMAKE_CURRENT_LIST_DIR}/CMakeDSMCompiler.cmake.in"
+ "${CMAKE_PLATFORM_INFO_DIR}/CMakeDSMCompiler.cmake" @ONLY)
+
+foreach(_var
+ COMPILER
+ COMPILER_ID
+ COMPILER_ARG1
+ COMPILER_ENV_VAR
+ COMPILER_AR
+ COMPILER_VERSION
+ )
+ unset(_CMAKE_DSM_${_var})
+endforeach()