61 lines
1.7 KiB
Makefile
61 lines
1.7 KiB
Makefile
|
# Name: Makefile
|
||
|
# Project: v-usb
|
||
|
# Author: Christian Starkjohann
|
||
|
# Creation Date: 2012-12-05
|
||
|
# Tabsize: 4
|
||
|
# Copyright: (c) 2012 by OBJECTIVE DEVELOPMENT Software GmbH
|
||
|
# License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
|
||
|
|
||
|
# This is the main Makefile. The two primary targets are "all", to build
|
||
|
# everything which can be built (except tests), and "clean" to remove all
|
||
|
# dependent files. In a repository clone, derived source files are generated
|
||
|
# and deleted as well.
|
||
|
#
|
||
|
# We distinguish between repository clones and source packages by the existence
|
||
|
# of make-files.sh scripts in various subdirectories.
|
||
|
|
||
|
|
||
|
all:
|
||
|
if [ ! -f examples/hid-mouse/firmware/Makefile ]; then \
|
||
|
$(MAKE) files; \
|
||
|
fi
|
||
|
if [ -n "$(uname -s | grep -i mingw)" ]; then \
|
||
|
$(MAKE) windows; \
|
||
|
else \
|
||
|
$(MAKE) unix; \
|
||
|
fi
|
||
|
|
||
|
clean:
|
||
|
$(MAKE) unixclean
|
||
|
if cross-make.sh --help >/dev/null 2>&1; then \
|
||
|
$(MAKE) windowsclean; \
|
||
|
fi
|
||
|
$(MAKE) filesremove
|
||
|
|
||
|
|
||
|
unix unixclean:
|
||
|
target=$$(echo $@ | sed -e 's/unix//g'); \
|
||
|
find . -mindepth 3 -name Makefile -print | while read i; do \
|
||
|
dir=$$(dirname $$i); \
|
||
|
dirname=$$(basename $$dir); \
|
||
|
pushd $$dir >/dev/null; \
|
||
|
if [ "$$dirname" = firmware -a -z "$$target" ]; then \
|
||
|
if ! $(MAKE) hex; then break; fi; \
|
||
|
else \
|
||
|
if ! $(MAKE) $$target; then break; fi;\
|
||
|
fi; \
|
||
|
popd >/dev/null; \
|
||
|
done
|
||
|
|
||
|
|
||
|
windows windowsclean:
|
||
|
target=$$(echo $@ | sed -e 's/windows//g'); \
|
||
|
find . -mindepth 3 -name Makefile.windows -execdir cross-make.sh $$target \; ; \
|
||
|
if [ -z "$$target" ]; then target=hex; fi; \
|
||
|
find . -mindepth 2 -name firmware -exec sh -c "cd '{}'; $(MAKE) $$target" \;
|
||
|
|
||
|
files filesremove:
|
||
|
target=$$(echo $@ | sed -e 's/files//g'); \
|
||
|
find . -mindepth 2 -name make-files.sh -execdir ./make-files.sh $$target \;
|
||
|
|