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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
## This test checks that -l and -L options work correctly.
# RUN: yaml2obj %S/Inputs/input1.yaml -o %t-input1.o
# RUN: yaml2obj %S/Inputs/input2.yaml -o %t-input2.o
## Check that the library is recognised when it ends with '.o':
# RUN: llvm-libtool-darwin -static -o %t.lib -l%basename_t.tmp-input1.o -l%basename_t.tmp-input2.o -L%T
# RUN: llvm-ar t %t.lib | \
# RUN: FileCheck %s --check-prefix=CHECK-NAMES --implicit-check-not={{.}} -DPREFIX=%basename_t.tmp
# RUN: llvm-nm --print-armap %t.lib | \
# RUN: FileCheck %s --check-prefix=CHECK-SYMBOLS -DPREFIX=%basename_t.tmp --match-full-lines
# CHECK-NAMES: [[PREFIX]]-input1.o
# CHECK-NAMES-NEXT: [[PREFIX]]-input2.o
# CHECK-SYMBOLS: Archive map
# CHECK-SYMBOLS-NEXT: _symbol1 in [[PREFIX]]-input1.o
# CHECK-SYMBOLS-NEXT: _symbol2 in [[PREFIX]]-input2.o
# CHECK-SYMBOLS-EMPTY:
## Check that the library is recognised when prepended with 'lib' and appended with '.a':
# RUN: rm -rf %t/dirname && mkdir -p %t/dirname
# RUN: llvm-ar cr %t/dirname/libinput2.a %t-input2.o
# RUN: llvm-libtool-darwin -static -o %t.lib -linput2 -L%t/dirname
# RUN: llvm-ar t %t.lib | \
# RUN: FileCheck %s --check-prefix=SINGLE-NAMES --implicit-check-not={{.}} -DPREFIX=%basename_t.tmp
# RUN: llvm-nm --print-armap %t.lib | \
# RUN: FileCheck %s --check-prefix=SINGLE-SYMBOLS -DPREFIX=%basename_t.tmp --match-full-lines
# SINGLE-NAMES: [[PREFIX]]-input2.o
# SINGLE-SYMBOLS: Archive map
# SINGLE-SYMBOLS-NEXT: _symbol2 in [[PREFIX]]-input2.o
# SINGLE-SYMBOLS-EMPTY:
## -l and -L option specified multiple times:
# RUN: rm -rf %t/otherDirname && mkdir -p %t/otherDirname
# RUN: llvm-ar cr %t/otherDirname/libinput1.a %t-input1.o
# RUN: llvm-libtool-darwin -static -o %t.lib -linput2 -linput1 -L%t/dirname -L%t/otherDirname
# RUN: llvm-ar t %t.lib | \
# RUN: FileCheck %s --check-prefix=OTHER-NAMES --implicit-check-not={{.}} -DPREFIX=%basename_t.tmp
# RUN: llvm-nm --print-armap %t.lib | \
# RUN: FileCheck %s --check-prefix=OTHER-SYMBOLS -DPREFIX=%basename_t.tmp --match-full-lines
# OTHER-NAMES: [[PREFIX]]-input2.o
# OTHER-NAMES-NEXT: [[PREFIX]]-input1.o
# OTHER-SYMBOLS: Archive map
# OTHER-SYMBOLS-NEXT: _symbol2 in [[PREFIX]]-input2.o
# OTHER-SYMBOLS-NEXT: _symbol1 in [[PREFIX]]-input1.o
# OTHER-SYMBOLS-EMPTY:
## Check that if multiple directories specified with -L have the same named file
## in them, the file from the first directory is selected.
# RUN: llvm-ar cr %t/otherDirname/libinput2.a %t-input1.o
# RUN: llvm-libtool-darwin -static -o %t.lib -linput2 -L%t/dirname -L%t/otherDirname
# RUN: llvm-ar t %t.lib | \
# RUN: FileCheck %s --check-prefix=SINGLE-NAMES --implicit-check-not={{.}} -DPREFIX=%basename_t.tmp
# RUN: llvm-nm --print-armap %t.lib | \
# RUN: FileCheck %s --check-prefix=SINGLE-SYMBOLS -DPREFIX=%basename_t.tmp --match-full-lines
## -l option combined with an input file:
# RUN: llvm-libtool-darwin -static -o %t.lib %t-input1.o -linput2 -L%t/dirname
# RUN: llvm-ar t %t.lib | \
# RUN: FileCheck %s --check-prefix=CHECK-NAMES --implicit-check-not={{.}} -DPREFIX=%basename_t.tmp
# RUN: llvm-nm --print-armap %t.lib | \
# RUN: FileCheck %s --check-prefix=CHECK-SYMBOLS -DPREFIX=%basename_t.tmp --match-full-lines
## Specify same -l option twice:
## cctools' libtool raises a warning in this case.
## The warning is not yet implemented for llvm-libtool-darwin.
# RUN: llvm-libtool-darwin -static -o %t.lib -l%basename_t.tmp-input2.o -l%basename_t.tmp-input2.o -L%T
# RUN: llvm-ar t %t.lib | \
# RUN: FileCheck %s --check-prefix=DOUBLE-NAMES --implicit-check-not={{.}} -DPREFIX=%basename_t.tmp
# RUN: llvm-nm --print-armap %t.lib | \
# RUN: FileCheck %s --check-prefix=DOUBLE-SYMBOLS -DPREFIX=%basename_t.tmp --match-full-lines
# DOUBLE-NAMES: [[PREFIX]]-input2.o
# DOUBLE-NAMES-NEXT: [[PREFIX]]-input2.o
# DOUBLE-SYMBOLS: Archive map
# DOUBLE-SYMBOLS-NEXT: _symbol2 in [[PREFIX]]-input2.o
# DOUBLE-SYMBOLS-NEXT: _symbol2 in [[PREFIX]]-input2.o
# DOUBLE-SYMBOLS-EMPTY:
## Check that an error is thrown when the input library cannot be found:
# RUN: not llvm-libtool-darwin -static -o %t.lib -lfile-will-not-exist.o 2>&1 | \
# RUN: FileCheck %s --check-prefix=NOT-FOUND -DFILE=file-will-not-exist.o
# NOT-FOUND: error: cannot locate file '[[FILE]]'
## Check that an error is thrown when the input library cannot be found
## (for a file prepended with 'lib' and appended with '.a'):
# RUN: not llvm-libtool-darwin -static -o %t.lib -lfile-will-not-exist 2>&1 | \
# RUN: FileCheck %s --check-prefix=NOT-FOUND -DFILE=libfile-will-not-exist.a
## Check that an error is thrown when the input library cannot be found
## (since 'lib' and '.a' are added):
# RUN: llvm-ar cr %t/dirname/file %t-input1.o
# RUN: not llvm-libtool-darwin -static -o %t.lib -lfile -L%t/dirname 2>&1 | \
# RUN: FileCheck %s --check-prefix=NOT-FOUND -DFILE=libfile.a
# RUN: llvm-ar cr %t/dirname/libfile.a %t-input1.o
# RUN: not llvm-libtool-darwin -static -o %t.lib -llibfile.a -L%t/dirname 2>&1 | \
# RUN: FileCheck %s --check-prefix=NOT-FOUND -DFILE=liblibfile.a.a
## Check that an error is thrown when the input library is not valid:
# RUN: touch %t/dirname/not-valid.o
# RUN: not llvm-libtool-darwin -static -o %t.lib -lnot-valid.o -L%t/dirname 2>&1 | \
# RUN: FileCheck %s --check-prefix=NOT-VALID -DFILE=not-valid.o
# NOT-VALID: error: '[[FILE]]': The file was not recognized as a valid object file
## Check that an error is thrown when the input library is not valid:
## (for a file prepended with 'lib' and appended with '.a'):
# RUN: touch %t/dirname/libnot-valid.a
# RUN: not llvm-libtool-darwin -static -o %t.lib -lnot-valid -L%t/dirname 2>&1 | \
# RUN: FileCheck %s --check-prefix=NOT-VALID -DFILE=libnot-valid.a
## Check that 'lib' and '.a' are not added to a file ending in '.o':
# RUN: llvm-ar cr %t/dirname/libfoo.o.a %t-input1.o
# RUN: not llvm-libtool-darwin -static -o %t.lib -lfoo.o -L%t/dirname 2>&1 | \
# RUN: FileCheck %s --check-prefix=NOT-FOUND -DFILE=foo.o
## Check that 'lib' and '.a' are added to a file ending in any other extension
## beside '.o' (e.g. '.ext'):
# RUN: llvm-ar cr %t/dirname/libbar.ext.a %t-input2.o
# RUN: llvm-libtool-darwin -static -o %t.lib -lbar.ext -L%t/dirname
# RUN: llvm-ar t %t.lib | \
# RUN: FileCheck %s --check-prefix=SINGLE-NAMES --implicit-check-not={{.}} -DPREFIX=%basename_t.tmp
# RUN: llvm-nm --print-armap %t.lib | \
# RUN: FileCheck %s --check-prefix=SINGLE-SYMBOLS -DPREFIX=%basename_t.tmp --match-full-lines
|