aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Config.in7
-rw-r--r--include/package-debug.mk26
-rw-r--r--include/package.mk3
-rw-r--r--package/base-files/Makefile1
-rw-r--r--rules.mk1
5 files changed, 37 insertions, 1 deletions
diff --git a/Config.in b/Config.in
index a952f462f8..a5b3364612 100644
--- a/Config.in
+++ b/Config.in
@@ -106,6 +106,13 @@ config DEBUG
help
Disables stripping and adds -g3 to the CFLAGS
+config DEBUG_DIR
+ bool "Install debugging binaries into a staging directory"
+ default n
+ help
+ This will install all compiled package binaries into build_dir/target-*/debug-*/,
+ useful for cross-debugging via gdb/gdbserver
+
config NO_STRIP
bool "Install unstripped binary on the target (useful for native compiling/debugging)"
default n
diff --git a/include/package-debug.mk b/include/package-debug.mk
new file mode 100644
index 0000000000..2a85bfebb8
--- /dev/null
+++ b/include/package-debug.mk
@@ -0,0 +1,26 @@
+#
+# Copyright (C) 2006,2007 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+ifeq ($(DUMP),)
+ define BuildTarget/debug
+
+ DEBUG_STAMP_$(1) := $(DEBUG_DIR)/stamp/$(1)
+
+ ifdef Package/$(1)/install
+ ifneq ($(CONFIG_PACKAGE_$(1))$(SDK)$(DEVELOPER),)
+ compile: $$(DEBUG_STAMP_$(1))
+ endif
+ endif
+
+ $$(DEBUG_STAMP_$(1)): $(PKG_BUILD_DIR)/.built
+ mkdir -p $(DEBUG_DIR)/stamp
+ $(call Package/$(1)/install,$(DEBUG_DIR))
+ touch $$(DEBUG_STAMP_$(1))
+
+
+ endef
+endif
diff --git a/include/package.mk b/include/package.mk
index 4e31258305..04625d9b94 100644
--- a/include/package.mk
+++ b/include/package.mk
@@ -27,6 +27,7 @@ include $(INCLUDE_DIR)/quilt.mk
include $(INCLUDE_DIR)/package-defaults.mk
include $(INCLUDE_DIR)/package-dumpinfo.mk
include $(INCLUDE_DIR)/package-ipkg.mk
+include $(INCLUDE_DIR)/package-debug.mk
include $(INCLUDE_DIR)/package-bin.mk
include $(INCLUDE_DIR)/autotools.mk
@@ -146,7 +147,7 @@ endif
$(Dumpinfo), \
$(foreach target, \
$(if $(Package/$(1)/targets),$(Package/$(1)/targets), \
- $(if $(PKG_TARGETS),$(PKG_TARGETS), ipkg ) \
+ $(if $(PKG_TARGETS),$(PKG_TARGETS), ipkg $(if $(CONFIG_DEBUG_DIR),debug)) \
), $(BuildTarget/$(target)) \
) \
)
diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 52e70e5ce6..581aa9365c 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -160,6 +160,7 @@ define Package/base-files$(TARGET)/install
$(SED) 's/$$$$/:13848:0:99999:7:::/' $(1)/etc/shadow \
)
$(SED) 's,$$$$R,$(REVISION),g' $(1)/etc/banner
+ mkdir -p $(1)/CONTROL
mkdir -p $(1)/dev
mkdir -p $(1)/etc/crontabs
mkdir -p $(1)/jffs
diff --git a/rules.mk b/rules.mk
index bb46f16b2d..5e44756214 100644
--- a/rules.mk
+++ b/rules.mk
@@ -64,6 +64,7 @@ PACKAGE_DIR:=$(BIN_DIR)/packages/$(ARCH)
STAMP_DIR:=$(BUILD_DIR)/stamp
STAMP_DIR_HOST=$(BUILD_DIR_HOST)/stamp
TARGET_DIR:=$(BUILD_DIR)/root-$(BOARD)
+DEBUG_DIR:=$(BUILD_DIR)/debug-$(BOARD)
IPKG_STATE_DIR:=$(TARGET_DIR)/usr/lib/ipkg
TARGET_PATH:=$(TOOLCHAIN_DIR)/usr/bin:$(STAGING_DIR_HOST)/bin:$(STAGING_DIR)/host/bin:$(PATH)