Merge pull request #78 from ffontaine/master
[olsrd.git] / lib / pud / Makefile
1 # The olsr.org Optimized Link-State Routing daemon (olsrd)
2 #
3 # (c) by the OLSR project
4 #
5 # See our Git repository to find out who worked on this file
6 # and thus is a copyright holder on it.
7 #
8 # All rights reserved.
9 #
10 # Redistribution and use in source and binary forms, with or without
11 # modification, are permitted provided that the following conditions
12 # are met:
13 #
14 # * Redistributions of source code must retain the above copyright
15 #   notice, this list of conditions and the following disclaimer.
16 # * Redistributions in binary form must reproduce the above copyright
17 #   notice, this list of conditions and the following disclaimer in
18 #   the documentation and/or other materials provided with the
19 #   distribution.
20 # * Neither the name of olsr.org, olsrd nor the names of its
21 #   contributors may be used to endorse or promote products derived
22 #   from this software without specific prior written permission.
23 #
24 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 # POSSIBILITY OF SUCH DAMAGE.
36 #
37 # Visit http://www.olsr.org for more information.
38 #
39 # If you find this software useful feel free to make a donation
40 # to the project. For more information see the website or contact
41 # the copyright holders.
42 #
43
44 NMEALIB_PATH = nmealib
45 LIBRARY_PATH = wireformat
46 JAVA_PATH = wireformat-java
47 include $(LIBRARY_PATH)/Makefile.inc
48 NMEALIB_NAME := nmea
49 LIBRARY_NAME := $(PROJECT)
50
51
52 include Makefile.inc
53
54 TOPDIR = ../..
55 include $(TOPDIR)/Makefile.inc
56
57
58 PUD_NMEALIB_STATICALLY_LINKED ?=
59 CFLAGS += -D_GNU_SOURCE
60
61
62 RESOURCESDIR = ./resources
63 NMEALIB_LIB = $(NMEALIB_PATH)/lib
64 LIBRARY_LIB = $(LIBRARY_PATH)/lib
65 NMEALIB_LIB_STATIC = $(NMEALIB_LIB)/lib$(NMEALIB_NAME).a
66
67 ifeq ($(PUD_NMEALIB_STATICALLY_LINKED),)
68 LIBS += -L $(NMEALIB_LIB) -L $(LIBRARY_LIB) -l$(NMEALIB_NAME) -lm -l$(LIBRARY_NAME) -lgps
69 else
70 # libnmea is statically linked
71 LIBS += -L $(LIBRARY_LIB) -lm -l$(LIBRARY_NAME) -lgps
72 endif
73
74
75 SUPPORTED = 0
76 ifeq ($(OS),linux)
77 SUPPORTED = 1
78 endif
79 ifeq ($(OS),android)
80 SUPPORTED = 1
81 endif
82
83
84 ifeq ($(SUPPORTED),0)
85
86 .PHONY: all default_target install clean
87
88 all: default_target
89
90 default_target install clean:
91         @echo "*** $(PLUGIN_NAME) plugin not supported on $(OS), sorry!"
92
93 else
94
95 CFLAGS += -DPLUGIN_VER=\"$(PLUGIN_VER)\"
96
97 .PHONY: all default_target install uninstall clean doc doc-clean nmealib library java java-instal java-uninstall
98
99 all: default_target
100
101 ifeq ($(OS),android)
102 # On Android Google forgot to include regex engine code for Froyo version (but also there was
103 # no support in older versions for it) so we have here this missing code.
104 # http://groups.google.com/group/android-ndk/browse_thread/thread/5ea6f0650f0e3fc
105 OBJS +=     $(REGEX_LIB)
106 CFLAGS += -D__POSIX_VISIBLE
107 endif
108
109 default_target: nmealib library $(PLUGIN_FULLNAME)
110
111 $(PLUGIN_FULLNAME): $(OBJS) version-script.txt nmealib
112 ifeq ($(PUD_NMEALIB_STATICALLY_LINKED),)
113 ifeq ($(VERBOSE),0)
114         @echo "[LD] $@ (nmealib dynamically linked)"
115 endif
116         $(MAKECMDPREFIX)$(CC) $(LDFLAGS) -o $(PLUGIN_FULLNAME) $(OBJS) $(LIBS)
117 else
118 ifeq ($(VERBOSE),0)
119         @echo "[LD] $@ (nmealib statically linked)"
120 endif
121         $(MAKECMDPREFIX)$(CC) $(LDFLAGS) -o $(PLUGIN_FULLNAME) $(OBJS) $(NMEALIB_LIB_STATIC) $(LIBS)
122 endif
123
124 install: all
125         $(MAKECMDPREFIX)$(MAKE) -C "$(NMEALIB_PATH)" DESTDIR="$(DESTDIR)" install
126         $(MAKECMDPREFIX)$(MAKE) -C "$(LIBRARY_PATH)" DESTDIR="$(DESTDIR)" install
127         $(INSTALL_LIB)
128         mkdir -p "$(ETCDIR)"
129         cp "$(RESOURCESDIR)/olsrd.pud.position.conf" "$(ETCDIR)"
130         $(STRIP) "$(LIBDIR)/$(PLUGIN_FULLNAME)"
131 ifneq ($(DOCDIR_OLSRD),)
132         mkdir -p "$(DOCDIR_OLSRD)"
133         cp -t "$(DOCDIR_OLSRD)" "README_PUD" "nmealib/README_NMEALIB" \
134           "wireformat-java/README_PUD_WIREFORMAT_JAVA" "doc/pud.odt"
135 endif
136
137 uninstall:
138 ifneq ($(DOCDIR_OLSRD),)
139         rm -f "$(DOCDIR_OLSRD)/README_PUD" "$(DOCDIR_OLSRD)/README_NMEALIB" \
140           "$(DOCDIR_OLSRD)/README_PUD_WIREFORMAT_JAVA" "$(DOCDIR_OLSRD)/pud.odt"
141         rmdir -p --ignore-fail-on-non-empty "$(DOCDIR_OLSRD)"
142 endif
143         $(MAKECMDPREFIX)$(MAKE) -C "$(NMEALIB_PATH)" DESTDIR="$(DESTDIR)" uninstall
144         $(MAKECMDPREFIX)$(MAKE) -C "$(LIBRARY_PATH)" DESTDIR="$(DESTDIR)" uninstall
145         rm -f "$(LIBDIR)/lib$(PLUGIN_NAME).so" "$(LIBDIR)/$(PLUGIN_NAME)" "$(ETCDIR)/olsrd.pud.position.conf"
146         $(UNINSTALL_LIB)
147         rmdir -v -p --ignore-fail-on-non-empty "$(LIBDIR)" "$(ETCDIR)"
148
149 clean:
150 ifeq ($(VERBOSE),0)
151         @echo "[$@]"
152 endif
153         $(MAKECMDPREFIX)rm -f $(OBJS) $(SRCS:%.c=%.d) "$(PLUGIN_FULLNAME)"
154         $(MAKECMDPREFIX)$(MAKE) -C doc clean
155         $(MAKECMDPREFIX)$(MAKE) -C "$(NMEALIB_PATH)" clean
156         $(MAKECMDPREFIX)$(MAKE) -C "$(LIBRARY_PATH)" clean
157         $(MAKECMDPREFIX)$(MAKE) -C "$(JAVA_PATH)" clean
158
159 doc:
160         $(MAKECMDPREFIX)$(MAKE) -C doc all
161         $(MAKECMDPREFIX)$(MAKE) -C "$(NMEALIB_PATH)" doc
162         $(MAKECMDPREFIX)$(MAKE) -C "$(LIBRARY_PATH)" doc
163         $(MAKECMDPREFIX)$(MAKE) -C "$(JAVA_PATH)" doc
164
165 doc-clean:
166         $(MAKECMDPREFIX)$(MAKE) -C doc clean
167         $(MAKECMDPREFIX)$(MAKE) -C "$(NMEALIB_PATH)" doc clean
168         $(MAKECMDPREFIX)$(MAKE) -C "$(LIBRARY_PATH)" doc clean
169         $(MAKECMDPREFIX)$(MAKE) -C "$(JAVA_PATH)" doc clean
170
171 nmealib:
172         $(MAKECMDPREFIX)$(MAKE) -C "$(NMEALIB_PATH)" all
173
174 library:
175         $(MAKECMDPREFIX)$(MAKE) -C "$(LIBRARY_PATH)" all
176
177 java:   library
178         $(MAKECMDPREFIX)$(MAKE) -C "$(JAVA_PATH)" all
179
180 java-install: java
181         $(MAKECMDPREFIX)$(MAKE) -C "$(JAVA_PATH)" DESTDIR="$(DESTDIR)" install
182
183 java-uninstall:
184         $(MAKECMDPREFIX)$(MAKE) -C "$(JAVA_PATH)" DESTDIR="$(DESTDIR)" uninstall
185
186 endif