Build: Out-of-tree build system with separate build directory
- Build in build/ directory instead of source tree - Main binary (utun) copied to project root - Tests run from build/tests/ with config files copied there - Test output redirected to build/tests/logs/*.log files - Console shows only [PASS]/[FAIL]/[SKIP] status - Incremental build works correctly - make check runs all tests with summary Changes: - New root Makefile as wrapper for out-of-tree build - Updated Makefile.am files for lib, src, tests - Added tinycrypt-objects target for test dependencies - Tests no longer clutter project root
This commit is contained in:
1 parent
57b2568ad6
commit
15001487af
5 files changed
+304
-110
No files matched your search
+60
-22
@@ -61,32 +61,70 @@ else
|
||||
utun_LDADD = $(utun_CORE_LDADD)
|
||||
endif
|
||||
|
||||
# Object directory for shadow build artifacts
|
||||
OBJDIR = $(top_builddir)/.objs/src
|
||||
TINYCRYPT_OBJDIR = $(top_builddir)/.objs/tinycrypt
|
||||
# TinyCrypt object files (for tests that need them)
|
||||
TINYCRYPT_SRCDIR = $(top_srcdir)/tinycrypt/lib/source
|
||||
|
||||
# After building, move object files to shadow directory
|
||||
all-local: shadow-objects
|
||||
TINYCRYPT_OBJS = \
|
||||
utun-aes_encrypt.o \
|
||||
utun-aes_decrypt.o \
|
||||
utun-ccm_mode.o \
|
||||
utun-cmac_mode.o \
|
||||
utun-ctr_mode.o \
|
||||
utun-ecc.o \
|
||||
utun-ecc_dh.o \
|
||||
utun-ecc_dsa.o \
|
||||
utun-sha256.o \
|
||||
utun-ecc_platform_specific.o \
|
||||
utun-utils.o
|
||||
|
||||
shadow-objects: utun$(EXEEXT)
|
||||
@$(MKDIR_P) $(OBJDIR) $(TINYCRYPT_OBJDIR)
|
||||
@for obj in $(utun_OBJECTS); do \
|
||||
if test -f "$$obj"; then \
|
||||
case "$$obj" in \
|
||||
*lib/source/*.o) \
|
||||
base=$$(basename $$obj | sed 's/^utun-//'); \
|
||||
mv -f "$$obj" $(TINYCRYPT_OBJDIR)/"$$base" 2>/dev/null || true; \
|
||||
;; \
|
||||
*) \
|
||||
mv -f "$$obj" $(OBJDIR)/ 2>/dev/null || true; \
|
||||
;; \
|
||||
esac; \
|
||||
fi; \
|
||||
done
|
||||
# Rules to build TinyCrypt objects (for tests)
|
||||
TINYCRYPT_CFLAGS = -I$(top_srcdir)/tinycrypt/lib/include -I$(top_srcdir)/tinycrypt/lib/source
|
||||
|
||||
# Clean shadow directories along with regular clean
|
||||
utun-aes_encrypt.o: $(TINYCRYPT_SRCDIR)/aes_encrypt.c
|
||||
$(AM_V_CC)$(COMPILE) $(TINYCRYPT_CFLAGS) -c -o $@ $<
|
||||
|
||||
utun-aes_decrypt.o: $(TINYCRYPT_SRCDIR)/aes_decrypt.c
|
||||
$(AM_V_CC)$(COMPILE) $(TINYCRYPT_CFLAGS) -c -o $@ $<
|
||||
|
||||
utun-ccm_mode.o: $(TINYCRYPT_SRCDIR)/ccm_mode.c
|
||||
$(AM_V_CC)$(COMPILE) $(TINYCRYPT_CFLAGS) -c -o $@ $<
|
||||
|
||||
utun-cmac_mode.o: $(TINYCRYPT_SRCDIR)/cmac_mode.c
|
||||
$(AM_V_CC)$(COMPILE) $(TINYCRYPT_CFLAGS) -c -o $@ $<
|
||||
|
||||
utun-ctr_mode.o: $(TINYCRYPT_SRCDIR)/ctr_mode.c
|
||||
$(AM_V_CC)$(COMPILE) $(TINYCRYPT_CFLAGS) -c -o $@ $<
|
||||
|
||||
utun-ecc.o: $(TINYCRYPT_SRCDIR)/ecc.c
|
||||
$(AM_V_CC)$(COMPILE) $(TINYCRYPT_CFLAGS) -c -o $@ $<
|
||||
|
||||
utun-ecc_dh.o: $(TINYCRYPT_SRCDIR)/ecc_dh.c
|
||||
$(AM_V_CC)$(COMPILE) $(TINYCRYPT_CFLAGS) -c -o $@ $<
|
||||
|
||||
utun-ecc_dsa.o: $(TINYCRYPT_SRCDIR)/ecc_dsa.c
|
||||
$(AM_V_CC)$(COMPILE) $(TINYCRYPT_CFLAGS) -c -o $@ $<
|
||||
|
||||
utun-sha256.o: $(TINYCRYPT_SRCDIR)/sha256.c
|
||||
$(AM_V_CC)$(COMPILE) $(TINYCRYPT_CFLAGS) -c -o $@ $<
|
||||
|
||||
utun-ecc_platform_specific.o: $(TINYCRYPT_SRCDIR)/ecc_platform_specific.c
|
||||
$(AM_V_CC)$(COMPILE) $(TINYCRYPT_CFLAGS) -c -o $@ $<
|
||||
|
||||
utun-utils.o: $(TINYCRYPT_SRCDIR)/utils.c
|
||||
$(AM_V_CC)$(COMPILE) $(TINYCRYPT_CFLAGS) -c -o $@ $<
|
||||
|
||||
# Build TinyCrypt objects for tests (convenience target)
|
||||
tinycrypt-objects: $(TINYCRYPT_OBJS)
|
||||
|
||||
# Copy binary to project root after building
|
||||
all-local: copy-to-root
|
||||
|
||||
copy-to-root: utun$(EXEEXT)
|
||||
@cp -f utun$(EXEEXT) $(top_srcdir)/
|
||||
|
||||
# Clean
|
||||
clean-local:
|
||||
-rm -rf $(OBJDIR) $(TINYCRYPT_OBJDIR)
|
||||
@true
|
||||
|
||||
# Install directories
|
||||
install-exec-hook:
|
||||
|
||||
Reference in new issue
Block a user