include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../common ) if (CMAKE_SYSTEM_NAME MATCHES "Linux") set(NEF ${CMAKE_SOURCE_DIR}/libelf/native-elf-format.h) endif() set(gensrcs ${CMAKE_SOURCE_DIR}/libelf/libelf_fsize.c ${CMAKE_SOURCE_DIR}/libelf/libelf_msize.c ${CMAKE_SOURCE_DIR}/libelf/libelf_convert.c ${NEF} ) set(libsrcs elf.c elf_begin.c elf_cntl.c elf_end.c elf_errmsg.c elf_errno.c elf_data.c elf_fill.c elf_flag.c elf_getarhdr.c elf_getarsym.c elf_getbase.c elf_getident.c elf_hash.c elf_kind.c elf_memory.c elf_next.c elf_open.c elf_rand.c elf_rawfile.c elf_phnum.c elf_shnum.c elf_shstrndx.c elf_scn.c elf_strptr.c elf_update.c elf_version.c gelf_cap.c gelf_checksum.c gelf_dyn.c gelf_ehdr.c gelf_getclass.c gelf_fsize.c gelf_move.c gelf_phdr.c gelf_rel.c gelf_rela.c gelf_shdr.c gelf_sym.c gelf_syminfo.c gelf_symshndx.c gelf_xlate.c libelf_align.c libelf_allocate.c libelf_ar.c libelf_ar_util.c libelf_checksum.c libelf_data.c libelf_ehdr.c libelf_extended.c libelf_memory.c libelf_open.c libelf_phdr.c libelf_shdr.c libelf_xlate.c ${gensrcs} ) set(man3 elf.3 elf_begin.3 elf_cntl.3 elf_end.3 elf_errmsg.3 elf_fill.3 elf_flagdata.3 elf_getarhdr.3 elf_getarsym.3 elf_getbase.3 elf_getdata.3 elf_getident.3 elf_getscn.3 elf_getphdrnum.3 elf_getphnum.3 elf_getshdrnum.3 elf_getshnum.3 elf_getshdrstrndx.3 elf_getshstrndx.3 elf_hash.3 elf_kind.3 elf_memory.3 elf_next.3 elf_open.3 elf_rawfile.3 elf_rand.3 elf_strptr.3 elf_update.3 elf_version.3 gelf.3 gelf_checksum.3 gelf_fsize.3 gelf_getcap.3 gelf_getclass.3 gelf_getdyn.3 gelf_getehdr.3 gelf_getmove.3 gelf_getphdr.3 gelf_getrel.3 gelf_getrela.3 gelf_getshdr.3 gelf_getsym.3 gelf_getsyminfo.3 gelf_getsymshndx.3 gelf_newehdr.3 gelf_newphdr.3 gelf_update_ehdr.3 gelf_xlatetof.3 ) add_library(elfobj OBJECT ${libsrcs}) set_property(TARGET elfobj PROPERTY POSITION_INDEPENDENT_CODE 1) add_library(elf SHARED $) add_library(elf_pic STATIC $) add_library(elf_static ${libsrcs}) set_target_properties(elf PROPERTIES VERSION 1.0) set_target_properties(elf PROPERTIES SOVERSION 1) set_target_properties(elf PROPERTIES PUBLIC_HEADER libelf.h) macro(m4toc outfilename) add_custom_command( OUTPUT ${CMAKE_SOURCE_DIR}/libelf/${outfilename}.c COMMAND m4 -DSRCDIR=${CMAKE_SOURCE_DIR}/libelf ${CMAKE_SOURCE_DIR}/libelf/${outfilename}.m4 > ${CMAKE_SOURCE_DIR}/libelf/${outfilename}.c DEPENDS ${CMAKE_SOURCE_DIR}/libelf/${outfilename}.m4 COMMENT "Generated ${outfilename}.c" ) set_source_files_properties(${CMAKE_SOURCE_DIR}/lib/${outfilename}.c PROPERTIES GENERATED true) endmacro(m4toc) macro(install_symlink filepath sympath) install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${filepath} ${sympath})") install(CODE "message(\"-- Created symlink: ${sympath} -> ${filepath}\")") endmacro(install_symlink) add_custom_command( OUTPUT ${CMAKE_SOURCE_DIR}/libelf/native-elf-format.h COMMAND ${CMAKE_SOURCE_DIR}/common/native-elf-format > ${CMAKE_SOURCE_DIR}/libelf/native-elf-format.h DEPENDS ${CMAKE_SOURCE_DIR}/common/native-elf-format COMMENT "Generated native-elf-format.h" ) set_source_files_properties(${CMAKE_SOURCE_DIR}/lib/native-elf-format.h PROPERTIES GENERATED true) m4toc(libelf_fsize) m4toc(libelf_msize) m4toc(libelf_convert) install(TARGETS elf LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(TARGETS elf_pic LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libelf_static.a RENAME libelf.a DESTINATION lib) install(FILES gelf.h ../common/elfdefinitions.h DESTINATION include) install(FILES ${man3} DESTINATION share/man/man3) # man page links set(m3dir ${RAVDEST}${CMAKE_INSTALL_MANDIR}/man3) install_symlink(gelf_checksum.3 ${m3dir}/elf32_checksum.3) install_symlink(gelf_checksum.3 ${m3dir}/elf64_checksum.3) install_symlink(gelf_fsize.3 ${m3dir}/elf32_fsize.3) install_symlink(gelf_fsize.3 ${m3dir}/elf64_fsize.3) install_symlink(gelf_getehdr.3 ${m3dir}/elf32_getehdr.3) install_symlink(gelf_getehdr.3 ${m3dir}/elf64_getehdr.3) install_symlink(gelf_getphdr.3 ${m3dir}/elf32_getphdr.3) install_symlink(gelf_getphdr.3 ${m3dir}/elf64_getphdr.3) install_symlink(gelf_getshdr.3 ${m3dir}/elf32_getshdr.3) install_symlink(gelf_getshdr.3 ${m3dir}/elf64_getshdr.3) install_symlink(gelf_newehdr.3 ${m3dir}/elf32_newehdr.3) install_symlink(gelf_newehdr.3 ${m3dir}/elf64_newehdr.3) install_symlink(gelf_newphdr.3 ${m3dir}/elf32_newphdr.3) install_symlink(gelf_newphdr.3 ${m3dir}/elf64_newphdr.3) install_symlink(gelf_xlatetof.3 ${m3dir}/elf32_xlatetof.3) install_symlink(gelf_xlatetof.3 ${m3dir}/elf64_xlatetof.3) install_symlink(gelf_xlatetof.3 ${m3dir}/elf32_xlatetom.3) install_symlink(gelf_xlatetof.3 ${m3dir}/elf64_xlatetom.3) install_symlink(elf_errmsg.3 ${m3dir}/elf_errno.3) install_symlink(elf_flagdata.3 ${m3dir}/elf_flagarhdr.3) install_symlink(elf_flagdata.3 ${m3dir}/elf_flagehdr.3) install_symlink(elf_flagdata.3 ${m3dir}/elf_flagelf.3) install_symlink(elf_flagdata.3 ${m3dir}/elf_flagphdr.3) install_symlink(elf_flagdata.3 ${m3dir}/elf_flagscn.3) install_symlink(elf_flagdata.3 ${m3dir}/elf_flagshdr.3) install_symlink(elf_getdata.3 ${m3dir}/elf_newdata.3) install_symlink(elf_getdata.3 ${m3dir}/elf_rawdata.3) install_symlink(elf_getscn.3 ${m3dir}/elf_ndxscn.3) install_symlink(elf_getscn.3 ${m3dir}/elf_newscn.3) install_symlink(elf_getscn.3 ${m3dir}/elf_nextscn.3) install_symlink(elf_getshstrndx.3 ${m3dir}/elf_setshstrndx.3) install_symlink(elf_open.3 ${m3dir}/elf_openmemory.3) install_symlink(gelf_getcap.3 ${m3dir}/gelf_update_cap.3) install_symlink(gelf_getdyn.3 ${m3dir}/gelf_update_dyn.3) install_symlink(gelf_getmove.3 ${m3dir}/gelf_update_move.3) install_symlink(gelf_getrel.3 ${m3dir}/gelf_update_rel.3) install_symlink(gelf_getrela.3 ${m3dir}/gelf_update_rela.3) install_symlink(gelf_getsym.3 ${m3dir}/gelf_update_sym.3) install_symlink(gelf_getsyminfo.3 ${m3dir}/gelf_update_syminfo.3) install_symlink(gelf_getsymshndx.3 ${m3dir}/gelf_update_symshndx.3) install_symlink(gelf_update_ehdr.3 ${m3dir}/gelf_update_phdr.3) install_symlink(gelf_update_ehdr.3 ${m3dir}/gelf_update_shdr.3) install_symlink(gelf_xlatetof.3 ${m3dir}/gelf_xlatetom.3)