mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
When building libutil in parallel, it can happen that the archive
file is created twice:
$ cd libutil
$ make -j
...
CC libutil/util_rec_example.o
AR libutil/libutil.a
AR libutil/libutil.a
LINK libutil/util_base_example
This can lead to the following build error:
$ make -j OPT_FLAGS="-pipe"
..//libutil/libutil.a(util_path.o): In function `sys_mount_point':
util_path.c:56: undefined reference to `util_proc_mnt_get_entry'
util_path.c:60: undefined reference to `util_proc_mnt_free_entry'
collect2: error: ld returned 1 exit status
../common.mak:232: recipe for target 'util_path_example' failed
The problem is that the following rule from common.mak is triggered in
the libutil directory:
$(rootdir)/libutil/libutil.a: $(rootdir)/libutil
$(MAKE) -C $(rootdir)/libutil/ libutil.a
.PHONY: $(rootdir)/libutil
To prevent this rule, use the local "libutil.a" as dependency for the
example binaries.
Reported-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
49 lines
1.1 KiB
Makefile
49 lines
1.1 KiB
Makefile
include ../common.mak
|
|
|
|
lib = libutil.a
|
|
|
|
examples = util_base_example \
|
|
util_panic_example \
|
|
util_path_example \
|
|
util_scandir_example \
|
|
util_file_example \
|
|
util_libc_example \
|
|
util_opt_example \
|
|
util_opt_command_example \
|
|
util_prg_example \
|
|
util_rec_example
|
|
|
|
all: $(lib) $(examples)
|
|
|
|
objects = util_base.o \
|
|
util_path.o \
|
|
util_scandir.o \
|
|
util_file.o \
|
|
util_libc.o \
|
|
util_list.o \
|
|
util_opt.o \
|
|
util_panic.o \
|
|
util_part.o \
|
|
util_prg.o \
|
|
util_proc.o \
|
|
util_rec.o
|
|
|
|
util_base_example: util_base_example.o $(lib)
|
|
util_panic_example: util_panic_example.o $(lib)
|
|
util_path_example: util_path_example.o $(lib)
|
|
util_scandir_example: util_scandir_example.o $(lib)
|
|
util_file_example: util_file_example.o $(lib)
|
|
util_libc_example: util_libc_example.o $(lib)
|
|
util_opt_example: util_opt_example.o $(lib)
|
|
util_opt_command_example: util_opt_command_example.o $(lib)
|
|
util_panic_example: util_panic_example.o $(lib)
|
|
util_prg_example: util_prg_example.o $(lib)
|
|
util_rec_example: util_rec_example.o $(lib)
|
|
|
|
$(lib): $(objects)
|
|
|
|
install: all
|
|
|
|
clean:
|
|
rm -f *.o $(lib) $(examples)
|