summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-12-11 11:36:12 +0800
committerGitHub <[email protected]>2021-12-11 11:36:12 +0800
commitdb8372e1d50baceb228354a99b2f30035d9b9709 (patch)
treef4bff085b5470ef5186396cfb4c3fe2772a6685e
parent70705200fcd2fa0af9fd2be89c50c7554d6b4a2b (diff)
parent6c4c605b19b38bc34fa3a09e2087e11fe2103484 (diff)
Merge pull request #1890 from xmake-io/linuxdriver
add linux driver support
-rw-r--r--.gitignore9
-rw-r--r--tests/projects/embed/mdk/hello/src/foo/foo.c (renamed from tests/projects/mdk/hello/src/foo/foo.c)0
-rw-r--r--tests/projects/embed/mdk/hello/src/lib/cmsis/ARMCM3.h (renamed from tests/projects/mdk/hello/src/lib/cmsis/ARMCM3.h)0
-rw-r--r--tests/projects/embed/mdk/hello/src/lib/cmsis/cmsis_armcc.h (renamed from tests/projects/mdk/hello/src/lib/cmsis/cmsis_armcc.h)0
-rw-r--r--tests/projects/embed/mdk/hello/src/lib/cmsis/cmsis_armclang.h (renamed from tests/projects/mdk/hello/src/lib/cmsis/cmsis_armclang.h)0
-rw-r--r--tests/projects/embed/mdk/hello/src/lib/cmsis/cmsis_compiler.h (renamed from tests/projects/mdk/hello/src/lib/cmsis/cmsis_compiler.h)0
-rw-r--r--tests/projects/embed/mdk/hello/src/lib/cmsis/cmsis_version.h (renamed from tests/projects/mdk/hello/src/lib/cmsis/cmsis_version.h)0
-rw-r--r--tests/projects/embed/mdk/hello/src/lib/cmsis/core_cm3.h (renamed from tests/projects/mdk/hello/src/lib/cmsis/core_cm3.h)0
-rw-r--r--tests/projects/embed/mdk/hello/src/lib/cmsis/mpu_armv7.h (renamed from tests/projects/mdk/hello/src/lib/cmsis/mpu_armv7.h)0
-rw-r--r--tests/projects/embed/mdk/hello/src/lib/cmsis/system_ARMCM3.h (renamed from tests/projects/mdk/hello/src/lib/cmsis/system_ARMCM3.h)0
-rw-r--r--tests/projects/embed/mdk/hello/src/main.c (renamed from tests/projects/mdk/hello/src/main.c)0
-rw-r--r--tests/projects/embed/mdk/hello/src/startup_ARMCM3.s (renamed from tests/projects/mdk/hello/src/startup_ARMCM3.s)0
-rw-r--r--tests/projects/embed/mdk/hello/src/system_ARMCM3.c (renamed from tests/projects/mdk/hello/src/system_ARMCM3.c)0
-rw-r--r--tests/projects/embed/mdk/hello/xmake.lua (renamed from tests/projects/mdk/hello/xmake.lua)0
-rw-r--r--tests/projects/linux/bpf/minimal/src/minimal.bpf.c (renamed from tests/projects/bpf/minimal/src/minimal.bpf.c)0
-rw-r--r--tests/projects/linux/bpf/minimal/src/minimal.c (renamed from tests/projects/bpf/minimal/src/minimal.c)0
-rw-r--r--tests/projects/linux/bpf/minimal/test.lua (renamed from tests/projects/bpf/minimal/test.lua)0
-rw-r--r--tests/projects/linux/bpf/minimal/xmake.lua (renamed from tests/projects/bpf/minimal/xmake.lua)0
-rw-r--r--tests/projects/linux/driver/hello/src/add.c3
-rw-r--r--tests/projects/linux/driver/hello/src/hello.c23
-rw-r--r--tests/projects/linux/driver/hello/xmake.lua7
-rw-r--r--tests/projects/linux/driver/hello_makefile/Makefile15
-rw-r--r--tests/projects/linux/driver/hello_makefile/src/add.c3
-rw-r--r--tests/projects/linux/driver/hello_makefile/src/hello.c23
-rw-r--r--tests/projects/windows/driver/kmdf/ioctl/driver/nonpnp.c (renamed from tests/projects/wdk/kmdf/ioctl/driver/nonpnp.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/ioctl/driver/nonpnp.h (renamed from tests/projects/wdk/kmdf/ioctl/driver/nonpnp.h)0
-rw-r--r--tests/projects/windows/driver/kmdf/ioctl/driver/nonpnp.rc (renamed from tests/projects/wdk/kmdf/ioctl/driver/nonpnp.rc)0
-rw-r--r--tests/projects/windows/driver/kmdf/ioctl/driver/trace.h (renamed from tests/projects/wdk/kmdf/ioctl/driver/trace.h)0
-rw-r--r--tests/projects/windows/driver/kmdf/ioctl/exe/install.c (renamed from tests/projects/wdk/kmdf/ioctl/exe/install.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/ioctl/exe/nonpnp.inf (renamed from tests/projects/wdk/kmdf/ioctl/exe/nonpnp.inf)0
-rw-r--r--tests/projects/windows/driver/kmdf/ioctl/exe/testapp.c (renamed from tests/projects/wdk/kmdf/ioctl/exe/testapp.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/ioctl/localwpp.ini (renamed from tests/projects/wdk/kmdf/ioctl/localwpp.ini)0
-rw-r--r--tests/projects/windows/driver/kmdf/ioctl/public.h (renamed from tests/projects/wdk/kmdf/ioctl/public.h)0
-rw-r--r--tests/projects/windows/driver/kmdf/ioctl/xmake.lua (renamed from tests/projects/wdk/kmdf/ioctl/xmake.lua)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/error.c (renamed from tests/projects/wdk/kmdf/serial/error.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/flush.c (renamed from tests/projects/wdk/kmdf/serial/flush.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/immediat.c (renamed from tests/projects/wdk/kmdf/serial/immediat.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/initunlo.c (renamed from tests/projects/wdk/kmdf/serial/initunlo.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/ioctl.c (renamed from tests/projects/wdk/kmdf/serial/ioctl.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/isr.c (renamed from tests/projects/wdk/kmdf/serial/isr.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/log.c (renamed from tests/projects/wdk/kmdf/serial/log.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/log.h (renamed from tests/projects/wdk/kmdf/serial/log.h)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/modmflow.c (renamed from tests/projects/wdk/kmdf/serial/modmflow.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/openclos.c (renamed from tests/projects/wdk/kmdf/serial/openclos.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/pnp.c (renamed from tests/projects/wdk/kmdf/serial/pnp.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/power.c (renamed from tests/projects/wdk/kmdf/serial/power.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/precomp.h (renamed from tests/projects/wdk/kmdf/serial/precomp.h)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/precompsrc.c (renamed from tests/projects/wdk/kmdf/serial/precompsrc.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/purge.c (renamed from tests/projects/wdk/kmdf/serial/purge.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/qsfile.c (renamed from tests/projects/wdk/kmdf/serial/qsfile.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/read.c (renamed from tests/projects/wdk/kmdf/serial/read.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/registry.c (renamed from tests/projects/wdk/kmdf/serial/registry.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/serial.h (renamed from tests/projects/wdk/kmdf/serial/serial.h)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/serial.inx (renamed from tests/projects/wdk/kmdf/serial/serial.inx)bin6212 -> 6212 bytes
-rw-r--r--tests/projects/windows/driver/kmdf/serial/serial.rc (renamed from tests/projects/wdk/kmdf/serial/serial.rc)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/serialp.h (renamed from tests/projects/wdk/kmdf/serial/serialp.h)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/serlog.mc (renamed from tests/projects/wdk/kmdf/serial/serlog.mc)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/trace.h (renamed from tests/projects/wdk/kmdf/serial/trace.h)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/utils.c (renamed from tests/projects/wdk/kmdf/serial/utils.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/waitmask.c (renamed from tests/projects/wdk/kmdf/serial/waitmask.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/wmi.c (renamed from tests/projects/wdk/kmdf/serial/wmi.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/write.c (renamed from tests/projects/wdk/kmdf/serial/write.c)0
-rw-r--r--tests/projects/windows/driver/kmdf/serial/xmake.lua (renamed from tests/projects/wdk/kmdf/serial/xmake.lua)0
-rw-r--r--tests/projects/windows/driver/umdf/echo/driver/device.c (renamed from tests/projects/wdk/umdf/echo/driver/device.c)0
-rw-r--r--tests/projects/windows/driver/umdf/echo/driver/device.h (renamed from tests/projects/wdk/umdf/echo/driver/device.h)0
-rw-r--r--tests/projects/windows/driver/umdf/echo/driver/driver.c (renamed from tests/projects/wdk/umdf/echo/driver/driver.c)0
-rw-r--r--tests/projects/windows/driver/umdf/echo/driver/driver.h (renamed from tests/projects/wdk/umdf/echo/driver/driver.h)0
-rw-r--r--tests/projects/windows/driver/umdf/echo/driver/echoum.inx (renamed from tests/projects/wdk/umdf/echo/driver/echoum.inx)bin3924 -> 3924 bytes
-rw-r--r--tests/projects/windows/driver/umdf/echo/driver/queue.c (renamed from tests/projects/wdk/umdf/echo/driver/queue.c)0
-rw-r--r--tests/projects/windows/driver/umdf/echo/driver/queue.h (renamed from tests/projects/wdk/umdf/echo/driver/queue.h)0
-rw-r--r--tests/projects/windows/driver/umdf/echo/exe/echoapp.cpp (renamed from tests/projects/wdk/umdf/echo/exe/echoapp.cpp)0
-rw-r--r--tests/projects/windows/driver/umdf/echo/exe/public.h (renamed from tests/projects/wdk/umdf/echo/exe/public.h)0
-rw-r--r--tests/projects/windows/driver/umdf/echo/xmake.lua (renamed from tests/projects/wdk/umdf/echo/xmake.lua)0
-rw-r--r--tests/projects/windows/driver/umdf/skeleton/Skeleton.rc (renamed from tests/projects/wdk/umdf/skeleton/Skeleton.rc)0
-rw-r--r--tests/projects/windows/driver/umdf/skeleton/UMDFSkeleton_OSR.inx (renamed from tests/projects/wdk/umdf/skeleton/UMDFSkeleton_OSR.inx)bin5646 -> 5646 bytes
-rw-r--r--tests/projects/windows/driver/umdf/skeleton/UMDFSkeleton_Root.inx (renamed from tests/projects/wdk/umdf/skeleton/UMDFSkeleton_Root.inx)bin3798 -> 3798 bytes
-rw-r--r--tests/projects/windows/driver/umdf/skeleton/comsup.cpp (renamed from tests/projects/wdk/umdf/skeleton/comsup.cpp)0
-rw-r--r--tests/projects/windows/driver/umdf/skeleton/comsup.h (renamed from tests/projects/wdk/umdf/skeleton/comsup.h)0
-rw-r--r--tests/projects/windows/driver/umdf/skeleton/device.cpp (renamed from tests/projects/wdk/umdf/skeleton/device.cpp)0
-rw-r--r--tests/projects/windows/driver/umdf/skeleton/device.h (renamed from tests/projects/wdk/umdf/skeleton/device.h)0
-rw-r--r--tests/projects/windows/driver/umdf/skeleton/dllsup.cpp (renamed from tests/projects/wdk/umdf/skeleton/dllsup.cpp)0
-rw-r--r--tests/projects/windows/driver/umdf/skeleton/driver.cpp (renamed from tests/projects/wdk/umdf/skeleton/driver.cpp)0
-rw-r--r--tests/projects/windows/driver/umdf/skeleton/driver.h (renamed from tests/projects/wdk/umdf/skeleton/driver.h)0
-rw-r--r--tests/projects/windows/driver/umdf/skeleton/exports.def (renamed from tests/projects/wdk/umdf/skeleton/exports.def)0
-rw-r--r--tests/projects/windows/driver/umdf/skeleton/internal.h (renamed from tests/projects/wdk/umdf/skeleton/internal.h)0
-rw-r--r--tests/projects/windows/driver/umdf/skeleton/xmake.lua (renamed from tests/projects/wdk/umdf/skeleton/xmake.lua)0
-rw-r--r--tests/projects/windows/driver/wdm/msdsm/SampleDSM.inf (renamed from tests/projects/wdk/wdm/msdsm/SampleDSM.inf)bin5354 -> 5354 bytes
-rw-r--r--tests/projects/windows/driver/wdm/msdsm/dsmmain.c (renamed from tests/projects/wdk/wdm/msdsm/dsmmain.c)0
-rw-r--r--tests/projects/windows/driver/wdm/msdsm/dsmtrace.mof (renamed from tests/projects/wdk/wdm/msdsm/dsmtrace.mof)0
-rw-r--r--tests/projects/windows/driver/wdm/msdsm/intrface.c (renamed from tests/projects/wdk/wdm/msdsm/intrface.c)0
-rw-r--r--tests/projects/windows/driver/wdm/msdsm/msdsm.h (renamed from tests/projects/wdk/wdm/msdsm/msdsm.h)0
-rw-r--r--tests/projects/windows/driver/wdm/msdsm/msdsm.mof (renamed from tests/projects/wdk/wdm/msdsm/msdsm.mof)0
-rw-r--r--tests/projects/windows/driver/wdm/msdsm/msdsm.rc (renamed from tests/projects/wdk/wdm/msdsm/msdsm.rc)0
-rw-r--r--tests/projects/windows/driver/wdm/msdsm/msdsmdsm.mof (renamed from tests/projects/wdk/wdm/msdsm/msdsmdsm.mof)0
-rw-r--r--tests/projects/windows/driver/wdm/msdsm/precomp.h (renamed from tests/projects/wdk/wdm/msdsm/precomp.h)0
-rw-r--r--tests/projects/windows/driver/wdm/msdsm/precompsrc.c (renamed from tests/projects/wdk/wdm/msdsm/precompsrc.c)0
-rw-r--r--tests/projects/windows/driver/wdm/msdsm/prototypes.h (renamed from tests/projects/wdk/wdm/msdsm/prototypes.h)0
-rw-r--r--tests/projects/windows/driver/wdm/msdsm/trace.h (renamed from tests/projects/wdk/wdm/msdsm/trace.h)0
-rw-r--r--tests/projects/windows/driver/wdm/msdsm/utils.c (renamed from tests/projects/wdk/wdm/msdsm/utils.c)0
-rw-r--r--tests/projects/windows/driver/wdm/msdsm/wmi.c (renamed from tests/projects/wdk/wdm/msdsm/wmi.c)0
-rw-r--r--tests/projects/windows/driver/wdm/msdsm/xmake.lua (renamed from tests/projects/wdk/wdm/msdsm/xmake.lua)0
-rw-r--r--tests/projects/windows/driver/wdm/perfcounters/kcs.c (renamed from tests/projects/wdk/wdm/perfcounters/kcs.c)0
-rw-r--r--tests/projects/windows/driver/wdm/perfcounters/kcs.h (renamed from tests/projects/wdk/wdm/perfcounters/kcs.h)0
-rw-r--r--tests/projects/windows/driver/wdm/perfcounters/kcs.man (renamed from tests/projects/wdk/wdm/perfcounters/kcs.man)0
-rw-r--r--tests/projects/windows/driver/wdm/perfcounters/kcs.rc (renamed from tests/projects/wdk/wdm/perfcounters/kcs.rc)0
-rw-r--r--tests/projects/windows/driver/wdm/perfcounters/xmake.lua (renamed from tests/projects/wdk/wdm/perfcounters/xmake.lua)0
-rw-r--r--tests/projects/windows/winsdk/usbview/app.config (renamed from tests/projects/winsdk/usbview/app.config)0
-rw-r--r--tests/projects/windows/winsdk/usbview/bang.ico (renamed from tests/projects/winsdk/usbview/bang.ico)bin1846 -> 1846 bytes
-rw-r--r--tests/projects/windows/winsdk/usbview/codeanalysis.h (renamed from tests/projects/winsdk/usbview/codeanalysis.h)0
-rw-r--r--tests/projects/windows/winsdk/usbview/debug.c (renamed from tests/projects/winsdk/usbview/debug.c)0
-rw-r--r--tests/projects/windows/winsdk/usbview/devnode.c (renamed from tests/projects/winsdk/usbview/devnode.c)0
-rw-r--r--tests/projects/windows/winsdk/usbview/dispaud.c (renamed from tests/projects/winsdk/usbview/dispaud.c)0
-rw-r--r--tests/projects/windows/winsdk/usbview/display.c (renamed from tests/projects/winsdk/usbview/display.c)0
-rw-r--r--tests/projects/windows/winsdk/usbview/dispvid.c (renamed from tests/projects/winsdk/usbview/dispvid.c)0
-rw-r--r--tests/projects/windows/winsdk/usbview/enum.c (renamed from tests/projects/winsdk/usbview/enum.c)0
-rw-r--r--tests/projects/windows/winsdk/usbview/h264.c (renamed from tests/projects/winsdk/usbview/h264.c)0
-rw-r--r--tests/projects/windows/winsdk/usbview/h264.h (renamed from tests/projects/winsdk/usbview/h264.h)0
-rw-r--r--tests/projects/windows/winsdk/usbview/hub.ico (renamed from tests/projects/winsdk/usbview/hub.ico)bin766 -> 766 bytes
-rw-r--r--tests/projects/windows/winsdk/usbview/langidlist.h (renamed from tests/projects/winsdk/usbview/langidlist.h)0
-rw-r--r--tests/projects/windows/winsdk/usbview/monitor.ico (renamed from tests/projects/winsdk/usbview/monitor.ico)bin10134 -> 10134 bytes
-rw-r--r--tests/projects/windows/winsdk/usbview/port.ico (renamed from tests/projects/winsdk/usbview/port.ico)bin766 -> 766 bytes
-rw-r--r--tests/projects/windows/winsdk/usbview/resource.h (renamed from tests/projects/winsdk/usbview/resource.h)0
-rw-r--r--tests/projects/windows/winsdk/usbview/split.cur (renamed from tests/projects/winsdk/usbview/split.cur)bin326 -> 326 bytes
-rw-r--r--tests/projects/windows/winsdk/usbview/ssport.ico (renamed from tests/projects/winsdk/usbview/ssport.ico)bin766 -> 766 bytes
-rw-r--r--tests/projects/windows/winsdk/usbview/ssusb.ico (renamed from tests/projects/winsdk/usbview/ssusb.ico)bin766 -> 766 bytes
-rw-r--r--tests/projects/windows/winsdk/usbview/usb.ico (renamed from tests/projects/winsdk/usbview/usb.ico)bin766 -> 766 bytes
-rw-r--r--tests/projects/windows/winsdk/usbview/usbdesc.h (renamed from tests/projects/winsdk/usbview/usbdesc.h)0
-rw-r--r--tests/projects/windows/winsdk/usbview/usbschema.hpp (renamed from tests/projects/winsdk/usbview/usbschema.hpp)0
-rw-r--r--tests/projects/windows/winsdk/usbview/usbviddesc.h (renamed from tests/projects/winsdk/usbview/usbviddesc.h)0
-rw-r--r--tests/projects/windows/winsdk/usbview/uvcdesc.h (renamed from tests/projects/winsdk/usbview/uvcdesc.h)0
-rw-r--r--tests/projects/windows/winsdk/usbview/uvcview.c (renamed from tests/projects/winsdk/usbview/uvcview.c)0
-rw-r--r--tests/projects/windows/winsdk/usbview/uvcview.h (renamed from tests/projects/winsdk/usbview/uvcview.h)0
-rw-r--r--tests/projects/windows/winsdk/usbview/uvcview.rc (renamed from tests/projects/winsdk/usbview/uvcview.rc)0
-rw-r--r--tests/projects/windows/winsdk/usbview/vndrlist.h (renamed from tests/projects/winsdk/usbview/vndrlist.h)0
-rw-r--r--tests/projects/windows/winsdk/usbview/xmake.lua (renamed from tests/projects/winsdk/usbview/xmake.lua)0
-rw-r--r--tests/projects/windows/winsdk/usbview/xmlhelper.cpp (renamed from tests/projects/winsdk/usbview/xmlhelper.cpp)0
-rw-r--r--tests/projects/windows/winsdk/usbview/xmlhelper.h (renamed from tests/projects/winsdk/usbview/xmlhelper.h)0
-rw-r--r--tests/projects/windows/winsdk/windemo/main.cpp (renamed from tests/projects/winsdk/windemo/main.cpp)0
-rw-r--r--tests/projects/windows/winsdk/windemo/resource.h (renamed from tests/projects/winsdk/windemo/resource.h)0
-rw-r--r--tests/projects/windows/winsdk/windemo/small.ico (renamed from tests/projects/winsdk/windemo/small.ico)bin23558 -> 23558 bytes
-rw-r--r--tests/projects/windows/winsdk/windemo/stdafx.cpp (renamed from tests/projects/winsdk/windemo/stdafx.cpp)0
-rw-r--r--tests/projects/windows/winsdk/windemo/stdafx.h (renamed from tests/projects/winsdk/windemo/stdafx.h)0
-rw-r--r--tests/projects/windows/winsdk/windemo/targetver.h (renamed from tests/projects/winsdk/windemo/targetver.h)0
-rw-r--r--tests/projects/windows/winsdk/windemo/test (renamed from tests/projects/winsdk/windemo/test)0
-rw-r--r--tests/projects/windows/winsdk/windemo/test.h (renamed from tests/projects/winsdk/windemo/test.h)0
-rw-r--r--tests/projects/windows/winsdk/windemo/test.ico (renamed from tests/projects/winsdk/windemo/test.ico)bin23558 -> 23558 bytes
-rw-r--r--tests/projects/windows/winsdk/windemo/test.rc (renamed from tests/projects/winsdk/windemo/test.rc)0
-rw-r--r--tests/projects/windows/winsdk/windemo/xmake.lua (renamed from tests/projects/winsdk/windemo/xmake.lua)0
-rw-r--r--xmake/core/project/target.lua13
-rw-r--r--xmake/rules/platform/linux/driver/driver_modules.lua245
-rw-r--r--xmake/rules/platform/linux/driver/xmake.lua30
151 files changed, 364 insertions, 7 deletions
diff --git a/.gitignore b/.gitignore
index 7107445a1..b9f47f1b4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -50,3 +50,12 @@ compile_commands.json
/scripts/rpmbuild/SRPMS/*
!/xmake/actions/build/
+
+# for linux driver
+*.o
+*.ko
+*.mod
+.*.cmd
+*.mod.c
+Module.symvers
+modules.order
diff --git a/tests/projects/mdk/hello/src/foo/foo.c b/tests/projects/embed/mdk/hello/src/foo/foo.c
index e51afb553..e51afb553 100644
--- a/tests/projects/mdk/hello/src/foo/foo.c
+++ b/tests/projects/embed/mdk/hello/src/foo/foo.c
diff --git a/tests/projects/mdk/hello/src/lib/cmsis/ARMCM3.h b/tests/projects/embed/mdk/hello/src/lib/cmsis/ARMCM3.h
index 44c0c23f4..44c0c23f4 100644
--- a/tests/projects/mdk/hello/src/lib/cmsis/ARMCM3.h
+++ b/tests/projects/embed/mdk/hello/src/lib/cmsis/ARMCM3.h
diff --git a/tests/projects/mdk/hello/src/lib/cmsis/cmsis_armcc.h b/tests/projects/embed/mdk/hello/src/lib/cmsis/cmsis_armcc.h
index a955d4713..a955d4713 100644
--- a/tests/projects/mdk/hello/src/lib/cmsis/cmsis_armcc.h
+++ b/tests/projects/embed/mdk/hello/src/lib/cmsis/cmsis_armcc.h
diff --git a/tests/projects/mdk/hello/src/lib/cmsis/cmsis_armclang.h b/tests/projects/embed/mdk/hello/src/lib/cmsis/cmsis_armclang.h
index 691141774..691141774 100644
--- a/tests/projects/mdk/hello/src/lib/cmsis/cmsis_armclang.h
+++ b/tests/projects/embed/mdk/hello/src/lib/cmsis/cmsis_armclang.h
diff --git a/tests/projects/mdk/hello/src/lib/cmsis/cmsis_compiler.h b/tests/projects/embed/mdk/hello/src/lib/cmsis/cmsis_compiler.h
index adbf296f1..adbf296f1 100644
--- a/tests/projects/mdk/hello/src/lib/cmsis/cmsis_compiler.h
+++ b/tests/projects/embed/mdk/hello/src/lib/cmsis/cmsis_compiler.h
diff --git a/tests/projects/mdk/hello/src/lib/cmsis/cmsis_version.h b/tests/projects/embed/mdk/hello/src/lib/cmsis/cmsis_version.h
index 2f048e455..2f048e455 100644
--- a/tests/projects/mdk/hello/src/lib/cmsis/cmsis_version.h
+++ b/tests/projects/embed/mdk/hello/src/lib/cmsis/cmsis_version.h
diff --git a/tests/projects/mdk/hello/src/lib/cmsis/core_cm3.h b/tests/projects/embed/mdk/hello/src/lib/cmsis/core_cm3.h
index 74fb87e5c..74fb87e5c 100644
--- a/tests/projects/mdk/hello/src/lib/cmsis/core_cm3.h
+++ b/tests/projects/embed/mdk/hello/src/lib/cmsis/core_cm3.h
diff --git a/tests/projects/mdk/hello/src/lib/cmsis/mpu_armv7.h b/tests/projects/embed/mdk/hello/src/lib/cmsis/mpu_armv7.h
index d9eedf81a..d9eedf81a 100644
--- a/tests/projects/mdk/hello/src/lib/cmsis/mpu_armv7.h
+++ b/tests/projects/embed/mdk/hello/src/lib/cmsis/mpu_armv7.h
diff --git a/tests/projects/mdk/hello/src/lib/cmsis/system_ARMCM3.h b/tests/projects/embed/mdk/hello/src/lib/cmsis/system_ARMCM3.h
index 5d1237770..5d1237770 100644
--- a/tests/projects/mdk/hello/src/lib/cmsis/system_ARMCM3.h
+++ b/tests/projects/embed/mdk/hello/src/lib/cmsis/system_ARMCM3.h
diff --git a/tests/projects/mdk/hello/src/main.c b/tests/projects/embed/mdk/hello/src/main.c
index 28d909a18..28d909a18 100644
--- a/tests/projects/mdk/hello/src/main.c
+++ b/tests/projects/embed/mdk/hello/src/main.c
diff --git a/tests/projects/mdk/hello/src/startup_ARMCM3.s b/tests/projects/embed/mdk/hello/src/startup_ARMCM3.s
index efe40c1e3..efe40c1e3 100644
--- a/tests/projects/mdk/hello/src/startup_ARMCM3.s
+++ b/tests/projects/embed/mdk/hello/src/startup_ARMCM3.s
diff --git a/tests/projects/mdk/hello/src/system_ARMCM3.c b/tests/projects/embed/mdk/hello/src/system_ARMCM3.c
index 19484537f..19484537f 100644
--- a/tests/projects/mdk/hello/src/system_ARMCM3.c
+++ b/tests/projects/embed/mdk/hello/src/system_ARMCM3.c
diff --git a/tests/projects/mdk/hello/xmake.lua b/tests/projects/embed/mdk/hello/xmake.lua
index 6afb714af..6afb714af 100644
--- a/tests/projects/mdk/hello/xmake.lua
+++ b/tests/projects/embed/mdk/hello/xmake.lua
diff --git a/tests/projects/bpf/minimal/src/minimal.bpf.c b/tests/projects/linux/bpf/minimal/src/minimal.bpf.c
index ea1eeefbb..ea1eeefbb 100644
--- a/tests/projects/bpf/minimal/src/minimal.bpf.c
+++ b/tests/projects/linux/bpf/minimal/src/minimal.bpf.c
diff --git a/tests/projects/bpf/minimal/src/minimal.c b/tests/projects/linux/bpf/minimal/src/minimal.c
index 4b6ec3181..4b6ec3181 100644
--- a/tests/projects/bpf/minimal/src/minimal.c
+++ b/tests/projects/linux/bpf/minimal/src/minimal.c
diff --git a/tests/projects/bpf/minimal/test.lua b/tests/projects/linux/bpf/minimal/test.lua
index 2856a3831..2856a3831 100644
--- a/tests/projects/bpf/minimal/test.lua
+++ b/tests/projects/linux/bpf/minimal/test.lua
diff --git a/tests/projects/bpf/minimal/xmake.lua b/tests/projects/linux/bpf/minimal/xmake.lua
index 8507b8aa1..8507b8aa1 100644
--- a/tests/projects/bpf/minimal/xmake.lua
+++ b/tests/projects/linux/bpf/minimal/xmake.lua
diff --git a/tests/projects/linux/driver/hello/src/add.c b/tests/projects/linux/driver/hello/src/add.c
new file mode 100644
index 000000000..59aab4983
--- /dev/null
+++ b/tests/projects/linux/driver/hello/src/add.c
@@ -0,0 +1,3 @@
+int add(int a, int b) {
+ return a + b;
+}
diff --git a/tests/projects/linux/driver/hello/src/hello.c b/tests/projects/linux/driver/hello/src/hello.c
new file mode 100644
index 000000000..414a03bb2
--- /dev/null
+++ b/tests/projects/linux/driver/hello/src/hello.c
@@ -0,0 +1,23 @@
+#include <linux/init.h>
+#include <linux/module.h>
+
+MODULE_LICENSE("Dual BSD/GPL");
+MODULE_AUTHOR("Ruki");
+MODULE_DESCRIPTION("A simple Hello World Module");
+MODULE_ALIAS("a simplest module");
+
+int add(int a, int b);
+
+int hello_init(void)
+{
+ printk(KERN_INFO "Hello World: %d\n", add(1, 2));
+ return 0;
+}
+
+void hello_exit(void)
+{
+ printk(KERN_INFO "Goodbye World\n");
+}
+
+module_init(hello_init);
+module_exit(hello_exit);
diff --git a/tests/projects/linux/driver/hello/xmake.lua b/tests/projects/linux/driver/hello/xmake.lua
new file mode 100644
index 000000000..bac728434
--- /dev/null
+++ b/tests/projects/linux/driver/hello/xmake.lua
@@ -0,0 +1,7 @@
+add_requires("linux-headers", {configs = {driver_modules = true}})
+
+target("hello")
+ add_rules("platform.linux.driver")
+ add_files("src/*.c")
+ add_packages("linux-headers")
+ set_license("GPL-2.0")
diff --git a/tests/projects/linux/driver/hello_makefile/Makefile b/tests/projects/linux/driver/hello_makefile/Makefile
new file mode 100644
index 000000000..1d5aa92b4
--- /dev/null
+++ b/tests/projects/linux/driver/hello_makefile/Makefile
@@ -0,0 +1,15 @@
+ifneq ($(KERNELRELEASE),)
+ obj-m := hello.o
+ hello-objs := ./src/hello.o ./src/add.o
+else
+ KERN_DIR ?= /usr/src/linux-headers-5.11.0-41-generic/
+ PWD := $(shell pwd)
+
+default:
+ $(MAKE) -C $(KERN_DIR) V=1 M=$(PWD) modules
+endif
+
+clean:
+ rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
+ rm -rf src/*.o src/*~ core src/.depend src/.*.cmd src/*.ko src/*.mod.c src/.tmp_versions
+
diff --git a/tests/projects/linux/driver/hello_makefile/src/add.c b/tests/projects/linux/driver/hello_makefile/src/add.c
new file mode 100644
index 000000000..59aab4983
--- /dev/null
+++ b/tests/projects/linux/driver/hello_makefile/src/add.c
@@ -0,0 +1,3 @@
+int add(int a, int b) {
+ return a + b;
+}
diff --git a/tests/projects/linux/driver/hello_makefile/src/hello.c b/tests/projects/linux/driver/hello_makefile/src/hello.c
new file mode 100644
index 000000000..414a03bb2
--- /dev/null
+++ b/tests/projects/linux/driver/hello_makefile/src/hello.c
@@ -0,0 +1,23 @@
+#include <linux/init.h>
+#include <linux/module.h>
+
+MODULE_LICENSE("Dual BSD/GPL");
+MODULE_AUTHOR("Ruki");
+MODULE_DESCRIPTION("A simple Hello World Module");
+MODULE_ALIAS("a simplest module");
+
+int add(int a, int b);
+
+int hello_init(void)
+{
+ printk(KERN_INFO "Hello World: %d\n", add(1, 2));
+ return 0;
+}
+
+void hello_exit(void)
+{
+ printk(KERN_INFO "Goodbye World\n");
+}
+
+module_init(hello_init);
+module_exit(hello_exit);
diff --git a/tests/projects/wdk/kmdf/ioctl/driver/nonpnp.c b/tests/projects/windows/driver/kmdf/ioctl/driver/nonpnp.c
index 13f811f35..13f811f35 100644
--- a/tests/projects/wdk/kmdf/ioctl/driver/nonpnp.c
+++ b/tests/projects/windows/driver/kmdf/ioctl/driver/nonpnp.c
diff --git a/tests/projects/wdk/kmdf/ioctl/driver/nonpnp.h b/tests/projects/windows/driver/kmdf/ioctl/driver/nonpnp.h
index c874e79d2..c874e79d2 100644
--- a/tests/projects/wdk/kmdf/ioctl/driver/nonpnp.h
+++ b/tests/projects/windows/driver/kmdf/ioctl/driver/nonpnp.h
diff --git a/tests/projects/wdk/kmdf/ioctl/driver/nonpnp.rc b/tests/projects/windows/driver/kmdf/ioctl/driver/nonpnp.rc
index cac68f7b2..cac68f7b2 100644
--- a/tests/projects/wdk/kmdf/ioctl/driver/nonpnp.rc
+++ b/tests/projects/windows/driver/kmdf/ioctl/driver/nonpnp.rc
diff --git a/tests/projects/wdk/kmdf/ioctl/driver/trace.h b/tests/projects/windows/driver/kmdf/ioctl/driver/trace.h
index 089f213f0..089f213f0 100644
--- a/tests/projects/wdk/kmdf/ioctl/driver/trace.h
+++ b/tests/projects/windows/driver/kmdf/ioctl/driver/trace.h
diff --git a/tests/projects/wdk/kmdf/ioctl/exe/install.c b/tests/projects/windows/driver/kmdf/ioctl/exe/install.c
index 53d1f7678..53d1f7678 100644
--- a/tests/projects/wdk/kmdf/ioctl/exe/install.c
+++ b/tests/projects/windows/driver/kmdf/ioctl/exe/install.c
diff --git a/tests/projects/wdk/kmdf/ioctl/exe/nonpnp.inf b/tests/projects/windows/driver/kmdf/ioctl/exe/nonpnp.inf
index b20a58b48..b20a58b48 100644
--- a/tests/projects/wdk/kmdf/ioctl/exe/nonpnp.inf
+++ b/tests/projects/windows/driver/kmdf/ioctl/exe/nonpnp.inf
diff --git a/tests/projects/wdk/kmdf/ioctl/exe/testapp.c b/tests/projects/windows/driver/kmdf/ioctl/exe/testapp.c
index c12f26073..c12f26073 100644
--- a/tests/projects/wdk/kmdf/ioctl/exe/testapp.c
+++ b/tests/projects/windows/driver/kmdf/ioctl/exe/testapp.c
diff --git a/tests/projects/wdk/kmdf/ioctl/localwpp.ini b/tests/projects/windows/driver/kmdf/ioctl/localwpp.ini
index c290070a7..c290070a7 100644
--- a/tests/projects/wdk/kmdf/ioctl/localwpp.ini
+++ b/tests/projects/windows/driver/kmdf/ioctl/localwpp.ini
diff --git a/tests/projects/wdk/kmdf/ioctl/public.h b/tests/projects/windows/driver/kmdf/ioctl/public.h
index 02e24be2e..02e24be2e 100644
--- a/tests/projects/wdk/kmdf/ioctl/public.h
+++ b/tests/projects/windows/driver/kmdf/ioctl/public.h
diff --git a/tests/projects/wdk/kmdf/ioctl/xmake.lua b/tests/projects/windows/driver/kmdf/ioctl/xmake.lua
index 9cbaf0b5f..9cbaf0b5f 100644
--- a/tests/projects/wdk/kmdf/ioctl/xmake.lua
+++ b/tests/projects/windows/driver/kmdf/ioctl/xmake.lua
diff --git a/tests/projects/wdk/kmdf/serial/error.c b/tests/projects/windows/driver/kmdf/serial/error.c
index 904e54b05..904e54b05 100644
--- a/tests/projects/wdk/kmdf/serial/error.c
+++ b/tests/projects/windows/driver/kmdf/serial/error.c
diff --git a/tests/projects/wdk/kmdf/serial/flush.c b/tests/projects/windows/driver/kmdf/serial/flush.c
index 695a60a26..695a60a26 100644
--- a/tests/projects/wdk/kmdf/serial/flush.c
+++ b/tests/projects/windows/driver/kmdf/serial/flush.c
diff --git a/tests/projects/wdk/kmdf/serial/immediat.c b/tests/projects/windows/driver/kmdf/serial/immediat.c
index 9fd7683af..9fd7683af 100644
--- a/tests/projects/wdk/kmdf/serial/immediat.c
+++ b/tests/projects/windows/driver/kmdf/serial/immediat.c
diff --git a/tests/projects/wdk/kmdf/serial/initunlo.c b/tests/projects/windows/driver/kmdf/serial/initunlo.c
index 07e7fb003..07e7fb003 100644
--- a/tests/projects/wdk/kmdf/serial/initunlo.c
+++ b/tests/projects/windows/driver/kmdf/serial/initunlo.c
diff --git a/tests/projects/wdk/kmdf/serial/ioctl.c b/tests/projects/windows/driver/kmdf/serial/ioctl.c
index 07ff2b147..07ff2b147 100644
--- a/tests/projects/wdk/kmdf/serial/ioctl.c
+++ b/tests/projects/windows/driver/kmdf/serial/ioctl.c
diff --git a/tests/projects/wdk/kmdf/serial/isr.c b/tests/projects/windows/driver/kmdf/serial/isr.c
index 806164a61..806164a61 100644
--- a/tests/projects/wdk/kmdf/serial/isr.c
+++ b/tests/projects/windows/driver/kmdf/serial/isr.c
diff --git a/tests/projects/wdk/kmdf/serial/log.c b/tests/projects/windows/driver/kmdf/serial/log.c
index 285c8b2f8..285c8b2f8 100644
--- a/tests/projects/wdk/kmdf/serial/log.c
+++ b/tests/projects/windows/driver/kmdf/serial/log.c
diff --git a/tests/projects/wdk/kmdf/serial/log.h b/tests/projects/windows/driver/kmdf/serial/log.h
index eedcd08f3..eedcd08f3 100644
--- a/tests/projects/wdk/kmdf/serial/log.h
+++ b/tests/projects/windows/driver/kmdf/serial/log.h
diff --git a/tests/projects/wdk/kmdf/serial/modmflow.c b/tests/projects/windows/driver/kmdf/serial/modmflow.c
index 1c71ae3fd..1c71ae3fd 100644
--- a/tests/projects/wdk/kmdf/serial/modmflow.c
+++ b/tests/projects/windows/driver/kmdf/serial/modmflow.c
diff --git a/tests/projects/wdk/kmdf/serial/openclos.c b/tests/projects/windows/driver/kmdf/serial/openclos.c
index 477f07ac1..477f07ac1 100644
--- a/tests/projects/wdk/kmdf/serial/openclos.c
+++ b/tests/projects/windows/driver/kmdf/serial/openclos.c
diff --git a/tests/projects/wdk/kmdf/serial/pnp.c b/tests/projects/windows/driver/kmdf/serial/pnp.c
index 8773f30ac..8773f30ac 100644
--- a/tests/projects/wdk/kmdf/serial/pnp.c
+++ b/tests/projects/windows/driver/kmdf/serial/pnp.c
diff --git a/tests/projects/wdk/kmdf/serial/power.c b/tests/projects/windows/driver/kmdf/serial/power.c
index 68aad3efa..68aad3efa 100644
--- a/tests/projects/wdk/kmdf/serial/power.c
+++ b/tests/projects/windows/driver/kmdf/serial/power.c
diff --git a/tests/projects/wdk/kmdf/serial/precomp.h b/tests/projects/windows/driver/kmdf/serial/precomp.h
index 7c7c5d5ef..7c7c5d5ef 100644
--- a/tests/projects/wdk/kmdf/serial/precomp.h
+++ b/tests/projects/windows/driver/kmdf/serial/precomp.h
diff --git a/tests/projects/wdk/kmdf/serial/precompsrc.c b/tests/projects/windows/driver/kmdf/serial/precompsrc.c
index 5944cf515..5944cf515 100644
--- a/tests/projects/wdk/kmdf/serial/precompsrc.c
+++ b/tests/projects/windows/driver/kmdf/serial/precompsrc.c
diff --git a/tests/projects/wdk/kmdf/serial/purge.c b/tests/projects/windows/driver/kmdf/serial/purge.c
index fcc32148e..fcc32148e 100644
--- a/tests/projects/wdk/kmdf/serial/purge.c
+++ b/tests/projects/windows/driver/kmdf/serial/purge.c
diff --git a/tests/projects/wdk/kmdf/serial/qsfile.c b/tests/projects/windows/driver/kmdf/serial/qsfile.c
index ad1604131..ad1604131 100644
--- a/tests/projects/wdk/kmdf/serial/qsfile.c
+++ b/tests/projects/windows/driver/kmdf/serial/qsfile.c
diff --git a/tests/projects/wdk/kmdf/serial/read.c b/tests/projects/windows/driver/kmdf/serial/read.c
index ab745fdd7..ab745fdd7 100644
--- a/tests/projects/wdk/kmdf/serial/read.c
+++ b/tests/projects/windows/driver/kmdf/serial/read.c
diff --git a/tests/projects/wdk/kmdf/serial/registry.c b/tests/projects/windows/driver/kmdf/serial/registry.c
index 5ab25955a..5ab25955a 100644
--- a/tests/projects/wdk/kmdf/serial/registry.c
+++ b/tests/projects/windows/driver/kmdf/serial/registry.c
diff --git a/tests/projects/wdk/kmdf/serial/serial.h b/tests/projects/windows/driver/kmdf/serial/serial.h
index fcbf9748f..fcbf9748f 100644
--- a/tests/projects/wdk/kmdf/serial/serial.h
+++ b/tests/projects/windows/driver/kmdf/serial/serial.h
diff --git a/tests/projects/wdk/kmdf/serial/serial.inx b/tests/projects/windows/driver/kmdf/serial/serial.inx
index 3322653b0..3322653b0 100644
--- a/tests/projects/wdk/kmdf/serial/serial.inx
+++ b/tests/projects/windows/driver/kmdf/serial/serial.inx
Binary files differ
diff --git a/tests/projects/wdk/kmdf/serial/serial.rc b/tests/projects/windows/driver/kmdf/serial/serial.rc
index 9fbb59de3..9fbb59de3 100644
--- a/tests/projects/wdk/kmdf/serial/serial.rc
+++ b/tests/projects/windows/driver/kmdf/serial/serial.rc
diff --git a/tests/projects/wdk/kmdf/serial/serialp.h b/tests/projects/windows/driver/kmdf/serial/serialp.h
index d363f3503..d363f3503 100644
--- a/tests/projects/wdk/kmdf/serial/serialp.h
+++ b/tests/projects/windows/driver/kmdf/serial/serialp.h
diff --git a/tests/projects/wdk/kmdf/serial/serlog.mc b/tests/projects/windows/driver/kmdf/serial/serlog.mc
index ee6935b67..ee6935b67 100644
--- a/tests/projects/wdk/kmdf/serial/serlog.mc
+++ b/tests/projects/windows/driver/kmdf/serial/serlog.mc
diff --git a/tests/projects/wdk/kmdf/serial/trace.h b/tests/projects/windows/driver/kmdf/serial/trace.h
index 5bd9d50ca..5bd9d50ca 100644
--- a/tests/projects/wdk/kmdf/serial/trace.h
+++ b/tests/projects/windows/driver/kmdf/serial/trace.h
diff --git a/tests/projects/wdk/kmdf/serial/utils.c b/tests/projects/windows/driver/kmdf/serial/utils.c
index a84136efe..a84136efe 100644
--- a/tests/projects/wdk/kmdf/serial/utils.c
+++ b/tests/projects/windows/driver/kmdf/serial/utils.c
diff --git a/tests/projects/wdk/kmdf/serial/waitmask.c b/tests/projects/windows/driver/kmdf/serial/waitmask.c
index c3139679e..c3139679e 100644
--- a/tests/projects/wdk/kmdf/serial/waitmask.c
+++ b/tests/projects/windows/driver/kmdf/serial/waitmask.c
diff --git a/tests/projects/wdk/kmdf/serial/wmi.c b/tests/projects/windows/driver/kmdf/serial/wmi.c
index 0076f4337..0076f4337 100644
--- a/tests/projects/wdk/kmdf/serial/wmi.c
+++ b/tests/projects/windows/driver/kmdf/serial/wmi.c
diff --git a/tests/projects/wdk/kmdf/serial/write.c b/tests/projects/windows/driver/kmdf/serial/write.c
index c67c062b4..c67c062b4 100644
--- a/tests/projects/wdk/kmdf/serial/write.c
+++ b/tests/projects/windows/driver/kmdf/serial/write.c
diff --git a/tests/projects/wdk/kmdf/serial/xmake.lua b/tests/projects/windows/driver/kmdf/serial/xmake.lua
index 53d59c650..53d59c650 100644
--- a/tests/projects/wdk/kmdf/serial/xmake.lua
+++ b/tests/projects/windows/driver/kmdf/serial/xmake.lua
diff --git a/tests/projects/wdk/umdf/echo/driver/device.c b/tests/projects/windows/driver/umdf/echo/driver/device.c
index bd522565f..bd522565f 100644
--- a/tests/projects/wdk/umdf/echo/driver/device.c
+++ b/tests/projects/windows/driver/umdf/echo/driver/device.c
diff --git a/tests/projects/wdk/umdf/echo/driver/device.h b/tests/projects/windows/driver/umdf/echo/driver/device.h
index 1e2c1f28e..1e2c1f28e 100644
--- a/tests/projects/wdk/umdf/echo/driver/device.h
+++ b/tests/projects/windows/driver/umdf/echo/driver/device.h
diff --git a/tests/projects/wdk/umdf/echo/driver/driver.c b/tests/projects/windows/driver/umdf/echo/driver/driver.c
index 2835aa1dd..2835aa1dd 100644
--- a/tests/projects/wdk/umdf/echo/driver/driver.c
+++ b/tests/projects/windows/driver/umdf/echo/driver/driver.c
diff --git a/tests/projects/wdk/umdf/echo/driver/driver.h b/tests/projects/windows/driver/umdf/echo/driver/driver.h
index 6539d6cf5..6539d6cf5 100644
--- a/tests/projects/wdk/umdf/echo/driver/driver.h
+++ b/tests/projects/windows/driver/umdf/echo/driver/driver.h
diff --git a/tests/projects/wdk/umdf/echo/driver/echoum.inx b/tests/projects/windows/driver/umdf/echo/driver/echoum.inx
index cae8b45fe..cae8b45fe 100644
--- a/tests/projects/wdk/umdf/echo/driver/echoum.inx
+++ b/tests/projects/windows/driver/umdf/echo/driver/echoum.inx
Binary files differ
diff --git a/tests/projects/wdk/umdf/echo/driver/queue.c b/tests/projects/windows/driver/umdf/echo/driver/queue.c
index e0f3d7b6b..e0f3d7b6b 100644
--- a/tests/projects/wdk/umdf/echo/driver/queue.c
+++ b/tests/projects/windows/driver/umdf/echo/driver/queue.c
diff --git a/tests/projects/wdk/umdf/echo/driver/queue.h b/tests/projects/windows/driver/umdf/echo/driver/queue.h
index 5c04dc8f7..5c04dc8f7 100644
--- a/tests/projects/wdk/umdf/echo/driver/queue.h
+++ b/tests/projects/windows/driver/umdf/echo/driver/queue.h
diff --git a/tests/projects/wdk/umdf/echo/exe/echoapp.cpp b/tests/projects/windows/driver/umdf/echo/exe/echoapp.cpp
index 47c0ae0a1..47c0ae0a1 100644
--- a/tests/projects/wdk/umdf/echo/exe/echoapp.cpp
+++ b/tests/projects/windows/driver/umdf/echo/exe/echoapp.cpp
diff --git a/tests/projects/wdk/umdf/echo/exe/public.h b/tests/projects/windows/driver/umdf/echo/exe/public.h
index defcded56..defcded56 100644
--- a/tests/projects/wdk/umdf/echo/exe/public.h
+++ b/tests/projects/windows/driver/umdf/echo/exe/public.h
diff --git a/tests/projects/wdk/umdf/echo/xmake.lua b/tests/projects/windows/driver/umdf/echo/xmake.lua
index 0a5ec9517..0a5ec9517 100644
--- a/tests/projects/wdk/umdf/echo/xmake.lua
+++ b/tests/projects/windows/driver/umdf/echo/xmake.lua
diff --git a/tests/projects/wdk/umdf/skeleton/Skeleton.rc b/tests/projects/windows/driver/umdf/skeleton/Skeleton.rc
index 0e202c4f5..0e202c4f5 100644
--- a/tests/projects/wdk/umdf/skeleton/Skeleton.rc
+++ b/tests/projects/windows/driver/umdf/skeleton/Skeleton.rc
diff --git a/tests/projects/wdk/umdf/skeleton/UMDFSkeleton_OSR.inx b/tests/projects/windows/driver/umdf/skeleton/UMDFSkeleton_OSR.inx
index 3da01ae62..3da01ae62 100644
--- a/tests/projects/wdk/umdf/skeleton/UMDFSkeleton_OSR.inx
+++ b/tests/projects/windows/driver/umdf/skeleton/UMDFSkeleton_OSR.inx
Binary files differ
diff --git a/tests/projects/wdk/umdf/skeleton/UMDFSkeleton_Root.inx b/tests/projects/windows/driver/umdf/skeleton/UMDFSkeleton_Root.inx
index 63d9f94c5..63d9f94c5 100644
--- a/tests/projects/wdk/umdf/skeleton/UMDFSkeleton_Root.inx
+++ b/tests/projects/windows/driver/umdf/skeleton/UMDFSkeleton_Root.inx
Binary files differ
diff --git a/tests/projects/wdk/umdf/skeleton/comsup.cpp b/tests/projects/windows/driver/umdf/skeleton/comsup.cpp
index fb0b0807c..fb0b0807c 100644
--- a/tests/projects/wdk/umdf/skeleton/comsup.cpp
+++ b/tests/projects/windows/driver/umdf/skeleton/comsup.cpp
diff --git a/tests/projects/wdk/umdf/skeleton/comsup.h b/tests/projects/windows/driver/umdf/skeleton/comsup.h
index ba4cd89c3..ba4cd89c3 100644
--- a/tests/projects/wdk/umdf/skeleton/comsup.h
+++ b/tests/projects/windows/driver/umdf/skeleton/comsup.h
diff --git a/tests/projects/wdk/umdf/skeleton/device.cpp b/tests/projects/windows/driver/umdf/skeleton/device.cpp
index 2efcd36f0..2efcd36f0 100644
--- a/tests/projects/wdk/umdf/skeleton/device.cpp
+++ b/tests/projects/windows/driver/umdf/skeleton/device.cpp
diff --git a/tests/projects/wdk/umdf/skeleton/device.h b/tests/projects/windows/driver/umdf/skeleton/device.h
index 26dd0e329..26dd0e329 100644
--- a/tests/projects/wdk/umdf/skeleton/device.h
+++ b/tests/projects/windows/driver/umdf/skeleton/device.h
diff --git a/tests/projects/wdk/umdf/skeleton/dllsup.cpp b/tests/projects/windows/driver/umdf/skeleton/dllsup.cpp
index e540452d9..e540452d9 100644
--- a/tests/projects/wdk/umdf/skeleton/dllsup.cpp
+++ b/tests/projects/windows/driver/umdf/skeleton/dllsup.cpp
diff --git a/tests/projects/wdk/umdf/skeleton/driver.cpp b/tests/projects/windows/driver/umdf/skeleton/driver.cpp
index d91b4b0b5..d91b4b0b5 100644
--- a/tests/projects/wdk/umdf/skeleton/driver.cpp
+++ b/tests/projects/windows/driver/umdf/skeleton/driver.cpp
diff --git a/tests/projects/wdk/umdf/skeleton/driver.h b/tests/projects/windows/driver/umdf/skeleton/driver.h
index e764f517d..e764f517d 100644
--- a/tests/projects/wdk/umdf/skeleton/driver.h
+++ b/tests/projects/windows/driver/umdf/skeleton/driver.h
diff --git a/tests/projects/wdk/umdf/skeleton/exports.def b/tests/projects/windows/driver/umdf/skeleton/exports.def
index 7d46558b7..7d46558b7 100644
--- a/tests/projects/wdk/umdf/skeleton/exports.def
+++ b/tests/projects/windows/driver/umdf/skeleton/exports.def
diff --git a/tests/projects/wdk/umdf/skeleton/internal.h b/tests/projects/windows/driver/umdf/skeleton/internal.h
index f338a9b6c..f338a9b6c 100644
--- a/tests/projects/wdk/umdf/skeleton/internal.h
+++ b/tests/projects/windows/driver/umdf/skeleton/internal.h
diff --git a/tests/projects/wdk/umdf/skeleton/xmake.lua b/tests/projects/windows/driver/umdf/skeleton/xmake.lua
index 8a48274ca..8a48274ca 100644
--- a/tests/projects/wdk/umdf/skeleton/xmake.lua
+++ b/tests/projects/windows/driver/umdf/skeleton/xmake.lua
diff --git a/tests/projects/wdk/wdm/msdsm/SampleDSM.inf b/tests/projects/windows/driver/wdm/msdsm/SampleDSM.inf
index f632f6e50..f632f6e50 100644
--- a/tests/projects/wdk/wdm/msdsm/SampleDSM.inf
+++ b/tests/projects/windows/driver/wdm/msdsm/SampleDSM.inf
Binary files differ
diff --git a/tests/projects/wdk/wdm/msdsm/dsmmain.c b/tests/projects/windows/driver/wdm/msdsm/dsmmain.c
index bdf875184..bdf875184 100644
--- a/tests/projects/wdk/wdm/msdsm/dsmmain.c
+++ b/tests/projects/windows/driver/wdm/msdsm/dsmmain.c
diff --git a/tests/projects/wdk/wdm/msdsm/dsmtrace.mof b/tests/projects/windows/driver/wdm/msdsm/dsmtrace.mof
index d9e8cf4cc..d9e8cf4cc 100644
--- a/tests/projects/wdk/wdm/msdsm/dsmtrace.mof
+++ b/tests/projects/windows/driver/wdm/msdsm/dsmtrace.mof
diff --git a/tests/projects/wdk/wdm/msdsm/intrface.c b/tests/projects/windows/driver/wdm/msdsm/intrface.c
index eeebf7f93..eeebf7f93 100644
--- a/tests/projects/wdk/wdm/msdsm/intrface.c
+++ b/tests/projects/windows/driver/wdm/msdsm/intrface.c
diff --git a/tests/projects/wdk/wdm/msdsm/msdsm.h b/tests/projects/windows/driver/wdm/msdsm/msdsm.h
index e1ddeb52d..e1ddeb52d 100644
--- a/tests/projects/wdk/wdm/msdsm/msdsm.h
+++ b/tests/projects/windows/driver/wdm/msdsm/msdsm.h
diff --git a/tests/projects/wdk/wdm/msdsm/msdsm.mof b/tests/projects/windows/driver/wdm/msdsm/msdsm.mof
index 53ee61392..53ee61392 100644
--- a/tests/projects/wdk/wdm/msdsm/msdsm.mof
+++ b/tests/projects/windows/driver/wdm/msdsm/msdsm.mof
diff --git a/tests/projects/wdk/wdm/msdsm/msdsm.rc b/tests/projects/windows/driver/wdm/msdsm/msdsm.rc
index 743640342..743640342 100644
--- a/tests/projects/wdk/wdm/msdsm/msdsm.rc
+++ b/tests/projects/windows/driver/wdm/msdsm/msdsm.rc
diff --git a/tests/projects/wdk/wdm/msdsm/msdsmdsm.mof b/tests/projects/windows/driver/wdm/msdsm/msdsmdsm.mof
index f85eea270..f85eea270 100644
--- a/tests/projects/wdk/wdm/msdsm/msdsmdsm.mof
+++ b/tests/projects/windows/driver/wdm/msdsm/msdsmdsm.mof
diff --git a/tests/projects/wdk/wdm/msdsm/precomp.h b/tests/projects/windows/driver/wdm/msdsm/precomp.h
index bca8595db..bca8595db 100644
--- a/tests/projects/wdk/wdm/msdsm/precomp.h
+++ b/tests/projects/windows/driver/wdm/msdsm/precomp.h
diff --git a/tests/projects/wdk/wdm/msdsm/precompsrc.c b/tests/projects/windows/driver/wdm/msdsm/precompsrc.c
index 5944cf515..5944cf515 100644
--- a/tests/projects/wdk/wdm/msdsm/precompsrc.c
+++ b/tests/projects/windows/driver/wdm/msdsm/precompsrc.c
diff --git a/tests/projects/wdk/wdm/msdsm/prototypes.h b/tests/projects/windows/driver/wdm/msdsm/prototypes.h
index ebcf42029..ebcf42029 100644
--- a/tests/projects/wdk/wdm/msdsm/prototypes.h
+++ b/tests/projects/windows/driver/wdm/msdsm/prototypes.h
diff --git a/tests/projects/wdk/wdm/msdsm/trace.h b/tests/projects/windows/driver/wdm/msdsm/trace.h
index b9449cc8f..b9449cc8f 100644
--- a/tests/projects/wdk/wdm/msdsm/trace.h
+++ b/tests/projects/windows/driver/wdm/msdsm/trace.h
diff --git a/tests/projects/wdk/wdm/msdsm/utils.c b/tests/projects/windows/driver/wdm/msdsm/utils.c
index 91d8f44ce..91d8f44ce 100644
--- a/tests/projects/wdk/wdm/msdsm/utils.c
+++ b/tests/projects/windows/driver/wdm/msdsm/utils.c
diff --git a/tests/projects/wdk/wdm/msdsm/wmi.c b/tests/projects/windows/driver/wdm/msdsm/wmi.c
index 0ee882192..0ee882192 100644
--- a/tests/projects/wdk/wdm/msdsm/wmi.c
+++ b/tests/projects/windows/driver/wdm/msdsm/wmi.c
diff --git a/tests/projects/wdk/wdm/msdsm/xmake.lua b/tests/projects/windows/driver/wdm/msdsm/xmake.lua
index 3c68aa1b8..3c68aa1b8 100644
--- a/tests/projects/wdk/wdm/msdsm/xmake.lua
+++ b/tests/projects/windows/driver/wdm/msdsm/xmake.lua
diff --git a/tests/projects/wdk/wdm/perfcounters/kcs.c b/tests/projects/windows/driver/wdm/perfcounters/kcs.c
index 9996addcb..9996addcb 100644
--- a/tests/projects/wdk/wdm/perfcounters/kcs.c
+++ b/tests/projects/windows/driver/wdm/perfcounters/kcs.c
diff --git a/tests/projects/wdk/wdm/perfcounters/kcs.h b/tests/projects/windows/driver/wdm/perfcounters/kcs.h
index f575b816d..f575b816d 100644
--- a/tests/projects/wdk/wdm/perfcounters/kcs.h
+++ b/tests/projects/windows/driver/wdm/perfcounters/kcs.h
diff --git a/tests/projects/wdk/wdm/perfcounters/kcs.man b/tests/projects/windows/driver/wdm/perfcounters/kcs.man
index a5a16ffbd..a5a16ffbd 100644
--- a/tests/projects/wdk/wdm/perfcounters/kcs.man
+++ b/tests/projects/windows/driver/wdm/perfcounters/kcs.man
diff --git a/tests/projects/wdk/wdm/perfcounters/kcs.rc b/tests/projects/windows/driver/wdm/perfcounters/kcs.rc
index 7ebb6b97b..7ebb6b97b 100644
--- a/tests/projects/wdk/wdm/perfcounters/kcs.rc
+++ b/tests/projects/windows/driver/wdm/perfcounters/kcs.rc
diff --git a/tests/projects/wdk/wdm/perfcounters/xmake.lua b/tests/projects/windows/driver/wdm/perfcounters/xmake.lua
index 83e4e4d9b..83e4e4d9b 100644
--- a/tests/projects/wdk/wdm/perfcounters/xmake.lua
+++ b/tests/projects/windows/driver/wdm/perfcounters/xmake.lua
diff --git a/tests/projects/winsdk/usbview/app.config b/tests/projects/windows/winsdk/usbview/app.config
index fe947d6fd..fe947d6fd 100644
--- a/tests/projects/winsdk/usbview/app.config
+++ b/tests/projects/windows/winsdk/usbview/app.config
diff --git a/tests/projects/winsdk/usbview/bang.ico b/tests/projects/windows/winsdk/usbview/bang.ico
index 90fe0f220..90fe0f220 100644
--- a/tests/projects/winsdk/usbview/bang.ico
+++ b/tests/projects/windows/winsdk/usbview/bang.ico
Binary files differ
diff --git a/tests/projects/winsdk/usbview/codeanalysis.h b/tests/projects/windows/winsdk/usbview/codeanalysis.h
index 56fa54a1a..56fa54a1a 100644
--- a/tests/projects/winsdk/usbview/codeanalysis.h
+++ b/tests/projects/windows/winsdk/usbview/codeanalysis.h
diff --git a/tests/projects/winsdk/usbview/debug.c b/tests/projects/windows/winsdk/usbview/debug.c
index b73d727d5..b73d727d5 100644
--- a/tests/projects/winsdk/usbview/debug.c
+++ b/tests/projects/windows/winsdk/usbview/debug.c
diff --git a/tests/projects/winsdk/usbview/devnode.c b/tests/projects/windows/winsdk/usbview/devnode.c
index d9a3b8ecc..d9a3b8ecc 100644
--- a/tests/projects/winsdk/usbview/devnode.c
+++ b/tests/projects/windows/winsdk/usbview/devnode.c
diff --git a/tests/projects/winsdk/usbview/dispaud.c b/tests/projects/windows/winsdk/usbview/dispaud.c
index bbc16a912..bbc16a912 100644
--- a/tests/projects/winsdk/usbview/dispaud.c
+++ b/tests/projects/windows/winsdk/usbview/dispaud.c
diff --git a/tests/projects/winsdk/usbview/display.c b/tests/projects/windows/winsdk/usbview/display.c
index beead6d93..beead6d93 100644
--- a/tests/projects/winsdk/usbview/display.c
+++ b/tests/projects/windows/winsdk/usbview/display.c
diff --git a/tests/projects/winsdk/usbview/dispvid.c b/tests/projects/windows/winsdk/usbview/dispvid.c
index 537309721..537309721 100644
--- a/tests/projects/winsdk/usbview/dispvid.c
+++ b/tests/projects/windows/winsdk/usbview/dispvid.c
diff --git a/tests/projects/winsdk/usbview/enum.c b/tests/projects/windows/winsdk/usbview/enum.c
index 314a08806..314a08806 100644
--- a/tests/projects/winsdk/usbview/enum.c
+++ b/tests/projects/windows/winsdk/usbview/enum.c
diff --git a/tests/projects/winsdk/usbview/h264.c b/tests/projects/windows/winsdk/usbview/h264.c
index 108a1d540..108a1d540 100644
--- a/tests/projects/winsdk/usbview/h264.c
+++ b/tests/projects/windows/winsdk/usbview/h264.c
diff --git a/tests/projects/winsdk/usbview/h264.h b/tests/projects/windows/winsdk/usbview/h264.h
index 841318922..841318922 100644
--- a/tests/projects/winsdk/usbview/h264.h
+++ b/tests/projects/windows/winsdk/usbview/h264.h
diff --git a/tests/projects/winsdk/usbview/hub.ico b/tests/projects/windows/winsdk/usbview/hub.ico
index d0620df89..d0620df89 100644
--- a/tests/projects/winsdk/usbview/hub.ico
+++ b/tests/projects/windows/winsdk/usbview/hub.ico
Binary files differ
diff --git a/tests/projects/winsdk/usbview/langidlist.h b/tests/projects/windows/winsdk/usbview/langidlist.h
index 0f2d90621..0f2d90621 100644
--- a/tests/projects/winsdk/usbview/langidlist.h
+++ b/tests/projects/windows/winsdk/usbview/langidlist.h
diff --git a/tests/projects/winsdk/usbview/monitor.ico b/tests/projects/windows/winsdk/usbview/monitor.ico
index e015959f6..e015959f6 100644
--- a/tests/projects/winsdk/usbview/monitor.ico
+++ b/tests/projects/windows/winsdk/usbview/monitor.ico
Binary files differ
diff --git a/tests/projects/winsdk/usbview/port.ico b/tests/projects/windows/winsdk/usbview/port.ico
index 98c8aa04c..98c8aa04c 100644
--- a/tests/projects/winsdk/usbview/port.ico
+++ b/tests/projects/windows/winsdk/usbview/port.ico
Binary files differ
diff --git a/tests/projects/winsdk/usbview/resource.h b/tests/projects/windows/winsdk/usbview/resource.h
index 921fa6a30..921fa6a30 100644
--- a/tests/projects/winsdk/usbview/resource.h
+++ b/tests/projects/windows/winsdk/usbview/resource.h
diff --git a/tests/projects/winsdk/usbview/split.cur b/tests/projects/windows/winsdk/usbview/split.cur
index 41d65e3c5..41d65e3c5 100644
--- a/tests/projects/winsdk/usbview/split.cur
+++ b/tests/projects/windows/winsdk/usbview/split.cur
Binary files differ
diff --git a/tests/projects/winsdk/usbview/ssport.ico b/tests/projects/windows/winsdk/usbview/ssport.ico
index e0f712ae6..e0f712ae6 100644
--- a/tests/projects/winsdk/usbview/ssport.ico
+++ b/tests/projects/windows/winsdk/usbview/ssport.ico
Binary files differ
diff --git a/tests/projects/winsdk/usbview/ssusb.ico b/tests/projects/windows/winsdk/usbview/ssusb.ico
index 71f0ebe1d..71f0ebe1d 100644
--- a/tests/projects/winsdk/usbview/ssusb.ico
+++ b/tests/projects/windows/winsdk/usbview/ssusb.ico
Binary files differ
diff --git a/tests/projects/winsdk/usbview/usb.ico b/tests/projects/windows/winsdk/usbview/usb.ico
index e615d3e24..e615d3e24 100644
--- a/tests/projects/winsdk/usbview/usb.ico
+++ b/tests/projects/windows/winsdk/usbview/usb.ico
Binary files differ
diff --git a/tests/projects/winsdk/usbview/usbdesc.h b/tests/projects/windows/winsdk/usbview/usbdesc.h
index 8b78a3c39..8b78a3c39 100644
--- a/tests/projects/winsdk/usbview/usbdesc.h
+++ b/tests/projects/windows/winsdk/usbview/usbdesc.h
diff --git a/tests/projects/winsdk/usbview/usbschema.hpp b/tests/projects/windows/winsdk/usbview/usbschema.hpp
index 1aac6d000..1aac6d000 100644
--- a/tests/projects/winsdk/usbview/usbschema.hpp
+++ b/tests/projects/windows/winsdk/usbview/usbschema.hpp
diff --git a/tests/projects/winsdk/usbview/usbviddesc.h b/tests/projects/windows/winsdk/usbview/usbviddesc.h
index f5a17164f..f5a17164f 100644
--- a/tests/projects/winsdk/usbview/usbviddesc.h
+++ b/tests/projects/windows/winsdk/usbview/usbviddesc.h
diff --git a/tests/projects/winsdk/usbview/uvcdesc.h b/tests/projects/windows/winsdk/usbview/uvcdesc.h
index f343fa731..f343fa731 100644
--- a/tests/projects/winsdk/usbview/uvcdesc.h
+++ b/tests/projects/windows/winsdk/usbview/uvcdesc.h
diff --git a/tests/projects/winsdk/usbview/uvcview.c b/tests/projects/windows/winsdk/usbview/uvcview.c
index 04b295292..04b295292 100644
--- a/tests/projects/winsdk/usbview/uvcview.c
+++ b/tests/projects/windows/winsdk/usbview/uvcview.c
diff --git a/tests/projects/winsdk/usbview/uvcview.h b/tests/projects/windows/winsdk/usbview/uvcview.h
index d5c3f5786..d5c3f5786 100644
--- a/tests/projects/winsdk/usbview/uvcview.h
+++ b/tests/projects/windows/winsdk/usbview/uvcview.h
diff --git a/tests/projects/winsdk/usbview/uvcview.rc b/tests/projects/windows/winsdk/usbview/uvcview.rc
index 6c7642ce3..6c7642ce3 100644
--- a/tests/projects/winsdk/usbview/uvcview.rc
+++ b/tests/projects/windows/winsdk/usbview/uvcview.rc
diff --git a/tests/projects/winsdk/usbview/vndrlist.h b/tests/projects/windows/winsdk/usbview/vndrlist.h
index ccf21267b..ccf21267b 100644
--- a/tests/projects/winsdk/usbview/vndrlist.h
+++ b/tests/projects/windows/winsdk/usbview/vndrlist.h
diff --git a/tests/projects/winsdk/usbview/xmake.lua b/tests/projects/windows/winsdk/usbview/xmake.lua
index 5d5639429..5d5639429 100644
--- a/tests/projects/winsdk/usbview/xmake.lua
+++ b/tests/projects/windows/winsdk/usbview/xmake.lua
diff --git a/tests/projects/winsdk/usbview/xmlhelper.cpp b/tests/projects/windows/winsdk/usbview/xmlhelper.cpp
index bac7d797b..bac7d797b 100644
--- a/tests/projects/winsdk/usbview/xmlhelper.cpp
+++ b/tests/projects/windows/winsdk/usbview/xmlhelper.cpp
diff --git a/tests/projects/winsdk/usbview/xmlhelper.h b/tests/projects/windows/winsdk/usbview/xmlhelper.h
index 1da37d97b..1da37d97b 100644
--- a/tests/projects/winsdk/usbview/xmlhelper.h
+++ b/tests/projects/windows/winsdk/usbview/xmlhelper.h
diff --git a/tests/projects/winsdk/windemo/main.cpp b/tests/projects/windows/winsdk/windemo/main.cpp
index a8340d936..a8340d936 100644
--- a/tests/projects/winsdk/windemo/main.cpp
+++ b/tests/projects/windows/winsdk/windemo/main.cpp
diff --git a/tests/projects/winsdk/windemo/resource.h b/tests/projects/windows/winsdk/windemo/resource.h
index 65ba8f31d..65ba8f31d 100644
--- a/tests/projects/winsdk/windemo/resource.h
+++ b/tests/projects/windows/winsdk/windemo/resource.h
diff --git a/tests/projects/winsdk/windemo/small.ico b/tests/projects/windows/winsdk/windemo/small.ico
index d551aa3aa..d551aa3aa 100644
--- a/tests/projects/winsdk/windemo/small.ico
+++ b/tests/projects/windows/winsdk/windemo/small.ico
Binary files differ
diff --git a/tests/projects/winsdk/windemo/stdafx.cpp b/tests/projects/windows/winsdk/windemo/stdafx.cpp
index 50daaa27d..50daaa27d 100644
--- a/tests/projects/winsdk/windemo/stdafx.cpp
+++ b/tests/projects/windows/winsdk/windemo/stdafx.cpp
diff --git a/tests/projects/winsdk/windemo/stdafx.h b/tests/projects/windows/winsdk/windemo/stdafx.h
index de0dfa3cd..de0dfa3cd 100644
--- a/tests/projects/winsdk/windemo/stdafx.h
+++ b/tests/projects/windows/winsdk/windemo/stdafx.h
diff --git a/tests/projects/winsdk/windemo/targetver.h b/tests/projects/windows/winsdk/windemo/targetver.h
index f583181df..f583181df 100644
--- a/tests/projects/winsdk/windemo/targetver.h
+++ b/tests/projects/windows/winsdk/windemo/targetver.h
diff --git a/tests/projects/winsdk/windemo/test b/tests/projects/windows/winsdk/windemo/test
index 33639f71c..33639f71c 100644
--- a/tests/projects/winsdk/windemo/test
+++ b/tests/projects/windows/winsdk/windemo/test
diff --git a/tests/projects/winsdk/windemo/test.h b/tests/projects/windows/winsdk/windemo/test.h
index e60f2eb7e..e60f2eb7e 100644
--- a/tests/projects/winsdk/windemo/test.h
+++ b/tests/projects/windows/winsdk/windemo/test.h
diff --git a/tests/projects/winsdk/windemo/test.ico b/tests/projects/windows/winsdk/windemo/test.ico
index d551aa3aa..d551aa3aa 100644
--- a/tests/projects/winsdk/windemo/test.ico
+++ b/tests/projects/windows/winsdk/windemo/test.ico
Binary files differ
diff --git a/tests/projects/winsdk/windemo/test.rc b/tests/projects/windows/winsdk/windemo/test.rc
index 9ef96ba63..9ef96ba63 100644
--- a/tests/projects/winsdk/windemo/test.rc
+++ b/tests/projects/windows/winsdk/windemo/test.rc
diff --git a/tests/projects/winsdk/windemo/xmake.lua b/tests/projects/windows/winsdk/windemo/xmake.lua
index 1f492822e..1f492822e 100644
--- a/tests/projects/winsdk/windemo/xmake.lua
+++ b/tests/projects/windows/winsdk/windemo/xmake.lua
diff --git a/xmake/core/project/target.lua b/xmake/core/project/target.lua
index 499db099c..07327362d 100644
--- a/xmake/core/project/target.lua
+++ b/xmake/core/project/target.lua
@@ -398,6 +398,11 @@ function _instance:extraconf(name, item, key)
return self._INFO:extraconf(name, item, key)
end
+-- set the extra configuration
+function _instance:extraconf_set(name, item, key, value)
+ self._INFO:extraconf_set(name, item, key, value)
+end
+
-- get user private data
function _instance:data(name)
return self._DATA and self._DATA[name]
@@ -1239,14 +1244,8 @@ end
-- set the config info to the given source file
function _instance:fileconfig_set(sourcefile, info)
-
- -- get files config
local filesconfig = self._FILESCONFIG or {}
-
- -- set config info
filesconfig[sourcefile] = info
-
- -- update files config
self._FILESCONFIG = filesconfig
end
@@ -2092,7 +2091,7 @@ function target.filename(targetname, targetkind, opt)
-- make filename by format
local filename = targetname
- local format = opt.format or platform.format(targetkind, opt.plat, opt.arch)
+ local format = opt.format or platform.format(targetkind, opt.plat, opt.arch) or "$(name)"
if format then
local splitinfo = format:split("$(name)", {plain = true, strict = true})
local prefixname = splitinfo[1] or ""
diff --git a/xmake/rules/platform/linux/driver/driver_modules.lua b/xmake/rules/platform/linux/driver/driver_modules.lua
new file mode 100644
index 000000000..ceb3c6336
--- /dev/null
+++ b/xmake/rules/platform/linux/driver/driver_modules.lua
@@ -0,0 +1,245 @@
+--!A cross-platform build utility based on Lua
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+-- Copyright (C) 2015-present, TBOOX Open Source Group.
+--
+-- @author ruki
+-- @file driver_modules.lua
+--
+
+-- imports
+import("core.base.option")
+import("core.project.depend")
+import("lib.detect.find_tool")
+import("utils.progress")
+import("private.tools.ccache")
+
+-- get linux-headers sdk
+function _get_linux_headers_sdk(target)
+ local linux_headers = assert(target:pkg("linux-headers"), "please add `add_requires(\"linux-headers\", {configs = {driver_modules = true}})` and `add_packages(\"linux-headers\")` to the given target!")
+ local includedirs = linux_headers:get("includedirs") or linux_headers:get("sysincludedirs")
+ local version = linux_headers:version()
+ local includedir
+ local linux_headersdir
+ for _, dir in ipairs(includedirs) do
+ if dir:find("linux-headers", 1, true) then
+ includedir = dir
+ linux_headersdir = path.directory(dir)
+ break
+ end
+ end
+ assert(linux_headersdir, "linux-headers not found!")
+ if not os.isfile(path.join(includedir, "generated/autoconf.h")) and
+ not os.isfile(path.join(includedir, "config/auto.conf")) then
+ raise("kernel configuration is invalid. include/generated/autoconf.h or include/config/auto.conf are missing.")
+ end
+ return {version = version, sdkdir = linux_headersdir, includedir = includedir}
+end
+
+-- get c system search include directory of gcc
+--
+-- e.g. gcc -E -Wp,-v -xc /dev/null
+--
+-- ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
+-- ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/10/include-fixed"
+-- ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/10/../../../../x86_64-linux-gnu/include"
+-- #include "..." search starts here:
+-- #include <...> search starts here:
+-- /usr/lib/gcc/x86_64-linux-gnu/10/include <-- we need get it
+-- /usr/local/include
+-- /usr/include/x86_64-linux-gnu
+-- /usr/include
+-- End of search list.
+function _get_gcc_includedir(target)
+ local includedir = _g.includedir
+ if includedir == nil then
+ local gcc, toolname = target:tool("cc")
+ assert(toolname, "gcc")
+
+ local _, result = try {function () return os.iorunv(gcc, {"-E", "-Wp,-v", "-xc", os.nuldev()}) end}
+ if result then
+ for _, line in ipairs(result:split("\n", {plain = true})) do
+ line = line:trim()
+ if os.isdir(line) then
+ includedir = line
+ break
+ elseif line:startswith("End") then
+ break
+ end
+ end
+ end
+ _g.includedir = includedir or false
+ end
+ return includedir or nil
+end
+
+-- get ld arch, e.g. ld -m elf_x86_64
+function _get_ld_arch(target)
+ if target:is_arch("x86_64", "i386") then
+ return "elf_" .. target:arch()
+ end
+end
+
+function load(target)
+ -- we need only need binary kind, because we will rewrite on_link
+ target:set("kind", "binary")
+ target:set("extension", ".ko")
+
+ -- get and save linux-headers sdk
+ local linux_headers = _get_linux_headers_sdk(target)
+ target:data_set("linux.driver.linux_headers", linux_headers)
+
+ -- check compiler, we must use gcc
+ assert(target:has_tool("cc", "gcc"), "we must use gcc compiler!")
+
+ -- check rules
+ for _, rulename in ipairs({"mode.release", "mode.debug", "mode.releasedbg", "mode.minsizerel", "mode.asan", "mode.tsan"}) do
+ assert(not target:rule(rulename), "target(%s) is linux driver module, it need not rule(%s)!", target:name(), rulename)
+ end
+
+ -- add includedirs
+ local sdkdir = linux_headers.sdkdir
+ local includedir = linux_headers.includedir
+ local archsubdir
+ if target:is_arch("x86_64", "i386") then
+ archsubdir = path.join(sdkdir, "arch", "x86")
+ else
+ raise("rule(platform.linux.driver): unsupported arch(%s)!", target:arch())
+ end
+ assert(archsubdir, "unknown arch(%s) for linux driver modules!", target:arch())
+ local gcc_includedir = _get_gcc_includedir(target)
+ if gcc_includedir then
+ target:add("sysincludedirs", gcc_includedir)
+ end
+ target:add("includedirs", path.join(archsubdir, "include"))
+ target:add("includedirs", path.join(archsubdir, "include", "generated"))
+ target:add("includedirs", includedir)
+ target:add("includedirs", path.join(archsubdir, "include", "uapi"))
+ target:add("includedirs", path.join(archsubdir, "include", "generated", "uapi"))
+ target:add("includedirs", path.join(includedir, "uapi"))
+ target:add("includedirs", path.join(includedir, "generated", "uapi"))
+ target:add("cflags", "-include " .. path.join(includedir, "linux", "kconfig.h"))
+ target:add("cflags", "-include " .. path.join(includedir, "linux", "compiler_types.h"))
+ -- we need disable includedirs from add_packages("linux-headers")
+ target:pkg("linux-headers"):set("includedirs", nil)
+ target:pkg("linux-headers"):set("sysincludedirs", nil)
+
+ -- add compilation flags
+ target:set("policy", "check.auto_ignore_flags", false)
+ target:add("defines", "__KERNEL__", "MODULE")
+ target:add("defines", "KBUILD_MODNAME=\"" .. target:name() .. "\"")
+ for _, sourcefile in ipairs(target:sourcefiles()) do
+ target:fileconfig_set(sourcefile, {defines = "KBUILD_BASENAME=\"" .. path.basename(sourcefile) .. "\""})
+ end
+ if target:is_arch("x86_64", "i386") then
+ target:add("defines", "CONFIG_X86_X32_ABI")
+ end
+ target:set("optimize", "faster") -- we need use -O2 for gcc
+ if not target:get("language") then
+ target:set("languages", "gnu89")
+ end
+ target:add("cflags", "-nostdinc")
+ target:add("cflags", "-mno-sse", "-mno-mmx", "-mno-sse2", "-mno-3dnow", "-mno-avx", "-mno-80387", "-mno-fp-ret-in-387")
+ target:add("cflags", "-mpreferred-stack-boundary=3", "-mskip-rax-setup", "-mtune=generic", "-mno-red-zone", "-mcmodel=kernel")
+ target:add("cflags", "-mindirect-branch=thunk-extern", "-mindirect-branch-register", "-mrecord-mcount")
+ target:add("cflags", "-fmacro-prefix-map=./=", " -fno-strict-aliasing", "-fno-common", "-fshort-wchar", "-fno-PIE")
+ target:add("cflags", "-fcf-protection=none", "-falign-jumps=1", "-falign-loops=1", "-fno-asynchronous-unwind-tables")
+ target:add("cflags", "-fno-jump-tables", "-fno-delete-null-pointer-checks", "-fno-allow-store-data-races")
+ target:add("cflags", "-fno-reorder-blocks", "-fno-ipa-cp-clone", "-fno-partial-inlining", "-fstack-protector-strong")
+ target:add("cflags", "-fno-inline-functions-called-once", "-falign-functions=32")
+ target:add("cflags", "-fno-strict-overflow", "-fno-stack-check", "-fconserve-stack")
+
+ -- add optional flags (fentry)
+ local has_fentry = target:values("linux.driver.fentry")
+ if has_fentry then
+ target:add("cflags", "-mfentry")
+ target:add("defines", "CC_USING_FENTRY")
+ end
+
+ -- add optional flags (asan)
+ local has_asan = target:values("linux.driver.asan")
+ if has_asan then
+ target:add("cflags", "-fsanitize=kernel-address")
+ target:add("cflags", "-fasan-shadow-offset=0xdffffc0000000000", "-fsanitize-coverage=trace-pc", "-fsanitize-coverage=trace-cmp")
+ target:add("cflags", "--param asan-globals=1", "--param asan-instrumentation-with-call-threshold=0", "--param asan-stack=1", "--param asan-instrument-allocas=1")
+ end
+end
+
+function link(target, opt)
+ local targetfile = target:targetfile()
+ local dependfile = target:dependfile(targetfile)
+ local objectfiles = target:objectfiles()
+ depend.on_changed(function ()
+
+ -- trace
+ progress.show(opt.progress, "${color.build.object}linking.$(mode) %s", targetfile)
+
+ -- get module scripts
+ local modpost, ldscriptfile
+ local linux_headers = target:data("linux.driver.linux_headers")
+ if linux_headers then
+ modpost = path.join(linux_headers.sdkdir, "scripts", "mod", "modpost")
+ ldscriptfile = path.join(linux_headers.sdkdir, "scripts", "module.lds")
+ end
+ assert(modpost and os.isfile(modpost), "scripts/mod/modpost not found!")
+ assert(ldscriptfile and os.isfile(ldscriptfile), "scripts/module.lds not found!")
+
+ -- get ld
+ local ld = assert(find_tool("ld"), "ld not found!")
+
+ -- link target.o
+ local ldarch = assert(_get_ld_arch(target), "unknown ld arch!")
+ local targetfile_o = target:objectfile(targetfile)
+ local argv = {"-m", ldarch, "-r", "-o", targetfile_o}
+ table.join2(argv, objectfiles)
+ os.mkdir(path.directory(targetfile_o))
+ os.vrunv(ld.program, argv)
+
+ -- generate target.mod
+ local targetfile_mod = targetfile_o:gsub("%.o$", ".mod")
+ io.writefile(targetfile_mod, table.concat(objectfiles, " ") .. "\n\n")
+
+ -- generate .sourcename.o.cmd
+ -- we need only touch an empty file, otherwise modpost command will raise error.
+ for _, objectfile in ipairs(objectfiles) do
+ local objectdir = path.directory(objectfile)
+ local objectname = path.filename(objectfile)
+ local cmdfile = path.join(objectdir, "." .. objectname .. ".cmd")
+ io.writefile(cmdfile, "")
+ end
+
+ -- generate target.mod.c
+ local orderfile = path.join(path.directory(targetfile_o), "modules.order")
+ local symversfile = path.join(path.directory(targetfile_o), "Module.symvers")
+ argv = {"-m", "-a", "-o", symversfile, "-e", "-N", "-T", "-"}
+ io.writefile(orderfile, targetfile_o .. "\n")
+ os.vrunv(modpost, argv, {stdin = orderfile})
+
+ -- compile target.mod.c
+ local targetfile_mod_c = targetfile_o:gsub("%.o$", ".mod.c")
+ local targetfile_mod_o = targetfile_o:gsub("%.o$", ".mod.o")
+ local compinst = target:compiler("cc")
+ if option.get("verbose") then
+ print(compinst:compcmd(targetfile_mod_c, targetfile_mod_o, {target = target, rawargs = true}))
+ end
+ assert(compinst:compile(targetfile_mod_c, targetfile_mod_o, {target = target}))
+
+ -- link target.ko
+ local targetfile_o = target:objectfile(targetfile)
+ argv = {"-m", ldarch, "-r", "--build-id=sha1", "-T", ldscriptfile, "-o", targetfile, targetfile_o, targetfile_mod_o}
+ os.mkdir(path.directory(targetfile))
+ os.vrunv(ld.program, argv)
+
+ end, {dependfile = dependfile, lastmtime = os.mtime(target:targetfile()), files = objectfiles})
+end
diff --git a/xmake/rules/platform/linux/driver/xmake.lua b/xmake/rules/platform/linux/driver/xmake.lua
new file mode 100644
index 000000000..78ba6d089
--- /dev/null
+++ b/xmake/rules/platform/linux/driver/xmake.lua
@@ -0,0 +1,30 @@
+--!A cross-platform build utility based on Lua
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+-- Copyright (C) 2015-present, TBOOX Open Source Group.
+--
+-- @author ruki
+-- @file xmake.lua
+--
+
+-- build linux driver module
+rule("platform.linux.driver")
+ set_sourcekinds("cc")
+ on_load(function (target)
+ import("driver_modules").load(target)
+ end)
+ on_link(function (target, opt)
+ import("driver_modules").link(target, opt)
+ end)
+