root/Makefile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
CC=gcc
CPP=g++
CFLAGS:="-std=c++0x" "-Wall" "-g" -fpic
C_HEADERS:=$(wildcard src/*.h)
C_FILES:=$(wildcard src/*.cpp)

TEST_H:=$(wildcard demo/*.h)
TEST_C:=$(wildcard demo/*.cpp)

OBJECTS:=$(addsuffix .o, $(basename $(C_FILES)))
TEST_OBJECTS:=$(addsuffix .o, $(basename $(TEST_C)))
INSTALL_PREFIX=/usr/local
VERSION=0.1
ARCHIVE_FORMAT=tar.gz
MKDIR=mkdir -p
RM=rm -r

all: libnoslib.so test

#### lib

libnoslib.so: prepareDir $(OBJECTS)
	$(CPP) -shared $(CFLAGS) $(OBJECTS) $(LIBS) $(LIB_DIRS) $(INCLUDE_DIRS) -o ./bin/$@

$(OBJECTS): %.o: %.cpp

#### test

check: test
	./bin/test

test: libnoslib.so $(TEST_OBJECTS)
	$(CPP) $(CFLAGS) $(TEST_OBJECTS) ./bin/libnoslib.so $(INCLUDE_DIRS) -o ./bin/$@

$(TEST_OBJECTS): %.o: %.cpp

#### install
install: prepare_install
	install ./bin/libnoslib.so $(INSTALL_PREFIX)/lib/libnoslib.so
	install ./N0Slib-install.h $(INSTALL_PREFIX)/include/N0Slib.h
	install $(C_HEADERS) $(INSTALL_PREFIX)/include/noslib/

prepare_install: patch_include_file
	$(MKDIR) $(INSTALL_PREFIX)/include/noslib
	$(MKDIR) $(INSTALL_PREFIX)/lib

patch_include_file:
	cp N0Slib.h N0Slib-install.h 
	sed -i s/src/noslib/ N0Slib-install.h 

#### release

archive:
	git archive --format=$(ARCHIVE_FORMAT) --prefix=noslib/ HEAD > noslib-$(VERSION).$(ARCHIVE_FORMAT)

publish_release: archive
	scp noslib-$(VERSION).$(ARCHIVE_FORMAT) "nee@pictor.uberspace.de:/var/www/virtual/nee/hidamari.blue/git/noslib/release/"

#### util

%.o: %.cpp
	$(CC) $(DEFINES) $(CFLAGS) -c $< -o $@

prepareDir:
	$(MKDIR) ./bin/

clean:
	$(RM) $(OBJECTS) ./bin/ N0Slib-install.h