From 962f29ba59b3b064d2e6e4d6274f4b4ff09a6412 Mon Sep 17 00:00:00 2001 From: Johannes Stoelp Date: Fri, 5 Jul 2024 00:26:27 +0200 Subject: cross: mini cpp cross compile using zig compiler --- example-cross-compile-cpp/.gitignore | 7 +++++++ example-cross-compile-cpp/Makefile | 18 ++++++++++++++++++ example-cross-compile-cpp/lin.cc | 5 +++++ example-cross-compile-cpp/win.cc | 9 +++++++++ example-cross-compile-cpp/windll.cc | 5 +++++ 5 files changed, 44 insertions(+) create mode 100644 example-cross-compile-cpp/.gitignore create mode 100644 example-cross-compile-cpp/Makefile create mode 100644 example-cross-compile-cpp/lin.cc create mode 100644 example-cross-compile-cpp/win.cc create mode 100644 example-cross-compile-cpp/windll.cc (limited to 'example-cross-compile-cpp') diff --git a/example-cross-compile-cpp/.gitignore b/example-cross-compile-cpp/.gitignore new file mode 100644 index 0000000..19794fc --- /dev/null +++ b/example-cross-compile-cpp/.gitignore @@ -0,0 +1,7 @@ +*.lib +*.dll +*.exe +*.exe.obj +*.pdb +*.elf +*.elf.o diff --git a/example-cross-compile-cpp/Makefile b/example-cross-compile-cpp/Makefile new file mode 100644 index 0000000..6c7f234 --- /dev/null +++ b/example-cross-compile-cpp/Makefile @@ -0,0 +1,18 @@ +riscv64: lin-riscv64 +aarch64: lin-aarch64 +mips64el: lin-mips64el + +lin-%: + zig build-exe lin.cc -target $*-linux-musl -lc --name $*.elf + file $*.elf + qemu-$* $*.elf + +win: + zig build-lib -dynamic -target x86_64-windows -lc windll.cc + zig build-exe win.cc -target x86_64-windows -lc windll.lib + file win.exe windll.dll + wine win.exe + +clean: + git clean -fdx . + diff --git a/example-cross-compile-cpp/lin.cc b/example-cross-compile-cpp/lin.cc new file mode 100644 index 0000000..5d70f91 --- /dev/null +++ b/example-cross-compile-cpp/lin.cc @@ -0,0 +1,5 @@ +#include + +int main() { + puts("hello from cpp main()"); +} diff --git a/example-cross-compile-cpp/win.cc b/example-cross-compile-cpp/win.cc new file mode 100644 index 0000000..abb0f6d --- /dev/null +++ b/example-cross-compile-cpp/win.cc @@ -0,0 +1,9 @@ +#include +#include + +__declspec(dllimport) void say(const char*); + +int main() { + say("hello dll"); + MessageBoxA(nullptr, "world", "hello", 0); +} diff --git a/example-cross-compile-cpp/windll.cc b/example-cross-compile-cpp/windll.cc new file mode 100644 index 0000000..890117c --- /dev/null +++ b/example-cross-compile-cpp/windll.cc @@ -0,0 +1,5 @@ +#include + +__declspec(dllexport) void say(const char* str) { + if (str) puts(str); +} -- cgit v1.2.3