1#
2# Makefile for OpenZWave MingW32 build
3# Maarten Damen
4
5.SUFFIXES:	.d .cpp .o .a
6.PHONY:	default clean
7
8CC     := $(CROSS_COMPILE)gcc
9CXX    := $(CROSS_COMPILE)g++
10LD     := $(CROSS_COMPILE)g++
11AR     := $(CROSS_COMPILE)ar rc
12RANLIB := $(CROSS_COMPILE)ranlib
13
14DEBUG_CFLAGS    := -Wall -Wno-format -g -DDEBUG -DLOG_STDERR -DMINGW
15RELEASE_CFLAGS  := -Wall -Wno-unknown-pragmas -Wno-format -O3 -DMINGW
16
17DEBUG_LDFLAGS	:= -g
18
19# Change for DEBUG or RELEASE
20CFLAGS	:= -c $(DEBUG_CFLAGS)
21LDFLAGS	:= $(DEBUG_LDFLAGS)
22
23LIBDIR	:= ../../../lib/windows-mingw32
24
25INCLUDES	:= -I ../../../src -I ../../../src/command_classes/ -I ../../../src/aes/ -I ../../../src/value_classes/ \
26	-I ../../../src/platform/ -I ../../../src/platform/windows -I ../../../tinyxml/ -I ../../../hidapi/hidapi/
27SOURCES		:= ../../../src ../../../src/command_classes ../../../src/aes ../../../tinyxml ../../../hidapi/windows \
28	../../../src/value_classes ../../../src/platform ../../../src/platform/windows
29
30VPATH = ../../../src:../../../src/command_classes:../../../src/aes:../../../tinyxml:../../../hidapi/windows:\
31	../../../src/value_classes:../../../src/platform:../../../src/platform/windows
32
33%.d : %.cpp
34	@set -e; rm -f $@; \
35	$(CXX) -MM $(INCLUDES) $< > $@.$$$$; \
36	sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
37	rm -f $@.$$$$
38
39tinyxml := $(notdir $(wildcard ../../../tinyxml/*.cpp))
40hidapi := $(notdir $(wildcard ../../../hidapi/linux/hid.c)) # we do not want the libusb version
41cclasses := $(notdir $(wildcard ../../../src/command_classes/*.cpp))
42vclasses := $(notdir $(wildcard ../../../src/value_classes/*.cpp))
43aes := $(notdir $(wildcard ../../../src/aes/*.c))
44pform := $(notdir $(wildcard ../../../src/platform/*.cpp)) \
45	$(notdir $(wildcard ../../../src/platform/windows/*.cpp))
46indep := $(notdir $(wildcard ../../../src/*.cpp))
47
48%.o : %.cpp
49	$(CXX) $(CFLAGS) $(INCLUDES) -o $@ $<
50
51%.o : %.c
52	$(CC) $(CFLAGS) $(INCLUDES) -o $@ $<
53
54default:	$(LIBDIR)/openzwave.a
55
56clean:
57	rm -f *.d *.o
58
59-include $(tinyxml:.cpp=.d)
60-include $(hidapi:.c=.d)
61-include $(cclasses:.cpp=.d)
62-include $(vclasses:.cpp=.d)
63-include $(aes:.c=.d)
64-include $(pform:.cpp=.d)
65-include $(indep:.cpp=.d)
66
67vers.c:
68	echo 'char ozw_vers[] = "OpenZWave version 1.0.'`svnversion ../..`'";' > vers.c
69
70vers.o:	vers.c
71
72$(LIBDIR)/openzwave.a:	$(patsubst %.cpp,%.o,$(tinyxml)) \
73			$(patsubst %.c,%.o,$(hidapi)) \
74			$(patsubst %.cpp,%.o,$(cclasses)) \
75			$(patsubst %.cpp,%.o,$(vclasses)) \
76			$(patsubst %.c,%.o,$(aes)) \
77			$(patsubst %.cpp,%.o,$(pform)) \
78			$(patsubst %.cpp,%.o,$(indep)) vers.o
79	$(AR) $@ $?
80