Blame libdwarf/CMakeLists.txt

Packit cdaae3
include(configure.cmake)
Packit cdaae3
Packit cdaae3
set_source_group(SOURCES "Source Files" dwarf_abbrev.c dwarf_alloc.c dwarf_arange.c dwarf_die_deliv.c dwarf_dnames.c dwarf_dsc.c dwarf_elf_access.c dwarf_error.c 
Packit cdaae3
dwarf_form.c dwarf_frame.c dwarf_frame2.c dwarf_frame3.c dwarf_funcs.c dwarf_gdbindex.c dwarf_global.c dwarf_groups.c dwarf_harmless.c dwarf_init_finish.c dwarf_leb.c 
Packit cdaae3
dwarf_line.c dwarf_loc.c dwarf_macro.c dwarf_macro5.c dwarf_original_elf_init.c dwarf_pubtypes.c dwarf_query.c dwarf_ranges.c dwarf_string.c dwarf_tied.c 
Packit cdaae3
dwarf_tsearchhash.c dwarf_types.c dwarf_util.c dwarf_vars.c dwarf_weaks.c dwarf_xu_index.c dwarf_print_lines.c malloc_check.c pro_alloc.c pro_arange.c 
Packit cdaae3
pro_die.c pro_encode_nm.c pro_error.c pro_expr.c pro_finish.c pro_forms.c pro_funcs.c pro_frame.c pro_init.c pro_line.c pro_reloc.c pro_reloc_stream.c 
Packit cdaae3
pro_reloc_symbolic.c pro_pubnames.c pro_section.c pro_types.c pro_vars.c pro_macinfo.c pro_weaks.c)
Packit cdaae3
Packit cdaae3
set_source_group(HEADERS "Header Files" dwarf.h dwarf_abbrev.h dwarf_alloc.h dwarf_arange.h dwarf_base_types.h dwarf_die_deliv.h dwarf_dnames.h dwarf_dsc.h 
Packit cdaae3
dwarf_elf_access.h dwarf_error.h dwarf_frame.h dwarf_funcs.h dwarf_gdbindex.h dwarf_global.h dwarf_harmless.h dwarf_incl.h dwarf_line.h dwarf_loc.h 
Packit cdaae3
dwarf_macro.h dwarf_macro5.h dwarf_opaque.h dwarf_reloc_arm.h dwarf_reloc_mips.h dwarf_reloc_ppc.h dwarf_reloc_ppc64.h dwarf_reloc_x86_64.h dwarf_tsearch.h 
Packit cdaae3
dwarf_types.h dwarf_util.h dwarf_vars.h dwarf_weaks.h dwarf_xu_index.h dwgetopt.h libdwarfdefs.h malloc_check.h pro_alloc.h pro_arange.h pro_die.h 
Packit cdaae3
pro_encode_nm.h pro_error.h pro_expr.h pro_frame.h pro_incl.h pro_line.h pro_macinfo.h pro_opaque.h pro_reloc.h pro_reloc_stream.h pro_reloc_symbolic.h 
Packit cdaae3
pro_section.h pro_types.h pro_util.h)
Packit cdaae3
Packit cdaae3
set_source_group(GENNAMES_SOURCES "Source Files" gennames.c dwgetopt.c dwarf.h)
Packit cdaae3
Packit cdaae3
set_source_group(CONFIGURATION_FILES "Configuration Files" configure.cmake config.h.in.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
Packit cdaae3
Packit cdaae3
add_executable(gennames ${GENNAMES_SOURCES})
Packit cdaae3
Packit cdaae3
set_folder(gennames libdwarf/generators)
Packit cdaae3
Packit cdaae3
msvc_posix(gennames)
Packit cdaae3
Packit cdaae3
set(GENNAMES_OUTPUT dwarf_names.c dwarf_names.h dwarf_names_enum.h dwarf_names_new.h)
Packit cdaae3
Packit cdaae3
add_custom_command(OUTPUT ${GENNAMES_OUTPUT}
Packit cdaae3
    COMMAND gennames ${dwarf_namestable} -i ${CMAKE_CURRENT_SOURCE_DIR} -o .
Packit cdaae3
    DEPENDS gennames libdwarf.h.in)
Packit cdaae3
	
Packit cdaae3
list(LENGTH DWARF_TARGETS targetCount)
Packit cdaae3
math(EXPR targetCount "${targetCount} - 1")
Packit cdaae3
foreach(i RANGE ${targetCount})
Packit cdaae3
	list(GET DWARF_TARGETS ${i} target)
Packit cdaae3
	list(GET DWARF_TYPES ${i} type)
Packit cdaae3
	add_library(${target} ${type} ${SOURCES} ${HEADERS} ${GENNAMES_OUTPUT} ${CONFIGURATION_FILES})
Packit cdaae3
Packit cdaae3
	set_folder(${target} libdwarf)
Packit cdaae3
Packit cdaae3
	target_include_directories(${target} PUBLIC ${LIBELF_INCLUDE_DIRS})
Packit cdaae3
Packit cdaae3
	msvc_posix(${target})
Packit cdaae3
Packit cdaae3
	target_link_libraries(${target} PUBLIC ${LIBELF_LIBRARIES})
Packit cdaae3
	
Packit cdaae3
	set_target_properties(${target} PROPERTIES OUTPUT_NAME dwarf)
Packit cdaae3
Packit cdaae3
	set(SUFFIX $<$<EQUAL:${CMAKE_SIZEOF_VOID_P},8>:64>)
Packit cdaae3
	set(LIBDIR lib${SUFFIX})
Packit cdaae3
	set(BINDIR bin${SUFFIX})
Packit cdaae3
Packit cdaae3
	install(TARGETS ${target}
Packit cdaae3
		RUNTIME DESTINATION ${BINDIR}		
Packit cdaae3
		LIBRARY DESTINATION ${LIBDIR}
Packit cdaae3
		ARCHIVE DESTINATION ${LIBDIR})
Packit cdaae3
endforeach()
Packit cdaae3
Packit cdaae3
if(UNIX AND shared)
Packit cdaae3
	target_link_libraries(dwarf-shared PUBLIC z)
Packit cdaae3
endif()
Packit cdaae3
		
Packit cdaae3
if(UNIX)
Packit cdaae3
Packit cdaae3
#
Packit cdaae3
# The following are very SGI-centric
Packit cdaae3
# psroff is just a troff formatter.
Packit cdaae3
# the .mm files are in ATT/USL/USG mm form.
Packit cdaae3
# Calling it pdfbld or bldpdf is arbitrary, so allow both.
Packit cdaae3
Packit cdaae3
#Oriented to using gsroff now.
Packit cdaae3
set(TROFF /usr/bin/groff)
Packit cdaae3
#set(TROFFDEV "-T ps")
Packit cdaae3
set(TROFFDEV)
Packit cdaae3
set(PSTOPDF /usr/bin/ps2pdf)
Packit cdaae3
set(BUILD_BASE .)
Packit cdaae3
# pr expands tabs to spaces: this avoids problems with tab
Packit cdaae3
# interpretation
Packit cdaae3
Packit cdaae3
# The warning about 'cant break line' is a too-long line used
Packit cdaae3
# in the table of contents.
Packit cdaae3
# All pr does here is change each tab to spaces.
Packit cdaae3
# Ignore the warning (and those like it).
Packit cdaae3
add_custom_command(OUTPUT libdwarf2.1.pdf
Packit cdaae3
    COMMAND -pr -t -e ${BUILD_BASE}/libdwarf2.1.mm | tbl | ${TROFF} ${TROFFDEV} -mm >libdwarf2.1.ps
Packit cdaae3
    COMMAND ${PSTOPDF} libdwarf2.1.ps ${CMAKE_CURRENT_BINARY_DIR}/libdwarf2.1.pdf
Packit cdaae3
    DEPENDS ${BUILD_BASE}/libdwarf2.1.mm)
Packit cdaae3
    
Packit cdaae3
add_custom_command(OUTPUT libdwarf2p.1.pdf
Packit cdaae3
    COMMAND -pr -t -e ${BUILD_BASE}/libdwarf2p.1.mm | tbl | ${TROFF} ${TROFFDEV} -mm >libdwarf2p.1.ps
Packit cdaae3
    COMMAND ${PSTOPDF} libdwarf2p.1.ps ${CMAKE_CURRENT_BINARY_DIR}/libdwarf2p.1.pdf
Packit cdaae3
    DEPENDS ${BUILD_BASE}/libdwarf2p.1.mm)
Packit cdaae3
    
Packit cdaae3
add_custom_command(OUTPUT mips_extensions.pdf
Packit cdaae3
    COMMAND -pr ${TROFFDEV} -e ${BUILD_BASE}/mips_extensions.mm | tbl | ${TROFF} ${TROFFDEV} -mm >mips_extensions.ps
Packit cdaae3
    COMMAND ${PSTOPDF} mips_extensions.ps ${CMAKE_CURRENT_BINARY_DIR}/mips_extensions.pdf
Packit cdaae3
    DEPENDS ${BUILD_BASE}/mips_extensions.mm)
Packit cdaae3
    
Packit cdaae3
add_custom_target(pdfbld
Packit cdaae3
    DEPENDS libdwarf2.1.pdf libdwarf2p.1.pdf mips_extensions.pdf)
Packit cdaae3
Packit cdaae3
set_folder(pdfbld libdwarf/documentation)
Packit cdaae3
    
Packit cdaae3
add_custom_target(bldpdf
Packit cdaae3
    DEPENDS pdfbld)
Packit cdaae3
Packit cdaae3
set_folder(bldpdf libdwarf/documentation)
Packit cdaae3
    
Packit cdaae3
add_custom_target(docbld
Packit cdaae3
    DEPENDS pdfbld)
Packit cdaae3
Packit cdaae3
set_folder(docbld libdwarf/documentation)
Packit cdaae3
Packit cdaae3
endif()
Packit cdaae3