Skip to content

Commit 1969f03

Browse files
author
Boris Brodski
committed
Check default GCC architecture: 32 or 64 bit
1 parent cba359a commit 1969f03

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ IF (NOT CMAKE_BUILD_TYPE)
1717
ENDIF()
1818

1919
INCLUDE(cmake/FindJavaExtended.cmake)
20+
INCLUDE(cmake/CheckGCC.cmake)
2021
INCLUDE(CTest)
2122

2223

cmake/CheckGCC.cmake

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
IF(NOT GCC_ARCH)
2+
MESSAGE("-- Checking gcc architecture")
3+
SET(GCC_TEST_DIR "${PROJECT_BINARY_DIR}/gcc-test")
4+
FILE(MAKE_DIRECTORY "${GCC_TEST_DIR}")
5+
FILE(WRITE "${GCC_TEST_DIR}/test64.c" "int a[sizeof(void*)-7];\n")
6+
FILE(WRITE "${GCC_TEST_DIR}/test32.c" "int a[sizeof(void*)-3];\n")
7+
EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -c test64.c
8+
WORKING_DIRECTORY ${GCC_TEST_DIR}
9+
RESULT_VARIABLE gcc_test64_result
10+
OUTPUT_VARIABLE gcc_test64_output
11+
ERROR_VARIABLE gcc_test64_err)
12+
EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -c test32.c
13+
WORKING_DIRECTORY ${GCC_TEST_DIR}
14+
RESULT_VARIABLE gcc_test32_result
15+
OUTPUT_VARIABLE gcc_test32_output
16+
ERROR_VARIABLE gcc_test32_err)
17+
MESSAGE("${gcc_test64_result}")
18+
MESSAGE("${gcc_test32_result}")
19+
IF(gcc_test64_result)
20+
IF(gcc_test32_result)
21+
MESSAGE(FATAL_ERROR "${CMAKE_C_COMPILER} can't compile simple c-programs.
22+
Test64 output: ${gcc_test64_err}
23+
Test32 output: ${gcc_test32_err}")
24+
ELSE()
25+
SET(GCC_ARCH "32" CACHE INTERNAL "Javac test passed")
26+
ENDIF()
27+
ELSE()
28+
SET(GCC_ARCH "64" CACHE INTERNAL "Javac test passed")
29+
ENDIF()
30+
MESSAGE("-- Checking gcc architecture - ${GCC_ARCH} bit")
31+
ENDIF()
32+

0 commit comments

Comments
 (0)