libaribb25/cmake/ElfInterp.cmake
2017-12-19 00:33:09 +09:00

20 lines
811 B
CMake

find_program(OBJCOPY_EXECUTABLE "objcopy")
if(OBJCOPY_EXECUTABLE)
set(ELF_INTERP_BIN ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/elf_interp)
set(ELF_INTERP_SRC ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/elf_interp.c)
set(ELF_INTERP_DAT ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/elf_interp.dat)
file(WRITE ${ELF_INTERP_SRC} "int main(int argc, char **argv) { return 0; }")
execute_process(COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAGS} -o ${ELF_INTERP_BIN} ${ELF_INTERP_SRC})
execute_process(COMMAND ${OBJCOPY_EXECUTABLE} -O binary --only-section=.interp ${ELF_INTERP_BIN} ${ELF_INTERP_DAT})
if(EXISTS ${ELF_INTERP_DAT})
file(READ ${ELF_INTERP_DAT} ELF_INTERP)
string(STRIP ${ELF_INTERP} ELF_INTERP)
endif()
endif()
message(STATUS "ELF Interpreter: ${ELF_INTERP}")