Skip to content

Commit 3464df8

Browse files
William Kentbinarymaster
William Kent
authored andcommitted
[CMAKE] Search the PATH for the compilers and cache the results
We are deliberately using a macro here instead of REQUIRED parameter because it is available only in CMake 3.18+, so it won't work with CMake version that is being shipped with RosBE. On my dev box the RosBE tools are only in the PATH when needed. Since my IDE inherits the PATH from the system and not from my shell, I needed to be able to run configure.sh with the tools in my PATH and then be able to successfully reconfigure when building from a "regular" command prompt.
1 parent 6c38b25 commit 3464df8

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

toolchain-gcc.cmake

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
11

2+
macro(require_program varname execname)
3+
find_program(${varname} ${execname})
4+
if(NOT ${varname})
5+
message(FATAL_ERROR "${execname} not found")
6+
endif()
7+
endmacro()
8+
29
# pass variables necessary for the toolchain (needed for try_compile)
310
set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES ARCH)
411

@@ -28,15 +35,15 @@ set(CMAKE_SYSTEM_NAME Windows)
2835
set(CMAKE_SYSTEM_PROCESSOR i686)
2936

3037
# Which tools to use
31-
set(CMAKE_C_COMPILER ${MINGW_TOOLCHAIN_PREFIX}gcc${MINGW_TOOLCHAIN_SUFFIX} CACHE FILEPATH "The C Compiler")
32-
set(CMAKE_CXX_COMPILER ${MINGW_TOOLCHAIN_PREFIX}g++${MINGW_TOOLCHAIN_SUFFIX} CACHE FILEPATH "The C++ Compiler")
33-
set(CMAKE_ASM_COMPILER ${MINGW_TOOLCHAIN_PREFIX}gcc${MINGW_TOOLCHAIN_SUFFIX} CACHE FILEPATH "The ASM Compiler")
38+
require_program(CMAKE_C_COMPILER ${MINGW_TOOLCHAIN_PREFIX}gcc${MINGW_TOOLCHAIN_SUFFIX})
39+
require_program(CMAKE_CXX_COMPILER ${MINGW_TOOLCHAIN_PREFIX}g++${MINGW_TOOLCHAIN_SUFFIX})
40+
require_program(CMAKE_ASM_COMPILER ${MINGW_TOOLCHAIN_PREFIX}gcc${MINGW_TOOLCHAIN_SUFFIX})
3441
set(CMAKE_ASM_COMPILER_ID "GNU")
35-
set(CMAKE_MC_COMPILER ${MINGW_TOOLCHAIN_PREFIX}windmc)
36-
set(CMAKE_RC_COMPILER ${MINGW_TOOLCHAIN_PREFIX}windres)
37-
set(CMAKE_DLLTOOL ${MINGW_TOOLCHAIN_PREFIX}dlltool)
42+
require_program(CMAKE_MC_COMPILER ${MINGW_TOOLCHAIN_PREFIX}windmc)
43+
require_program(CMAKE_RC_COMPILER ${MINGW_TOOLCHAIN_PREFIX}windres)
44+
require_program(CMAKE_DLLTOOL ${MINGW_TOOLCHAIN_PREFIX}dlltool)
3845
#set(CMAKE_AR ${MINGW_TOOLCHAIN_PREFIX}gcc-ar${MINGW_TOOLCHAIN_SUFFIX})
39-
set(CMAKE_OBJCOPY ${MINGW_TOOLCHAIN_PREFIX}objcopy)
46+
require_program(CMAKE_OBJCOPY ${MINGW_TOOLCHAIN_PREFIX}objcopy)
4047

4148
set(CMAKE_C_CREATE_STATIC_LIBRARY "<CMAKE_AR> crT <TARGET> <LINK_FLAGS> <OBJECTS>")
4249
set(CMAKE_CXX_CREATE_STATIC_LIBRARY ${CMAKE_C_CREATE_STATIC_LIBRARY})

0 commit comments

Comments
 (0)