123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- #-------------------------------------------------------------------------------
- # Copyright (C) 2012 Freescale Semiconductor, Inc. All Rights Reserved.
- #
- # THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESS OR IMPLIED
- # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
- # SHALL FREESCALE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
- # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
- # OF SUCH DAMAGE.
- #-------------------------------------------------------------------------------
- #
- # Top-level Makefile.
- #
- # This file is responsible for building all libraries and applications.
- #
- # Targets:
- # - all
- # - sdk
- # - board
- # - sdk_unit_test
- # - power_modes_test
- # - obds
- # - gpu_demo
- # - smp_primes
- # - stream
- # - usb_hid_mouse
- # - httpd
- # - ping
- # - clean
- # - clean_sdk
- # - clean_board
- # - clean_sdk_unit_test
- # - clean_power_modes_test
- # - clean_obds
- # - clean_gpu_demo
- # - clean_smp_primes
- # - clean_stream
- # - clean_usb_hid_mouse
- # - clean_httpd
- # - clean_ping
- #
- # The clean targets work with any combination of configuration variables. For
- # example, clean_sdk with TARGET set will clean libsdk for only that TARGET, while
- # clean_sdk without TARGET set will clean libsdk in all targets.
- #
- include mk/common.mk
- # Turn off parallel jobs for this makefile only. Child makefiles will still use the
- # specified number of jobs. This isn't strictly necessary, and actually slows the build
- # a little bit, but greatly improves the readability of the log output.
- .NOTPARALLEL:
- # Determine if the target is either the MX6DQ or MX6SDL.
- ifeq "$(TARGET)" "mx6dq"
- is_dq_or_sdl = 1
- else ifeq "$(TARGET)" "mx6sdl"
- is_dq_or_sdl = 1
- endif
- # Library subdirectories that the apps depend upon. Handled automatically by targets.mk.
- SUBDIRS = \
- sdk \
- lwip \
- $(BOARD_ROOT)
- # List of all applications to build. Applications must reside in the apps directory.
- ALL_APPS = \
- filesystem \
- httpd \
- obds \
- ping \
- power_modes_test \
- sdk_unit_test \
- stream \
- usb_hid_mouse
- # Apps that are only built for MX6DQ and MX6SDL.
- ifdef is_dq_or_sdl
- ALL_APPS += \
- caam_blob_gen \
- gpu_demo \
- smp_primes
- endif
- # Default target.
- .PHONY: all
- all: $(sort $(ALL_APPS)) ;
- # App targets. All apps depend on the listed subdirectories.
- .PHONY: ALL_APPS
- $(ALL_APPS): $(SUBDIRS)
- @$(call printmessage,build,Building, $@ ,gray,[$(TARGET) $(BOARD) $(BOARD_REVISION)],,\n)
- @$(MAKE) $(silent_make) -r -C apps/$@
- # Print message before recursive into subdirs.
- $(SUBDIRS)::
- @$(call printmessage,build,Building, $(@F) ,gray,[$(TARGET) $(BOARD) $(BOARD_REVISION)],,\n)
- # Target with a simple name for building the board package.
- .PHONY: board
- board: $(BOARD_ROOT)
- # Target to clean everything.
- .PHONY: clean
- clean:
- @echo "Deleting output directory..."
- @rm -rf output
- @echo "done."
- # Target to clean just the sdk library and objects.
- .PHONY: clean_sdk
- clean_sdk:
- ifdef TARGET
- rm -rf $(LIBSDK) $(OUTPUT_ROOT)/lib/obj/sdk
- else
- rm -rf $(SDK_ROOT)/output/*/lib/libsdk.a $(SDK_ROOT)/output/*/lib/obj/sdk
- endif
- # Target to clean the board library and objects.
- .PHONY: clean_board
- clean_board:
- ifdef TARGET
- ifdef BOARD
- rm -rf $(LIBBOARD) $(OUTPUT_ROOT)/lib/obj/board_$(BOARD_WITH_REV)
- else
- rm -rf $(OUTPUT_ROOT)/lib/libboard* $(OUTPUT_ROOT)/lib/obj/board_*
- endif
- else
- rm -rf $(SDK_ROOT)/output/*/lib/libboard* $(SDK_ROOT)/output/*/lib/obj/board_*
- endif
- # Set up targets to clean each of the applications. For an app "foo", the target to clean
- # just that app is "clean_foo". If no TARGET is passed to make, the app is cleaned
- # for all targets.
- ALL_APP_CLEAN_TARGETS := $(addprefix clean_,$(ALL_APPS))
- .PHONY: $(ALL_APP_CLEAN_TARGETS)
- $(ALL_APP_CLEAN_TARGETS):
- ifdef TARGET
- ifdef BOARD
- ifdef BOARD_REVISION
- ifdef BOARD_REVISION_IS_DEFAULT
- # Clean all revs of the board.
- rm -rf $(OUTPUT_ROOT)/$(patsubst clean_%,%,$@)/$(BOARD)_rev_*
- else
- # Specific rev specified so clean just that one rev.
- rm -rf $(OUTPUT_ROOT)/$(patsubst clean_%,%,$@)/$(BOARD_WITH_REV)
- endif
- else
- # Clean all revs of the board.
- rm -rf $(OUTPUT_ROOT)/$(patsubst clean_%,%,$@)/$(BOARD)_rev_*
- endif
- else
- # Clean all boards of the app.
- rm -rf $(OUTPUT_ROOT)/$(patsubst clean_%,%,$@)
- endif
- else
- # Clean all boards and targets of the app.
- rm -rf $(SDK_ROOT)/output/*/$(patsubst clean_%,%,$@)
- endif
- include mk/targets.mk
|