summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Stoelp <johannes.stoelp@gmail.com>2024-07-05 00:26:27 +0200
committerJohannes Stoelp <johannes.stoelp@gmail.com>2024-07-05 00:26:27 +0200
commited6bd7fd5552afc5b8633b77ba13f04da2168a75 (patch)
tree8e72b682ab079ee5d84d1b1ac2d18bce3a74242b
parentb07a942993efe44e5dbdff8088b0ed87c79fc433 (diff)
downloadzig-playground-ed6bd7fd5552afc5b8633b77ba13f04da2168a75.tar.gz
zig-playground-ed6bd7fd5552afc5b8633b77ba13f04da2168a75.zip
cross: mini cpp cross compile using zig compiler
-rw-r--r--example-cross-compile-cpp/.gitignore5
-rw-r--r--example-cross-compile-cpp/Makefile17
-rw-r--r--example-cross-compile-cpp/lin.cc5
-rw-r--r--example-cross-compile-cpp/win.cc6
4 files changed, 33 insertions, 0 deletions
diff --git a/example-cross-compile-cpp/.gitignore b/example-cross-compile-cpp/.gitignore
new file mode 100644
index 0000000..3fd3ba4
--- /dev/null
+++ b/example-cross-compile-cpp/.gitignore
@@ -0,0 +1,5 @@
+*.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..6b904a3
--- /dev/null
+++ b/example-cross-compile-cpp/Makefile
@@ -0,0 +1,17 @@
+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-exe win.cc -target x86_64-windows -lc
+ file win.exe
+ 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 <stdio.h>
+
+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..b0e701a
--- /dev/null
+++ b/example-cross-compile-cpp/win.cc
@@ -0,0 +1,6 @@
+#include <windows.h>
+#include <winuser.h>
+
+int main() {
+ MessageBoxA(nullptr, "world", "hello", 0);
+}