blink1-tool/blink1-mini-tool/Makefile

163 lines
4.7 KiB
Makefile

#
# blink1-mini-tool -- minimal blink(1) controller
# for embedded Linuxes or other minimal systems
#
# Arduino Yun
# - Download Linino SDK from: http://download.linino.org/linino-utils/
# - Unzip tarball
# - Set WRT_SDK_HOME environment variable to resulting directory
# - Do "cd ${WRT_SDK_HOME} && make" to setup SDK
# - Do "make OS=yun" to build
#
# OpenWrt / DD-WRT
# - Download & unzip the OpenWrt SDK for Linux
# - Set WRT_SDK_HOME environment variable to resulting directory
# - Do "cd ${WRT_SDK_HOME} && make" to setup SDK
# - Do "make OS=wrt" to build
# - note: "apt-get install lib32stdc++6 lib32z1" if using 32bit SDK on 64bit system
# - note: if your OpenWrt device is ar71xx-based, try 'make OS=yun' build instead
#
# BeagleBone / BeagleBoard (on Angstrom Linux)
# - Install USB dev support
# "opkg install libusb-0.1-4-dev"
# - May need to symlink libusb
# "cd /lib; ln -s libusb-0.1.so.4 libusb.so"
#
# Mac OS X
# - Install Xcode and command-line dev tools
# - Install MacPorts
# - sudo port install libusb-legacy
#
# Linux (Ubuntu)
# - apt-get install gcc-avr avr-libc avrdude java librxtx-java
#
#
#
#
TARGET=blink1-mini-tool
#CC=gcc
# try to do some autodetecting
UNAME := $(shell uname -s)
# assume linux
ifeq "$(OS)" ""
OS = linux
endif
ifeq "$(UNAME)" "Darwin"
OS = macosx
endif
#GIT_TAG="$(strip $(shell git tag | tail -1))"
################# Mac OSx ###################################################
ifeq "$(OS)" "macosx"
OPT_HOME := /opt/local/bin
USBFLAGS = `$(OPT_HOME)/libusb-config --cflags`
USBLIBS = `$(OPT_HOME)/libusb-config --libs`
#USBFLAGS = `$(OPT_HOME)/libusb-legacy-config --cflags`
# get just the path to the static lib
#USBLIBS = `$(OPT_HOME)/libusb-legacy-config --libs | cut -d' ' -f1 | cut -c3- `/libusb-legacy.a
# get everything else in --libs
#USBLIBS += `$(OPT_HOME)/libusb-legacy-config --libs | cut -d' ' -f 3- `
endif
################# Linux ###################################################
ifeq "$(OS)" "linux"
USBFLAGS = `libusb-config --cflags`
USBLIBS = `libusb-config --libs`
endif
################# Yun OpenWrt #########################################
ifeq "$(OS)" "yun"
WRT_SDK_HOME := $(HOME)/openwrt/OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.6-linaro_uClibc-0.9.33.2
WRT_TOOLCHAIN_ROOT=$(strip $(shell ls -d $(WRT_SDK_HOME)/staging_dir/toolchain-* | tail -1))
WRT_TARGET_ROOT=$(strip $(shell ls -d $(WRT_SDK_HOME)/staging_dir/target-* | tail -1))
STAGING_DIR=$(WRT_SDK_HOME)/staging_dir
CC = $(WRT_TOOLCHAIN_ROOT)/bin/mips-openwrt-linux-gcc
LD = $(WRT_TOOLCHAIN_ROOT)/bin/mips-openwrt-linux-ld
USBFLAGS= -I$(WRT_TARGET_ROOT)/usr/include
USBLIBS = -L$(WRT_TARGET_ROOT)/usr/lib -lusb -lusb-1.0
export STAGING_DIR=$$(STAGING_DIR)
endif
################# OpenWrt / DD-WRT #########################################
ifeq "$(OS)" "wrt"
WRT_SDK_HOME := $(HOME)/openwrt/OpenWrt-SDK-brcm47xx-for-linux-i486-gcc-4.6-linaro_uClibc-0.9.33.2
WRT_TOOLCHAIN_ROOT=$(strip $(shell ls -d $(WRT_SDK_HOME)/staging_dir/toolchain-* | tail -1))
WRT_TARGET_ROOT=$(strip $(shell ls -d $(WRT_SDK_HOME)/staging_dir/target-* | tail -1))
STAGING_DIR=$(WRT_SDK_HOME)/staging_dir
# STAGING_DIR used by mipsel-openwrt-linux-gcc
CC = $(WRT_TOOLCHAIN_ROOT)/bin/mip*-openwrt-linux-gcc
LD = $(WRT_TOOLCHAIN_ROOT)/bin/mip*-openwrt-linux-ld
USBFLAGS= -I$(WRT_TARGET_ROOT)/usr/include
USBLIBS = -L$(WRT_TARGET_ROOT)/usr/lib -lusb -lusb-1.0
export STAGING_DIR=$$(STAGING_DIR)
#WRT_SDK_HOME := $(HOME)/OpenWrt-SDK-Linux-i686-1
#CC = $(WRT_SDK_HOME)/staging_dir_mipsel/bin/mipsel-linux-gcc
#LD = $(WRT_SDK_HOME)/staging_dir_mipsel/bin/mipsel-linux-ld
#USBFLAGS = "-I$(WRT_SDK_HOME)/staging_dir_mipsel/usr/include"
#USBLIBS = "$(WRT_SDK_HOME)/staging_dir_mipsel/usr/lib/libusb.a"
LDFLAGS += -static
endif
##################### Common ###############################################
CFLAGS= $(OS_CFLAGS) -O -Wall -std=gnu99 $(USBFLAGS)
LIBS= $(OS_LIBS) $(USBLIBS) $(LDFLAGS)
OBJ= $(TARGET).o hiddata.o
PROGRAM= $(TARGET)$(EXE_SUFFIX)
all: msg $(PROGRAM)
msg:
@echo "building for OS=$(OS)"
# symbolic targets:
help:
@echo "This Makefile works on multiple archs. Use one of the following:"
@echo "make OS=linux ... build for Linux"
@echo "make OS=macosx ... build for Mac OS X "
@echo "make clean ..... to delete objects and hex file"
@echo
test:
@echo "WRT_TOOLCHAIN_ROOT=$(WRT_TOOLCHAIN_ROOT)"
@echo "WRT_TARGET_ROOT=$(WRT_TARGET_ROOT)"
$(PROGRAM): $(OBJ)
$(CC) -o $(PROGRAM) $(OBJ) $(LIBS)
strip: $(PROGRAM)
strip $(PROGRAM)
clean:
rm -f $(OBJ) $(PROGRAM)
.c.o:
$(CC) $(ARCH_COMPILE) $(CFLAGS) -c $*.c -o $*.o
# shows shared lib usage on Mac OS X
otool:
otool -L $(TARGET)
foo:
@echo "OS=$(OS), USBFLAGS=$(USBFLAGS)"