Haiku: Enable CMake builtin ELF editor
Co-Author: Brad King <brad.king@kitware.com>
This commit is contained in:
parent
0f79dab48b
commit
84603d804c
|
@ -18,6 +18,23 @@ else()
|
||||||
endif()
|
endif()
|
||||||
if(HAVE_ELF_H)
|
if(HAVE_ELF_H)
|
||||||
set(CMAKE_USE_ELF_PARSER 1)
|
set(CMAKE_USE_ELF_PARSER 1)
|
||||||
|
elseif(HAIKU)
|
||||||
|
# On Haiku, we need to include elf32.h from the private headers
|
||||||
|
set(CMake_HAIKU_INCLUDE_DIRS
|
||||||
|
/boot/system/develop/headers/private/system
|
||||||
|
/boot/system/develop/headers/private/system/arch/x86
|
||||||
|
)
|
||||||
|
|
||||||
|
set(CMAKE_REQUIRED_INCLUDES ${CMake_HAIKU_INCLUDE_DIRS})
|
||||||
|
CHECK_INCLUDE_FILE("elf32.h" HAVE_ELF32_H)
|
||||||
|
unset(CMAKE_REQUIRED_INCLUDES)
|
||||||
|
|
||||||
|
if(HAVE_ELF32_H)
|
||||||
|
set(CMAKE_USE_ELF_PARSER 1)
|
||||||
|
else()
|
||||||
|
unset(CMake_HAIKU_INCLUDE_DIRS)
|
||||||
|
set(CMAKE_USE_ELF_PARSER)
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
set(CMAKE_USE_ELF_PARSER)
|
set(CMAKE_USE_ELF_PARSER)
|
||||||
endif()
|
endif()
|
||||||
|
@ -57,6 +74,7 @@ include_directories(
|
||||||
${CMAKE_EXPAT_INCLUDES}
|
${CMAKE_EXPAT_INCLUDES}
|
||||||
${CMAKE_TAR_INCLUDES}
|
${CMAKE_TAR_INCLUDES}
|
||||||
${CMAKE_COMPRESS_INCLUDES}
|
${CMAKE_COMPRESS_INCLUDES}
|
||||||
|
${CMake_HAIKU_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
|
|
||||||
# let cmake know it is supposed to use it
|
# let cmake know it is supposed to use it
|
||||||
|
|
|
@ -23,6 +23,26 @@
|
||||||
#if defined(__OpenBSD__)
|
#if defined(__OpenBSD__)
|
||||||
# include <stdint.h>
|
# include <stdint.h>
|
||||||
# include <elf_abi.h>
|
# include <elf_abi.h>
|
||||||
|
#elif defined(__HAIKU__)
|
||||||
|
# include <elf32.h>
|
||||||
|
# include <elf64.h>
|
||||||
|
typedef struct Elf32_Ehdr Elf32_Ehdr;
|
||||||
|
typedef struct Elf32_Shdr Elf32_Shdr;
|
||||||
|
typedef struct Elf32_Sym Elf32_Sym;
|
||||||
|
typedef struct Elf32_Rel Elf32_Rel;
|
||||||
|
typedef struct Elf32_Rela Elf32_Rela;
|
||||||
|
# define ELFMAG0 0x7F
|
||||||
|
# define ELFMAG1 'E'
|
||||||
|
# define ELFMAG2 'L'
|
||||||
|
# define ELFMAG3 'F'
|
||||||
|
# define ET_NONE 0
|
||||||
|
# define ET_REL 1
|
||||||
|
# define ET_EXEC 2
|
||||||
|
# define ET_DYN 3
|
||||||
|
# define ET_CORE 4
|
||||||
|
# define EM_386 3
|
||||||
|
# define EM_SPARC 2
|
||||||
|
# define EM_PPC 20
|
||||||
#else
|
#else
|
||||||
# include <elf.h>
|
# include <elf.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue