Fix musl gcc building biscuit under Linux

master
Jiajie Chen 6 years ago committed by jiegec
parent 091b95fae2
commit 095cfa8e66

@ -9,6 +9,19 @@ aux_source_directory(c/libs LIBS)
include_directories(c/include) include_directories(c/include)
set(EXECUTABLE_OUTPUT_PATH ${ARCH}) set(EXECUTABLE_OUTPUT_PATH ${ARCH})
# Find the kernel release
execute_process(
COMMAND uname -r
OUTPUT_VARIABLE KERNEL_RELEASE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# Find the headers
find_path(KERNEL_HEADERS_DIR
include/linux/user.h
PATHS /usr/lib/modules/${KERNEL_RELEASE}/build
)
# Toolchain # Toolchain
if (${ARCH} STREQUAL i386) if (${ARCH} STREQUAL i386)
if(APPLE) if(APPLE)
@ -18,6 +31,8 @@ if (${ARCH} STREQUAL i386)
elseif (${ARCH} STREQUAL x86_64) elseif (${ARCH} STREQUAL x86_64)
if(APPLE) if(APPLE)
set(PREFIX x86_64-linux-musl-) set(PREFIX x86_64-linux-musl-)
else ()
set(PREFIX musl-)
endif () endif ()
set(CMAKE_C_FLAGS "-m64 -mno-red-zone") set(CMAKE_C_FLAGS "-m64 -mno-red-zone")
elseif (${ARCH} STREQUAL riscv32) elseif (${ARCH} STREQUAL riscv32)
@ -29,10 +44,10 @@ elseif (${ARCH} STREQUAL riscv64)
elseif (${ARCH} STREQUAL aarch64) elseif (${ARCH} STREQUAL aarch64)
if(APPLE) if(APPLE)
set(PREFIX aarch64-none-elf-) set(PREFIX aarch64-none-elf-)
else() else ()
set(PREFIX aarch64-elf-) set(PREFIX aarch64-elf-)
endif () endif ()
else() else ()
message("Unsupported arch: ${ARCH}") message("Unsupported arch: ${ARCH}")
endif () endif ()
set(CMAKE_ASM_COMPILER ${PREFIX}gcc) set(CMAKE_ASM_COMPILER ${PREFIX}gcc)
@ -43,6 +58,10 @@ set(CMAKE_ASM_FLAGS ${CMAKE_C_FLAGS})
set(CMAKE_C_LINK_FLAGS "${LINK_FLAGS} -pthread") # override default value to get rid of '-Wl,-search_paths_first -Wl,-headerpad_max_install_names' set(CMAKE_C_LINK_FLAGS "${LINK_FLAGS} -pthread") # override default value to get rid of '-Wl,-search_paths_first -Wl,-headerpad_max_install_names'
set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS) # override default value to get rid of '-rdynamic' on Linux set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS) # override default value to get rid of '-rdynamic' on Linux
if (KERNEL_HEADERS_DIR)
include_directories(${KERNEL_HEADERS_DIR}/include/uapi)
endif ()
# Execuatble # Execuatble
foreach (PATH ${SRCS}) foreach (PATH ${SRCS})
get_filename_component(NAME ${PATH} NAME_WE) get_filename_component(NAME ${PATH} NAME_WE)

Loading…
Cancel
Save