2007年7月4日 星期三

Blueprints involving Ubuntu Mobile and Embedded developers

https://blueprints.launchpad.net/~ubuntu-mobile

makefile example


ROOTDIR = ..
include $(ROOTDIR)/config/linux.mak

MODULE = XMLTool
MODULE_LIB = xmltool

ifdef BUILD_SO
ifeq ($(BUILD_SO), true)
LIBNAME = lib$(MODULE_LIB).so
CFLAGS += -fPIC
LFLAGS = -shared -Wl,-soname,$(LIBNAME)
else
LIBNAME = lib$(MODULE_LIB).a
endif
endif

DEPENDENT_MODULES = $(ROOTDIR)/Locker

CFLAGS += -I$(ROOTDIR)/$(MODULE)/include
CFLAGS += `xml2-config --cflags`
CFLAGS += -I$(ROOTDIR)/Locker/include
LDFLAGS += -L$(ROOTDIR)/$(MODULE)/lib -L$(ROOTDIR)/$(MODULE)/release/
LDFLAGS += -L$(DEPENDENT_MODULES)/release/
LDFLAGS += -lstdc++ -lpthread -luuid -llocker
LDFLAGS += `xml2-config --libs`


OBJS += XML.o

MAIN_OBJ =
EXE =

OBJS_SRC = $(addprefix src/,$(OBJS))
MAIN_OBJ_SRC = $(addprefix src/,$(MAIN_OBJ))
LIBNAME_RELEASE = $(addprefix release/,$(LIBNAME))
EXE_RELEASE = $(addprefix release/,$(EXE))

TEST_OBJ = test.o
TEST_EXE = test/test
TEST_OBJ_TST = $(addprefix test/,$(TEST_OBJ))

all: dependent_module $(LIBNAME_RELEASE) $(EXE_RELEASE) $(TEST_EXE)
@echo "Please export LD_LIBRARY_PATH..."
@echo "e.g. export LD_LIBRARY_PATH=`pwd`/release"


dependent_module:
@for modules in $(DEPENDENT_MODULES); do \
make -C $$modules; \
done;

$(LIBNAME_RELEASE): $(OBJS_SRC)
@if [ "$$BUILD_SO" == "true" ]; then \
$(LINK) $(LFLAGS) -o $(LIBNAME_RELEASE) $^ ;\
else \
$(LD) -r -o $(LIBNAME_RELEASE) $^ ;\
fi

$(EXE_RELEASE): $(LIBNAME_RELEASE) $(MAIN_OBJ_SRC)
$(C++) -o $@ $(MAIN_OBJ_SRC) $(LDFLAGS) -l$(MODULE_LIB)

$(TEST_EXE): $(LIBNAME_RELEASE) $(TEST_OBJ_TST)
$(CC) -o $@ $(TEST_OBJ_TST) $(LDFLAGS) -l$(MODULE_LIB)

.cpp.o:
$(C++) -c $< -o $(patsubst %.cpp,%.o,$<) $(CFLAGS)

.c.o:
$(CC) -c $< -o $(patsubst %.cpp,%.o,$<) $(CFLAGS)

clean:
$(RM) $(LIBNAME_RELEASE) $(EXE_RELEASE) $(OBJS_SRC) $(MAIN_OBJ_SRC)
$(RM) $(TEST_OBJ_TST) $(TEST_EXE) test/output*

makefile, go to each modules

MODULES += UMDToday

all:
@for modules in $(MODULES); do \
make -C $$modules; \
cp -rf ./$$modules/release/* ./release; \
done;

clean:
@for modules in $(MODULES); do \
make clean -C $$modules; \
done;

set environment variable to the command

[will@localhost config]$ cat sendmail.sh
#!/bin/sh

LIST="a b c d e"

for list in $LIST; do\

cat /home/will/log.txt | LD_LIBRARY_PATH=/usr/local/lib /home/will/smtpsend $list > /dev/null 2>&1; \
done;

find with exec

find tmp/ -name ".svn" -exec rm -rf {} \;


find tmp/ -name "a" -exec ls {} \;

my indent coding style

[will@localhost config]$ cat indent.sh
# Will.20070509: linux coding style
dos2unix $*
indent -nbad -bap -nbc -bbo -br -bli2 -bls -ncdb -nce -cp1 -cs -di2 -ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -pcs -psl -nsc -nsob -l100 $*
[will@localhost config]$

網誌存檔

關於我自己