From 429e511d2440691bd04f6d0f9db9ef0cd49d7153 Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Mon, 13 Aug 2018 00:04:06 -0700 Subject: [PATCH] libapt-pkg needs to be statically linked on armv6. --- .gitmodules | 5 +- apt-contrib/apt-pkg | 1 - apt-deb/apt-pkg | 1 - apt32 | 1 + apt32-contrib/apt-pkg | 1 + apt32-deb/apt-pkg | 1 + apt => apt64 | 0 apt64-contrib/apt-pkg | 1 + apt64-deb/apt-pkg | 1 + makefile | 122 +++++++++++++++++++++++++++--------------- sysroot.sh | 2 - 11 files changed, 88 insertions(+), 48 deletions(-) delete mode 120000 apt-contrib/apt-pkg delete mode 120000 apt-deb/apt-pkg create mode 160000 apt32 create mode 120000 apt32-contrib/apt-pkg create mode 120000 apt32-deb/apt-pkg rename apt => apt64 (100%) create mode 120000 apt64-contrib/apt-pkg create mode 120000 apt64-deb/apt-pkg diff --git a/.gitmodules b/.gitmodules index cc667a69..6d42b55c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -5,5 +5,8 @@ path = icu url = git://git.saurik.com/apple/icu.git [submodule "apt"] - path = apt + path = apt64 url = git://git.saurik.com/apt.git +[submodule "apt-legacy"] + path = apt32 + url = git://git.saurik.com/apt-legacy.git diff --git a/apt-contrib/apt-pkg b/apt-contrib/apt-pkg deleted file mode 120000 index c7d0c77a..00000000 --- a/apt-contrib/apt-pkg +++ /dev/null @@ -1 +0,0 @@ -../apt/apt-pkg/contrib \ No newline at end of file diff --git a/apt-deb/apt-pkg b/apt-deb/apt-pkg deleted file mode 120000 index 40a128ef..00000000 --- a/apt-deb/apt-pkg +++ /dev/null @@ -1 +0,0 @@ -../apt/apt-pkg/deb \ No newline at end of file diff --git a/apt32 b/apt32 new file mode 160000 index 00000000..b62917f1 --- /dev/null +++ b/apt32 @@ -0,0 +1 @@ +Subproject commit b62917f161e80c11d4c3265006102d8d2c1651c5 diff --git a/apt32-contrib/apt-pkg b/apt32-contrib/apt-pkg new file mode 120000 index 00000000..91fe91f9 --- /dev/null +++ b/apt32-contrib/apt-pkg @@ -0,0 +1 @@ +../apt32/apt-pkg/contrib \ No newline at end of file diff --git a/apt32-deb/apt-pkg b/apt32-deb/apt-pkg new file mode 120000 index 00000000..fa9bffda --- /dev/null +++ b/apt32-deb/apt-pkg @@ -0,0 +1 @@ +../apt32/apt-pkg/deb \ No newline at end of file diff --git a/apt b/apt64 similarity index 100% rename from apt rename to apt64 diff --git a/apt64-contrib/apt-pkg b/apt64-contrib/apt-pkg new file mode 120000 index 00000000..96c3b8a9 --- /dev/null +++ b/apt64-contrib/apt-pkg @@ -0,0 +1 @@ +../apt64/apt-pkg/contrib \ No newline at end of file diff --git a/apt64-deb/apt-pkg b/apt64-deb/apt-pkg new file mode 120000 index 00000000..33765ef7 --- /dev/null +++ b/apt64-deb/apt-pkg @@ -0,0 +1 @@ +../apt64/apt-pkg/deb \ No newline at end of file diff --git a/makefile b/makefile index 24a5ce5f..51dcf7df 100644 --- a/makefile +++ b/makefile @@ -17,9 +17,6 @@ cycc += -isysroot $(sdk) cycc += -idirafter /usr/include cycc += -F$(sdk)/System/Library/PrivateFrameworks -cycc += -arch arm64 -cycc += -Xarch_arm64 -miphoneos-version-min=7.0 - cycc += -fmessage-length=0 cycc += -gfull -O2 cycc += -fvisibility=hidden @@ -27,11 +24,17 @@ cycc += -fvisibility=hidden link += -Wl,-dead_strip link += -Wl,-no_dead_strip_inits_and_terms -flag += -Xarch_arm64 -Iapt -flag += -Xarch_arm64 -Iapt-contrib -flag += -Xarch_arm64 -Iapt-deb +flag += -Xarch_armv6 -Iapt32 +flag += -Xarch_armv6 -Iapt32-contrib +flag += -Xarch_armv6 -Iapt32-deb +flag += -Xarch_armv6 -Iapt-extra +flag += -Xarch_armv6 -IObjects/apt32 + +flag += -Xarch_arm64 -Iapt64 +flag += -Xarch_arm64 -Iapt64-contrib +flag += -Xarch_arm64 -Iapt64-deb flag += -Xarch_arm64 -Iapt-extra -flag += -Xarch_arm64 -IObjects/apt +flag += -Xarch_arm64 -IObjects/apt64 flag += -I. flag += -isystem sysroot/usr/include @@ -51,7 +54,6 @@ flag += -Wno-unknown-warning-option plus += -fobjc-call-cxx-cdtors plus += -fvisibility-inlines-hidden -link += -Lsysroot/usr/lib link += -multiply_defined suppress libs += -framework CoreFoundation @@ -65,8 +67,9 @@ libs += -framework SystemConfiguration libs += -framework WebCore libs += -framework WebKit -libs += -Xarch_armv6 -Wl,-lapt-pkg -libs += -Xarch_arm64 -Wl,Objects/libapt64.a +libs += -Xarch_armv6 -Wl,-force_load,Objects/libapt32.a +libs += -Xarch_arm64 -Wl,-force_load,Objects/libapt64.a + libs += -licucore uikit := @@ -91,36 +94,59 @@ object := $(object:.m=.o) object := $(object:.mm=.o) object := $(object:%=Objects/%) -libapt := -libapt += $(wildcard apt/apt-pkg/*.cc) -libapt += $(wildcard apt/apt-pkg/deb/*.cc) -libapt += $(wildcard apt/apt-pkg/contrib/*.cc) -libapt += Objects/apt/apt-pkg/tagfile-keys.cc -libapt += apt/methods/store.cc -libapt := $(filter-out %/srvrec.cc,$(libapt)) -libapt := $(patsubst %.cc,Objects/%.o,$(libapt)) +libapt32 := +libapt32 += $(wildcard apt32/apt-pkg/*.cc) +libapt32 += $(wildcard apt32/apt-pkg/deb/*.cc) +libapt32 += $(wildcard apt32/apt-pkg/contrib/*.cc) +libapt32 := $(patsubst %.cc,Objects/%.o,$(libapt32)) -link += -Xarch_arm64 -Wl,-lz,-liconv +libapt64 := +libapt64 += $(wildcard apt64/apt-pkg/*.cc) +libapt64 += $(wildcard apt64/apt-pkg/deb/*.cc) +libapt64 += $(wildcard apt64/apt-pkg/contrib/*.cc) +libapt64 += apt64/apt-pkg/tagfile-keys.cc +libapt64 += apt64/methods/store.cc +libapt64 := $(filter-out %/srvrec.cc,$(libapt64)) +libapt64 := $(patsubst %.cc,Objects/%.o,$(libapt64)) + +link += -Wl,-liconv +link += -Xarch_arm64 -Wl,-lz flag += -DAPT_PKG_EXPOSE_STRING_VIEW flag += -Dsighandler_t=sig_t -aptc := $(cycc) $(flag) -aptc += -include apt.h -aptc += -Wno-deprecated-register -aptc += -Wno-unused-private-field -aptc += -Wno-unused-variable - -cycc += -arch armv6 -cycc += -Xarch_armv6 -miphoneos-version-min=2.0 -flag += -Xarch_armv6 -marm # @synchronized -flag += -Xarch_armv6 -mcpu=arm1176jzf-s -flag += -mllvm -arm-reserve-r9 +flag32 := +flag32 += -arch armv6 +flag32 += -Xarch_armv6 -miphoneos-version-min=2.0 +flag32 += -Xarch_armv6 -marm # @synchronized +flag32 += -Xarch_armv6 -mcpu=arm1176jzf-s +flag32 += -mllvm -arm-reserve-r9 link += -Xarch_armv6 -Wl,-lgcc_s.1 +flag64 := +flag64 += -arch arm64 +flag64 += -Xarch_arm64 -miphoneos-version-min=7.0 + +apt32 := $(cycc) $(flag32) $(flag) +apt32 += -include apt.h +apt32 += -Wno-deprecated-register +apt32 += -Wno-format-security +apt32 += -Wno-tautological-compare +apt32 += -Wno-uninitialized +apt32 += -Wno-unused-private-field +apt32 += -Wno-unused-variable +apt32 += -D'VERSION="0.7.25.3"' + +apt64 := $(cycc) $(flag64) $(flag) +apt64 += -include apt.h +apt64 += -Wno-deprecated-register +apt64 += -Wno-unused-private-field +apt64 += -Wno-unused-variable + +cycc += $(flag32) +cycc += $(flag64) + plus += -std=c++11 -#plus += -Wp,-stdlib=libc++ -#link += libcxx/lib/libc++.a images := $(shell find MobileCydia.app/ -type f -name '*.png') images := $(images:%=Images/%) @@ -133,26 +159,32 @@ clean: rm -f MobileCydia postinst rm -rf Objects/ Images/ -Objects/apt/apt-pkg/tagfile.o: Objects/apt/apt-pkg/tagfile-keys.cc -Objects/apt/apt-pkg/deb/deblistparser.o: Objects/apt/apt-pkg/tagfile-keys.cc +Objects/apt64/apt-pkg/tagfile.o: apt64/apt-pkg/tagfile-keys.cc +Objects/apt64/apt-pkg/deb/deblistparser.o: apt64/apt-pkg/tagfile-keys.cc -Objects/apt/apt-pkg/tagfile-keys.cc: - mkdir -p Objects/apt - cd Objects/apt && ../../apt/triehash/triehash.pl \ +apt64/apt-pkg/tagfile-keys.cc: + mkdir -p apt64 + mkdir -p Objects/apt64/apt-pkg + cd apt64 && ../apt64/triehash/triehash.pl \ --ignore-case \ - --header apt-pkg/tagfile-keys.h \ + --header ../Objects/apt64/apt-pkg/tagfile-keys.h \ --code apt-pkg/tagfile-keys.cc \ --enum-class \ --enum-name pkgTagSection::Key \ --function-name pkgTagHash \ --include "" \ - ../../apt/apt-pkg/tagfile-keys.list + ../apt64/apt-pkg/tagfile-keys.list sed -i -e 's@typedef char static_assert64@//\\0@' $@ -Objects/%.o: %.cc $(header) apt.h apt-extra/*.h +Objects/apt32/%.o: apt32/%.cc $(header) apt.h apt-extra/*.h @mkdir -p $(dir $@) @echo "[cycc] $<" - @$(aptc) $(plus) -c -o $@ $< -Dmain=main_$(basename $(notdir $@)) + @$(apt32) -c -o $@ $< -Dmain=main_$(basename $(notdir $@)) + +Objects/apt64/%.o: apt64/%.cc $(header) apt.h apt-extra/*.h + @mkdir -p $(dir $@) + @echo "[cycc] $<" + @$(apt64) $(plus) -c -o $@ $< -Dmain=main_$(basename $(notdir $@)) Objects/%.o: %.c $(header) @mkdir -p $(dir $@) @@ -186,11 +218,15 @@ sysroot: sysroot.sh @echo 1>&2 @exit 1 -Objects/libapt64.a: $(libapt) +Objects/libapt32.a: $(libapt32) + @echo "[arch] $@" + @ar -rc $@ $^ + +Objects/libapt64.a: $(libapt64) @echo "[arch] $@" @ar -rc $@ $^ -MobileCydia: sysroot $(object) entitlements.xml Objects/libapt64.a +MobileCydia: $(object) entitlements.xml Objects/libapt32.a Objects/libapt64.a @echo "[link] $@" @$(cycc) -o $@ $(filter %.o,$^) $(link) $(libs) $(uikit) -Wl,-sdk_version,8.0 @mkdir -p bins diff --git a/sysroot.sh b/sysroot.sh index 2a2c4b8a..99c8889a 100755 --- a/sysroot.sh +++ b/sysroot.sh @@ -64,8 +64,6 @@ function extract() { declare -A urls -urls[apt7]=http://apt.saurik.com/debs/apt7_0.7.25.3-7_iphoneos-arm.deb -urls[apt7-lib]=http://apt.saurik.com/debs/apt7-lib_0.7.25.3-12_iphoneos-arm.deb urls[coreutils]=http://apt.saurik.com/debs/coreutils_7.4-11_iphoneos-arm.deb if [[ 0 ]]; then -- 2.45.2