From babeb5c556de6f9686f5cd47133d0c40c07bfc2e Mon Sep 17 00:00:00 2001 From: Moonchild Date: Sat, 2 Jan 2021 13:35:39 +0000 Subject: Issue #61 - Reinstate buildability with shared gkmedias dll This fully works for splitting gkmedias.dll back out from xul with one exception which is Skia throwing undefined externals when linking gkmedias. --- config/moz.build | 3 + config/system-headers | 16 + dom/media/gmp/moz.build | 3 + gfx/angle/moz.build | 8 + gfx/graphite2/src/moz.build | 10 +- gfx/ots/src/moz.build | 7 + gfx/qcms/moz.build | 5 +- gfx/skia/generate_mozbuild.py | 4 + gfx/skia/moz.build | 6 +- gfx/skia/skia/include/utils/SkPaintFilterCanvas.h | 2 +- gfx/skia/skia/src/core/SkCanvas.cpp | 4 +- gfx/skia/skia/src/ports/SkTypeface_win_dw.cpp | 2 +- gfx/thebes/moz.build | 3 + layout/media/Makefile.in | 11 + layout/media/moz.build | 17 +- layout/media/symbols.def.in | 661 ++++++++++++++++++++++ media/libaom/moz.build | 3 + media/libcubeb/src/moz.build | 3 + media/libjpeg/moz.build | 3 + media/libmkv/moz.build | 3 + media/libnestegg/src/moz.build | 3 + media/libogg/moz.build | 3 + media/libopus/moz.build | 6 +- media/libpng/moz.build | 3 + media/libspeex_resampler/src/moz.build | 4 + media/libtheora/moz.build | 3 + media/libvorbis/moz.build | 3 + media/libvpx/moz.build | 3 + media/mtransport/build/moz.build | 3 + modules/brotli/moz.build | 5 + old-configure.in | 10 +- 31 files changed, 804 insertions(+), 16 deletions(-) create mode 100644 layout/media/Makefile.in create mode 100644 layout/media/symbols.def.in diff --git a/config/moz.build b/config/moz.build index fccf5cbcd..3e95e46d2 100644 --- a/config/moz.build +++ b/config/moz.build @@ -28,6 +28,9 @@ if CONFIG['HOST_OS_ARCH'] != 'WINNT': # while the program here is in C. HostProgram('nsinstall_real', c_only=True) +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + DEFINES['GKMEDIAS_SHARED_LIBRARY'] = True + PYTHON_UNIT_TESTS += [ 'tests/test_mozbuild_reading.py', 'tests/unit-expandlibs.py', diff --git a/config/system-headers b/config/system-headers index 015644428..76c79c915 100644 --- a/config/system-headers +++ b/config/system-headers @@ -1287,6 +1287,22 @@ QtSparql/qsparqlresult.h #if MOZ_TREE_PIXMAN!=1 pixman.h #endif +#ifdef GKMEDIAS_SHARED_LIBRARY +vpx/vpx_codec.h +vpx/vpx_decoder.h +vpx/vpx_encoder.h +vpx/vp8cx.h +vpx/vp8dx.h +vpx_mem/vpx_mem.h +vorbis/codec.h +theora/theoradec.h +tremor/ivorbiscodec.h +speex/speex_resampler.h +ogg/ogg.h +ogg/os_types.h +nestegg/nestegg.h +cubeb/cubeb.h +#endif gst/gst.h gst/app/gstappsink.h gst/app/gstappsrc.h diff --git a/dom/media/gmp/moz.build b/dom/media/gmp/moz.build index 252bfc4a6..6e9e92e8a 100644 --- a/dom/media/gmp/moz.build +++ b/dom/media/gmp/moz.build @@ -145,6 +145,9 @@ IPDL_SOURCES += [ 'PGMPVideoEncoder.ipdl', ] +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + # comment this out to use Unsafe Shmem for more performance DEFINES['GMP_SAFE_SHMEM'] = True diff --git a/gfx/angle/moz.build b/gfx/angle/moz.build index 1dbfaf2ce..f12eb6ca5 100755 --- a/gfx/angle/moz.build +++ b/gfx/angle/moz.build @@ -172,6 +172,14 @@ EXPORTS.angle.KHR += [ 'include/KHR/khrplatform.h' ] LOCAL_INCLUDES += [ 'include', 'src', 'src/common/third_party/numerics' ] +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + +# This tells ANGLE to build the translator with declspec(dllexport) on Windows +# which we need to get these symbols exported from gkmedias +DEFINES['COMPONENT_BUILD'] = True +DEFINES['ANGLE_TRANSLATOR_IMPLEMENTATION'] = True + # We allow warnings for third-party code that can be updated from upstream. ALLOW_COMPILER_WARNINGS = True diff --git a/gfx/graphite2/src/moz.build b/gfx/graphite2/src/moz.build index 09ebc0ce6..ecf396e2b 100644 --- a/gfx/graphite2/src/moz.build +++ b/gfx/graphite2/src/moz.build @@ -57,9 +57,13 @@ SOURCES += [ 'UtfCodec.cpp', ] -# tell graphite2 not to export symbols, we'll be linking it directly with -# thebes -DEFINES['GRAPHITE2_STATIC'] = True +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + DEFINES['GRAPHITE2_EXPORTING'] = True +else: + # tell graphite2 not to export symbols, we'll be linking it directly with + # thebes + DEFINES['GRAPHITE2_STATIC'] = True # We allow warnings for third-party code that can be updated from upstream. ALLOW_COMPILER_WARNINGS = True diff --git a/gfx/ots/src/moz.build b/gfx/ots/src/moz.build index 150773db9..909a2092e 100644 --- a/gfx/ots/src/moz.build +++ b/gfx/ots/src/moz.build @@ -56,6 +56,9 @@ SOURCES += [ 'vvar.cc', ] +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + # We allow warnings for third-party code that can be updated from upstream. ALLOW_COMPILER_WARNINGS = True @@ -66,6 +69,10 @@ DEFINES['PACKAGE_BUGREPORT'] = '"http://bugzilla.mozilla.org/"' DEFINES['OTS_GRAPHITE'] = 1 DEFINES['OTS_VARIATIONS'] = 1 +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + DEFINES['OTS_DLL'] = True + DEFINES['OTS_DLL_EXPORTS'] = True + USE_LIBS += [ 'brotli', 'woff2', diff --git a/gfx/qcms/moz.build b/gfx/qcms/moz.build index 405743606..9bcbbe63a 100644 --- a/gfx/qcms/moz.build +++ b/gfx/qcms/moz.build @@ -16,7 +16,10 @@ SOURCES += [ 'transform_util.c', ] -FINAL_LIBRARY = 'xul' +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + +FINAL_LIBRARY = 'gkmedias' if CONFIG['GNU_CC']: CFLAGS += ['-Wno-missing-field-initializers'] diff --git a/gfx/skia/generate_mozbuild.py b/gfx/skia/generate_mozbuild.py index 08d6ed9ab..de0a5c52e 100755 --- a/gfx/skia/generate_mozbuild.py +++ b/gfx/skia/generate_mozbuild.py @@ -84,6 +84,10 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': 'skia/src/fonts/SkRemotableFontMgr.cpp', ] +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + DEFINES['SKIA_DLL'] = 1 + DEFINES['GR_DLL'] = 1 + # We should autogenerate these SSE related flags. if CONFIG['_MSC_VER']: diff --git a/gfx/skia/moz.build b/gfx/skia/moz.build index 56570e61f..4ef5060b0 100644 --- a/gfx/skia/moz.build +++ b/gfx/skia/moz.build @@ -643,7 +643,6 @@ else: 'skia/src/opts/SkBlitRow_opts_none.cpp', ] - # We allow warnings for third-party code that can be updated from upstream. ALLOW_COMPILER_WARNINGS = True @@ -694,6 +693,11 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': 'skia/src/fonts/SkRemotableFontMgr.cpp', ] +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + DEFINES['SKIA_DLL'] = 1 + DEFINES['GR_DLL'] = 1 + DEFINES['SK_FONT_HOST_USE_SYSTEM_SETTINGS'] = 1 + # We should autogenerate these SSE related flags. if CONFIG['_MSC_VER']: diff --git a/gfx/skia/skia/include/utils/SkPaintFilterCanvas.h b/gfx/skia/skia/include/utils/SkPaintFilterCanvas.h index 63eaaa2fb..29474df0f 100644 --- a/gfx/skia/skia/include/utils/SkPaintFilterCanvas.h +++ b/gfx/skia/skia/include/utils/SkPaintFilterCanvas.h @@ -27,7 +27,7 @@ public: * specified canvas. Also copies the target canvas matrix and clip bounds. */ SkPaintFilterCanvas(SkCanvas* canvas); - + enum Type { kPaint_Type, kPoint_Type, diff --git a/gfx/skia/skia/src/core/SkCanvas.cpp b/gfx/skia/skia/src/core/SkCanvas.cpp index 505592d0f..0a080f737 100644 --- a/gfx/skia/skia/src/core/SkCanvas.cpp +++ b/gfx/skia/skia/src/core/SkCanvas.cpp @@ -22,6 +22,7 @@ #include "SkLatticeIter.h" #include "SkMatrixUtils.h" #include "SkMetaData.h" +#include "SkNWayCanvas.h" #include "SkNx.h" #include "SkPaintPriv.h" #include "SkPatchUtils.h" @@ -45,9 +46,10 @@ #include "GrContext.h" #include "GrRenderTarget.h" #include "SkGrPriv.h" - #endif +class SkNWayCanvas; + #define RETURN_ON_NULL(ptr) do { if (nullptr == (ptr)) return; } while (0) /* diff --git a/gfx/skia/skia/src/ports/SkTypeface_win_dw.cpp b/gfx/skia/skia/src/ports/SkTypeface_win_dw.cpp index 96a728f60..ca5f01aed 100644 --- a/gfx/skia/skia/src/ports/SkTypeface_win_dw.cpp +++ b/gfx/skia/skia/src/ports/SkTypeface_win_dw.cpp @@ -251,7 +251,7 @@ SkScalerContext* DWriteFontTypeface::onCreateScalerContext(const SkScalerContext } #ifdef MOZ_SKIA -IDWriteRenderingParams* GetDwriteRenderingParams(bool aGDI); +extern IDWriteRenderingParams* GetDwriteRenderingParams(bool aGDI); #endif void DWriteFontTypeface::onFilterRec(SkScalerContext::Rec* rec) const { diff --git a/gfx/thebes/moz.build b/gfx/thebes/moz.build index a725ab024..b84c4a4c6 100644 --- a/gfx/thebes/moz.build +++ b/gfx/thebes/moz.build @@ -255,6 +255,9 @@ LOCAL_INCLUDES += ['/media/libyuv/include'] DEFINES['GRAPHITE2_STATIC'] = True +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + DEFINES['OTS_DLL'] = True + if CONFIG['CLANG_CXX']: # Suppress warnings from Skia header files. SOURCES['gfxPlatform.cpp'].flags += ['-Wno-implicit-fallthrough'] diff --git a/layout/media/Makefile.in b/layout/media/Makefile.in new file mode 100644 index 000000000..86d9b181d --- /dev/null +++ b/layout/media/Makefile.in @@ -0,0 +1,11 @@ +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +include $(topsrcdir)/config/rules.mk + +ifeq (WINNT,$(OS_TARGET)) +symbols.def: symbols.def.in $(GLOBAL_DEPS) + $(call py_action,preprocessor,$(ACDEFINES) $< -o $@) +endif diff --git a/layout/media/moz.build b/layout/media/moz.build index 8fd0eb9a8..9ea465319 100644 --- a/layout/media/moz.build +++ b/layout/media/moz.build @@ -6,16 +6,23 @@ with Files('**'): BUG_COMPONENT = ('Core', 'Video/Audio') -# media/webrtc/signaling/test/common.build uses the gkmedias library, -# expecting at least some of what it contains to be linked, but not libxul, -# so we need to keep an independent pseudo-library, as well as the OS_LIBS -# on Windows for them to propagate there. -Library('gkmedias') +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + GeckoSharedLibrary('gkmedias', linkage=None) + USE_LIBS += [ + 'nspr', + ] +else: + # media/webrtc/signaling/test/common.build uses the gkmedias library, + # expecting at least some of what it contains to be linked, but not libxul, + # so we need to keep an independent pseudo-library, as well as the OS_LIBS + # on Windows for them to propagate there. + Library('gkmedias') if CONFIG['MOZ_WEBRTC']: DIRS += ['webrtc'] if CONFIG['OS_TARGET'] == 'WINNT': + DEFFILE = 'symbols.def' OS_LIBS += [ 'usp10', 'ole32', diff --git a/layout/media/symbols.def.in b/layout/media/symbols.def.in new file mode 100644 index 000000000..80ce13b65 --- /dev/null +++ b/layout/media/symbols.def.in @@ -0,0 +1,661 @@ +;+# This Source Code Form is subject to the terms of the Mozilla Public +;+# License, v. 2.0. If a copy of the MPL was not distributed with this +;+# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +LIBRARY gkmedias.dll +EXPORTS +nestegg_destroy +nestegg_duration +nestegg_free_packet +nestegg_init +nestegg_offset_seek +nestegg_packet_count +nestegg_packet_discard_padding +nestegg_packet_data +nestegg_packet_duration +nestegg_packet_encryption +nestegg_packet_has_keyframe +nestegg_packet_iv +nestegg_packet_track +nestegg_packet_tstamp +nestegg_read_packet +nestegg_read_reset +nestegg_track_audio_params +nestegg_track_codec_data +nestegg_track_codec_data_count +nestegg_track_codec_id +nestegg_track_content_enc_key_id +nestegg_track_count +nestegg_get_cue_point +nestegg_track_seek +nestegg_track_type +nestegg_track_video_params +nestegg_tstamp_scale +nestegg_has_cues +nestegg_sniff +#ifdef MOZ_WEBM_ENCODER +writeSimpleBlock +writeHeader +writeSegmentInformation +writeVideoTrack +writeAudioTrack +Ebml_Serialize +Ebml_SerializeUnsigned +Ebml_StartSubElement +Ebml_EndSubElement +#endif +vpx_codec_control_ +vpx_codec_dec_init_ver +vpx_codec_decode +vpx_codec_destroy +vpx_codec_err_to_string +vpx_codec_get_frame +vpx_codec_peek_stream_info +vpx_codec_vp8_dx +vpx_codec_vp9_dx +vpx_img_free +vpx_codec_enc_config_set +vpx_codec_enc_init_ver +vpx_codec_vp8_cx +vpx_codec_vp9_cx +vpx_img_set_rect +vpx_img_wrap +vpx_codec_get_cx_data +vpx_codec_enc_config_default +vpx_img_alloc +vpx_codec_encode +#ifdef MOZ_AV1 +aom_codec_av1_dx +aom_codec_dec_init_ver +aom_codec_decode +aom_codec_destroy +aom_codec_err_to_string +aom_codec_get_frame +aom_codec_peek_stream_info +aom_img_alloc +aom_img_free + +#ifdef MOZ_VORBIS +ogg_page_bos +ogg_page_granulepos +ogg_page_serialno +ogg_set_mem_functions +ogg_stream_check +ogg_stream_clear +ogg_stream_eos +ogg_stream_flush +ogg_stream_init +ogg_stream_packetin +ogg_stream_packetout +ogg_stream_pagein +ogg_stream_pageout +ogg_stream_reset +ogg_sync_buffer +ogg_sync_clear +ogg_sync_init +ogg_sync_pageseek +ogg_sync_reset +ogg_sync_wrote +vorbis_analysis +vorbis_analysis_blockout +vorbis_analysis_buffer +vorbis_analysis_init +vorbis_analysis_headerout +vorbis_analysis_wrote +vorbis_block_clear +vorbis_block_init +vorbis_comment_add_tag +vorbis_comment_clear +vorbis_comment_init +vorbis_dsp_clear +vorbis_encode_init_vbr +vorbis_info_clear +vorbis_info_init +vorbis_packet_blocksize +vorbis_synthesis +vorbis_synthesis_blockin +vorbis_synthesis_headerin +vorbis_synthesis_init +vorbis_synthesis_pcmout +vorbis_synthesis_read +vorbis_synthesis_restart +#endif +moz_speex_resampler_init +moz_speex_resampler_destroy +moz_speex_resampler_process_float +moz_speex_resampler_process_interleaved_float +moz_speex_resampler_process_interleaved_int +moz_speex_resampler_set_rate +moz_speex_resampler_get_rate +moz_speex_resampler_get_ratio +moz_speex_resampler_get_input_latency +moz_speex_resampler_get_output_latency +moz_speex_resampler_skip_zeros +moz_speex_resampler_set_skip_frac_num +moz_speex_resampler_reset_mem +cubeb_destroy +cubeb_init +cubeb_get_backend_id +cubeb_get_max_channel_count +cubeb_get_min_latency +cubeb_get_preferred_sample_rate +cubeb_stream_destroy +cubeb_stream_get_position +cubeb_stream_init +cubeb_stream_start +cubeb_stream_stop +cubeb_stream_get_latency +cubeb_stream_set_volume +cubeb_stream_set_panning +cubeb_stream_get_current_device +cubeb_stream_device_destroy +cubeb_stream_register_device_changed_callback +th_comment_clear +th_comment_init +th_decode_alloc +th_decode_free +th_decode_headerin +th_decode_packetin +th_decode_ycbcr_out +th_granule_frame +th_info_clear +th_info_init +th_packet_isheader +th_packet_iskeyframe +th_setup_free +opus_decoder_create +opus_decoder_destroy +opus_decoder_ctl +opus_decoder_get_nb_samples +opus_decode +opus_decode_float +opus_get_version_string +opus_multistream_decoder_create +opus_multistream_decoder_ctl +opus_multistream_decoder_destroy +opus_multistream_decode_float +opus_multistream_decode +opus_packet_get_nb_frames +opus_packet_get_samples_per_frame +opus_encoder_create +opus_encoder_destroy +opus_encoder_ctl +opus_encode +opus_encode_float +#ifndef MOZ_NATIVE_PNG +MOZ_APNG_get_first_frame_is_hidden +MOZ_APNG_get_next_frame_blend_op +MOZ_APNG_get_next_frame_delay_den +MOZ_APNG_get_next_frame_delay_num +MOZ_APNG_get_next_frame_dispose_op +MOZ_APNG_set_prog_frame_fn +MOZ_APNG_get_next_frame_height +MOZ_APNG_get_next_frame_width +MOZ_APNG_get_next_frame_x_offset +MOZ_APNG_get_next_frame_y_offset +MOZ_APNG_set_acTL +MOZ_APNG_set_first_frame_is_hidden +MOZ_APNG_set_num_plays +MOZ_APNG_write_frame_head +MOZ_APNG_write_frame_tail +MOZ_PNG_cr_info_str +MOZ_PNG_cr_read_str +MOZ_PNG_cr_write_str +MOZ_PNG_dest_read_str +MOZ_PNG_dest_write_str +MOZ_PNG_free_data +MOZ_PNG_get_channels +MOZ_PNG_get_cHRM +MOZ_PNG_get_gAMA +MOZ_PNG_get_IHDR +MOZ_PNG_get_iCCP +MOZ_PNG_get_io_ptr +MOZ_PNG_get_progressive_ptr +MOZ_PNG_get_sRGB +MOZ_PNG_get_tRNS +MOZ_PNG_get_valid +MOZ_PNG_longjmp +MOZ_PNG_process_data +MOZ_PNG_process_data_pause +MOZ_PNG_progressive_combine_row +MOZ_PNG_read_update_info +MOZ_PNG_set_cHRM +MOZ_PNG_set_crc_action +MOZ_PNG_set_gAMA +MOZ_PNG_set_gamma +MOZ_PNG_set_gray_to_rgb +MOZ_PNG_set_expand +MOZ_PNG_set_IHDR +MOZ_PNG_set_interlace_handling +MOZ_PNG_set_longjmp_fn +MOZ_PNG_set_progressive_read_fn +MOZ_PNG_set_scale_16 +MOZ_PNG_set_write_fn +MOZ_PNG_write_end +MOZ_PNG_write_info +MOZ_PNG_write_row +#endif +png_set_option +png_error +#ifndef MOZ_NATIVE_JPEG +jpeg_calc_output_dimensions +jpeg_consume_input +jpeg_CreateCompress +jpeg_CreateDecompress +jpeg_destroy_compress +jpeg_destroy_decompress +jpeg_finish_compress +jpeg_finish_decompress +jpeg_finish_output +jpeg_has_multiple_scans +jpeg_input_complete +jpeg_read_header +jpeg_read_scanlines +jpeg_resync_to_restart +jpeg_save_markers +jpeg_set_defaults +jpeg_set_quality +jpeg_start_compress +jpeg_start_decompress +jpeg_start_output +jpeg_std_error +jpeg_write_scanlines +jpeg_write_raw_data +jpeg_stdio_dest +jpeg_abort +jpeg_abort_decompress +jpeg_read_raw_data +#endif +WebPDemuxDelete +WebPDemuxGetChunk +WebPDemuxGetFrame +WebPDemuxGetI +WebPDemuxInternal +WebPDemuxNextFrame +WebPDemuxReleaseChunkIterator +WebPDemuxReleaseIterator +WebPFreeDecBuffer +WebPIDecGetRGB +WebPIDelete +WebPINewDecoder +WebPIUpdate +WebPInitDecBufferInternal +qcms_enable_iccv4 +qcms_data_from_unicode_path +qcms_data_from_path +qcms_profile_create_rgb_with_gamma +qcms_profile_from_memory +qcms_profile_from_path +qcms_profile_from_unicode_path +qcms_profile_get_color_space +qcms_profile_get_rendering_intent +qcms_profile_is_bogus +qcms_profile_precache_output_transform +qcms_profile_release +qcms_profile_sRGB +qcms_transform_create +qcms_transform_data +qcms_transform_release +MOZ_XMLCheckQName +MOZ_XMLIsLetter +MOZ_XMLIsNCNameChar +MOZ_XMLTranslateEntity +MOZ_XML_ExternalEntityParserCreate +MOZ_XML_GetBase +MOZ_XML_GetCurrentByteIndex +MOZ_XML_GetCurrentColumnNumber +MOZ_XML_GetCurrentLineNumber +MOZ_XML_GetErrorCode +MOZ_XML_GetIdAttributeIndex +MOZ_XML_GetMismatchedTag +MOZ_XML_GetSpecifiedAttributeCount +MOZ_XML_Parse +MOZ_XML_ParserCreate_MM +MOZ_XML_ParserFree +MOZ_XML_ResumeParser +MOZ_XML_SetBase +MOZ_XML_SetCdataSectionHandler +MOZ_XML_SetCharacterDataHandler +MOZ_XML_SetCommentHandler +MOZ_XML_SetDefaultHandlerExpand +MOZ_XML_SetDoctypeDeclHandler +MOZ_XML_SetElementHandler +MOZ_XML_SetExternalEntityRefHandler +MOZ_XML_SetExternalEntityRefHandlerArg +MOZ_XML_SetNamespaceDeclHandler +MOZ_XML_SetNotationDeclHandler +MOZ_XML_SetParamEntityParsing +MOZ_XML_SetProcessingInstructionHandler +MOZ_XML_SetReturnNSTriplet +MOZ_XML_SetUnparsedEntityDeclHandler +MOZ_XML_SetUserData +MOZ_XML_SetXmlDeclHandler +MOZ_XML_StopParser +#ifdef MOZ_TREE_CAIRO +_moz_cairo_append_path +_moz_cairo_arc +_moz_cairo_arc_negative +_moz_cairo_clip +_moz_cairo_clip_extents +_moz_cairo_clip_preserve +_moz_cairo_close_path +_moz_cairo_copy_clip_rectangle_list +_moz_cairo_copy_path +_moz_cairo_copy_path_flat +_moz_cairo_create +_moz_cairo_curve_to +_moz_cairo_d2d_create_device +_moz_cairo_d2d_create_device_from_d3d10device +_moz_cairo_d2d_device_get_device +_moz_cairo_d2d_get_dc +_moz_cairo_d2d_get_image_surface_cache_usage +_moz_cairo_d2d_get_surface_vram_usage +_moz_cairo_d2d_present_backbuffer +_moz_cairo_d2d_release_dc +_moz_cairo_d2d_scroll +_moz_cairo_d2d_surface_create +_moz_cairo_d2d_surface_create_for_handle +_moz_cairo_d2d_surface_create_for_hwnd +_moz_cairo_d2d_surface_create_for_texture +_moz_cairo_d2d_surface_get_height +_moz_cairo_d2d_surface_get_texture +_moz_cairo_d2d_surface_get_width +_moz_cairo_debug_reset_static_data +_moz_cairo_destroy +_moz_cairo_device_to_user +_moz_cairo_device_to_user_distance +_moz_cairo_dwrite_font_face_create_for_dwrite_fontface +_moz_cairo_dwrite_get_cleartype_rendering_mode +_moz_cairo_dwrite_scaled_font_allow_manual_show_glyphs +_moz_cairo_dwrite_scaled_font_get_force_GDI_classic +_moz_cairo_dwrite_scaled_font_set_force_GDI_classic +_moz_cairo_dwrite_set_cleartype_params +_moz_cairo_fill +_moz_cairo_fill_extents +_moz_cairo_fill_preserve +_moz_cairo_font_face_destroy +_moz_cairo_font_options_create +_moz_cairo_font_options_destroy +_moz_cairo_font_options_get_antialias +_moz_cairo_font_options_get_hint_metrics +_moz_cairo_font_options_set_antialias +_moz_cairo_format_stride_for_width +_moz_cairo_get_antialias +_moz_cairo_get_current_point +_moz_cairo_get_dash +_moz_cairo_get_dash_count +_moz_cairo_get_fill_rule +_moz_cairo_get_font_matrix +_moz_cairo_get_font_options +_moz_cairo_get_group_target +_moz_cairo_get_line_cap +_moz_cairo_get_line_join +_moz_cairo_get_line_width +_moz_cairo_get_matrix +_moz_cairo_get_miter_limit +_moz_cairo_get_operator +_moz_cairo_get_scaled_font +_moz_cairo_get_source +_moz_cairo_get_target +_moz_cairo_glyph_extents +_moz_cairo_glyph_path +_moz_cairo_identity_matrix +_moz_cairo_image_surface_create +_moz_cairo_image_surface_create_for_data +_moz_cairo_image_surface_get_data +_moz_cairo_image_surface_get_format +_moz_cairo_image_surface_get_height +_moz_cairo_image_surface_get_stride +_moz_cairo_image_surface_get_width +_moz_cairo_in_fill +_moz_cairo_in_stroke +_moz_cairo_line_to +_moz_cairo_mask +_moz_cairo_mask_surface +_moz_cairo_matrix_init +_moz_cairo_matrix_init_identity +_moz_cairo_matrix_init_scale +_moz_cairo_matrix_init_translate +_moz_cairo_matrix_invert +_moz_cairo_matrix_multiply +_moz_cairo_matrix_rotate +_moz_cairo_matrix_scale +_moz_cairo_matrix_transform_distance +_moz_cairo_matrix_transform_point +_moz_cairo_matrix_translate +_moz_cairo_move_to +_moz_cairo_new_path +_moz_cairo_new_sub_path +_moz_cairo_null_surface_create +_moz_cairo_paint +_moz_cairo_paint_with_alpha +_moz_cairo_path_destroy +_moz_cairo_path_extents +_moz_cairo_pattern_add_color_stop_rgba +_moz_cairo_pattern_create_for_surface +_moz_cairo_pattern_create_linear +_moz_cairo_pattern_create_radial +_moz_cairo_pattern_create_rgba +_moz_cairo_pattern_destroy +_moz_cairo_pattern_get_color_stop_count +_moz_cairo_pattern_get_color_stop_rgba +_moz_cairo_pattern_get_extend +_moz_cairo_pattern_get_filter +_moz_cairo_pattern_get_linear_points +_moz_cairo_pattern_get_matrix +_moz_cairo_pattern_get_radial_circles +_moz_cairo_pattern_get_rgba +_moz_cairo_pattern_get_surface +_moz_cairo_pattern_get_type +_moz_cairo_pattern_reference +_moz_cairo_pattern_set_extend +_moz_cairo_pattern_set_filter +_moz_cairo_pattern_set_matrix +_moz_cairo_pattern_status +_moz_cairo_pdf_surface_create_for_stream +_moz_cairo_pop_group +_moz_cairo_pop_group_to_source +_moz_cairo_push_group +_moz_cairo_push_group_with_content +_moz_cairo_rectangle +_moz_cairo_rectangle_list_destroy +_moz_cairo_reference +_moz_cairo_release_device +_moz_cairo_reset_clip +_moz_cairo_restore +_moz_cairo_rotate +_moz_cairo_save +_moz_cairo_scale +_moz_cairo_scaled_font_create +_moz_cairo_scaled_font_destroy +_moz_cairo_scaled_font_get_font_matrix +_moz_cairo_scaled_font_get_font_options +_moz_cairo_scaled_font_get_type +_moz_cairo_scaled_font_glyph_extents +_moz_cairo_scaled_font_reference +_moz_cairo_scaled_font_status +_moz_cairo_set_antialias +_moz_cairo_set_dash +_moz_cairo_set_fill_rule +_moz_cairo_set_font_face +_moz_cairo_set_font_options +_moz_cairo_set_font_size +_moz_cairo_set_line_cap +_moz_cairo_set_line_join +_moz_cairo_set_line_width +_moz_cairo_set_matrix +_moz_cairo_set_miter_limit +_moz_cairo_set_operator +_moz_cairo_set_scaled_font +_moz_cairo_set_source +_moz_cairo_set_source_rgba +_moz_cairo_set_source_surface +_moz_cairo_show_glyphs +_moz_cairo_status +_moz_cairo_status_to_string +_moz_cairo_stroke +_moz_cairo_stroke_extents +_moz_cairo_stroke_preserve +_moz_cairo_surface_attach_snapshot +_moz_cairo_surface_create_similar +_moz_cairo_surface_destroy +_moz_cairo_surface_finish +_moz_cairo_surface_flush +_moz_cairo_surface_get_content +_moz_cairo_surface_get_device_offset +_moz_cairo_surface_get_reference_count +_moz_cairo_surface_get_subpixel_antialiasing +_moz_cairo_surface_get_type +_moz_cairo_surface_get_user_data +_moz_cairo_surface_mark_dirty +_moz_cairo_surface_mark_dirty_rectangle +_moz_cairo_surface_reference +_moz_cairo_surface_set_device_offset +_moz_cairo_surface_set_fallback_resolution +_moz_cairo_surface_set_subpixel_antialiasing +_moz_cairo_surface_set_user_data +_moz_cairo_surface_show_page +_moz_cairo_surface_status +_moz_cairo_tee_surface_add +_moz_cairo_tee_surface_create +_moz_cairo_tee_surface_index +_moz_cairo_transform +_moz_cairo_translate +_moz_cairo_user_to_device +_moz_cairo_user_to_device_distance +_moz_cairo_win32_font_face_create_for_logfontw +_moz_cairo_win32_font_face_create_for_logfontw_hfont +_moz_cairo_win32_get_dc_with_clip +_moz_cairo_win32_get_system_text_quality +#ifdef NS_PRINTING +_moz_cairo_win32_printing_surface_create +#endif +_moz_cairo_win32_scaled_font_select_font +_moz_cairo_win32_surface_create +_moz_cairo_win32_surface_create_with_alpha +_moz_cairo_win32_surface_create_with_d3dsurface9 +_moz_cairo_win32_surface_create_with_ddb +_moz_cairo_win32_surface_create_with_dib +_moz_cairo_win32_surface_get_dc +_moz_cairo_win32_surface_get_height +_moz_cairo_win32_surface_get_image +_moz_cairo_win32_surface_get_width +_moz_cairo_win32_surface_set_can_convert_to_dib +#ifdef MOZ_TREE_PIXMAN +_moz_pixman_image_composite32 +_moz_pixman_image_create_bits +_moz_pixman_image_set_filter +_moz_pixman_image_set_transform +_moz_pixman_image_unref +_moz_pixman_transform_from_pixman_f_transform +_moz_pixman_transform_invert +_moz_pixman_region32_reset +_moz_pixman_region32_init +_moz_pixman_region32_init_rect +_moz_pixman_region32_init_rects +_moz_pixman_region32_init_with_extents +_moz_pixman_region32_fini +_moz_pixman_region32_translate +_moz_pixman_region32_copy +_moz_pixman_region32_intersect +_moz_pixman_region32_intersect_rect +_moz_pixman_region32_union +_moz_pixman_region32_union_rect +_moz_pixman_region32_subtract +_moz_pixman_region32_inverse +_moz_pixman_region32_contains_point +_moz_pixman_region32_contains_rectangle +_moz_pixman_region32_not_empty +_moz_pixman_region32_extents +_moz_pixman_region32_n_rects +_moz_pixman_region32_rectangles +_moz_pixman_region32_equal +_moz_pixman_region32_selfcheck +_moz_pixman_region32_reset +_moz_pixman_region32_clear +#endif +#endif +hb_blob_create +hb_blob_destroy +hb_blob_get_data +hb_blob_get_empty +hb_blob_get_length +hb_blob_reference +hb_buffer_add_utf16 +hb_buffer_create +hb_buffer_destroy +hb_buffer_get_glyph_infos +hb_buffer_get_glyph_positions +hb_buffer_reverse +hb_buffer_set_cluster_level +hb_buffer_set_direction +hb_buffer_set_language +hb_buffer_set_script +hb_buffer_set_unicode_funcs +hb_face_create_for_tables +hb_face_destroy +hb_face_reference +hb_font_create +hb_font_destroy +hb_font_funcs_create +hb_font_funcs_set_glyph_contour_point_func +hb_font_funcs_set_glyph_extents_func +hb_font_funcs_set_glyph_func +hb_font_funcs_set_glyph_h_advance_func +hb_font_funcs_set_glyph_h_kerning_func +hb_font_funcs_set_glyph_h_origin_func +hb_font_funcs_set_glyph_v_origin_func +hb_font_funcs_set_glyph_v_advance_func +hb_font_funcs_set_nominal_glyph_func +hb_font_funcs_set_variation_glyph_func +hb_font_set_funcs +hb_font_set_ppem +hb_font_set_scale +hb_language_from_string +hb_ot_layout_collect_lookups +hb_ot_layout_feature_get_lookups +hb_ot_layout_has_positioning +hb_ot_layout_has_substitution +hb_ot_layout_language_find_feature +hb_ot_layout_language_get_feature_indexes +hb_ot_layout_language_get_feature_tags +hb_ot_layout_language_get_required_feature_index +hb_ot_layout_lookup_collect_glyphs +hb_ot_layout_script_get_language_tags +hb_ot_layout_table_choose_script +hb_ot_layout_table_find_script +hb_ot_layout_table_get_script_tags +hb_ot_math_get_constant +hb_ot_math_get_glyph_assembly +hb_ot_math_get_glyph_italics_correction +hb_ot_math_get_glyph_variants +hb_ot_math_has_data +hb_ot_tag_to_language +hb_ot_tag_to_script +hb_ot_tags_from_script +hb_set_add +hb_set_clear +hb_set_create +hb_set_destroy +hb_set_get_population +hb_set_has +hb_set_intersect +hb_set_is_empty +hb_set_next +hb_shape +hb_unicode_funcs_create +hb_unicode_funcs_get_empty +hb_unicode_funcs_set_combining_class_func +hb_unicode_funcs_set_compose_func +hb_unicode_funcs_set_decompose_func +hb_unicode_funcs_set_eastasian_width_func +hb_unicode_funcs_set_general_category_func +hb_unicode_funcs_set_mirroring_func +hb_unicode_funcs_set_script_func +BrotliDecoderCreateInstance +BrotliDecoderDecompress +BrotliDecoderDecompressStream +BrotliDecoderDestroyInstance +BrotliDecoderIsFinished +BrotliDecoderStateCleanup +BrotliDecoderStateInit diff --git a/media/libaom/moz.build b/media/libaom/moz.build index 72d55cffe..aedac3102 100644 --- a/media/libaom/moz.build +++ b/media/libaom/moz.build @@ -88,6 +88,9 @@ else: LOCAL_INCLUDES += [ '/media/libaom/config/generic/' ] EXPORTS.aom += [ 'config/generic/config/aom_config.h' ] +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + # We allow warnings for third-party code that can be updated from upstream. ALLOW_COMPILER_WARNINGS = True diff --git a/media/libcubeb/src/moz.build b/media/libcubeb/src/moz.build index b53dec799..65aaf7256 100644 --- a/media/libcubeb/src/moz.build +++ b/media/libcubeb/src/moz.build @@ -81,6 +81,9 @@ if CONFIG['OS_TARGET'] == 'Android': ] DEFINES['USE_AUDIOTRACK'] = True +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + FINAL_LIBRARY = 'gkmedias' CFLAGS += CONFIG['MOZ_ALSA_CFLAGS'] diff --git a/media/libjpeg/moz.build b/media/libjpeg/moz.build index 866830dad..6519c30fb 100644 --- a/media/libjpeg/moz.build +++ b/media/libjpeg/moz.build @@ -150,6 +150,9 @@ else: # No SIMD support? ASFLAGS += CONFIG['LIBJPEG_TURBO_ASFLAGS'] ASFLAGS += ['-I%s/media/libjpeg/simd/' % TOPSRCDIR] +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + # We allow warnings for third-party code that can be updated from upstream. ALLOW_COMPILER_WARNINGS = True diff --git a/media/libmkv/moz.build b/media/libmkv/moz.build index 2463bed86..018ca7474 100644 --- a/media/libmkv/moz.build +++ b/media/libmkv/moz.build @@ -20,6 +20,9 @@ SOURCES += [ 'WebMElement.c', ] +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + FINAL_LIBRARY = 'gkmedias' # We allow warnings for third-party code that can be updated from upstream. diff --git a/media/libnestegg/src/moz.build b/media/libnestegg/src/moz.build index 541e18e04..bf9edcdbc 100644 --- a/media/libnestegg/src/moz.build +++ b/media/libnestegg/src/moz.build @@ -7,6 +7,9 @@ UNIFIED_SOURCES += [ 'nestegg.c', ] +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + FINAL_LIBRARY = 'gkmedias' # We allow warnings for third-party code that can be updated from upstream. diff --git a/media/libogg/moz.build b/media/libogg/moz.build index a4745029e..abc8d0285 100644 --- a/media/libogg/moz.build +++ b/media/libogg/moz.build @@ -18,4 +18,7 @@ UNIFIED_SOURCES += [ 'src/ogg_framing.c', ] +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + FINAL_LIBRARY = 'gkmedias' diff --git a/media/libopus/moz.build b/media/libopus/moz.build index 3c981e2aa..9ef394940 100644 --- a/media/libopus/moz.build +++ b/media/libopus/moz.build @@ -22,8 +22,10 @@ DEFINES['OPUS_BUILD'] = True DEFINES['OPUS_VERSION'] = '"v1.1.3-mozilla"' DEFINES['USE_ALLOCA'] = True -# Don't export symbols -DEFINES['OPUS_EXPORT'] = '' +# We only need to export symbols if we're built into libgkmedias +# instead of libxul. +if not CONFIG['GKMEDIAS_SHARED_LIBRARY']: + DEFINES['OPUS_EXPORT'] = '' if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['GNU_AS']: DEFINES['OPUS_ARM_ASM'] = True diff --git a/media/libpng/moz.build b/media/libpng/moz.build index 987c73745..ff4b9e9cb 100644 --- a/media/libpng/moz.build +++ b/media/libpng/moz.build @@ -46,6 +46,9 @@ if CONFIG['INTEL_ARCHITECTURE']: Library('mozpng') +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + FINAL_LIBRARY = 'gkmedias' # We allow warnings for third-party code that can be updated from upstream. diff --git a/media/libspeex_resampler/src/moz.build b/media/libspeex_resampler/src/moz.build index cad566800..c8c8db653 100644 --- a/media/libspeex_resampler/src/moz.build +++ b/media/libspeex_resampler/src/moz.build @@ -22,7 +22,11 @@ FINAL_LIBRARY = 'gkmedias' # We don't compile the full speex codec, only the resampler. DEFINES['OUTSIDE_SPEEX'] = True +# Visibility is handled through VISIBILITY_FLAGS and +# layout/media/symbols.def.in. DEFINES['EXPORT'] = '' +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True if CONFIG['MOZ_SAMPLE_TYPE_S16']: DEFINES['FIXED_POINT'] = True diff --git a/media/libtheora/moz.build b/media/libtheora/moz.build index 5fe30c60b..0a88d8f92 100644 --- a/media/libtheora/moz.build +++ b/media/libtheora/moz.build @@ -17,6 +17,9 @@ ALLOW_COMPILER_WARNINGS = True FINAL_LIBRARY = 'gkmedias' +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + # The encoder is currently not included. DEFINES['THEORA_DISABLE_ENCODE'] = True diff --git a/media/libvorbis/moz.build b/media/libvorbis/moz.build index 1d42d5ff1..0bc180909 100644 --- a/media/libvorbis/moz.build +++ b/media/libvorbis/moz.build @@ -47,6 +47,9 @@ if CONFIG['OS_ARCH'] == 'AIX': if CONFIG['OS_ARCH'] == 'SunOS': DEFINES['HAVE_ALLOCA_H'] = True +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + # We allow warnings for third-party code that can be updated from upstream. ALLOW_COMPILER_WARNINGS = True diff --git a/media/libvpx/moz.build b/media/libvpx/moz.build index 3e24eb14c..1630f6da4 100644 --- a/media/libvpx/moz.build +++ b/media/libvpx/moz.build @@ -62,6 +62,9 @@ if 'vp8/encoder/arm/armv5te/boolhuff_armv5te.asm' not in arm_asm_files: 'vp8/encoder/boolhuff.c', ] +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + # We allow warnings for third-party code that can be updated from upstream. ALLOW_COMPILER_WARNINGS = True diff --git a/media/mtransport/build/moz.build b/media/mtransport/build/moz.build index 4bac8210f..a5fdef5dd 100644 --- a/media/mtransport/build/moz.build +++ b/media/mtransport/build/moz.build @@ -32,4 +32,7 @@ include('../common.build') # nr_socket_short_term_violation_time. SOURCES += mtransport_cppsrcs +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + FINAL_LIBRARY = 'xul' diff --git a/modules/brotli/moz.build b/modules/brotli/moz.build index 95445ce5b..b2b87b40a 100644 --- a/modules/brotli/moz.build +++ b/modules/brotli/moz.build @@ -25,6 +25,9 @@ SOURCES += [ 'dec/state.c', ] +if CONFIG['GKMEDIAS_SHARED_LIBRARY']: + NO_VISIBILITY_FLAGS = True + # We allow warnings for third-party code that can be updated from upstream. ALLOW_COMPILER_WARNINGS = True @@ -36,6 +39,8 @@ CFLAGS += ['-DBROTLI_BUILD_PORTABLE'] Library('brotli') +FINAL_LIBRARY = 'gkmedias' + HostProgram('brotli') HOST_SOURCES += SOURCES diff --git a/old-configure.in b/old-configure.in index ade675e95..07b8535c8 100644 --- a/old-configure.in +++ b/old-configure.in @@ -4614,8 +4614,16 @@ dnl = dnl ======================================================== MOZ_ARG_HEADER(Static build options) +if test "$OS_ARCH" = "WINNT"; then + GKMEDIAS_SHARED_LIBRARY=1 +fi +if test -n "$GKMEDIAS_SHARED_LIBRARY"; then + AC_DEFINE(GKMEDIAS_SHARED_LIBRARY) +fi +AC_SUBST(GKMEDIAS_SHARED_LIBRARY) + if test -z "$MOZ_SYSTEM_ZLIB"; then -if test -n "$JS_SHARED_LIBRARY"; then +if test -n "$JS_SHARED_LIBRARY" -o "$GKMEDIAS_SHARED_LIBRARY"; then ZLIB_IN_MOZGLUE=1 AC_DEFINE(ZLIB_IN_MOZGLUE) fi -- cgit v1.2.3