Skip to content

Commit c009405

Browse files
committed
Additional linux triplets added
1 parent 0079408 commit c009405

File tree

3 files changed

+95
-0
lines changed

3 files changed

+95
-0
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
if(NOT _VCPKG_LINUX_TOOLCHAIN)
2+
set(_VCPKG_LINUX_TOOLCHAIN 1)
3+
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
4+
set(CMAKE_CROSSCOMPILING OFF CACHE BOOL "")
5+
endif()
6+
set(CMAKE_SYSTEM_NAME Linux CACHE STRING "")
7+
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
8+
set(CMAKE_SYSTEM_PROCESSOR x86_64 CACHE STRING "")
9+
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
10+
set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "")
11+
string(APPEND VCPKG_C_FLAGS " -m32")
12+
string(APPEND VCPKG_CXX_FLAGS " -m32")
13+
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
14+
set(CMAKE_SYSTEM_PROCESSOR armv7l CACHE STRING "")
15+
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64")
16+
if(NOT DEFINED CMAKE_CXX_COMPILER)
17+
set(CMAKE_CXX_COMPILER "arm-linux-gnueabihf-g++")
18+
endif()
19+
if(NOT DEFINED CMAKE_C_COMPILER)
20+
set(CMAKE_C_COMPILER "arm-linux-gnueabihf-gcc")
21+
endif()
22+
message(STATUS "Cross compiling arm on host x86_64, use cross compiler: ${CMAKE_CXX_COMPILER}/${CMAKE_C_COMPILER}")
23+
endif()
24+
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
25+
set(CMAKE_SYSTEM_PROCESSOR aarch64 CACHE STRING "")
26+
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64")
27+
if(NOT DEFINED CMAKE_CXX_COMPILER)
28+
set(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++")
29+
endif()
30+
if(NOT DEFINED CMAKE_C_COMPILER)
31+
set(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc")
32+
endif()
33+
message(STATUS "Cross compiling arm64 on host x86_64, use cross compiler: ${CMAKE_CXX_COMPILER}/${CMAKE_C_COMPILER}")
34+
endif()
35+
endif()
36+
37+
set(HOST x86_64-unknown-linux-gnu CACHE STRING "")
38+
set(CROSS /tools/toolchains/${HOST}/bin/${HOST}-)
39+
40+
set(CMAKE_C_COMPILER ${CROSS}gcc CACHE FILEPATH "")
41+
set(CMAKE_ASM_COMPILER ${CROSS}gcc CACHE FILEPATH "")
42+
set(CMAKE_CXX_COMPILER ${CROSS}g++ CACHE FILEPATH "")
43+
set(CMAKE_Fortran_COMPILER ${CROSS}gfortran CACHE FILEPATH "")
44+
set(CMAKE_RANLIB ${CROSS}ranlib CACHE FILEPATH "")
45+
set(CMAKE_STRIP ${CROSS}strip CACHE FILEPATH "")
46+
set(CMAKE_NM ${CROSS}gcc-nm CACHE FILEPATH "")
47+
set(CMAKE_AR ${CROSS}gcc-ar CACHE FILEPATH "")
48+
set(CMAKE_RANLIB ${CROSS}gcc-ranlib CACHE FILEPATH "")
49+
set(CMAKE_OBJDUMP ${CROSS}objdump CACHE FILEPATH "")
50+
set(CMAKE_SYSROOT /tools/toolchains/${HOST}/${HOST}/sysroot CACHE PATH "")
51+
set(CMAKE_C_VISIBILITY_PRESET hidden)
52+
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
53+
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
54+
55+
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY CACHE STRING "")
56+
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY CACHE STRING "")
57+
58+
get_property( _CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE )
59+
if(NOT _CMAKE_IN_TRY_COMPILE)
60+
string(APPEND CMAKE_C_FLAGS_INIT " -fPIC ${VCPKG_C_FLAGS} ")
61+
string(APPEND CMAKE_CXX_FLAGS_INIT " -fPIC ${VCPKG_CXX_FLAGS} ")
62+
string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " ${VCPKG_C_FLAGS_DEBUG} ")
63+
string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " ${VCPKG_CXX_FLAGS_DEBUG} ")
64+
string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " ${VCPKG_C_FLAGS_RELEASE} ")
65+
string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " ${VCPKG_CXX_FLAGS_RELEASE} ")
66+
67+
string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ")
68+
string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ")
69+
if(VCPKG_CRT_LINKAGE STREQUAL "static")
70+
string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT "-static ")
71+
string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT "-static ")
72+
endif()
73+
string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ")
74+
string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ")
75+
string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ")
76+
string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ")
77+
endif()
78+
endif()
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
set(VCPKG_TARGET_ARCHITECTURE x64)
2+
set(VCPKG_CRT_LINKAGE dynamic)
3+
set(VCPKG_LIBRARY_LINKAGE static)
4+
set(VCPKG_CMAKE_SYSTEM_NAME Linux)
5+
6+
set(LINKER_EXECUTABLE ld.gold)
7+
set(VCPKG_LINKER_FLAGS "-static-libstdc++ -static-libgcc -fuse-ld=gold")
8+
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${CMAKE_CURRENT_LIST_DIR}/toolchain-linux-cluster.cmake")
9+
10+
# make sure the static openmp library is used
11+
set(HOST x86_64-unknown-linux-gnu)
12+
set(OpenMP_gomp_LIBRARY "/tools/toolchains/${HOST}/${HOST}/lib64/libgomp.a")
13+
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
set(VCPKG_TARGET_ARCHITECTURE x64)
2+
set(VCPKG_CRT_LINKAGE static)
3+
set(VCPKG_LIBRARY_LINKAGE static)
4+
set(VCPKG_CMAKE_SYSTEM_NAME Linux)

0 commit comments

Comments
 (0)