aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
blob: ccb9b9cd0c302490ff52d0706ff0d4045c6126dd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
CC              ?= aarch64-apple-darwin-clang
STRIP           ?= aarch64-apple-darwin-strip
LDID            ?= ldid
INSTALL         ?= install
FAKEROOT        ?= fakeroot
PREFIX          ?= /usr
TARGET_SYSROOT  ?= /home/cameron/Documents/SDK/iPhoneOS14.2.sdk
CFLAGS          ?= -arch arm64 -isysroot $(TARGET_SYSROOT) -miphoneos-version-min=13.0

DEB_MAINTAINER  ?= Cameron Katri <me@cameronkatri.com>
DEB_ARCH        ?= iphoneos-arm
SNAPRESTORE_V   := 0.3
DEB_SNAPRESTORE := $(SNAPRESTORE_V)

all: build/snaprestore

build/snaprestore: src/snaprestore.m src/ent.xml
	mkdir -p build
	$(CC) $(CFLAGS) -o $@ $< -framework IOKit -framework Foundation -framework CoreServices -fobjc-arc
	$(STRIP) $@
	$(LDID) -S$(word 2,$^) $@

install: build/snaprestore LICENSE
	$(INSTALL) -Dm755 $< $(DESTDIR)$(PREFIX)/bin/snaprestore
	$(INSTALL) -Dm644 $(word 2,$^) $(DESTDIR)$(PREFIX)/share/snaprestore/$(word 2,$^)

package: install
	rm -rf staging
	mkdir -p staging
	cp -a $(DESTDIR)$(PREFIX) staging
	$(FAKEROOT) chown -R 0:0 staging
	SIZE=$$(du -s staging | cut -f 1); \
	$(INSTALL) -Dm755 src/snaprestore.control staging/DEBIAN/control; \
	sed -i ':a; s/@DEB_SNAPRESTORE@/$(DEB_SNAPRESTORE)/g; ta' staging/DEBIAN/control; \
	sed -i ':a; s/@DEB_MAINTAINER@/$(DEB_MAINTAINER)/g; ta' staging/DEBIAN/control; \
	sed -i ':a; s/@DEB_ARCH@/$(DEB_ARCH)/g; ta' staging/DEBIAN/control; \
	cd staging && find . -type f ! -regex '.*.hg.*' ! -regex '.*?debian-binary.*' ! -regex '.*?DEBIAN.*' -printf '"%P" ' | xargs md5sum > DEBIAN/md5sum; \
	cd ..; \
	echo "Installed-Size: $$SIZE" >> staging/DEBIAN/control
	$(FAKEROOT) dpkg-deb -z9 -b staging build
	rm -rf staging

uninstall:
	rm -f $(DESTDIR)$(PREFIX)/bin/snaprestore
	rm -rf $(DESTDIR)$(PREFIX)/share/snaprestore

clean:
	rm -f build/snaprestore

.PHONY: all package uninstall clean