diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..1b079f6
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,94 @@
+# Author: Shyam Prasath <shyam.prasath@timesys.com>
+# Date:   Wed Nov 19 22:48:08 2025 +0530
+
+# Create symlink /usr/lib/ld-linux-armhf.so.3
+
+# With merged /usr enabled (via usrmerge), the dynamic loader
+# ld-linux-armhf.so.3 resides in /usr/lib. Since the gpu-demos
+# are linked against /usr/lib/ld-linux-armhf.so.3, providing a symlink
+# from /usr/lib/ld-linux-armhf.so.3 to /lib/ld-linux-armhf.so.3
+# resolves the loader path mismatch.
+
+# Author: Shyam Prasath <shyam.prasath@timesys.com>
+# Date: Tue, 23 Aug 2022 12:49:59 +0530
+
+# Update Makefile based on imx-gpu-viv-6.4.3.p2.4-aarch32
+
+# Author: Justin Waters <justin.waters@timesys.com>
+# Date:   Fri Feb 27 12:19:20 2015 -0500
+
+# Add makefile
+
+# This is heavily based off of the Yocto recipe from Freescale
+
+# Makefile for imx-gpu-viv
+#
+# Timesys Corporation 2022
+
+ifeq (y,$(USE_WAYLAND))
+BACKEND="wayland"
+else
+BACKEND="fb"
+endif
+
+BINDIR=$(DESTDIR)/usr/bin
+LIBDIR=$(DESTDIR)/usr/lib
+INCLUDEDIR=$(DESTDIR)/usr/include
+OPTDIR=$(DESTDIR)/opt
+ETCDIR=$(DESTDIR)/etc
+
+TARGETS=
+
+all: $(TARGETS)
+
+$(TARGETS):
+
+install: $(TARGETS)
+	mkdir -p $(BINDIR)
+	mkdir -p $(LIBDIR)
+	mkdir -p $(LIBDIR)/pkgconfig
+	mkdir -p $(INCLUDEDIR)
+	mkdir -p $(OPTDIR)
+	mkdir -p $(ETCDIR)
+	mkdir -p $(ETCDIR)/OpenCL/vendors/
+
+	cp -P gpu-core/usr/lib/*.so* $(LIBDIR)
+	cp -r gpu-core/usr/include/* $(INCLUDEDIR)
+	cp -r gpu-demos/opt/* $(OPTDIR)
+	cp -r gpu-tools/gmem-info/usr/bin/* $(BINDIR)
+	
+	install -m 0644 gpu-core/usr/lib/pkgconfig/glesv1_cm.pc $(LIBDIR)/pkgconfig/glesv1_cm.pc
+	install -m 0644 gpu-core/usr/lib/pkgconfig/glesv2.pc $(LIBDIR)/pkgconfig/glesv2.pc
+	install -m 0644 gpu-core/usr/lib/pkgconfig/vg.pc $(LIBDIR)/pkgconfig/vg.pc
+
+ifeq (y,$(USE_WAYLAND))
+	install -m 0644 gpu-core/usr/lib/pkgconfig/egl_wayland.pc $(LIBDIR)/pkgconfig/egl.pc
+	cp -r gpu-core/usr/lib/fb/libVDK.so.1.2.0 $(LIBDIR)/libVDK-fb.so.1.2.0
+else    # linuxFB
+	install -m 0644 gpu-core/usr/lib/pkgconfig/egl_linuxfb.pc $(LIBDIR)/pkgconfig/egl.pc
+endif
+
+	install -m 0644 gpu-core/etc/Vivante.icd $(ETCDIR)/OpenCL/vendors/Vivante.icd
+	
+	cp -r gpu-core/usr/lib/$(BACKEND)/* $(LIBDIR)
+	
+	# MX6SL does not have 3D support
+	if [[ -n "$(DISABLE_3D)" ]]; then \
+		rm -rf $(LIBDIR)/libCLC* $(INCLUDEDIR)/CL \
+			$(LIBDIR)/libGL* $(INCLUDEDIR)/GL* \
+			$(LIBDIR)/libGLES* \
+			$(INCLUDEDIR)/CL $(LIBDIR)/libOpenCL* \
+			$(LIBDIR)/libOpenVG.3d.so \
+			$(LIBDIR)/libVivanteOpenCL.so \
+			$(OPTDIR)/viv_samples/vdk \
+			$(OPTDIR)viv_samples/es20 $(OPTDIR)/viv_samples/cl11; \
+		ln -sf libOpenVG.2d.so $(LIBDIR)/libOpenVG.so; \
+	fi
+	
+ifeq ($(wildcard $(LIBDIR)/ld-linux-armhf.so.3),)
+	ln -s /lib/ld-linux-armhf.so.3 $(LIBDIR)/ld-linux-armhf.so.3
+endif
+
+clean:
+
+distclean: clean
