Peng Yu via llvm-dev
2019-Jan-28 14:09 UTC
[llvm-dev] How to generate .bc file using configure && make on Mac OS X?
> On macOS you just omit the '-fuse-ld=gold' and it will work out of the box.> > ./configure CC=clang RANLIB=llvm-ranlib CFLAGS=-flto > > LDFLAGS=-Wl\,-plugin-opt=save-temps\ -flto\ -fuse-ld=gold > > makeNo. It doesn't work on Mac OS by just omitting '-fuse-ld=gold'. $ ../../../extract/bash-5.0/configure CC=clang CXX=clang++ RANLIB=llvm-ranlib CFLAGS=-g\ -flto LDFLAGS=-Wl\,-plugin-opt=save-temps\ -flto checking build system type... x86_64-apple-darwin17.7.0 checking host system type... x86_64-apple-darwin17.7.0 Beginning configuration for bash-5.0-release for x86_64-apple-darwin17.7.0 checking for gcc... clang checking whether the C compiler works... no configure: error: in `/Users/pengy/homebake/work/bash/build/Linux/y': configure: error: C compiler cannot create executables See `config.log' for more details Here is the relevant content from config.log ===configure:3750: checking whether the C compiler works configure:3772: clang -g -flto -Wl,-plugin-opt=save-temps -flto conftest.c >&5 ld: unknown option: -plugin-opt=save-temps clang: error: linker command failed with exit code 1 (use -v to see invocation) configure:3776: $? = 1 configure:3814: result: no configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "bash" | #define PACKAGE_TARNAME "bash" | #define PACKAGE_VERSION "5.0-release" | #define PACKAGE_STRING "bash 5.0-release" | #define PACKAGE_BUGREPORT "bug-bash at gnu.org" | #define PACKAGE_URL "" | #define ALIAS 1 | #define PUSHD_AND_POPD 1 | #define RESTRICTED_SHELL 1 | #define PROCESS_SUBSTITUTION 1 | #define PROMPT_STRING_DECODE 1 | #define SELECT_COMMAND 1 | #define HELP_BUILTIN 1 | #define ARRAY_VARS 1 | #define DPAREN_ARITHMETIC 1 | #define BRACE_EXPANSION 1 | #define COMMAND_TIMING 1 | #define EXTENDED_GLOB 1 | #define EXTGLOB_DEFAULT 0 | #define COND_COMMAND 1 | #define COND_REGEXP 1 | #define COPROCESS_SUPPORT 1 | #define ARITH_FOR_COMMAND 1 | #define NETWORK_REDIRECTIONS 1 | #define PROGRAMMABLE_COMPLETION 1 | #define DEBUGGER 1 | #define CASEMOD_ATTRS 1 | #define CASEMOD_EXPANSIONS 1 | #define GLOBASCII_DEFAULT 1 | #define FUNCTION_IMPORT 1 | #define MEMSCRAMBLE 1 | /* end confdefs.h. */ | | int | main () | { | | ; | return 0; | } configure:3819: error: in `/Users/pengy/homebake/work/bash/build/Linux/y': configure:3821: error: C compiler cannot create executables == -- Regards, Peng
Tim Northover via llvm-dev
2019-Jan-28 14:16 UTC
[llvm-dev] How to generate .bc file using configure && make on Mac OS X?
On Mon, 28 Jan 2019 at 14:10, Peng Yu via llvm-dev <llvm-dev at lists.llvm.org> wrote:> ld: unknown option: -plugin-opt=save-tempsThe macOS linker supports -save-temps directly (but not -plugin-opt). I haven't tried, but I'd guess that if you modified the -Wl part of your command line in the obvious manner it'll work. Cheers. Tim.
Peng Yu via llvm-dev
2019-Jan-28 14:51 UTC
[llvm-dev] How to generate .bc file using configure && make on Mac OS X?
On Mon, Jan 28, 2019 at 8:16 AM Tim Northover <t.p.northover at gmail.com> wrote:> > On Mon, 28 Jan 2019 at 14:10, Peng Yu via llvm-dev > <llvm-dev at lists.llvm.org> wrote: > > ld: unknown option: -plugin-opt=save-temps > > The macOS linker supports -save-temps directly (but not -plugin-opt). > I haven't tried, but I'd guess that if you modified the -Wl part of > your command line in the obvious manner it'll work.I can run the configure using this command. ../../../extract/bash-5.0/configure CC=clang CXX=clang++ RANLIB=llvm-ranlib CFLAGS=-g\ -flto LDFLAGS=-save-temps\ -flto But the command to generate the executable "bash" (called by make) does not produce a .bc file. clang -L./builtins -L./lib/readline -L./lib/readline -L./lib/glob -L./lib/tilde -L./lib/sh -save-temps -flto -g -flto -Wno-parentheses -Wno-format-security -o bash shell.o eval.o y.tab.o general.o make_cmd.o print_cmd.o dispose_cmd.o execute_cmd.o variables.o copy_cmd.o error.o expr.o flags.o jobs.o subst.o hashcmd.o hashlib.o mailcheck.o trap.o input.o unwind_prot.o pathexp.o sig.o test.o version.o alias.o array.o arrayfunc.o assoc.o braces.o bracecomp.o bashhist.o bashline.o list.o stringlib.o locale.o findcmd.o redir.o pcomplete.o pcomplib.o syntax.o xmalloc.o -lbuiltins -lglob -lsh -lreadline -lhistory -ltermcap -ltilde lib/intl/libintl.a -liconv -liconv -ldl It is just the .o files are bitcode. But bash is an executable. And there are not .bc files accompanying it. $ file bash bash: Mach-O 64-bit executable x86_64 Using the original commands on Linux, I got the following associated files. ./configure CC=clang RANLIB=llvm-ranlib CFLAGS=-flto LDFLAGS=-Wl\,-plugin-opt=save-temps\ -flto\ -fuse-ld=gold make $ ls -gltr bash.*.bc -rw-r--r-- 1 staff 4769876 Jan 25 10:16 bash.0.0.preopt.bc -rw-r--r-- 1 staff 4769876 Jan 25 10:16 bash.0.2.internalize.bc -rw-r--r-- 1 staff 4739688 Jan 25 10:16 bash.0.4.opt.bc -rw-r--r-- 1 staff 4739688 Jan 25 10:16 bash.0.5.precodegen.bc -- Regards, Peng