From 3e50deaf22b629cb1014a6047a54cd05d79de22f Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Sun, 31 Jul 2016 21:17:58 -0700 Subject: [PATCH] Link readline to provide Kevin his 64-bit console. --- apple-configure.sh | 6 ++++- apple-lib.sh | 49 ++++++++++++++++++++++++++++----------- apple-libffi.sh | 22 ------------------ apple-libuv.sh | 22 ------------------ build.mk | 6 ++--- extra.arm64/ncurses_dll.h | 1 + extra.arm64/readline | 1 + extra.arm64/term.h | 1 + 8 files changed, 47 insertions(+), 61 deletions(-) delete mode 100755 apple-libffi.sh delete mode 100755 apple-libuv.sh create mode 120000 extra.arm64/ncurses_dll.h create mode 120000 extra.arm64/readline create mode 120000 extra.arm64/term.h diff --git a/apple-configure.sh b/apple-configure.sh index 103b11d..aa67a94 100755 --- a/apple-configure.sh +++ b/apple-configure.sh @@ -93,7 +93,11 @@ for arch in armv6 armv7 armv7s arm64; do ldf="" flg=() - if [[ ${arch} != armv6 ]]; then + if [[ ${arch} == arm64 ]]; then + cpf+=" -I../extra.${arch}" + cpf+=" -I../readline.${arch}" + ldf+=" -L../readline.${arch}" + elif [[ ${arch} != armv6 ]]; then flg+=(--disable-console) else flg+=(LTLIBGCC="-lgcc_s.1") diff --git a/apple-lib.sh b/apple-lib.sh index 7816a8b..3114af1 100755 --- a/apple-lib.sh +++ b/apple-lib.sh @@ -21,12 +21,13 @@ set -e -lib=$1 -shift extra=("$@") archs=() function arch() { + local lib=$1 + shift + local arch=$1 local host=$2 local sdk=$3 @@ -34,15 +35,15 @@ function arch() { local min=$5 shift 5 - rm -rf "lib${lib}.${arch}" + rm -rvf "${lib}.${arch}" if ! isysroot=$(xcodebuild -sdk "${sdk}" -version Path); then return fi archs+=("${arch}") - mkdir "lib${lib}.${arch}" + mkdir "${lib}.${arch}" - flags=("${extra[@]}") + flags=() flags+=(-isysroot "${isysroot}") flags+=(-m${os}-version-min="${min}") flags+=(-O3 -g3) @@ -51,16 +52,38 @@ function arch() { flags+=(-mthumb) fi - cd "lib${lib}.${arch}" - CC="clang -arch ${arch}" CXX="clang++ -arch ${arch}" CFLAGS="${flags[*]}" CPPFLAGS="${flags[*]} $*" ../lib"${lib}"/configure --host="${host}" --enable-static --disable-shared + cd "${lib}.${arch}" + CC="clang -arch ${arch}" CXX="clang++ -arch ${arch}" LDFLAGS="${flags[*]}" CPPFLAGS="${flags[*]} $*" ../"${lib}"/configure --host="${host}" --enable-static --disable-shared \ + ac_cv_func_strcoll_works=yes bash_cv_func_sigsetjmp=present bash_cv_func_ctype_nonascii=no bash_cv_must_reinstall_sighandlers=no bash_cv_func_strcoll_broken=yes bash_cv_wcwidth_broken=no make -j5 cd .. } -arch armv6 arm-apple-darwin10 iphoneos iphoneos 2.0 -mllvm -arm-reserve-r9 -arch armv7 arm-apple-darwin10 iphoneos iphoneos 2.0 -arch armv7s arm-apple-darwin10 iphoneos iphoneos 2.0 -arch arm64 aarch64-apple-darwin11 iphoneos iphoneos 2.0 +function arch64() { + local lib=$1 + shift + + arch "${lib}" arm64 aarch64-apple-darwin11 iphoneos iphoneos 2.0 "$@" +} + +function archs() { + local lib=$1 + shift + + arch "${lib}" armv6 arm-apple-darwin10 iphoneos iphoneos 2.0 "$@" -mllvm -arm-reserve-r9 + arch "${lib}" armv7 arm-apple-darwin10 iphoneos iphoneos 2.0 "$@" + arch "${lib}" armv7s arm-apple-darwin10 iphoneos iphoneos 2.0 "$@" + + arch64 "${lib}" "$@" + + arch "${lib}" i386 i386-apple-darwin10 iphonesimulator ios-simulator 4.0 "$@" + arch "${lib}" x86_64 x86_64-apple-darwin11 iphonesimulator ios-simulator 4.0 "$@" +} + +archs libffi -DPAGE_MAX_SIZE=16384 -DPAGE_MAX_SHIFT=14 -fno-stack-protector +archs libuv +arch64 readline -include sys/ioctl.h -arch i386 i386-apple-darwin10 iphonesimulator ios-simulator 4.0 -arch x86_64 x86_64-apple-darwin11 iphonesimulator ios-simulator 4.0 +for arch in arm64; do + ln -sf . "readline.${arch}/readline" +done diff --git a/apple-libffi.sh b/apple-libffi.sh deleted file mode 100755 index 7982b0a..0000000 --- a/apple-libffi.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash - -# Cycript - The Truly Universal Scripting Language -# Copyright (C) 2009-2016 Jay Freeman (saurik) - -# GNU Affero General Public License, Version 3 {{{ -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# }}} - -exec ./apple-lib.sh ffi -DPAGE_MAX_SIZE=16384 -DPAGE_MAX_SHIFT=14 -fno-stack-protector diff --git a/apple-libuv.sh b/apple-libuv.sh deleted file mode 100755 index 1bdc787..0000000 --- a/apple-libuv.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash - -# Cycript - The Truly Universal Scripting Language -# Copyright (C) 2009-2016 Jay Freeman (saurik) - -# GNU Affero General Public License, Version 3 {{{ -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# }}} - -exec ./apple-lib.sh uv diff --git a/build.mk b/build.mk index 4e43fb3..6c1dc05 100644 --- a/build.mk +++ b/build.mk @@ -94,7 +94,7 @@ $(deb): Cycript.lib/cycript-apl Cycript.lib/libcycript.dylib Cycript.lib/libcycr sed -e 's/#/$(version)/' control.in >package/DEBIAN/control mkdir -p package/usr/{bin,lib} cp -a cycript0.9 package/usr/lib/cycript0.9 - $(lipo) -extract armv6 -output package/usr/bin/cycript Cycript.lib/cycript-apl + $(lipo) -extract armv6 -extract arm64 -output package/usr/bin/cycript Cycript.lib/cycript-apl $(lipo) -extract armv6 -extract arm64 -output package/usr/lib/libcycript.dylib Cycript.lib/libcycript.dylib ln -s libcycript.dylib package/usr/lib/libcycript.0.dylib cp -a libcycript.cy package/usr/lib/libcycript.cy @@ -172,7 +172,7 @@ build.ios-$(1)/.libs/cycript: build-ios-$(1) @ endef -$(foreach arch,armv6,$(eval $(call build_arm,$(arch)))) +$(foreach arch,armv6 arm64,$(eval $(call build_arm,$(arch)))) define build_arm $(call build_lib,ios,$(1)) @@ -235,7 +235,7 @@ Cycript.lib/cycript-pie: build.and-armeabi/cycript-pie install_name_tool -change /System/Library/{,Private}Frameworks/JavaScriptCore.framework/JavaScriptCore $@ codesign -s $(codesign) --entitlement cycript-$(word 2,$(subst ., ,$(subst -, ,$*))).xml $@ -Cycript.lib/cycript-apl: build.osx-i386/.libs/cycript_ build.osx-x86_64/.libs/cycript_ build.ios-armv6/.libs/cycript_ +Cycript.lib/cycript-apl: build.osx-i386/.libs/cycript_ build.osx-x86_64/.libs/cycript_ build.ios-armv6/.libs/cycript_ build.ios-arm64/.libs/cycript_ @mkdir -p $(dir $@) $(lipo) -create -output $@ $^ diff --git a/extra.arm64/ncurses_dll.h b/extra.arm64/ncurses_dll.h new file mode 120000 index 0000000..c81139f --- /dev/null +++ b/extra.arm64/ncurses_dll.h @@ -0,0 +1 @@ +/usr/include/ncurses_dll.h \ No newline at end of file diff --git a/extra.arm64/readline b/extra.arm64/readline new file mode 120000 index 0000000..be37715 --- /dev/null +++ b/extra.arm64/readline @@ -0,0 +1 @@ +../readline \ No newline at end of file diff --git a/extra.arm64/term.h b/extra.arm64/term.h new file mode 120000 index 0000000..3059255 --- /dev/null +++ b/extra.arm64/term.h @@ -0,0 +1 @@ +/usr/include/term.h \ No newline at end of file -- 2.45.2