bitwiseworks / qtwebengine-chromium-os2

Port of Chromium and related tools to OS/2
9 stars 2 forks source link

Port libgfx to OS/2 #4

Closed dmik closed 4 years ago

dmik commented 4 years ago

This seems to be the part that provides integration with the underlying OS windowing system (in our case with PM). Yes, Chromium uses its own painting primitives to render HTML. As opposed to WebKit, it doesn't involve Qt for that and it's not even possible. So we have to port it.

Needed for #3.

dmik commented 4 years ago

With a bunch of recent commits I moved quite far forward with gfx and discovered that we also need to port the aqua module (ui/aura) to OS/2. Quoting: "Aura is a low-level windowing library, sort of a replacement for GDI or GTK". Since it's used on Windows (GDI), I'm going to use it on OS/2 as well as they have a lot in common in this area.

dmik commented 4 years ago

Meanwhile, faced this build break:

rm -f obj/third_party/libjpeg_turbo/libsimd_asm.a && "emxomfar"  -r -c obj/third_party/libjpeg_turbo/libsimd_asm.a @"obj/third_party/libjpeg_turbo/libsimd_asm.a.rsp"
emxomfar: obj/third_party/libjpeg_turbo/libsimd_asm.a(obj/third_party/libjpeg_turbo/simd_asm/jccolor-mmx.o): Record too long

This code is generated by yasm (built from the in-tree yasm source with some Chromium patches). Needs investigation...

dryeo commented 4 years ago

On 04/08/20 08:09 AM, Dmitriy Kuminov wrote:

This code is generated by yasm (built from the in-tree yasm source with some Chromium patches). Needs investigation...

YASM doesn't support our object formats so need to use nasm

dmik commented 4 years ago

Yes, I already discovered that — it uses ELF32 in my build. Will try to use nasm instead (I'm not sure chromium supports it out of the box). We also have an RPM build of libjpeg but chromium doesn't seem to support an external version and they provide some patches.

dmik commented 4 years ago

Actually I found support for external libjpeg in there and enabled it above. With that enabled and a bunch of recent commits, libgfx seems to be done. Now I get the following libs built:

obj/skia/libskia.a
obj/ui/gfx/libgeometry_skia.a
obj/ui/gfx/libcolor_space.a
obj/ui/gfx/codec/libcodec.a
obj/ui/gfx/animation/libanimation.a
obj/ui/gfx/ipc/color/libgfx_ipc_color.a
obj/cc/debug/libcc_debug.a
obj/cc/base/libcc_base.a
obj/cc/paint/libcc_paint.a
obj/ui/gfx/libgfx.a

I think that's enough for this ticket.