1# $FreeBSD$ 2 3SHLIBDIR?= /lib 4 5.include <bsd.own.mk> 6 7ELFTCDIR=${SRCTOP}/contrib/elftoolchain 8SRCDIR= ${ELFTCDIR}/libelf 9 10.PATH: ${SRCDIR} 11 12PACKAGE= runtime 13LIB= elf 14 15SRCS= elf.c \ 16 elf_begin.c \ 17 elf_cntl.c \ 18 elf_end.c elf_errmsg.c elf_errno.c \ 19 elf_data.c \ 20 elf_fill.c \ 21 elf_flag.c \ 22 elf_getarhdr.c \ 23 elf_getarsym.c \ 24 elf_getbase.c \ 25 elf_getident.c \ 26 elf_hash.c \ 27 elf_kind.c \ 28 elf_memory.c \ 29 elf_next.c \ 30 elf_open.c \ 31 elf_rand.c \ 32 elf_rawfile.c \ 33 elf_phnum.c \ 34 elf_shnum.c \ 35 elf_shstrndx.c \ 36 elf_scn.c \ 37 elf_strptr.c \ 38 elf_update.c \ 39 elf_version.c \ 40 gelf_cap.c \ 41 gelf_chdr.c \ 42 gelf_checksum.c \ 43 gelf_dyn.c \ 44 gelf_ehdr.c \ 45 gelf_getclass.c \ 46 gelf_fsize.c \ 47 gelf_mips64el.c \ 48 gelf_move.c \ 49 gelf_phdr.c \ 50 gelf_rel.c \ 51 gelf_rela.c \ 52 gelf_shdr.c \ 53 gelf_sym.c \ 54 gelf_syminfo.c \ 55 gelf_symshndx.c \ 56 gelf_xlate.c \ 57 libelf_align.c \ 58 libelf_allocate.c \ 59 libelf_ar.c \ 60 libelf_ar_util.c \ 61 libelf_chdr.c \ 62 libelf_checksum.c \ 63 libelf_data.c \ 64 libelf_ehdr.c \ 65 libelf_elfmachine.c \ 66 libelf_extended.c \ 67 libelf_memory.c \ 68 libelf_open.c \ 69 libelf_phdr.c \ 70 libelf_shdr.c \ 71 libelf_xlate.c \ 72 ${GENSRCS} 73 74INCS= libelf.h gelf.h 75 76# This same hack is in lib/libdwarf/Makefile and usr.bin/readelf/Makefile 77# We need to link against the correct version of these files. One 78# solution is to include ../../sys in the include path. This causes 79# problems when a header file in sys depends on a file in another 80# part of the tree, e.g. a machine dependent header. 81# 82SRCS+= sys/elf32.h sys/elf64.h sys/elf_common.h 83 84# Allow bootstrapping elftoolchain on Linux: 85.if defined(BOOTSTRAPPING) && ${.MAKE.OS} == "Linux" 86native-elf-format.h: 87 ${ELFTCDIR}/common/native-elf-format > ${.TARGET} || rm ${.TARGET} 88SRCS+= native-elf-format.h 89.endif 90 91GENSRCS= libelf_fsize.c libelf_msize.c libelf_convert.c 92CLEANFILES= ${GENSRCS} 93CLEANDIRS= sys 94CFLAGS+= -I. -I${SRCDIR} -I${ELFTCDIR}/common 95 96sys/elf32.h sys/elf64.h sys/elf_common.h: ${SRCTOP}/sys/${.TARGET} .NOMETA 97 mkdir -p ${.OBJDIR}/sys 98 ln -sf ${.ALLSRC} ${.TARGET} 99 100SHLIB_MAJOR= 2 101 102MAN= elf.3 \ 103 elf_begin.3 \ 104 elf_cntl.3 \ 105 elf_end.3 \ 106 elf_errmsg.3 \ 107 elf_fill.3 \ 108 elf_flagdata.3 \ 109 elf_getarhdr.3 \ 110 elf_getarsym.3 \ 111 elf_getbase.3 \ 112 elf_getdata.3 \ 113 elf_getident.3 \ 114 elf_getscn.3 \ 115 elf_getphdrnum.3 \ 116 elf_getphnum.3 \ 117 elf_getshdrnum.3 \ 118 elf_getshnum.3 \ 119 elf_getshdrstrndx.3 \ 120 elf_getshstrndx.3 \ 121 elf_hash.3 \ 122 elf_kind.3 \ 123 elf_memory.3 \ 124 elf_next.3 \ 125 elf_open.3 \ 126 elf_rawfile.3 \ 127 elf_rand.3 \ 128 elf_strptr.3 \ 129 elf_update.3 \ 130 elf_version.3 \ 131 gelf.3 \ 132 gelf_checksum.3 \ 133 gelf_fsize.3 \ 134 gelf_getcap.3 \ 135 gelf_getchdr.3 \ 136 gelf_getclass.3 \ 137 gelf_getdyn.3 \ 138 gelf_getehdr.3 \ 139 gelf_getmove.3 \ 140 gelf_getphdr.3 \ 141 gelf_getrel.3 \ 142 gelf_getrela.3 \ 143 gelf_getshdr.3 \ 144 gelf_getsym.3 \ 145 gelf_getsyminfo.3 \ 146 gelf_getsymshndx.3 \ 147 gelf_newehdr.3 \ 148 gelf_newphdr.3 \ 149 gelf_update_ehdr.3 \ 150 gelf_xlatetof.3 151 152MLINKS+= \ 153 elf_errmsg.3 elf_errno.3 \ 154 elf_flagdata.3 elf_flagarhdr.3 \ 155 elf_flagdata.3 elf_flagehdr.3 \ 156 elf_flagdata.3 elf_flagelf.3 \ 157 elf_flagdata.3 elf_flagphdr.3 \ 158 elf_flagdata.3 elf_flagscn.3 \ 159 elf_flagdata.3 elf_flagshdr.3 \ 160 elf_getdata.3 elf_newdata.3 \ 161 elf_getdata.3 elf_rawdata.3 \ 162 elf_getscn.3 elf_ndxscn.3 \ 163 elf_getscn.3 elf_newscn.3 \ 164 elf_getscn.3 elf_nextscn.3 \ 165 elf_getshstrndx.3 elf_setshstrndx.3 \ 166 elf_open.3 elf_openmemory.3 \ 167 gelf_getcap.3 gelf_update_cap.3 \ 168 gelf_getdyn.3 gelf_update_dyn.3 \ 169 gelf_getmove.3 gelf_update_move.3 \ 170 gelf_getrel.3 gelf_update_rel.3 \ 171 gelf_getrela.3 gelf_update_rela.3 \ 172 gelf_getsym.3 gelf_update_sym.3 \ 173 gelf_getsyminfo.3 gelf_update_syminfo.3 \ 174 gelf_getsymshndx.3 gelf_update_symshndx.3 \ 175 gelf_update_ehdr.3 gelf_update_phdr.3 \ 176 gelf_update_ehdr.3 gelf_update_shdr.3 \ 177 gelf_xlatetof.3 gelf_xlatetom.3 178 179.for E in 32 64 180MLINKS+= \ 181 gelf_checksum.3 elf${E}_checksum.3 \ 182 gelf_fsize.3 elf${E}_fsize.3 \ 183 gelf_getchdr.3 elf${E}_getchdr.3 \ 184 gelf_getehdr.3 elf${E}_getehdr.3 \ 185 gelf_getphdr.3 elf${E}_getphdr.3 \ 186 gelf_getshdr.3 elf${E}_getshdr.3 \ 187 gelf_newehdr.3 elf${E}_newehdr.3 \ 188 gelf_newphdr.3 elf${E}_newphdr.3 \ 189 gelf_xlatetof.3 elf${E}_xlatetof.3 \ 190 gelf_xlatetof.3 elf${E}_xlatetom.3 191.endfor 192 193VERSION_MAP= ${SRCDIR}/Version.map 194 195libelf_convert.c: elf_types.m4 libelf_convert.m4 196libelf_fsize.c: elf_types.m4 libelf_fsize.m4 197libelf_msize.c: elf_types.m4 libelf_msize.m4 198 199.include <bsd.lib.mk> 200 201# Keep the .SUFFIXES line after the include of bsd.lib.mk 202.SUFFIXES: .m4 .c 203.m4.c: 204 m4 -D SRCDIR=${SRCDIR} ${M4FLAGS} ${.IMPSRC} > ${.TARGET} 205 206