## 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
