diff --git a/repos/libports/lib/symbols/freetype b/repos/libports/lib/symbols/freetype
new file mode 100644
index 0000000000..804f3be0f2
--- /dev/null
+++ b/repos/libports/lib/symbols/freetype
@@ -0,0 +1,334 @@
+FTC_CMapCache_Lookup T
+FTC_CMapCache_New T
+FTC_ImageCache_Lookup T
+FTC_ImageCache_LookupScaler T
+FTC_ImageCache_New T
+FTC_Image_Cache_Lookup T
+FTC_Image_Cache_New T
+FTC_Manager_Done T
+FTC_Manager_LookupFace T
+FTC_Manager_LookupSize T
+FTC_Manager_Lookup_Face T
+FTC_Manager_Lookup_Size T
+FTC_Manager_New T
+FTC_Manager_RemoveFaceID T
+FTC_Manager_Reset T
+FTC_Node_Unref T
+FTC_SBitCache_Lookup T
+FTC_SBitCache_LookupScaler T
+FTC_SBitCache_New T
+FTC_SBit_Cache_Lookup T
+FTC_SBit_Cache_New T
+FT_Activate_Size T
+FT_Add_Default_Modules T
+FT_Add_Module T
+FT_Alloc T
+FT_Angle_Diff T
+FT_Atan2 T
+FT_Attach_File T
+FT_Attach_Stream T
+FT_Bitmap_Convert T
+FT_Bitmap_Copy T
+FT_Bitmap_Done T
+FT_Bitmap_Embolden T
+FT_Bitmap_New T
+FT_CMap_Done T
+FT_CMap_New T
+FT_CeilFix T
+FT_ClassicKern_Free T
+FT_ClassicKern_Validate T
+FT_Cos T
+FT_DivFix T
+FT_Done_Face T
+FT_Done_FreeType T
+FT_Done_Glyph T
+FT_Done_GlyphSlot T
+FT_Done_Library T
+FT_Done_Memory T
+FT_Done_Size T
+FT_Face_CheckTrueTypePatents T
+FT_Face_GetCharVariantIndex T
+FT_Face_GetCharVariantIsDefault T
+FT_Face_GetCharsOfVariant T
+FT_Face_GetVariantSelectors T
+FT_Face_GetVariantsOfChar T
+FT_Face_SetUnpatentedHinting T
+FT_FloorFix T
+FT_Free T
+FT_Get_Advance T
+FT_Get_Advances T
+FT_Get_BDF_Charset_ID T
+FT_Get_BDF_Property T
+FT_Get_CID_From_Glyph_Index T
+FT_Get_CID_Is_Internally_CID_Keyed T
+FT_Get_CID_Registry_Ordering_Supplement T
+FT_Get_CMap_Format T
+FT_Get_CMap_Language_ID T
+FT_Get_Char_Index T
+FT_Get_Charmap_Index T
+FT_Get_FSType_Flags T
+FT_Get_First_Char T
+FT_Get_Gasp T
+FT_Get_Glyph T
+FT_Get_Glyph_Name T
+FT_Get_Kerning T
+FT_Get_MM_Var T
+FT_Get_Module T
+FT_Get_Module_Interface T
+FT_Get_Multi_Master T
+FT_Get_Name_Index T
+FT_Get_Next_Char T
+FT_Get_PFR_Advance T
+FT_Get_PFR_Kerning T
+FT_Get_PFR_Metrics T
+FT_Get_PS_Font_Info T
+FT_Get_PS_Font_Private T
+FT_Get_Postscript_Name T
+FT_Get_Renderer T
+FT_Get_Sfnt_Name T
+FT_Get_Sfnt_Name_Count T
+FT_Get_Sfnt_Table T
+FT_Get_SubGlyph_Info T
+FT_Get_Track_Kerning T
+FT_Get_TrueType_Engine_Type T
+FT_Get_WinFNT_Header T
+FT_Get_X11_Font_Format T
+FT_GlyphLoader_Add T
+FT_GlyphLoader_CheckPoints T
+FT_GlyphLoader_CheckSubGlyphs T
+FT_GlyphLoader_CopyPoints T
+FT_GlyphLoader_CreateExtra T
+FT_GlyphLoader_Done T
+FT_GlyphLoader_New T
+FT_GlyphLoader_Prepare T
+FT_GlyphLoader_Reset T
+FT_GlyphLoader_Rewind T
+FT_GlyphSlot_Embolden T
+FT_GlyphSlot_Oblique T
+FT_GlyphSlot_Own_Bitmap T
+FT_Glyph_Copy T
+FT_Glyph_Get_CBox T
+FT_Glyph_Stroke T
+FT_Glyph_StrokeBorder T
+FT_Glyph_To_Bitmap T
+FT_Glyph_Transform T
+FT_Has_PS_Glyph_Names T
+FT_Init_FreeType T
+FT_Library_SetLcdFilter T
+FT_Library_Version T
+FT_List_Add T
+FT_List_Finalize T
+FT_List_Find T
+FT_List_Insert T
+FT_List_Iterate T
+FT_List_Remove T
+FT_List_Up T
+FT_Load_Char T
+FT_Load_Glyph T
+FT_Load_Sfnt_Table T
+FT_Lookup_Renderer T
+FT_Match_Size T
+FT_Matrix_Invert T
+FT_Matrix_Multiply T
+FT_Matrix_Multiply_Scaled T
+FT_MulDiv T
+FT_MulDiv_No_Round T
+FT_MulFix T
+FT_New_Face T
+FT_New_GlyphSlot T
+FT_New_Library T
+FT_New_Memory T
+FT_New_Memory_Face T
+FT_New_Size T
+FT_OpenType_Free T
+FT_OpenType_Validate T
+FT_Open_Face T
+FT_Outline_Check T
+FT_Outline_Copy T
+FT_Outline_Decompose T
+FT_Outline_Done T
+FT_Outline_Done_Internal T
+FT_Outline_Embolden T
+FT_Outline_GetInsideBorder T
+FT_Outline_GetOutsideBorder T
+FT_Outline_Get_BBox T
+FT_Outline_Get_Bitmap T
+FT_Outline_Get_CBox T
+FT_Outline_Get_Orientation T
+FT_Outline_New T
+FT_Outline_New_Internal T
+FT_Outline_Render T
+FT_Outline_Reverse T
+FT_Outline_Transform T
+FT_Outline_Translate T
+FT_QAlloc T
+FT_QRealloc T
+FT_Raccess_Get_DataOffsets T
+FT_Raccess_Get_HeaderInfo T
+FT_Raccess_Guess T
+FT_Realloc T
+FT_Remove_Module T
+FT_Render_Glyph T
+FT_Render_Glyph_Internal T
+FT_Request_Metrics T
+FT_Request_Size T
+FT_RoundFix T
+FT_Select_Charmap T
+FT_Select_Metrics T
+FT_Select_Size T
+FT_Set_Char_Size T
+FT_Set_Charmap T
+FT_Set_Debug_Hook T
+FT_Set_MM_Blend_Coordinates T
+FT_Set_MM_Design_Coordinates T
+FT_Set_Pixel_Sizes T
+FT_Set_Renderer T
+FT_Set_Transform T
+FT_Set_Var_Blend_Coordinates T
+FT_Set_Var_Design_Coordinates T
+FT_Sfnt_Table_Info T
+FT_Sin T
+FT_Sqrt32 T
+FT_SqrtFixed T
+FT_Stream_Close T
+FT_Stream_EnterFrame T
+FT_Stream_ExitFrame T
+FT_Stream_ExtractFrame T
+FT_Stream_Free T
+FT_Stream_GetChar T
+FT_Stream_GetLong T
+FT_Stream_GetLongLE T
+FT_Stream_GetOffset T
+FT_Stream_GetShort T
+FT_Stream_GetShortLE T
+FT_Stream_New T
+FT_Stream_Open T
+FT_Stream_OpenGzip T
+FT_Stream_OpenLZW T
+FT_Stream_OpenMemory T
+FT_Stream_Pos T
+FT_Stream_Read T
+FT_Stream_ReadAt T
+FT_Stream_ReadChar T
+FT_Stream_ReadFields T
+FT_Stream_ReadLong T
+FT_Stream_ReadLongLE T
+FT_Stream_ReadOffset T
+FT_Stream_ReadShort T
+FT_Stream_ReadShortLE T
+FT_Stream_ReleaseFrame T
+FT_Stream_Seek T
+FT_Stream_Skip T
+FT_Stream_TryRead T
+FT_Stroker_BeginSubPath T
+FT_Stroker_ConicTo T
+FT_Stroker_CubicTo T
+FT_Stroker_Done T
+FT_Stroker_EndSubPath T
+FT_Stroker_Export T
+FT_Stroker_ExportBorder T
+FT_Stroker_GetBorderCounts T
+FT_Stroker_GetCounts T
+FT_Stroker_LineTo T
+FT_Stroker_New T
+FT_Stroker_ParseOutline T
+FT_Stroker_Rewind T
+FT_Stroker_Set T
+FT_Tan T
+FT_Trace_Get_Count T
+FT_Trace_Get_Name T
+FT_TrueTypeGX_Free T
+FT_TrueTypeGX_Validate T
+FT_Vector_From_Polar T
+FT_Vector_Length T
+FT_Vector_Polarize T
+FT_Vector_Rotate T
+FT_Vector_Transform T
+FT_Vector_Transform_Scaled T
+FT_Vector_Unit T
+TT_New_Context T
+TT_RunIns T
+afm_parser_funcs D 24
+autofit_module_class D 72
+bdf_cmap_class D 80
+bdf_driver_class D 208
+cff_cmap_encoding_class_rec D 80
+cff_cmap_unicode_class_rec D 80
+cff_driver_class D 208
+ft_bitmap_glyph_class D 64
+ft_corner_is_flat T
+ft_corner_orientation T
+ft_debug_init T
+ft_glyphslot_alloc_bitmap T
+ft_glyphslot_free_bitmap T
+ft_glyphslot_set_bitmap T
+ft_grays_raster D 48
+ft_highpow2 T
+ft_lzwstate_done T
+ft_lzwstate_init T
+ft_lzwstate_io T
+ft_lzwstate_reset T
+ft_mem_alloc T
+ft_mem_dup T
+ft_mem_free T
+ft_mem_qalloc T
+ft_mem_qrealloc T
+ft_mem_realloc T
+ft_mem_strcpyn T
+ft_mem_strdup T
+ft_module_get_service T
+ft_outline_glyph_class D 64
+ft_raster1_renderer_class D 120
+ft_raster5_renderer_class D 120
+ft_service_list_lookup T
+ft_smooth_lcd_renderer_class D 120
+ft_smooth_lcdv_renderer_class D 120
+ft_smooth_renderer_class D 120
+ft_standard_raster D 48
+ft_stub_set_char_sizes T
+ft_stub_set_pixel_sizes T
+ft_synthesize_vertical_metrics T
+ft_validator_error T
+ft_validator_init T
+ft_validator_run T
+ftc_basic_image_cache_class D 72
+ftc_basic_image_family_class D 48
+ftc_basic_sbit_cache_class D 72
+ftc_basic_sbit_family_class D 56
+ftc_cmap_cache_class D 64
+ftc_face_list_class D 40
+ftc_node_destroy T
+ftc_size_list_class D 40
+pcf_cmap_class D 80
+pcf_driver_class D 208
+pfr_cmap_class_rec D 80
+pfr_driver_class D 208
+pfr_metrics_service_rec D 24
+ps_hints_apply T
+ps_parser_funcs D 104
+ps_table_funcs D 32
+psaux_module_class D 72
+pshinter_module_class D 72
+psnames_module_class D 72
+sfnt_module_class D 72
+t1_builder_funcs D 64
+t1_cmap_classes D 32
+t1_cmap_custom_class_rec D 80
+t1_cmap_expert_class_rec D 80
+t1_cmap_standard_class_rec D 80
+t1_cmap_unicode_class_rec D 80
+t1_decoder_funcs D 24
+t1_driver_class D 208
+t1cid_driver_class D 208
+t42_driver_class D 208
+tt_cmap0_class_rec D 104
+tt_cmap10_class_rec D 104
+tt_cmap12_class_rec D 104
+tt_cmap14_class_rec D 104
+tt_cmap2_class_rec D 104
+tt_cmap4_class_rec D 104
+tt_cmap6_class_rec D 104
+tt_cmap8_class_rec D 104
+tt_default_graphics_state T
+tt_driver_class D 208
+winfnt_driver_class D 208
diff --git a/repos/libports/lib/symbols/jbig2dec b/repos/libports/lib/symbols/jbig2dec
new file mode 100644
index 0000000000..e01ff8a10a
--- /dev/null
+++ b/repos/libports/lib/symbols/jbig2dec
@@ -0,0 +1,118 @@
+jbig2_alloc T
+jbig2_arith_Qe T
+jbig2_arith_decode T
+jbig2_arith_iaid_ctx_free T
+jbig2_arith_iaid_ctx_new T
+jbig2_arith_iaid_decode T
+jbig2_arith_int_ctx_free T
+jbig2_arith_int_ctx_new T
+jbig2_arith_int_decode T
+jbig2_arith_new T
+jbig2_build_huffman_table T
+jbig2_comment_ascii T
+jbig2_comment_unicode T
+jbig2_complete_page T
+jbig2_ctx_free T
+jbig2_ctx_new T
+jbig2_data_in T
+jbig2_decode_generic_mmr T
+jbig2_decode_generic_region T
+jbig2_decode_halftone_region T
+jbig2_decode_refinement_region T
+jbig2_decode_text_region T
+jbig2_end_of_page T
+jbig2_end_of_stripe T
+jbig2_error T
+jbig2_find_segment T
+jbig2_free T
+jbig2_free_segment T
+jbig2_generic_stats_size T
+jbig2_get_int16 T
+jbig2_get_int32 T
+jbig2_get_region_segment_info T
+jbig2_global_ctx_free T
+jbig2_halftone_region T
+jbig2_hd_new T
+jbig2_hd_release T
+jbig2_huffman_advance T
+jbig2_huffman_free T
+jbig2_huffman_get T
+jbig2_huffman_get_bits T
+jbig2_huffman_lines_A T
+jbig2_huffman_lines_B T
+jbig2_huffman_lines_C T
+jbig2_huffman_lines_D T
+jbig2_huffman_lines_E T
+jbig2_huffman_lines_F T
+jbig2_huffman_lines_G T
+jbig2_huffman_lines_H T
+jbig2_huffman_lines_I T
+jbig2_huffman_lines_J T
+jbig2_huffman_lines_K T
+jbig2_huffman_lines_L T
+jbig2_huffman_lines_M T
+jbig2_huffman_lines_N T
+jbig2_huffman_lines_O T
+jbig2_huffman_new T
+jbig2_huffman_offset T
+jbig2_huffman_params_A D 16
+jbig2_huffman_params_B D 16
+jbig2_huffman_params_C D 16
+jbig2_huffman_params_D D 16
+jbig2_huffman_params_E D 16
+jbig2_huffman_params_F D 16
+jbig2_huffman_params_G D 16
+jbig2_huffman_params_H D 16
+jbig2_huffman_params_I D 16
+jbig2_huffman_params_J D 16
+jbig2_huffman_params_K D 16
+jbig2_huffman_params_L D 16
+jbig2_huffman_params_M D 16
+jbig2_huffman_params_N D 16
+jbig2_huffman_params_O D 16
+jbig2_huffman_skip T
+jbig2_image_clear T
+jbig2_image_clone T
+jbig2_image_compose T
+jbig2_image_compose_unopt T
+jbig2_image_free T
+jbig2_image_get_pixel T
+jbig2_image_new T
+jbig2_image_read_pbm T
+jbig2_image_read_pbm_file T
+jbig2_image_release T
+jbig2_image_resize T
+jbig2_image_set_pixel T
+jbig2_image_write_pbm T
+jbig2_image_write_pbm_file T
+jbig2_image_write_png T
+jbig2_image_write_png_file T
+jbig2_immediate_generic_region T
+jbig2_make_global_ctx T
+jbig2_metadata_add T
+jbig2_metadata_free T
+jbig2_metadata_new T
+jbig2_mmr_black_decode T
+jbig2_mmr_white_decode T
+jbig2_page_add_result T
+jbig2_page_info T
+jbig2_page_out T
+jbig2_parse_extension_segment T
+jbig2_parse_segment T
+jbig2_parse_segment_header T
+jbig2_pattern_dictionary T
+jbig2_realloc T
+jbig2_refinement_region T
+jbig2_region_find_referred T
+jbig2_release_huffman_table T
+jbig2_release_page T
+jbig2_sd_cat T
+jbig2_sd_count_referred T
+jbig2_sd_glyph T
+jbig2_sd_list_referred T
+jbig2_sd_new T
+jbig2_sd_release T
+jbig2_symbol_dictionary T
+jbig2_text_region T
+jbig2_word_stream_buf_free T
+jbig2_word_stream_buf_new T
diff --git a/repos/libports/lib/symbols/jpeg b/repos/libports/lib/symbols/jpeg
new file mode 100644
index 0000000000..fb385371e9
--- /dev/null
+++ b/repos/libports/lib/symbols/jpeg
@@ -0,0 +1,159 @@
+jcopy_block_row T
+jcopy_sample_rows T
+jdiv_round_up T
+jinit_1pass_quantizer T
+jinit_2pass_quantizer T
+jinit_arith_decoder T
+jinit_arith_encoder T
+jinit_c_coef_controller T
+jinit_c_main_controller T
+jinit_c_master_control T
+jinit_c_prep_controller T
+jinit_color_converter T
+jinit_color_deconverter T
+jinit_compress_master T
+jinit_d_coef_controller T
+jinit_d_main_controller T
+jinit_d_post_controller T
+jinit_downsampler T
+jinit_forward_dct T
+jinit_huff_decoder T
+jinit_huff_encoder T
+jinit_input_controller T
+jinit_inverse_dct T
+jinit_marker_reader T
+jinit_marker_writer T
+jinit_master_decompress T
+jinit_memory_mgr T
+jinit_merged_upsampler T
+jinit_upsampler T
+jpeg_CreateCompress T
+jpeg_CreateDecompress T
+jpeg_abort T
+jpeg_abort_compress T
+jpeg_abort_decompress T
+jpeg_add_quant_table T
+jpeg_alloc_huff_table T
+jpeg_alloc_quant_table T
+jpeg_calc_jpeg_dimensions T
+jpeg_calc_output_dimensions T
+jpeg_consume_input T
+jpeg_copy_critical_parameters T
+jpeg_default_colorspace T
+jpeg_default_qtables T
+jpeg_destroy T
+jpeg_destroy_compress T
+jpeg_destroy_decompress T
+jpeg_fdct_10x10 T
+jpeg_fdct_10x5 T
+jpeg_fdct_11x11 T
+jpeg_fdct_12x12 T
+jpeg_fdct_12x6 T
+jpeg_fdct_13x13 T
+jpeg_fdct_14x14 T
+jpeg_fdct_14x7 T
+jpeg_fdct_15x15 T
+jpeg_fdct_16x16 T
+jpeg_fdct_16x8 T
+jpeg_fdct_1x1 T
+jpeg_fdct_1x2 T
+jpeg_fdct_2x1 T
+jpeg_fdct_2x2 T
+jpeg_fdct_2x4 T
+jpeg_fdct_3x3 T
+jpeg_fdct_3x6 T
+jpeg_fdct_4x2 T
+jpeg_fdct_4x4 T
+jpeg_fdct_4x8 T
+jpeg_fdct_5x10 T
+jpeg_fdct_5x5 T
+jpeg_fdct_6x12 T
+jpeg_fdct_6x3 T
+jpeg_fdct_6x6 T
+jpeg_fdct_7x14 T
+jpeg_fdct_7x7 T
+jpeg_fdct_8x16 T
+jpeg_fdct_8x4 T
+jpeg_fdct_9x9 T
+jpeg_fdct_float T
+jpeg_fdct_ifast T
+jpeg_fdct_islow T
+jpeg_finish_compress T
+jpeg_finish_decompress T
+jpeg_finish_output T
+jpeg_free_large T
+jpeg_free_small T
+jpeg_get_large T
+jpeg_get_small T
+jpeg_has_multiple_scans T
+jpeg_idct_10x10 T
+jpeg_idct_10x5 T
+jpeg_idct_11x11 T
+jpeg_idct_12x12 T
+jpeg_idct_12x6 T
+jpeg_idct_13x13 T
+jpeg_idct_14x14 T
+jpeg_idct_14x7 T
+jpeg_idct_15x15 T
+jpeg_idct_16x16 T
+jpeg_idct_16x8 T
+jpeg_idct_1x1 T
+jpeg_idct_1x2 T
+jpeg_idct_2x1 T
+jpeg_idct_2x2 T
+jpeg_idct_2x4 T
+jpeg_idct_3x3 T
+jpeg_idct_3x6 T
+jpeg_idct_4x2 T
+jpeg_idct_4x4 T
+jpeg_idct_4x8 T
+jpeg_idct_5x10 T
+jpeg_idct_5x5 T
+jpeg_idct_6x12 T
+jpeg_idct_6x3 T
+jpeg_idct_6x6 T
+jpeg_idct_7x14 T
+jpeg_idct_7x7 T
+jpeg_idct_8x16 T
+jpeg_idct_8x4 T
+jpeg_idct_9x9 T
+jpeg_idct_float T
+jpeg_idct_ifast T
+jpeg_idct_islow T
+jpeg_input_complete T
+jpeg_mem_available T
+jpeg_mem_init T
+jpeg_mem_term T
+jpeg_natural_order T
+jpeg_new_colormap T
+jpeg_open_backing_store T
+jpeg_quality_scaling T
+jpeg_read_coefficients T
+jpeg_read_header T
+jpeg_read_raw_data T
+jpeg_read_scanlines T
+jpeg_resync_to_restart T
+jpeg_save_markers T
+jpeg_set_colorspace T
+jpeg_set_defaults T
+jpeg_set_linear_quality T
+jpeg_set_marker_processor T
+jpeg_set_quality T
+jpeg_simple_progression T
+jpeg_start_compress T
+jpeg_start_decompress T
+jpeg_start_output T
+jpeg_std_error T
+jpeg_std_message_table D 1024
+jpeg_stdio_dest T
+jpeg_stdio_src T
+jpeg_suppress_tables T
+jpeg_write_coefficients T
+jpeg_write_m_byte T
+jpeg_write_m_header T
+jpeg_write_marker T
+jpeg_write_raw_data T
+jpeg_write_scanlines T
+jpeg_write_tables T
+jround_up T
+jzero_far T
diff --git a/repos/libports/lib/symbols/mupdf b/repos/libports/lib/symbols/mupdf
new file mode 100644
index 0000000000..717f493668
--- /dev/null
+++ b/repos/libports/lib/symbols/mupdf
@@ -0,0 +1,509 @@
+chartorune T
+ft_error_string T
+fz_accelerate T
+fz_add_text T
+fz_alpha_from_gray T
+fz_arc4_encrypt T
+fz_arc4_init T
+fz_array_get T
+fz_array_insert T
+fz_array_len T
+fz_array_push T
+fz_array_put T
+fz_atof T
+fz_begin_group T
+fz_begin_mask T
+fz_begin_tile T
+fz_blend_nonseparable T
+fz_blend_pixmap T
+fz_blend_separable T
+fz_blendmode_name T
+fz_bound_gel T
+fz_bound_path T
+fz_bound_pixmap T
+fz_bound_shade T
+fz_bound_text T
+fz_calloc T
+fz_catch_imp T
+fz_catch_impx T
+fz_clear_bitmap T
+fz_clear_pixmap T
+fz_clear_pixmap_rect_with_color T
+fz_clear_pixmap_with_color T
+fz_clip_image_mask T
+fz_clip_path T
+fz_clip_stroke_path T
+fz_clip_stroke_text T
+fz_clip_text T
+fz_clone_path T
+fz_clone_text T
+fz_close T
+fz_closepath T
+fz_concat T
+fz_convert_color T
+fz_convert_pixmap T
+fz_copy_array T
+fz_copy_dict T
+fz_copy_pixmap_rect T
+fz_curveto T
+fz_curvetov T
+fz_curvetoy T
+fz_debug_font T
+fz_debug_hash T
+fz_debug_obj T
+fz_debug_path T
+fz_debug_ref T
+fz_debug_shade T
+fz_debug_text T
+fz_debug_text_span T
+fz_debug_text_span_xml T
+fz_decode_indexed_tile T
+fz_decode_tile T
+fz_device_bgr D 8
+fz_device_cmyk D 8
+fz_device_gray D 8
+fz_device_rgb D 8
+fz_dict_del T
+fz_dict_dels T
+fz_dict_get T
+fz_dict_get_key T
+fz_dict_get_val T
+fz_dict_gets T
+fz_dict_getsa T
+fz_dict_len T
+fz_dict_put T
+fz_dict_puts T
+fz_drop_bitmap T
+fz_drop_buffer T
+fz_drop_colorspace T
+fz_drop_font T
+fz_drop_halftone T
+fz_drop_obj T
+fz_drop_pixmap T
+fz_drop_shade T
+fz_empty_bbox T
+fz_empty_hash T
+fz_empty_rect T
+fz_end_group T
+fz_end_mask T
+fz_end_tile T
+fz_execute_display_list T
+fz_fill_buffer T
+fz_fill_image T
+fz_fill_image_mask T
+fz_fill_path T
+fz_fill_shade T
+fz_fill_text T
+fz_find_blendmode T
+fz_find_device_colorspace T
+fz_flatten_dash_path T
+fz_flatten_fill_path T
+fz_flatten_stroke_path T
+fz_flush_warnings T
+fz_fprint_obj T
+fz_free T
+fz_free_device T
+fz_free_display_list T
+fz_free_gel T
+fz_free_glyph_cache T
+fz_free_hash T
+fz_free_path T
+fz_free_text T
+fz_free_text_span T
+fz_gamma_pixmap T
+fz_get_aa_level T
+fz_get_default_halftone T
+fz_get_error_count T
+fz_get_error_line T
+fz_get_indirect_xref T
+fz_getopt T
+fz_gettimeofday_dummy T
+fz_grow_buffer T
+fz_halftone_pixmap T
+fz_hash_find T
+fz_hash_get_key T
+fz_hash_get_val T
+fz_hash_insert T
+fz_hash_len T
+fz_hash_remove T
+fz_identity T
+fz_ignore_text T
+fz_infinite_bbox T
+fz_infinite_rect T
+fz_insert_gel T
+fz_intersect_bbox T
+fz_intersect_rect T
+fz_invert_matrix T
+fz_invert_pixmap T
+fz_is_array T
+fz_is_big_endian T
+fz_is_bool T
+fz_is_dict T
+fz_is_indirect T
+fz_is_int T
+fz_is_name T
+fz_is_null T
+fz_is_real T
+fz_is_rect_gel T
+fz_is_rectilinear T
+fz_is_string T
+fz_keep_bitmap T
+fz_keep_buffer T
+fz_keep_colorspace T
+fz_keep_font T
+fz_keep_halftone T
+fz_keep_obj T
+fz_keep_pixmap T
+fz_keep_shade T
+fz_keep_stream T
+fz_lineto T
+fz_load_jpx_image T
+fz_malloc T
+fz_matrix_expansion T
+fz_md5_final T
+fz_md5_init T
+fz_md5_update T
+fz_moveto T
+fz_new_array T
+fz_new_bbox_device T
+fz_new_bitmap T
+fz_new_bool T
+fz_new_buffer T
+fz_new_colorspace T
+fz_new_device T
+fz_new_dict T
+fz_new_display_list T
+fz_new_draw_device T
+fz_new_draw_device_type3 T
+fz_new_font_from_file T
+fz_new_font_from_memory T
+fz_new_gel T
+fz_new_glyph_cache T
+fz_new_halftone T
+fz_new_hash_table T
+fz_new_indirect T
+fz_new_int T
+fz_new_list_device T
+fz_new_name T
+fz_new_null T
+fz_new_path T
+fz_new_pixmap T
+fz_new_pixmap_with_data T
+fz_new_pixmap_with_limit T
+fz_new_pixmap_with_rect T
+fz_new_pixmap_with_rect_and_data T
+fz_new_real T
+fz_new_stream T
+fz_new_string T
+fz_new_text T
+fz_new_text_device T
+fz_new_text_span T
+fz_new_trace_device T
+fz_new_type3_font T
+fz_objcmp T
+fz_open_a85d T
+fz_open_aesd T
+fz_open_ahxd T
+fz_open_arc4 T
+fz_open_buffer T
+fz_open_copy T
+fz_open_dctd T
+fz_open_faxd T
+fz_open_fd T
+fz_open_file T
+fz_open_flated T
+fz_open_jbig2d T
+fz_open_lzwd T
+fz_open_memory T
+fz_open_null T
+fz_open_predict T
+fz_open_rld T
+fz_optarg B 8
+fz_optind B 4
+fz_paint_image T
+fz_paint_image_with_color T
+fz_paint_pixmap T
+fz_paint_pixmap_with_mask T
+fz_paint_pixmap_with_rect T
+fz_paint_shade T
+fz_paint_solid_alpha T
+fz_paint_solid_color T
+fz_paint_span T
+fz_paint_span_with_color T
+fz_pop_clip T
+fz_premultiply_pixmap T
+fz_read T
+fz_read_all T
+fz_read_line T
+fz_realloc T
+fz_render_ft_glyph T
+fz_render_ft_stroked_glyph T
+fz_render_glyph T
+fz_render_stroked_glyph T
+fz_render_t3_glyph T
+fz_reset_gel T
+fz_resize_buffer T
+fz_resolve_indirect D 8
+fz_rethrow_imp T
+fz_rethrow_impx T
+fz_rotate T
+fz_round_rect T
+fz_scale T
+fz_scale_filter_box D 16
+fz_scale_filter_lanczos2 D 16
+fz_scale_filter_lanczos3 D 16
+fz_scale_filter_mitchell D 16
+fz_scale_filter_simple D 16
+fz_scale_filter_triangle D 16
+fz_scale_pixmap T
+fz_scale_pixmap_gridfit T
+fz_scan_convert T
+fz_seek T
+fz_set_aa_level T
+fz_set_font_bbox T
+fz_set_str_len T
+fz_sha256_final T
+fz_sha256_init T
+fz_sha256_update T
+fz_shear T
+fz_sort_dict T
+fz_sort_gel T
+fz_strdup T
+fz_strlcat T
+fz_strlcpy T
+fz_stroke_path T
+fz_stroke_text T
+fz_strsep T
+fz_tell T
+fz_throw_imp T
+fz_throw_impx T
+fz_to_bool T
+fz_to_gen T
+fz_to_int T
+fz_to_name T
+fz_to_num T
+fz_to_real T
+fz_to_str_buf T
+fz_to_str_len T
+fz_transform_bbox T
+fz_transform_path T
+fz_transform_point T
+fz_transform_rect T
+fz_transform_vector T
+fz_translate T
+fz_union_bbox T
+fz_union_rect T
+fz_unit_bbox T
+fz_unit_rect T
+fz_unpack_tile T
+fz_warn T
+fz_write_pam T
+fz_write_pbm T
+fz_write_png T
+fz_write_pnm T
+pdf_add_codespace T
+pdf_add_hmtx T
+pdf_add_vmtx T
+pdf_age_store T
+pdf_authenticate_password T
+pdf_cache_object T
+pdf_count_pages T
+pdf_crypt_obj T
+pdf_debug_cmap T
+pdf_debug_crypt T
+pdf_debug_font T
+pdf_debug_function T
+pdf_debug_outline T
+pdf_debug_ps_stack T
+pdf_debug_store T
+pdf_debug_xref T
+pdf_decode_cmap T
+pdf_doc_encoding T
+pdf_drop_cmap T
+pdf_drop_font T
+pdf_drop_function T
+pdf_drop_pattern T
+pdf_drop_xobject T
+pdf_end_hmtx T
+pdf_end_vmtx T
+pdf_eval_function T
+pdf_expand_indexed_pixmap T
+pdf_find_builtin_cmap T
+pdf_find_builtin_font T
+pdf_find_item T
+pdf_find_page_number T
+pdf_find_substitute_cjk_font T
+pdf_find_substitute_font T
+pdf_font_Dingbats T
+pdf_font_DroidSans T
+pdf_font_DroidSansFallback T
+pdf_font_DroidSansMono T
+pdf_font_NimbusMonL_Bold T
+pdf_font_NimbusMonL_BoldObli T
+pdf_font_NimbusMonL_Regu T
+pdf_font_NimbusMonL_ReguObli T
+pdf_font_NimbusRomNo9L_Medi T
+pdf_font_NimbusRomNo9L_MediItal T
+pdf_font_NimbusRomNo9L_Regu T
+pdf_font_NimbusRomNo9L_ReguItal T
+pdf_font_NimbusSanL_Bold T
+pdf_font_NimbusSanL_BoldItal T
+pdf_font_NimbusSanL_Regu T
+pdf_font_NimbusSanL_ReguItal T
+pdf_font_StandardSymL T
+pdf_font_cid_to_gid T
+pdf_free_annot T
+pdf_free_crypt T
+pdf_free_link T
+pdf_free_outline T
+pdf_free_page T
+pdf_free_store T
+pdf_free_xref T
+pdf_from_ucs2 T
+pdf_get_crypt_key T
+pdf_get_crypt_length T
+pdf_get_crypt_method T
+pdf_get_crypt_revision T
+pdf_get_hmtx T
+pdf_get_vmtx T
+pdf_get_wmode T
+pdf_has_permission T
+pdf_is_jpx_image T
+pdf_is_stream T
+pdf_keep_cmap T
+pdf_keep_font T
+pdf_keep_function T
+pdf_keep_pattern T
+pdf_keep_xobject T
+pdf_lex T
+pdf_load_annots T
+pdf_load_colorspace T
+pdf_load_embedded_cmap T
+pdf_load_encoding T
+pdf_load_font T
+pdf_load_function T
+pdf_load_image T
+pdf_load_inline_image T
+pdf_load_link T
+pdf_load_links T
+pdf_load_name_tree T
+pdf_load_object T
+pdf_load_outline T
+pdf_load_page T
+pdf_load_page_tree T
+pdf_load_pattern T
+pdf_load_raw_stream T
+pdf_load_shading T
+pdf_load_stream T
+pdf_load_system_cmap T
+pdf_load_to_unicode T
+pdf_load_type3_font T
+pdf_load_xobject T
+pdf_lookup_agl T
+pdf_lookup_agl_duplicates T
+pdf_lookup_cmap T
+pdf_lookup_cmap_full T
+pdf_lookup_dest T
+pdf_lookup_name T
+pdf_mac_expert D 2048
+pdf_mac_roman D 2048
+pdf_map_one_to_many T
+pdf_map_range_to_range T
+pdf_map_range_to_table T
+pdf_needs_password T
+pdf_new_cmap T
+pdf_new_crypt T
+pdf_new_font_desc T
+pdf_new_identity_cmap T
+pdf_new_store T
+pdf_open_crypt T
+pdf_open_crypt_with_filter T
+pdf_open_inline_stream T
+pdf_open_raw_stream T
+pdf_open_stream T
+pdf_open_stream_at T
+pdf_open_xref T
+pdf_open_xref_with_stream T
+pdf_parse_array T
+pdf_parse_cmap T
+pdf_parse_dict T
+pdf_parse_ind_obj T
+pdf_parse_stm_obj T
+pdf_remove_item T
+pdf_repair_obj_stms T
+pdf_repair_xref T
+pdf_resize_xref T
+pdf_resolve_indirect T
+pdf_run_glyph T
+pdf_run_page T
+pdf_run_page_with_usage T
+pdf_set_default_hmtx T
+pdf_set_default_vmtx T
+pdf_set_font_wmode T
+pdf_set_usecmap T
+pdf_set_wmode T
+pdf_sort_cmap T
+pdf_standard D 2048
+pdf_store_item T
+pdf_to_matrix T
+pdf_to_rect T
+pdf_to_ucs2 T
+pdf_to_utf8 T
+pdf_to_utf8_name T
+pdf_update_object T
+pdf_win_ansi D 2048
+runelen T
+runetochar T
+xml_att T
+xml_down T
+xml_free_element T
+xml_next T
+xml_parse_document T
+xml_print_element T
+xml_tag T
+xps_absolute_path T
+xps_begin_opacity T
+xps_clip T
+xps_count_font_encodings T
+xps_count_pages T
+xps_debug_page_list T
+xps_debug_resource_dictionary T
+xps_decode_jpeg T
+xps_decode_png T
+xps_decode_tiff T
+xps_encode_font_char T
+xps_end_opacity T
+xps_free_context T
+xps_free_page T
+xps_free_page_list T
+xps_free_part T
+xps_free_resource_dictionary T
+xps_identify_font_encoding T
+xps_load_page T
+xps_measure_font_glyph T
+xps_new_part T
+xps_open_file T
+xps_open_stream T
+xps_parse_brush T
+xps_parse_canvas T
+xps_parse_color T
+xps_parse_element T
+xps_parse_fixed_page T
+xps_parse_glyphs T
+xps_parse_image_brush T
+xps_parse_linear_gradient_brush T
+xps_parse_matrix_transform T
+xps_parse_path T
+xps_parse_path_geometry T
+xps_parse_radial_gradient_brush T
+xps_parse_rectangle T
+xps_parse_render_transform T
+xps_parse_resource_dictionary T
+xps_parse_tiling_brush T
+xps_parse_visual_brush T
+xps_read_page_list T
+xps_read_part T
+xps_resolve_resource_reference T
+xps_select_font_encoding T
+xps_set_color T
+xps_strcasecmp T
diff --git a/repos/libports/lib/symbols/openjpeg b/repos/libports/lib/symbols/openjpeg
new file mode 100644
index 0000000000..d39c224630
--- /dev/null
+++ b/repos/libports/lib/symbols/openjpeg
@@ -0,0 +1,140 @@
+bio_create T
+bio_destroy T
+bio_flush T
+bio_inalign T
+bio_init_dec T
+bio_init_enc T
+bio_numbytes T
+bio_read T
+bio_write T
+cio_bytein T
+cio_byteout T
+cio_getbp T
+cio_numbytesleft T
+cio_read T
+cio_seek T
+cio_skip T
+cio_tell T
+cio_write T
+dwt_calc_explicit_stepsizes T
+dwt_decode T
+dwt_decode_real T
+dwt_encode T
+dwt_encode_real T
+dwt_getgain T
+dwt_getgain_real T
+dwt_getnorm T
+dwt_getnorm_real T
+j2k_calculate_tp T
+j2k_convert_progression_order T
+j2k_create_compress T
+j2k_create_decompress T
+j2k_dec_mstab D 320
+j2k_decode T
+j2k_decode_jpt_stream T
+j2k_destroy_compress T
+j2k_destroy_decompress T
+j2k_encode T
+j2k_prog_order_list D 48
+j2k_setup_decoder T
+j2k_setup_encoder T
+jp2_create_compress T
+jp2_create_decompress T
+jp2_decode T
+jp2_destroy_compress T
+jp2_destroy_decompress T
+jp2_encode T
+jp2_read_jp2h T
+jp2_setup_decoder T
+jp2_setup_encoder T
+jp2_write_jp2h T
+jpt_init_msg_header T
+jpt_read_VBAS_info T
+jpt_read_msg_header T
+jpt_reinit_msg_header T
+mct_decode T
+mct_decode_real T
+mct_encode T
+mct_encode_real T
+mct_getnorm T
+mct_getnorm_real T
+mqc_bypass_enc T
+mqc_bypass_flush_enc T
+mqc_bypass_init_enc T
+mqc_create T
+mqc_decode T
+mqc_destroy T
+mqc_encode T
+mqc_erterm_enc T
+mqc_flush T
+mqc_init_dec T
+mqc_init_enc T
+mqc_numbytes T
+mqc_reset_enc T
+mqc_resetstates T
+mqc_restart_enc T
+mqc_restart_init_enc T
+mqc_segmark_enc T
+mqc_setstate T
+opj_cio_close T
+opj_cio_open T
+opj_clock T
+opj_create_compress T
+opj_create_decompress T
+opj_decode T
+opj_decode_with_info T
+opj_destroy_compress T
+opj_destroy_cstr_info T
+opj_destroy_decompress T
+opj_encode T
+opj_encode_with_info T
+opj_event_msg T
+opj_image_create T
+opj_image_create0 T
+opj_image_destroy T
+opj_set_default_decoder_parameters T
+opj_set_default_encoder_parameters T
+opj_set_event_mgr T
+opj_setup_decoder T
+opj_setup_encoder T
+opj_version T
+pi_create_decode T
+pi_create_encode T
+pi_destroy T
+pi_initialise_encode T
+pi_next T
+raw_create T
+raw_decode T
+raw_destroy T
+raw_init_dec T
+raw_numbytes T
+t1_create T
+t1_decode_cblks T
+t1_destroy T
+t1_encode_cblks T
+t2_create T
+t2_decode_packets T
+t2_destroy T
+t2_encode_packets T
+tcd_create T
+tcd_decode_tile T
+tcd_destroy T
+tcd_dump T
+tcd_encode_tile T
+tcd_free_decode T
+tcd_free_decode_tile T
+tcd_free_encode T
+tcd_init_encode T
+tcd_makelayer T
+tcd_makelayer_fixed T
+tcd_malloc_decode T
+tcd_malloc_decode_tile T
+tcd_malloc_encode T
+tcd_rateallocate T
+tcd_rateallocate_fixed T
+tgt_create T
+tgt_decode T
+tgt_destroy T
+tgt_encode T
+tgt_reset T
+tgt_setvalue T
diff --git a/repos/libports/recipes/api/freetype/content.mk b/repos/libports/recipes/api/freetype/content.mk
new file mode 100644
index 0000000000..62885fefcf
--- /dev/null
+++ b/repos/libports/recipes/api/freetype/content.mk
@@ -0,0 +1,14 @@
+content: include lib/symbols/freetype LICENSE
+
+PORT_DIR := $(call port_dir,$(REP_DIR)/ports/freetype)
+
+include:
+ mkdir $@
+ cp -r $(PORT_DIR)/include/* $@
+
+lib/symbols/freetype:
+ $(mirror_from_rep_dir)
+
+LICENSE:
+ cp $(PORT_DIR)/src/lib/freetype/contrib/docs/LICENSE.TXT $@
+
diff --git a/repos/libports/recipes/api/freetype/hash b/repos/libports/recipes/api/freetype/hash
new file mode 100644
index 0000000000..6e256d1a88
--- /dev/null
+++ b/repos/libports/recipes/api/freetype/hash
@@ -0,0 +1 @@
+2.3.9 6316f5e856b8d821a061a1dd9f423299ba8b73c7
diff --git a/repos/libports/recipes/api/jbig2dec/content.mk b/repos/libports/recipes/api/jbig2dec/content.mk
new file mode 100644
index 0000000000..502df5738f
--- /dev/null
+++ b/repos/libports/recipes/api/jbig2dec/content.mk
@@ -0,0 +1,13 @@
+content: include lib/symbols/jbig2dec LICENSE
+
+PORT_DIR := $(call port_dir,$(REP_DIR)/ports/jbig2dec)
+
+include:
+ mkdir $@
+ cp -r $(PORT_DIR)/include/jbig2dec/* $@/
+
+lib/symbols/jbig2dec:
+ $(mirror_from_rep_dir)
+
+LICENSE:
+ cp $(PORT_DIR)/src/lib/jbig2dec/LICENSE $@
diff --git a/repos/libports/recipes/api/jbig2dec/hash b/repos/libports/recipes/api/jbig2dec/hash
new file mode 100644
index 0000000000..dcf78a90e0
--- /dev/null
+++ b/repos/libports/recipes/api/jbig2dec/hash
@@ -0,0 +1 @@
+0.11 f5711ebc06c00b43f47dcb893c4fa84da94550c4
diff --git a/repos/libports/recipes/api/jpeg/content.mk b/repos/libports/recipes/api/jpeg/content.mk
new file mode 100644
index 0000000000..ebb3de5443
--- /dev/null
+++ b/repos/libports/recipes/api/jpeg/content.mk
@@ -0,0 +1,14 @@
+content: include lib/symbols/jpeg LICENSE
+
+PORT_DIR := $(call port_dir,$(REP_DIR)/ports/jpeg)
+
+include:
+ mkdir -p $@
+ cp -r $(PORT_DIR)/include/jpeg/* $@/
+ cp -r $(REP_DIR)/include/jpeg/* $@/
+
+lib/symbols/jpeg:
+ $(mirror_from_rep_dir)
+
+LICENSE:
+ grep '^LEGAL ISSUES$$' -A57 $(PORT_DIR)/src/lib/jpeg/README > $@
diff --git a/repos/libports/recipes/api/jpeg/hash b/repos/libports/recipes/api/jpeg/hash
new file mode 100644
index 0000000000..503666a482
--- /dev/null
+++ b/repos/libports/recipes/api/jpeg/hash
@@ -0,0 +1 @@
+7 d499e1e2f18a7fafbd416c1433b32646cdd2514f
diff --git a/repos/libports/recipes/api/mupdf/content.mk b/repos/libports/recipes/api/mupdf/content.mk
new file mode 100644
index 0000000000..fa3106d343
--- /dev/null
+++ b/repos/libports/recipes/api/mupdf/content.mk
@@ -0,0 +1,13 @@
+content: include lib/symbols/mupdf LICENSE
+
+PORT_DIR := $(call port_dir,$(REP_DIR)/ports/mupdf)
+
+include:
+ mkdir $@
+ cp -r $(PORT_DIR)/include/mupdf/* $@/
+
+lib/symbols/mupdf:
+ $(mirror_from_rep_dir)
+
+LICENSE:
+ cp $(PORT_DIR)/src/lib/mupdf/COPYING $@
diff --git a/repos/libports/recipes/api/mupdf/hash b/repos/libports/recipes/api/mupdf/hash
new file mode 100644
index 0000000000..128e6ffae8
--- /dev/null
+++ b/repos/libports/recipes/api/mupdf/hash
@@ -0,0 +1 @@
+0.9 e008e90f2ef1ab2b2a1e0df2072504fbeceb41dd
diff --git a/repos/libports/recipes/api/openjpeg/content.mk b/repos/libports/recipes/api/openjpeg/content.mk
new file mode 100644
index 0000000000..a81d802871
--- /dev/null
+++ b/repos/libports/recipes/api/openjpeg/content.mk
@@ -0,0 +1,13 @@
+content: include lib/symbols/openjpeg LICENSE
+
+PORT_DIR := $(call port_dir,$(REP_DIR)/ports/openjpeg)
+
+include:
+ mkdir $@
+ cp -r $(PORT_DIR)/include/openjpeg/* $@/
+
+lib/symbols/openjpeg:
+ $(mirror_from_rep_dir)
+
+LICENSE:
+ cp $(PORT_DIR)/src/lib/openjpeg/LICENSE $@
diff --git a/repos/libports/recipes/api/openjpeg/hash b/repos/libports/recipes/api/openjpeg/hash
new file mode 100644
index 0000000000..7bf4e3b3f4
--- /dev/null
+++ b/repos/libports/recipes/api/openjpeg/hash
@@ -0,0 +1 @@
+1.4 e471f520ae6239191ec8d38203b16b35efbb2108
diff --git a/repos/libports/recipes/pkg/pdf_view/README b/repos/libports/recipes/pkg/pdf_view/README
new file mode 100644
index 0000000000..d24b3af2f5
--- /dev/null
+++ b/repos/libports/recipes/pkg/pdf_view/README
@@ -0,0 +1,3 @@
+
+ A PDF viewer
+
diff --git a/repos/libports/recipes/pkg/pdf_view/archives b/repos/libports/recipes/pkg/pdf_view/archives
new file mode 100644
index 0000000000..e3743732a4
--- /dev/null
+++ b/repos/libports/recipes/pkg/pdf_view/archives
@@ -0,0 +1,9 @@
+_/src/freetype
+_/src/jbig2dec
+_/src/jpeg
+_/src/libc
+_/src/libpng
+_/src/mupdf
+_/src/pdf_view
+_/src/openjpeg
+_/src/zlib
diff --git a/repos/libports/recipes/pkg/pdf_view/hash b/repos/libports/recipes/pkg/pdf_view/hash
new file mode 100644
index 0000000000..47873dffa1
--- /dev/null
+++ b/repos/libports/recipes/pkg/pdf_view/hash
@@ -0,0 +1 @@
+2017-11-21-a b529fe282960fa2fc765bec17b0733b3d68f4382
diff --git a/repos/libports/recipes/src/freetype/api b/repos/libports/recipes/src/freetype/api
new file mode 100644
index 0000000000..098479093f
--- /dev/null
+++ b/repos/libports/recipes/src/freetype/api
@@ -0,0 +1 @@
+freetype
diff --git a/repos/libports/recipes/src/freetype/content.mk b/repos/libports/recipes/src/freetype/content.mk
new file mode 100644
index 0000000000..6ee93d7f08
--- /dev/null
+++ b/repos/libports/recipes/src/freetype/content.mk
@@ -0,0 +1,17 @@
+content: include/freetype-genode src/lib/freetype lib/mk/freetype.mk LICENSE
+
+PORT_DIR := $(call port_dir,$(REP_DIR)/ports/freetype)
+
+src/lib/freetype:
+ mkdir -p $(dir $@)
+ cp -r $(PORT_DIR)/src/lib/freetype $@
+ echo "LIBS = freetype" > $@/target.mk
+
+include/freetype-genode:
+ $(mirror_from_rep_dir)
+
+lib/mk/%.mk:
+ $(mirror_from_rep_dir)
+
+LICENSE:
+ cp $(PORT_DIR)/src/lib/freetype/contrib/docs/LICENSE.TXT $@
diff --git a/repos/libports/recipes/src/freetype/hash b/repos/libports/recipes/src/freetype/hash
new file mode 100644
index 0000000000..7a7db86a59
--- /dev/null
+++ b/repos/libports/recipes/src/freetype/hash
@@ -0,0 +1 @@
+2017-11-17 2d62fae574441091a9bee0185af6ad7530fc3783
diff --git a/repos/libports/recipes/src/freetype/used_apis b/repos/libports/recipes/src/freetype/used_apis
new file mode 100644
index 0000000000..4011ccc3b3
--- /dev/null
+++ b/repos/libports/recipes/src/freetype/used_apis
@@ -0,0 +1,2 @@
+libc
+so
diff --git a/repos/libports/recipes/src/jbig2dec/api b/repos/libports/recipes/src/jbig2dec/api
new file mode 100644
index 0000000000..192e8ddbe1
--- /dev/null
+++ b/repos/libports/recipes/src/jbig2dec/api
@@ -0,0 +1 @@
+jbig2dec
diff --git a/repos/libports/recipes/src/jbig2dec/content.mk b/repos/libports/recipes/src/jbig2dec/content.mk
new file mode 100644
index 0000000000..330060df76
--- /dev/null
+++ b/repos/libports/recipes/src/jbig2dec/content.mk
@@ -0,0 +1,14 @@
+content: src/lib/jbig2dec lib/mk/jbig2dec.mk LICENSE
+
+PORT_DIR := $(call port_dir,$(REP_DIR)/ports/jbig2dec)
+
+src/lib/jbig2dec:
+ mkdir -p $@
+ cp -a $(PORT_DIR)/src/lib/jbig2dec/* $@/
+ echo "LIBS = jbig2dec" > $@/target.mk
+
+lib/mk/%.mk:
+ $(mirror_from_rep_dir)
+
+LICENSE:
+ cp $(PORT_DIR)/src/lib/jbig2dec/LICENSE $@
diff --git a/repos/libports/recipes/src/jbig2dec/hash b/repos/libports/recipes/src/jbig2dec/hash
new file mode 100644
index 0000000000..ceb1040f4c
--- /dev/null
+++ b/repos/libports/recipes/src/jbig2dec/hash
@@ -0,0 +1 @@
+2017-11-21 a74584c54fc073709033f0488643e7f6110b53c7
diff --git a/repos/libports/recipes/src/jbig2dec/used_apis b/repos/libports/recipes/src/jbig2dec/used_apis
new file mode 100644
index 0000000000..3901f056ed
--- /dev/null
+++ b/repos/libports/recipes/src/jbig2dec/used_apis
@@ -0,0 +1,4 @@
+libc
+libpng
+so
+zlib
diff --git a/repos/libports/recipes/src/jpeg/api b/repos/libports/recipes/src/jpeg/api
new file mode 100644
index 0000000000..bd93ce0cc5
--- /dev/null
+++ b/repos/libports/recipes/src/jpeg/api
@@ -0,0 +1 @@
+jpeg
diff --git a/repos/libports/recipes/src/jpeg/content.mk b/repos/libports/recipes/src/jpeg/content.mk
new file mode 100644
index 0000000000..3013409349
--- /dev/null
+++ b/repos/libports/recipes/src/jpeg/content.mk
@@ -0,0 +1,14 @@
+content: src/lib/jpeg lib/mk/jpeg.mk LICENSE
+
+PORT_DIR := $(call port_dir,$(REP_DIR)/ports/jpeg)
+
+src/lib/jpeg:
+ mkdir -p $(dir $@)
+ cp -r $(PORT_DIR)/src/lib/jpeg $@
+ echo "LIBS = jpeg" > $@/target.mk
+
+lib/mk/%.mk:
+ $(mirror_from_rep_dir)
+
+LICENSE:
+ grep '^LEGAL ISSUES$$' -A57 $(PORT_DIR)/src/lib/jpeg/README > $@
diff --git a/repos/libports/recipes/src/jpeg/hash b/repos/libports/recipes/src/jpeg/hash
new file mode 100644
index 0000000000..54605fb0d3
--- /dev/null
+++ b/repos/libports/recipes/src/jpeg/hash
@@ -0,0 +1 @@
+2017-11-17 6e8c09e985551d7406ae3a632346b0d5da2d75f6
diff --git a/repos/libports/recipes/src/jpeg/used_apis b/repos/libports/recipes/src/jpeg/used_apis
new file mode 100644
index 0000000000..4011ccc3b3
--- /dev/null
+++ b/repos/libports/recipes/src/jpeg/used_apis
@@ -0,0 +1,2 @@
+libc
+so
diff --git a/repos/libports/recipes/src/mupdf/api b/repos/libports/recipes/src/mupdf/api
new file mode 100644
index 0000000000..8aee44d4e4
--- /dev/null
+++ b/repos/libports/recipes/src/mupdf/api
@@ -0,0 +1 @@
+mupdf
diff --git a/repos/libports/recipes/src/mupdf/content.mk b/repos/libports/recipes/src/mupdf/content.mk
new file mode 100644
index 0000000000..011a0d56a1
--- /dev/null
+++ b/repos/libports/recipes/src/mupdf/content.mk
@@ -0,0 +1,14 @@
+content: src/lib/mupdf lib/mk/mupdf.mk lib/mk/mupdf_host_tools.mk LICENSE
+
+PORT_DIR := $(call port_dir,$(REP_DIR)/ports/mupdf)
+
+src/lib/mupdf:
+ mkdir -p $(dir $@)
+ cp -r $(PORT_DIR)/src/lib/mupdf $@
+ echo "LIBS = mupdf" > $@/target.mk
+
+lib/mk/%.mk:
+ $(mirror_from_rep_dir)
+
+LICENSE:
+ cp $(PORT_DIR)/src/lib/mupdf/COPYING $@
diff --git a/repos/libports/recipes/src/mupdf/hash b/repos/libports/recipes/src/mupdf/hash
new file mode 100644
index 0000000000..16326e2b85
--- /dev/null
+++ b/repos/libports/recipes/src/mupdf/hash
@@ -0,0 +1 @@
+2017-11-17 4c4f6b52d3025032fdca3425c9a57fb9568a849e
diff --git a/repos/libports/recipes/src/mupdf/used_apis b/repos/libports/recipes/src/mupdf/used_apis
new file mode 100644
index 0000000000..997c378570
--- /dev/null
+++ b/repos/libports/recipes/src/mupdf/used_apis
@@ -0,0 +1,7 @@
+freetype
+jbig2dec
+jpeg
+libc
+openjpeg
+so
+zlib
diff --git a/repos/libports/recipes/src/openjpeg/api b/repos/libports/recipes/src/openjpeg/api
new file mode 100644
index 0000000000..bd93ce0cc5
--- /dev/null
+++ b/repos/libports/recipes/src/openjpeg/api
@@ -0,0 +1 @@
+jpeg
diff --git a/repos/libports/recipes/src/openjpeg/content.mk b/repos/libports/recipes/src/openjpeg/content.mk
new file mode 100644
index 0000000000..3c835333ba
--- /dev/null
+++ b/repos/libports/recipes/src/openjpeg/content.mk
@@ -0,0 +1,14 @@
+content: src/lib/openjpeg lib/mk/openjpeg.mk LICENSE
+
+PORT_DIR := $(call port_dir,$(REP_DIR)/ports/openjpeg)
+
+src/lib/openjpeg:
+ mkdir -p $(dir $@)
+ cp -r $(PORT_DIR)/src/lib/openjpeg $@
+ echo "LIBS = openjpeg" > $@/target.mk
+
+lib/mk/%.mk:
+ $(mirror_from_rep_dir)
+
+LICENSE:
+ cp $(PORT_DIR)/src/lib/openjpeg/LICENSE $@
diff --git a/repos/libports/recipes/src/openjpeg/hash b/repos/libports/recipes/src/openjpeg/hash
new file mode 100644
index 0000000000..1464ce81ba
--- /dev/null
+++ b/repos/libports/recipes/src/openjpeg/hash
@@ -0,0 +1 @@
+2017-11-21 4da64e8d4cb4f17c9602506658e7e00139b4121f
diff --git a/repos/libports/recipes/src/openjpeg/used_apis b/repos/libports/recipes/src/openjpeg/used_apis
new file mode 100644
index 0000000000..4011ccc3b3
--- /dev/null
+++ b/repos/libports/recipes/src/openjpeg/used_apis
@@ -0,0 +1,2 @@
+libc
+so
diff --git a/repos/libports/recipes/src/pdf_view/content.mk b/repos/libports/recipes/src/pdf_view/content.mk
new file mode 100644
index 0000000000..68b322c7b3
--- /dev/null
+++ b/repos/libports/recipes/src/pdf_view/content.mk
@@ -0,0 +1,10 @@
+SRC_DIR := src/app/pdf_view
+include $(GENODE_DIR)/repos/base/recipes/src/content.inc
+
+content: src/lib/mupdf/apps/pdfapp.c src/lib/mupdf/apps/pdfapp.h
+
+PORT_DIR := $(call port_dir,$(REP_DIR)/ports/mupdf)
+
+src/lib/mupdf/apps/%: $(PORT_DIR)/src/lib/mupdf/apps/%
+ mkdir -p $(dir $@)
+ cp -r $< $@
diff --git a/repos/libports/recipes/src/pdf_view/hash b/repos/libports/recipes/src/pdf_view/hash
new file mode 100644
index 0000000000..7fe209c619
--- /dev/null
+++ b/repos/libports/recipes/src/pdf_view/hash
@@ -0,0 +1 @@
+2017-11-21 0a8fe9add062240e229a447733cf77e3f1a170b0
diff --git a/repos/libports/recipes/src/pdf_view/used_apis b/repos/libports/recipes/src/pdf_view/used_apis
new file mode 100644
index 0000000000..2dd63f1788
--- /dev/null
+++ b/repos/libports/recipes/src/pdf_view/used_apis
@@ -0,0 +1,9 @@
+base
+framebuffer_session
+input_session
+libc
+mupdf
+os
+so
+timer_session
+vfs
diff --git a/repos/libports/run/mupdf.run b/repos/libports/run/mupdf.run
index 1c0ddcaa1c..144806af74 100644
--- a/repos/libports/run/mupdf.run
+++ b/repos/libports/run/mupdf.run
@@ -1,7 +1,7 @@
set build_components {
core init
drivers/timer
- app/mupdf
+ app/pdf_view
drivers/framebuffer drivers/input
}
@@ -58,7 +58,7 @@ append config {
-
+
@@ -88,10 +88,10 @@ if {![file exist bin/test.pdf]} {
set boot_modules {
core init ld.lib.so timer
- mupdf
libc.lib.so libm.lib.so
openjpeg.lib.so freetype.lib.so libpng.lib.so zlib.lib.so jbig2dec.lib.so
mupdf.lib.so jpeg.lib.so
+ pdf_view
test.pdf
}
diff --git a/repos/libports/src/app/mupdf/main.cc b/repos/libports/src/app/pdf_view/main.cc
similarity index 100%
rename from repos/libports/src/app/mupdf/main.cc
rename to repos/libports/src/app/pdf_view/main.cc
diff --git a/repos/libports/src/app/mupdf/target.mk b/repos/libports/src/app/pdf_view/target.mk
similarity index 76%
rename from repos/libports/src/app/mupdf/target.mk
rename to repos/libports/src/app/pdf_view/target.mk
index 140855f1fa..817f8ff20f 100644
--- a/repos/libports/src/app/mupdf/target.mk
+++ b/repos/libports/src/app/pdf_view/target.mk
@@ -1,8 +1,8 @@
MUPDF_DIR := $(call select_from_ports,mupdf)/src/lib/mupdf
-TARGET := mupdf
+TARGET := pdf_view
SRC_C := pdfapp.c
SRC_CC := main.cc
-LIBS := libc mupdf
+LIBS := base libc mupdf
INC_DIR += $(MUPDF_DIR)/apps
vpath pdfapp.c $(MUPDF_DIR)/apps