Fix make (un)install target
[diouzhtu.git] / makefile
blob5452c66be37cf968c578da79c8ff57cd8c1224ec
1 ##############################################################################
2 ## Diouzhtu ##
3 ## ##
4 ## Copyright (C) 2007 ##
5 ## Olivier Ramonat ##
6 ## ##
7 ## This library is free software; you can redistribute it and/or modify ##
8 ## it under the terms of the GNU General Public License as published by ##
9 ## the Free Software Foundation; either version 2 of the License, or (at ##
10 ## your option) any later version. ##
11 ## ##
12 ## This library is distributed in the hope that it will be useful, but ##
13 ## WITHOUT ANY WARRANTY; without even the implied warranty of ##
14 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ##
15 ## General Public License for more details. ##
16 ## ##
17 ## You should have received a copy of the GNU General Public License ##
18 ## along with this library; if not, write to the Free Software Foundation, ##
19 ## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ##
20 ##############################################################################
22 # Options
24 include mk.config
26 GENERAL_OPTIONS = CP="$(CP)" MKDIR="$(MKDIR)" RM="$(RM)" \
27 GNATMAKE="$(GNATMAKE)" GNATCLEAN="$(GNATCLEAN)" GNATCHECK="$(GNATCHECK)" \
28 EXEEXT="$(EXEEXT)" LIB_KIND="$(LIB_KIND)" DIFF="$(DIFF)"
30 OPTIONS = MODE="$(MODE)" $(GENERAL_OPTIONS)
32 ifeq ($(OS),Windows_NT)
33 SOEXT=.dll
34 EXEEXT=.exe
35 LN=cp -f
36 else
37 SOEXT=.so
38 EXEEXT=
39 LN=ln -sf
40 endif
42 # Modules support
44 MODULES = diouzhtu diouzhtu2html gwiad_wiki_service
46 MODULES_BUILD = ${MODULES:%=%_build}
48 MODULES_SETUP = ${MODULES:%=%_setup}
50 MODULES_CLEAN = ${MODULES:%=%_clean}
52 MODULES_CHECK = ${MODULES:%=%_check}
54 ifeq ("$(INSTALL)", "..")
55 $(error "Wrong install path : INSTALL='$(INSTALL)'")
56 else
57 ifeq ("$(INSTALL)", "")
58 $(error "Wrong install path : empty INSTALL var")
59 endif
60 endif
62 BUILD_DIR=".build/$(shell echo $(MODE) | tr [[:upper:]] [[:lower:]])"
64 # Targets
66 all: $(MODULES_BUILD)
68 setup: $(MODULES_SETUP)
70 clean: $(MODULES_CLEAN)
72 check :$(MODULES_CHECK)
74 # Install directories
76 I_BIN = $(INSTALL)/bin
77 I_INC = $(INSTALL)/include/diouzhtu
78 I_INC_W = $(INSTALL)/include/wiki_interface
79 I_LIB = $(INSTALL)/lib/
80 I_LIB_D = $(INSTALL)/lib/diouzhtu
81 I_LIB_W = $(INSTALL)/lib/wiki_interface
82 I_GPR = $(INSTALL)/lib/gnat
83 I_DLIB = $(INSTALL)/share/diouzhtu/dlib
85 PLUGIN_DISTRIB = gwiad_wiki_plugin
86 GWIAD_SERVICES = $(GWIAD_DIR)/lib/services
87 GWIAD_WEBSITES = $(GWIAD_DIR)/lib/websites
89 ${MODULES_BUILD}:
90 ${MAKE} -C ${@:%_build=%} $(OPTIONS)
92 ${MODULES_SETUP}:
93 ${MAKE} -C ${@:%_setup=%} setup $(OPTIONS)
95 ${MODULES_CLEAN}:
96 ${MAKE} -C ${@:%_clean=%} clean $(OPTIONS)
98 ${MODULES_CHECK}:
99 ${MAKE} -C ${@:%_check=%} check $(OPTIONS)
101 install_clean:
102 $(RM) -fr $(I_INC)
103 $(RM) -fr $(I_LIB_D)
104 $(RM) -fr $(I_LIB_W)
105 $(RM) -fr $(I_INC_W)
106 $(RM) -fr $(I_DLIB)
107 $(RM) -f $(I_GPR)/diouzhtu.gpr
109 install_dirs: install_clean
110 $(MKDIR) $(I_BIN)
111 $(MKDIR) $(I_INC)
112 $(MKDIR) $(I_INC_W)
113 $(MKDIR) $(I_LIB_D)
114 $(MKDIR) $(I_LIB_W)
115 $(MKDIR) $(I_GPR)
116 $(MKDIR) $(I_DLIB)
118 install: install_dirs
119 $(CP) $(BUILD_DIR)/d/lib/* $(I_LIB_D)
120 for library in `ls $(I_LIB_D)/*$(SOEXT)`; do \
121 $(LN) $$library $(I_LIB); \
122 done
123 $(CP) $(BUILD_DIR)/wi/lib/* $(I_LIB_W)
124 for library in `ls $(I_LIB_W)/*$(SOEXT)`; do \
125 $(LN) $$library $(I_LIB); \
126 done
127 $(CP) diouzhtu/src/*.ad[sb] $(I_INC)
128 $(CP) gwiad_wiki_service/interface/src/*.ads $(I_INC_W)
129 $(CP) $(BUILD_DIR)/slib/services/*$(SOEXT) $(I_DLIB)
130 $(CP) $(BUILD_DIR)/slib/websites/*$(SOEXT) $(I_DLIB)
131 $(CP) config/projects/diouzhtu.gpr $(I_GPR)
132 $(CP) config/projects/wiki_interface.gpr $(I_GPR)
134 install_gwiad_interface:
135 $(CP) gwiad_wiki_service/interface/lib/*wiki_interface$(SOEXT) \
136 $(GWIAD_DIR)/bin/
138 install_gwiad_service:
139 $(RM) $(GWIAD_SERVICES)/libwiki_service.so
140 $(CP) $(INSTALL)/lib/diouzhtu/*$(SOEXT) $(GWIAD_DIR)/bin/
141 $(CP) gwiad_wiki_service/lib/*wiki_service$(SOEXT) $(GWIAD_SERVICES)
143 install_gwiad_website:
144 $(RM) $(GWIAD_WEBSITES)/*wiki_website$(SOEXT)
145 $(MKDIR) $(GWIAD_DIR)/plugins/wiki_website/example/templates/
146 $(MKDIR) $(GWIAD_DIR)/plugins/wiki_website/example/css
147 $(MKDIR) $(GWIAD_DIR)/plugins/wiki_website/example/js
148 $(CP) gwiad_wiki_service/website/config/config.ini \
149 $(GWIAD_DIR)/plugins/wiki_website/example/
150 $(CP) gwiad_wiki_service/website/templates/*.thtml \
151 $(GWIAD_DIR)/plugins/wiki_website/example/templates/
152 $(CP) gwiad_wiki_service/website/css/*.css \
153 $(GWIAD_DIR)/plugins/wiki_website/example/css/
154 $(CP) external_libraries/highlight/*.js \
155 $(GWIAD_DIR)/plugins/wiki_website/example/js/
156 $(CP) -r external_libraries/highlight/languages \
157 $(GWIAD_DIR)/plugins/wiki_website/example/js/
158 $(CP) gwiad_wiki_service/lib/*wiki_website$(SOEXT) $(GWIAD_WEBSITES)
160 install_gwiad_all: install_gwiad_interface install_gwiad_service \
161 install_gwiad_website
163 gwiad_plugin_distrib:
164 $(MKDIR) -p $(PLUGIN_DISTRIB)
165 $(CP) gwiad_wiki_service/interface/lib/*wiki_interface$(SOEXT) \
166 $(PLUGIN_DISTRIB)/
167 $(CP) gwiad_wiki_service/lib/*wiki_website$(SOEXT) $(PLUGIN_DISTRIB)/
168 $(CP) gwiad_wiki_service/lib/*wiki_service$(SOEXT) $(PLUGIN_DISTRIB)/
169 $(CP) gwiad_wiki_service/plugin/install.sh $(PLUGIN_DISTRIB)/
170 $(CP) $(INSTALL)/lib/diouzhtu/*$(SOEXT) $(PLUGIN_DISTRIB)/
171 $(MKDIR) $(PLUGIN_DISTRIB)/example/templates/
172 $(MKDIR) $(PLUGIN_DISTRIB)/example/css
173 $(MKDIR) $(PLUGIN_DISTRIB)/example/js
174 $(CP) gwiad_wiki_service/website/config/config.ini \
175 $(PLUGIN_DISTRIB)/example/
176 $(CP) gwiad_wiki_service/website/templates/*.thtml \
177 $(PLUGIN_DISTRIB)/example/templates/
178 $(CP) gwiad_wiki_service/website/css/*.css \
179 $(PLUGIN_DISTRIB)/example/css/
180 $(CP) external_libraries/highlight/*.js \
181 $(PLUGIN_DISTRIB)/example/js/
182 $(CP) -r external_libraries/highlight/languages \
183 $(PLUGIN_DISTRIB)/example/js/
184 $(TAR_DIR) $(PLUGIN_DISTRIB).tgz $(PLUGIN_DISTRIB)
185 $(RM) -r $(PLUGIN_DISTRIB)
187 gcov_analyse:
188 (cd diouzhtu/obj/; gcov -abfu ../src/*)
189 (cd diouzhtu2html/obj/;gcov -abfu ../src/*)
191 regtests: force
192 make -C diouzhtu2html regtests $(GENERAL_OPTIONS)
193 # make -C diouzhtu2html/test MODE="Profile" $(GENERAL_OPTIONS)
194 # rm -f diouzhtu2html/test/obj/* # To avoid error in lcov_analyse ???
195 # rm -fr diouzhtu2html/obj/*
196 make -C gwiad_wiki_service/regtests MODE="Profile" $(GENERAL_OPTIONS)
197 make lcov_analyse
199 lcov_analyse: force
200 sh analyse.sh
202 force: