Opened 7 years ago
Closed 7 years ago
#1429 closed defect (fixed)
"make check" requires installing first
Reported by: | sjamaan | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 5.0 |
Component: | compiler | Version: | 4.12.0 |
Keywords: | csc, static linking | Cc: | |
Estimated difficulty: | medium |
Description
When running "make check" while not having CHICKEN installed yet will, it will fail because we're referring directly to libchicken.a
under the installation prefix's library dir.
This is wrong in two ways: firstly, this means you can't run make check
without installing first. Secondly, this means we're not testing the runtime of the CHICKEN being built, but that the CHICKEN which was previously installed to the same prefix.
$ rm -rf /home/sjamaan/chickens/chicken-5 $ make check PREFIX=/home/sjamaan/chickens/chicken-5 CHICKEN=/home/sjamaan/chickens/chicken-5-dbg/bin/chicken PLATFORM=linux ... lots of stuff elided... ======================================== linking tests ... /home/sjamaan/src/chicken-core/tests/../chicken 'reverser/tags/1.0/reverser.scm' -output-file 'reverser.c' -verbose -include-path /home/sjamaan/src/chicken-core/tests/.. -unit reverser -emit-all-import-libraries generating import library `reverser.import.scm' for module `reverser' ... 'gcc' 'reverser.c' -o 'reverser.o' -c -fno-strict-aliasing -fwrapv -DHAVE_CHICKEN_CONFIG_H -DC_ENABLE_PTABLES -Os -fomit-frame-pointer -I/home/sjamaan/src/chicken-core/tests/.. -I/home/sjamaan/chickens/chicken-5/include/chicken rm reverser.c /home/sjamaan/src/chicken-core/tests/../chicken 'linking-tests.scm' -output-file 'a.c' -verbose -include-path /home/sjamaan/src/chicken-core/tests/.. -uses reverser 'gcc' 'a.c' -o 'a.o' -c -fno-strict-aliasing -fwrapv -DHAVE_CHICKEN_CONFIG_H -DC_ENABLE_PTABLES -Os -fomit-frame-pointer -I/home/sjamaan/src/chicken-core/tests/.. -I/home/sjamaan/chickens/chicken-5/include/chicken rm a.c 'gcc' 'reverser.o' 'a.o' -o 'a.out' -L/home/sjamaan/src/chicken-core/tests/.. -L/home/sjamaan/chickens/chicken-5/lib -Wl,-R'/home/sjamaan/chickens/chicken-5/lib' -lchicken -lm -ldl rm a.o /home/sjamaan/src/chicken-core/tests/../chicken 'linking-tests.scm' -output-file 'a.c' -static -verbose -include-path /home/sjamaan/src/chicken-core/tests/.. -uses reverser -emit-link-file a.link 'gcc' 'a.c' -o 'a.o' -c -fno-strict-aliasing -fwrapv -DHAVE_CHICKEN_CONFIG_H -DC_ENABLE_PTABLES -Os -fomit-frame-pointer -I/home/sjamaan/src/chicken-core/tests/.. -I/home/sjamaan/chickens/chicken-5/include/chicken rm a.c 'gcc' 'reverser.o' 'a.o' -o 'a.out' -L/home/sjamaan/src/chicken-core/tests/.. -L/home/sjamaan/chickens/chicken-5/lib -Wl,-R'/home/sjamaan/chickens/chicken-5/lib' /home/sjamaan/chickens/chicken-5/lib/libchicken.a -lm -ldl gcc: error: /home/sjamaan/chickens/chicken-5/lib/libchicken.a: No such file or directory Error: shell command terminated with non-zero exit status 256: 'gcc' 'reverser.o' 'a.o' -o 'a.out' -L/home/sjamaan/src/chicken-core/tests/.. -L/home/sjamaan/chickens/chicken-5/lib -Wl,-R'/home/sjamaan/chickens/chicken-5/lib' /home/sjamaan/chickens/chicken-5/lib/libchicken.a -lm -ldl rules.make:993: recipe for target 'check' failed make: *** [check] Error 1
I'm not sure what the correct fix would be for this. Currently the location really is hardcoded. I think we should be able to somehow rely on gcc
's library path when linking, but simply saying -lchicken makes it dynamically linked.
Maybe we need an extra environment variable through which we can tell it where to find libraries, which when not specified falls back to the built-in PREFIX libdir?
Fixed with 7d892447.