summaryrefslogtreecommitdiff
path: root/misc/buildroot/Makefile
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2008-01-02 18:47:08 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2008-01-02 18:47:08 +0000
commit47501014fa60b2b20e33477338d91b7d55c69f9b (patch)
treefb03c539cfb37fb88a3d3e13c889ca5af04aedf7 /misc/buildroot/Makefile
parentc8e227bc6172abc126ce186cab85d800456bf40b (diff)
downloadnuttx-47501014fa60b2b20e33477338d91b7d55c69f9b.tar.gz
nuttx-47501014fa60b2b20e33477338d91b7d55c69f9b.tar.bz2
nuttx-47501014fa60b2b20e33477338d91b7d55c69f9b.zip
buildroot snapshot
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@480 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'misc/buildroot/Makefile')
-rw-r--r--misc/buildroot/Makefile223
1 files changed, 223 insertions, 0 deletions
diff --git a/misc/buildroot/Makefile b/misc/buildroot/Makefile
new file mode 100644
index 000000000..23709a165
--- /dev/null
+++ b/misc/buildroot/Makefile
@@ -0,0 +1,223 @@
+# Makefile for buildroot2
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+
+#--------------------------------------------------------------
+# Just run 'make menuconfig', configure stuff, then run 'make'.
+# You shouldn't need to mess with anything beyond this point...
+#--------------------------------------------------------------
+TOPDIR=./
+CONFIG_CONFIG_IN = Config.in
+CONFIG_DEFCONFIG = .defconfig
+CONFIG = package/config
+
+noconfig_targets := menuconfig config oldconfig randconfig \
+ defconfig allyesconfig allnoconfig release tags \
+
+# $(shell find . -name *_defconfig |sed 's/.*\///')
+
+# Pull in the user's configuration file
+ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
+-include $(TOPDIR).config
+endif
+
+ifeq ($(strip $(BR2_HAVE_DOT_CONFIG)),y)
+
+# cc-option
+# Usage: cflags-y += $(call cc-option, -march=winchip-c6, -march=i586)
+# sets -march=winchip-c6 if supported else falls back to -march=i586
+# without checking the latter.
+cc-option = $(shell if $(TARGET_CC) $(TARGET_CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
+ > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
+
+#############################################################
+#
+# The list of stuff to build for the target toolchain
+# along with the packages to build for the target.
+#
+##############################################################
+TARGETS:=uclibc-configured binutils gcc uclibc-target-utils
+include toolchain/Makefile.in
+include package/Makefile.in
+
+#############################################################
+#
+# You should probably leave this stuff alone unless you know
+# what you are doing.
+#
+#############################################################
+
+
+
+all: world
+
+# In this section, we need .config
+include .config.cmd
+include package/gnuconfig/gnuconfig.mk
+include toolchain/*/*.mk
+
+TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
+TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS))
+TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
+
+world: $(DL_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) nuttx_setup $(NUTTX_HDRS) $(TARGETS)
+dirs: $(DL_DIR) $(BUILD_DIR) $(STAGING_DIR) $(NUTTX_DIR)
+
+.PHONY: all world dirs clean dirclean distclean source $(TARGETS) \
+ $(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) \
+ $(DL_DIR) $(BUILD_DIR) $(TOOL_BUILD_DIR) $(STAGING_DIR)
+
+#############################################################
+#
+# staging and target directories do NOT list these as
+# dependencies anywhere else
+#
+#############################################################
+$(DL_DIR) $(BUILD_DIR) $(TOOL_BUILD_DIR):
+ @mkdir -p $@
+
+$(STAGING_DIR):
+ @mkdir -p $(STAGING_DIR)/lib
+ @mkdir -p $(STAGING_DIR)/include
+ @mkdir -p $(STAGING_DIR)/usr
+ @mkdir -p $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)
+ @ln -snf ../lib $(STAGING_DIR)/usr/lib
+ @ln -snf ../lib $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib
+
+$(TARGET_DIR):
+ mkdir -p $(TARGET_DIR)
+ if [ -d "$(TARGET_SKELETON)" ] ; then \
+ cp -fa $(TARGET_SKELETON)/* $(TARGET_DIR)/; \
+ fi;
+ touch $(STAGING_DIR)/.fakeroot.00000
+ -find $(TARGET_DIR) -type d -name CVS | xargs rm -rf
+ -find $(TARGET_DIR) -type d -name .svn | xargs rm -rf
+
+$(NUTTX_DIR):
+ @if [ ! -d $(NUTTX_DIR) ]; then \
+ echo "NuttX directory $(NUTTX_DIR) does not exist" ; \
+ exit 1 ; \
+ fi
+ @if [ ! -e $(NUTTX_DIR)/.config ]; then \
+ echo "NuttX directory $(NUTTX_DIR) has not been configured" ; \
+ exit 1 ; \
+ fi
+
+$(NUTTX_DIR)/include/arch: $(NUTTX_DIR)
+ $(MAKE) -C $(NUTTX_DIR) include/arch
+
+$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include : $(STAGING_DIR) $(NUTTX_DIR)/include/arch
+ @mkdir -p $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include || \
+ { echo "Failed to create $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include" ; exit 1 ; }
+ @cp -a $(NUTTX_DIR)/include/* $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include/. || \
+ { echo "Failed to copy Nuttx header files" ; exit 1 ; }
+
+nuttx_setup: $(TOOL_BUILD_DIR)/nuttx_dev/usr/include
+
+source: $(TARGETS_SOURCE)
+
+#############################################################
+#
+# Cleanup and misc junk
+#
+#############################################################
+clean: $(TARGETS_CLEAN)
+ rm -rf $(STAGING_DIR) $(TARGET_DIR)
+
+dirclean: $(TARGETS_DIRCLEAN)
+ rm -rf $(STAGING_DIR) $(TARGET_DIR)
+
+distclean:
+ifeq ($(DL_DIR),$(BASE_DIR)/dl)
+ rm -rf $(DL_DIR)
+endif
+ rm -rf $(BUILD_DIR)
+ $(MAKE) -C $(CONFIG) clean
+
+sourceball:
+ rm -rf $(BUILD_DIR)
+ set -e; \
+ cd ..; \
+ rm -f buildroot.tar.bz2; \
+ tar -cvf buildroot.tar buildroot; \
+ bzip2 -9 buildroot.tar; \
+
+
+else # ifeq ($(strip $(BR2_HAVE_DOT_CONFIG)),y)
+
+all: menuconfig
+
+# configuration
+# ---------------------------------------------------------------------------
+
+$(CONFIG)/conf:
+ $(MAKE) -C $(CONFIG) conf
+ -@if [ ! -f .config ] ; then \
+ cp $(CONFIG_DEFCONFIG) .config; \
+ fi
+$(CONFIG)/mconf:
+ $(MAKE) -C $(CONFIG) ncurses conf mconf
+ -@if [ ! -f .config ] ; then \
+ cp $(CONFIG_DEFCONFIG) .config; \
+ fi
+
+menuconfig: $(CONFIG)/mconf
+ @$(CONFIG)/mconf $(CONFIG_CONFIG_IN)
+
+config: $(CONFIG)/conf
+ @$(CONFIG)/conf $(CONFIG_CONFIG_IN)
+
+oldconfig: $(CONFIG)/conf
+ @$(CONFIG)/conf -o $(CONFIG_CONFIG_IN)
+
+randconfig: $(CONFIG)/conf
+ @$(CONFIG)/conf -r $(CONFIG_CONFIG_IN)
+
+allyesconfig: $(CONFIG)/conf
+ #@$(CONFIG)/conf -y $(CONFIG_CONFIG_IN)
+ #sed -i -e "s/^CONFIG_DEBUG.*/# CONFIG_DEBUG is not set/" .config
+ @$(CONFIG)/conf -o $(CONFIG_CONFIG_IN)
+
+allnoconfig: $(CONFIG)/conf
+ @$(CONFIG)/conf -n $(CONFIG_CONFIG_IN)
+
+defconfig: $(CONFIG)/conf
+ @$(CONFIG)/conf -d $(CONFIG_CONFIG_IN)
+
+%_defconfig: $(CONFIG)/conf
+ cp $(shell find . -name $@) .config
+ @$(CONFIG)/conf -o $(CONFIG_CONFIG_IN)
+
+#############################################################
+#
+# Cleanup and misc junk
+#
+#############################################################
+clean:
+ rm -f .config .config.old .config.cmd .tmpconfig.h
+ - $(MAKE) -C $(CONFIG) clean
+
+distclean: clean
+ rm -rf sources/*
+
+endif # ifeq ($(strip $(BR2_HAVE_DOT_CONFIG)),y)
+
+.PHONY: dummy subdirs release distclean clean config oldconfig \
+ menuconfig tags check test depend defconfig
+
+