diff --git cctools/Makefile.am cctools/Makefile.am index 9f69d04..be83f0a 100644 --- cctools/Makefile.am +++ cctools/Makefile.am @@ -1,7 +1,7 @@ if ISDARWIN -SUBDIRS=libstuff ar as misc otool ld64 $(LD_CLASSIC) +SUBDIRS=libstuff ar as misc otool ld64 else -SUBDIRS=libstuff ar as misc libobjc2 otool ld64 $(LD_CLASSIC) +SUBDIRS=libstuff ar as misc libobjc2 otool ld64 endif ACLOCAL_AMFLAGS = -I m4 diff --git cctools/as/driver.c cctools/as/driver.c index b06d085..92410c7 100644 --- cctools/as/driver.c +++ cctools/as/driver.c @@ -283,7 +283,7 @@ char **envp) run_clang = 1; #ifndef DISABLE_CLANG_AS /* cctools-port */ - if(getenv("NO_CLANG_AS") != NULL) /* cctools-port */ + if(getenv("CCTOOLS_NO_CLANG_AS") != NULL) /* cctools-port */ run_clang = 0; /* @@ -298,9 +298,13 @@ char **envp) arch_flag.cputype == CPU_TYPE_ARM)){ #if 0 /* cctools port */ as = makestr(prefix, CLANG, NULL); -#else - as = find_clang(); #endif + /* cctools-port start */ +#ifndef __APPLE__ + char *target_triple = getenv("CCTOOLS_CLANG_AS_TARGET_TRIPLE"); +#endif /* ! __APPLE__ */ + as = find_clang(); + /* cctools-port end */ if(!as || access(as, F_OK) != 0){ /* cctools-port: added !as || */ printf("%s: assembler (%s) not installed\n", progname, as ? as : "clang"); /* cctools-port: @@ -364,10 +368,12 @@ char **envp) new_argv[j] = "-c"; j++; /* cctools-port start */ +#ifndef __APPLE__ new_argv[j] = "-target"; j++; - new_argv[j] = "unknown-apple-darwin"; + new_argv[j] = target_triple ? target_triple : "unknown-apple-darwin"; j++; +#endif /* ! __APPLE__ */ /* cctools-port end */ new_argv[j] = NULL; if(execute(new_argv, verbose)) diff --git cctools/configure.ac cctools/configure.ac index 5219e3d..a6a3dd4 100644 --- cctools/configure.ac +++ cctools/configure.ac @@ -358,8 +358,6 @@ if test "x$isdarwin" != "xyes"; then AC_CONFIG_FILES([libobjc2/Makefile]) fi -AC_CONFIG_FILES([ld/Makefile]) - AC_CONFIG_FILES([ld64/Makefile]) AC_CONFIG_FILES([ld64/src/Makefile]) AC_CONFIG_FILES([ld64/src/3rd/Makefile]) diff --git cctools/misc/Makefile.am cctools/misc/Makefile.am index c0b7be8..5256aa2 100644 --- cctools/misc/Makefile.am +++ cctools/misc/Makefile.am @@ -16,7 +16,11 @@ bin_PROGRAMS = \ pagestuff \ ranlib \ codesign_allocate \ - bitcode_strip + bitcode_strip \ + ctf_insert \ + check_dylib \ + cmpdylib \ + inout LDADD = \ $(top_builddir)/libstuff/libstuff.la \ @@ -46,3 +50,7 @@ ranlib_CFLAGS = -DRANLIB $(AM_CFLAGS) codesign_allocate_SOURCES = codesign_allocate.c bitcode_strip_SOURCES= bitcode_strip.c bitcode_strip_CFLAGS = -DALLOW_ARCHIVES $(AM_CFLAGS) +ctf_insert_SOURCES= ctf_insert.c +check_dylib_SOURCES= check_dylib.c +cmpdylib_SOURCES= cmpdylib.c +inout_SOURCES= inout.c diff --git usage_examples/ios_toolchain/README usage_examples/ios_toolchain/README index ac51229..fc85462 100644 --- usage_examples/ios_toolchain/README +++ usage_examples/ios_toolchain/README @@ -7,7 +7,7 @@ USAGE: Please ensure you have read and understood the Xcode license terms before building this toolchain: https://www.apple.com/legal/sla/docs/xcode.pdf. -./build.sh /path/to/sdk.tar.* +[LLVM_DSYMUTIL=llvm-dsymutil] ./build.sh /path/to/sdk.tar.* Target CPU should be one of armv6, armv7, armv7s and arm64. diff --git usage_examples/ios_toolchain/build.sh usage_examples/ios_toolchain/build.sh index 156c21f..a823fa3 100755 --- usage_examples/ios_toolchain/build.sh +++ usage_examples/ios_toolchain/build.sh @@ -5,6 +5,14 @@ pushd "${0%/*}" &>/dev/null PLATFORM=$(uname -s) +if [ -z "$LLVM_DSYMUTIL" ]; then + LLVM_DSYMUTIL=llvm-dsymutil +fi + +if [ -z "$JOBS" ]; then + JOBS=$(nproc 2>/dev/null || ncpus 2>/dev/null || echo 1) +fi + set -e function verbose_cmd @@ -29,7 +37,7 @@ function extract() bzip2 -dc $1 | tar $tarflags - ;; *) - echo "unhandled archive type" + echo "unhandled archive type" 1>&2 exit 1 ;; esac @@ -80,7 +88,26 @@ echo "" echo "*** building wrapper ***" echo "" -echo "int main(){return 0;}" | cc -xc -O2 -o $TARGETDIR/bin/dsymutil - +OK=0 + +set +e +which $LLVM_DSYMUTIL &>/dev/null +if [ $? -eq 0 ]; then + case $($LLVM_DSYMUTIL --version | \ + grep "LLVM version" | head -1 | awk '{print $3}') in + 3.8*|3.9*|4.0*) OK=1 ;; + esac +fi +set -e + +if [ $OK -eq 1 ]; then + ln -sf $(which $LLVM_DSYMUTIL) $TARGETDIR/bin/dsymutil + pushd $TARGETDIR/bin &>/dev/null + ln -sf $TRIPLE-lipo lipo + popd &>/dev/null +else + echo "int main(){return 0;}" | cc -xc -O2 -o $TARGETDIR/bin/dsymutil - +fi verbose_cmd cc -O2 -Wall -Wextra -pedantic wrapper.c \ -DTARGET_CPU=\"\\\"$2\\\"\" \ @@ -100,7 +127,7 @@ mkdir -p tmp pushd tmp &>/dev/null git clone https://github.com/tpoechtrager/ldid.git pushd ldid &>/dev/null -make INSTALLPREFIX=$TARGETDIR -j4 install +make INSTALLPREFIX=$TARGETDIR -j$JOBS install popd &>/dev/null popd &>/dev/null @@ -112,7 +139,7 @@ pushd ../../cctools &>/dev/null git clean -fdx . &>/dev/null || true ./autogen.sh ./configure --target=$TRIPLE --prefix=$TARGETDIR -make -j4 && make install +make -j$JOBS && make install popd &>/dev/null echo "" --- cctools/configure +++ cctools/configure @@ -17722,9 +17722,6 @@ fi -ac_config_files="$ac_config_files ld/Makefile" - - ac_config_files="$ac_config_files ld64/Makefile" ac_config_files="$ac_config_files ld64/src/Makefile" @@ -18881,7 +18878,6 @@ "misc/Makefile") CONFIG_FILES="$CONFIG_FILES misc/Makefile" ;; "otool/Makefile") CONFIG_FILES="$CONFIG_FILES otool/Makefile" ;; "libobjc2/Makefile") CONFIG_FILES="$CONFIG_FILES libobjc2/Makefile" ;; - "ld/Makefile") CONFIG_FILES="$CONFIG_FILES ld/Makefile" ;; "ld64/Makefile") CONFIG_FILES="$CONFIG_FILES ld64/Makefile" ;; "ld64/src/Makefile") CONFIG_FILES="$CONFIG_FILES ld64/src/Makefile" ;; "ld64/src/3rd/Makefile") CONFIG_FILES="$CONFIG_FILES ld64/src/3rd/Makefile" ;; --- cctools/misc/Makefile.in +++ cctools/misc/Makefile.in @@ -95,7 +95,8 @@ seg_hack$(EXEEXT) install_name_tool$(EXEEXT) indr$(EXEEXT) \ strip$(EXEEXT) nmedit$(EXEEXT) segedit$(EXEEXT) \ pagestuff$(EXEEXT) ranlib$(EXEEXT) codesign_allocate$(EXEEXT) \ - bitcode_strip$(EXEEXT) + bitcode_strip$(EXEEXT) ctf_insert$(EXEEXT) \ + check_dylib$(EXEEXT) cmpdylib$(EXEEXT) inout$(EXEEXT) subdir = misc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ @@ -123,21 +124,41 @@ bitcode_strip_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(bitcode_strip_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +am_check_dylib_OBJECTS = check_dylib.$(OBJEXT) +check_dylib_OBJECTS = $(am_check_dylib_OBJECTS) +check_dylib_LDADD = $(LDADD) +check_dylib_DEPENDENCIES = $(top_builddir)/libstuff/libstuff.la \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_checksyms_OBJECTS = checksyms.$(OBJEXT) checksyms_OBJECTS = $(am_checksyms_OBJECTS) checksyms_LDADD = $(LDADD) checksyms_DEPENDENCIES = $(top_builddir)/libstuff/libstuff.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am_cmpdylib_OBJECTS = cmpdylib.$(OBJEXT) +cmpdylib_OBJECTS = $(am_cmpdylib_OBJECTS) +cmpdylib_LDADD = $(LDADD) +cmpdylib_DEPENDENCIES = $(top_builddir)/libstuff/libstuff.la \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_codesign_allocate_OBJECTS = codesign_allocate.$(OBJEXT) codesign_allocate_OBJECTS = $(am_codesign_allocate_OBJECTS) codesign_allocate_LDADD = $(LDADD) codesign_allocate_DEPENDENCIES = $(top_builddir)/libstuff/libstuff.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am_ctf_insert_OBJECTS = ctf_insert.$(OBJEXT) +ctf_insert_OBJECTS = $(am_ctf_insert_OBJECTS) +ctf_insert_LDADD = $(LDADD) +ctf_insert_DEPENDENCIES = $(top_builddir)/libstuff/libstuff.la \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_indr_OBJECTS = indr.$(OBJEXT) indr_OBJECTS = $(am_indr_OBJECTS) indr_LDADD = $(LDADD) indr_DEPENDENCIES = $(top_builddir)/libstuff/libstuff.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am_inout_OBJECTS = inout.$(OBJEXT) +inout_OBJECTS = $(am_inout_OBJECTS) +inout_LDADD = $(LDADD) +inout_DEPENDENCIES = $(top_builddir)/libstuff/libstuff.la \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_install_name_tool_OBJECTS = install_name_tool.$(OBJEXT) install_name_tool_OBJECTS = $(am_install_name_tool_OBJECTS) install_name_tool_LDADD = $(LDADD) @@ -247,19 +268,21 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = $(bitcode_strip_SOURCES) $(checksyms_SOURCES) \ - $(codesign_allocate_SOURCES) $(indr_SOURCES) \ - $(install_name_tool_SOURCES) $(libtool_SOURCES) \ - $(lipo_SOURCES) $(nm_SOURCES) $(nmedit_SOURCES) \ - $(pagestuff_SOURCES) $(ranlib_SOURCES) \ +SOURCES = $(bitcode_strip_SOURCES) $(check_dylib_SOURCES) \ + $(checksyms_SOURCES) $(cmpdylib_SOURCES) \ + $(codesign_allocate_SOURCES) $(ctf_insert_SOURCES) \ + $(indr_SOURCES) $(inout_SOURCES) $(install_name_tool_SOURCES) \ + $(libtool_SOURCES) $(lipo_SOURCES) $(nm_SOURCES) \ + $(nmedit_SOURCES) $(pagestuff_SOURCES) $(ranlib_SOURCES) \ $(redo_prebinding_SOURCES) $(seg_addr_table_SOURCES) \ $(seg_hack_SOURCES) $(segedit_SOURCES) $(size_SOURCES) \ $(strings_SOURCES) $(strip_SOURCES) -DIST_SOURCES = $(bitcode_strip_SOURCES) $(checksyms_SOURCES) \ - $(codesign_allocate_SOURCES) $(indr_SOURCES) \ - $(install_name_tool_SOURCES) $(libtool_SOURCES) \ - $(lipo_SOURCES) $(nm_SOURCES) $(nmedit_SOURCES) \ - $(pagestuff_SOURCES) $(ranlib_SOURCES) \ +DIST_SOURCES = $(bitcode_strip_SOURCES) $(check_dylib_SOURCES) \ + $(checksyms_SOURCES) $(cmpdylib_SOURCES) \ + $(codesign_allocate_SOURCES) $(ctf_insert_SOURCES) \ + $(indr_SOURCES) $(inout_SOURCES) $(install_name_tool_SOURCES) \ + $(libtool_SOURCES) $(lipo_SOURCES) $(nm_SOURCES) \ + $(nmedit_SOURCES) $(pagestuff_SOURCES) $(ranlib_SOURCES) \ $(redo_prebinding_SOURCES) $(seg_addr_table_SOURCES) \ $(seg_hack_SOURCES) $(segedit_SOURCES) $(size_SOURCES) \ $(strings_SOURCES) $(strip_SOURCES) @@ -460,6 +483,10 @@ codesign_allocate_SOURCES = codesign_allocate.c bitcode_strip_SOURCES = bitcode_strip.c bitcode_strip_CFLAGS = -DALLOW_ARCHIVES $(AM_CFLAGS) +ctf_insert_SOURCES = ctf_insert.c +check_dylib_SOURCES = check_dylib.c +cmpdylib_SOURCES = cmpdylib.c +inout_SOURCES = inout.c all: all-am .SUFFIXES: @@ -547,18 +574,34 @@ @rm -f bitcode_strip$(EXEEXT) $(AM_V_CCLD)$(bitcode_strip_LINK) $(bitcode_strip_OBJECTS) $(bitcode_strip_LDADD) $(LIBS) +check_dylib$(EXEEXT): $(check_dylib_OBJECTS) $(check_dylib_DEPENDENCIES) $(EXTRA_check_dylib_DEPENDENCIES) + @rm -f check_dylib$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_dylib_OBJECTS) $(check_dylib_LDADD) $(LIBS) + checksyms$(EXEEXT): $(checksyms_OBJECTS) $(checksyms_DEPENDENCIES) $(EXTRA_checksyms_DEPENDENCIES) @rm -f checksyms$(EXEEXT) $(AM_V_CCLD)$(LINK) $(checksyms_OBJECTS) $(checksyms_LDADD) $(LIBS) +cmpdylib$(EXEEXT): $(cmpdylib_OBJECTS) $(cmpdylib_DEPENDENCIES) $(EXTRA_cmpdylib_DEPENDENCIES) + @rm -f cmpdylib$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(cmpdylib_OBJECTS) $(cmpdylib_LDADD) $(LIBS) + codesign_allocate$(EXEEXT): $(codesign_allocate_OBJECTS) $(codesign_allocate_DEPENDENCIES) $(EXTRA_codesign_allocate_DEPENDENCIES) @rm -f codesign_allocate$(EXEEXT) $(AM_V_CCLD)$(LINK) $(codesign_allocate_OBJECTS) $(codesign_allocate_LDADD) $(LIBS) +ctf_insert$(EXEEXT): $(ctf_insert_OBJECTS) $(ctf_insert_DEPENDENCIES) $(EXTRA_ctf_insert_DEPENDENCIES) + @rm -f ctf_insert$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ctf_insert_OBJECTS) $(ctf_insert_LDADD) $(LIBS) + indr$(EXEEXT): $(indr_OBJECTS) $(indr_DEPENDENCIES) $(EXTRA_indr_DEPENDENCIES) @rm -f indr$(EXEEXT) $(AM_V_CCLD)$(LINK) $(indr_OBJECTS) $(indr_LDADD) $(LIBS) +inout$(EXEEXT): $(inout_OBJECTS) $(inout_DEPENDENCIES) $(EXTRA_inout_DEPENDENCIES) + @rm -f inout$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(inout_OBJECTS) $(inout_LDADD) $(LIBS) + install_name_tool$(EXEEXT): $(install_name_tool_OBJECTS) $(install_name_tool_DEPENDENCIES) $(EXTRA_install_name_tool_DEPENDENCIES) @rm -f install_name_tool$(EXEEXT) $(AM_V_CCLD)$(LINK) $(install_name_tool_OBJECTS) $(install_name_tool_LDADD) $(LIBS)