1
1
# PREFIX should be only writable by the root to avoid privilege escalation with launchd or sudo
2
2
PREFIX ?= /opt/socket_vmnet
3
3
4
+ export SOURCE_DATE_EPOCH ?= $(shell git log -1 --pretty=% ct)
5
+ # https://reproducible-builds.org/docs/archives/
6
+ TAR ?= gtar --sort=name --mtime="@$(SOURCE_DATE_EPOCH ) " --owner=0 --group=0 --numeric-owner --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime
7
+ TOUCH ?= gtouch -d @$(SOURCE_DATE_EPOCH )
8
+ # Not necessary to use GNU's gzip
9
+ GZIP ?= gzip -9 -n
10
+ DIFFOSCOPE ?= diffoscope
11
+ STRIP ?= strip
12
+
4
13
CFLAGS ?= -O3
5
14
6
15
VERSION ?= $(shell git describe --match 'v[0-9]* ' --dirty='.m' --always --tags)
16
+ VERSION_TRIMMED := $(VERSION:v%=% )
7
17
8
18
CFLAGS += -DVERSION=\"$(VERSION ) \"
9
19
@@ -37,8 +47,14 @@ socket_vmnet_client: $(patsubst %.c, %.o, $(wildcard client/*.c))
37
47
38
48
install.bin : socket_vmnet socket_vmnet_client
39
49
mkdir -p " $( DESTDIR) /$( PREFIX) /bin"
40
- install socket_vmnet " $( DESTDIR) /$( PREFIX) /bin/socket_vmnet"
41
- install socket_vmnet_client " $( DESTDIR) /$( PREFIX) /bin/socket_vmnet_client"
50
+ cp -a socket_vmnet " $( DESTDIR) /$( PREFIX) /bin/socket_vmnet"
51
+ cp -a socket_vmnet_client " $( DESTDIR) /$( PREFIX) /bin/socket_vmnet_client"
52
+ $(STRIP ) " $( DESTDIR) /$( PREFIX) /bin/socket_vmnet"
53
+ $(STRIP ) " $( DESTDIR) /$( PREFIX) /bin/socket_vmnet_client"
54
+
55
+ install.doc : README.md LICENSE launchd etc_sudoers.d
56
+ mkdir -p " $( DESTDIR) /$( PREFIX) /share/doc/socket_vmnet"
57
+ cp -a $? " $( DESTDIR) /$( PREFIX) /share/doc/socket_vmnet"
42
58
43
59
install.launchd.plist : launchd/* .plist
44
60
sed -e " s@/opt/socket_vmnet@$( PREFIX) @g" launchd/io.github.lima-vm.socket_vmnet.plist > " $( DESTDIR) /Library/LaunchDaemons/io.github.lima-vm.socket_vmnet.plist"
@@ -53,13 +69,17 @@ ifneq ($(BRIDGED),)
53
69
launchctl load -w "$(DESTDIR)/Library/LaunchDaemons/io.github.lima-vm.socket_vmnet.bridged.$(BRIDGED).plist"
54
70
endif
55
71
56
- install : install.bin install.launchd
72
+ install : install.bin install.doc install. launchd
57
73
58
74
.PHONY : uninstall.bin
59
75
uninstall.bin :
60
76
rm -f " $( DESTDIR) /$( PREFIX) /bin/socket_vmnet"
61
77
rm -f " $( DESTDIR) /$( PREFIX) /bin/socket_vmnet_client"
62
78
79
+ .PHONY : uninstall.doc
80
+ uninstall.doc :
81
+ rm -rf " $( DESTDIR) /$( PREFIX) /share/doc/socket_vmnet"
82
+
63
83
.PHONY : uninstall.launchd
64
84
uninstall.launchd :
65
85
launchctl unload -w " $( DESTDIR) /Library/LaunchDaemons/io.github.lima-vm.socket_vmnet.plist"
77
97
uninstall.run :
78
98
rm -f /var/run/socket_vmnet*
79
99
80
- uninstall : uninstall.launchd.plist uninstall.bin uninstall.run
100
+ uninstall : uninstall.launchd.plist uninstall.doc uninstall. bin uninstall.run
81
101
82
102
.PHONY : clean
83
103
clean :
84
104
rm -f socket_vmnet socket_vmnet_client * .o client/* .o
105
+
106
+ define make_artifacts
107
+ $(MAKE ) clean
108
+ rm -rf _artifacts/$(1 )
109
+ $(MAKE ) ARCH=$(1 ) DESTDIR=_artifacts/$(1 ) install.bin install.doc
110
+ file -bp _artifacts/$(1 ) /$(PREFIX ) /bin/socket_vmnet | grep -q "Mach-O 64-bit executable $(1 ) "
111
+ $(TAR ) -C _artifacts/$(1 ) -cf _artifacts/socket_vmnet-$(VERSION_TRIMMED ) -$(1 ) .tar ./
112
+ $(GZIP ) _artifacts/socket_vmnet-$(VERSION_TRIMMED ) -$(1 ) .tar
113
+ rm -rf _artifacts/$(1 )
114
+ $(MAKE ) clean
115
+ endef
116
+
117
+ .PHONY : artifacts
118
+ artifacts :
119
+ rm -rf _artifacts
120
+ $(call make_artifacts,x86_64)
121
+ $(call make_artifacts,arm64)
122
+ sw_vers | tee _artifacts/build-env.txt
123
+ echo --- >> _artifacts/build-env.txt
124
+ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | tee -a _artifacts/build-env.txt
125
+ echo --- >> _artifacts/build-env.txt
126
+ $(CC ) --version | tee -a _artifacts/build-env.txt
127
+ (cd _artifacts ; shasum -a 256 * ) > SHA256SUMS
128
+ mv SHA256SUMS _artifacts/SHA256SUMS
129
+ $(TOUCH ) _artifacts/* _artifacts
130
+
131
+ .PHONY : test.repro
132
+ test.repro :
133
+ rm -rf _artifacts.0 _artifacts.1
134
+ $(MAKE ) artifacts
135
+ mv _artifacts _artifacts.0
136
+ $(MAKE ) artifacts
137
+ mv _artifacts _artifacts.1
138
+ $(DIFFOSCOPE ) _artifacts.0/ _artifacts.1/
0 commit comments