aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpx4dev <px4@purgatory.org>2013-01-12 12:10:06 -0800
committerpx4dev <px4@purgatory.org>2013-01-12 12:10:06 -0800
commit5b07efdbeb8b6c6e7c3e5a86a2e55a2de345b579 (patch)
tree87165e029de68b3726710717cdce55814c3d1613
parent6d301710d97c3812a5f1e6c26415461b2fe92f58 (diff)
downloadpx4-firmware-5b07efdbeb8b6c6e7c3e5a86a2e55a2de345b579.tar.gz
px4-firmware-5b07efdbeb8b6c6e7c3e5a86a2e55a2de345b579.tar.bz2
px4-firmware-5b07efdbeb8b6c6e7c3e5a86a2e55a2de345b579.zip
Automatically generate depdencies for source files as they are compiled, rather than using the NuttX dependency generator tool.
-rw-r--r--.gitignore1
-rw-r--r--apps/mathlib/Makefile10
-rw-r--r--apps/mk/app.mk26
3 files changed, 23 insertions, 14 deletions
diff --git a/.gitignore b/.gitignore
index d0d84b985..f072889f0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,7 @@ apps/namedapp/namedapp_proto.h
Make.dep
*.o
*.a
+*.d
*~
*.dSYM
Images/*.bin
diff --git a/apps/mathlib/Makefile b/apps/mathlib/Makefile
index e5fab1e35..e3aa9275e 100644
--- a/apps/mathlib/Makefile
+++ b/apps/mathlib/Makefile
@@ -31,8 +31,6 @@
#
############################################################################
-include $(TOPDIR)/.config
-
#
# Math library
#
@@ -52,7 +50,13 @@ CXXHDRS = math/test/test.hpp \
math/Dcm.hpp \
math/Matrix.hpp
-# XXX this really should be a CONFIG_* test
+#
+# In order to include .config we first have to save off the
+# current makefile name, since app.mk needs it.
+#
+APP_MAKEFILE := $(lastword $(MAKEFILE_LIST))
+-include $(TOPDIR)/.config
+
ifeq ($(CONFIG_ARCH_CORTEXM4)$(CONFIG_ARCH_FPU),yy)
INCLUDES += math/arm
CXXSRCS += math/arm/Vector.cpp \
diff --git a/apps/mk/app.mk b/apps/mk/app.mk
index 1d8b0e44c..c5a025394 100644
--- a/apps/mk/app.mk
+++ b/apps/mk/app.mk
@@ -81,7 +81,9 @@
# Work out who included us so we can report decent errors
#
THIS_MAKEFILE := $(lastword $(MAKEFILE_LIST))
-PARENT_MAKEFILE := $(lastword $(filter-out $(THIS_MAKEFILE),$(MAKEFILE_LIST)))
+ifeq ($(APP_MAKEFILE),)
+APP_MAKEFILE := $(lastword $(filter-out $(THIS_MAKEFILE),$(MAKEFILE_LIST)))
+endif
############################################################################
# Get configuration
@@ -93,7 +95,7 @@ include $(APPDIR)/Make.defs
############################################################################
# Sanity-check the information we've been given and set any defaults
#
-SRCDIR ?= $(dir $(PARENT_MAKEFILE))
+SRCDIR ?= $(dir $(APP_MAKEFILE))
PRIORITY ?= SCHED_PRIORITY_DEFAULT
STACKSIZE ?= CONFIG_PTHREAD_STACK_DEFAULT
@@ -112,14 +114,14 @@ endif
# there has to be a source file
ifeq ($(ASRCS)$(CSRCS)$(CXXSRCS),)
-$(error $(realpath $(PARENT_MAKEFILE)): at least one of ASRCS, CSRCS or CXXSRCS must be set)
+$(error $(realpath $(APP_MAKEFILE)): at least one of ASRCS, CSRCS or CXXSRCS must be set)
endif
# check that C++ is configured if we have C++ source files and we are building
ifneq ($(CXXSRCS),)
ifneq ($(CONFIG_HAVE_CXX),y)
ifeq ($(MAKECMDGOALS),build)
-$(error $(realpath $(PARENT_MAKEFILE)): cannot set CXXSRCS if CONFIG_HAVE_CXX not set in configuration)
+$(error $(realpath $(APP_MAKEFILE)): cannot set CXXSRCS if CONFIG_HAVE_CXX not set in configuration)
endif
endif
endif
@@ -153,6 +155,11 @@ COBJS = $(patsubst %.c,%.o,$(CSRCS))
CXXOBJS = $(patsubst %.cpp,%.o,$(CXXSRCS))
OBJS = $(AOBJS) $(COBJS) $(CXXOBJS)
+# Automatic depdendency generation
+DEPS = $(OBJS:$(OBJEXT)=.d)
+CFLAGS += -MD
+CXXFLAGS += -MD
+
# The prelinked object that we are ultimately going to build
ifneq ($(APPNAME),)
PRELINKOBJ = $(APPNAME).pre.o
@@ -186,11 +193,8 @@ all: .built
#
# Source dependencies
#
-depend: .depend
-.depend: $(MAKEFILE_LIST) $(SRCS)
- @$(MKDEP) --dep-path . $(CC) -- $(CFLAGS) -- $(CSRCS) $(CHDRS) >Make.dep
- @$(MKDEP) --dep-path . $(CXX) -- $(CXXFLAGS) -- $(CXXSRCS) $(CXXHDRS) >>Make.dep
- @touch $@
+depend:
+ @exit 0
ifneq ($(APPNAME),)
#
@@ -223,10 +227,10 @@ $(CXXOBJS): %.o : %.cpp
# Tidying up
#
clean:
- @rm -f $(OBJS) $(PRELINKOBJ) Make.dep .built
+ @rm -f $(OBJS) $(DEPS) $(PRELINKOBJ) .built
$(call CLEAN)
distclean: clean
@rm -f Make.dep .depend
--include Make.dep
+-include $(DEPS)