|
44 | 44 | # doxygen to update the HTML code documentation (requires doxygen to be installed) |
45 | 45 | # |
46 | 46 |
|
47 | | -TOP = $(R_PACKAGE_SOURCE) |
| 47 | +TOP = $(shell pwd) |
48 | 48 | include $(TOP)/config.mk |
49 | 49 |
|
50 | 50 | # targets for external libraries; currently not used (Glib and PCRE assumed to be on the system already) |
51 | | -SUBDIRS = cl cqp # subdirectories that have their own makefiles |
| 51 | +ifdef __MINGW__ |
| 52 | +#EXTERNALS = |
| 53 | +else |
| 54 | +EXTERNALS = |
| 55 | +endif |
| 56 | +SUBDIRS = cl cqp utils man instutils # subdirectories that have their own makefiles |
52 | 57 | SRCDIRS = cl cqp utils CQi # subdirectories containing C source code |
53 | 58 |
|
54 | 59 |
|
55 | 60 | .PHONY: clean realclean depend all test install uninstall release mingw-libgnurx-2.5.1 cl cqp utils man instutils tags size |
56 | 61 |
|
| 62 | +default: |
| 63 | + @$(ECHO) "Please type one of the following:" |
| 64 | + @$(ECHO) "" |
| 65 | + @$(ECHO) " make clean remove binaries and temporary files" |
| 66 | + @$(ECHO) " make realclean deletes all automatically generated files" |
| 67 | + @$(ECHO) " make depend updated dependencies" |
| 68 | + @$(ECHO) " make all build CWB libaries, programs and man pages" |
| 69 | + @$(ECHO) " make install install CWB into chosen location" |
| 70 | + @$(ECHO) " make release create binary release in build/ directory" |
| 71 | + @$(ECHO) " make tarball create source code release in build/ directory" |
| 72 | + @$(ECHO) "" |
| 73 | + @$(ECHO) " make cl build low-level corpus library (CL)" |
| 74 | + @$(ECHO) " make cqp build CQP query processor" |
| 75 | + @$(ECHO) " make utils build command-line utilities" |
| 76 | + @$(ECHO) " make man update manpages from POD sources" |
| 77 | + @$(ECHO) " make doxygen update HTML code documentation" |
| 78 | + @$(ECHO) " make docset create MacOS docset (see README)" |
| 79 | + @$(ECHO) " make instutils configure installation scripts" |
| 80 | + @$(ECHO) " make tags generate symbol index for GNU Emacs" |
| 81 | + @$(ECHO) " make size check total size of CWB source code" |
| 82 | + |
| 83 | +all: $(EXTERNALS) |
| 84 | + @$(ECHO) "--------------------------------- BUILDING CORPUS LIBRARY (CL)" |
| 85 | + $(MAKE) -C cl |
| 86 | + @$(ECHO) "--------------------------------- BUILDING CQP" |
| 87 | + $(MAKE) -C cqp |
| 88 | + @$(ECHO) "--------------------------------- BUILDING COMMAND-LINE UTILITIES" |
| 89 | + $(MAKE) -C utils |
| 90 | + @$(ECHO) "--------------------------------- BUILDING MANPAGES" |
| 91 | + $(MAKE) -C man |
57 | 92 |
|
58 | 93 | cl: |
59 | 94 | @$(ECHO) "--------------------------------- BUILDING CORPUS LIBRARY (CL)" |
60 | | - cd cl; $(MAKE) |
| 95 | + $(MAKE) -C cl |
61 | 96 |
|
62 | 97 | cqp: |
63 | 98 | @$(ECHO) "--------------------------------- BUILDING CQP" |
64 | | - cd cqp; $(MAKE) |
| 99 | + $(MAKE) -C cqp |
65 | 100 |
|
66 | 101 | utils: |
67 | | - @$(ECHO) "--------------------------------- BUILDING UTILITIES" |
68 | | - cd utils; $(MAKE) |
| 102 | + @$(ECHO) "--------------------------------- BUILDING COMMAND-LINE UTILITIES" |
| 103 | + $(MAKE) -C utils |
69 | 104 |
|
70 | 105 | man: |
71 | 106 | @$(ECHO) "--------------------------------- BUILDING MANPAGES" |
72 | | - cd man; $(MAKE) |
73 | | - |
| 107 | + $(MAKE) -C man |
| 108 | + |
| 109 | +doxygen: |
| 110 | + @$(ECHO) "--------------------------------- BUILDING CODE DOCUMENTATION" |
| 111 | + -$(RM) -rf doc/html |
| 112 | + doxygen doc/doxygen-config |
| 113 | + (cd doc && perl textile2html.perl) |
| 114 | + |
| 115 | +docset: |
| 116 | + @$(ECHO) "--------------------------------- BUILDING CODE DOCSET (MacOS)" |
| 117 | + -$(RM) -rf doc/docset_html build/net.sourceforge.cwb.CWB3-Code.docset |
| 118 | + doxygen doc/doxygen-config-docset && \ |
| 119 | + perl -i -lpe '$$_="DESTDIR=../../build" if /^DESTDIR=/; $$_="" if /^XCODE_INSTALL/; s{^(\s+).*/(docsetutil index)}{$$1$$2};' doc/docset_html/Makefile && \ |
| 120 | + (cd doc/docset_html && make install) && \ |
| 121 | + perl -i -lpe '$$_ .= "\n\t<key>dashIndexFilePath</key>\n\t<string>index.html</string>" if /^\s*<dict>/; s{(<string>)doxygen(</string>)}{$$1cwb$$2}' build/net.sourceforge.cwb.CWB3-Code.docset/Contents/Info.plist && \ |
| 122 | + $(RM) -rf doc/docset_html && \ |
| 123 | + $(ECHO) "Created MacOS docset in build/net.sourceforge.cwb.CWB3-Code.docset/" |
| 124 | + |
| 125 | +instutils: |
| 126 | + @$(ECHO) "--------------------------------- CONFIGURING INSTUTILS" |
| 127 | + $(MAKE) -C instutils |
| 128 | + |
| 129 | +test: |
| 130 | + @$(ECHO) "ERROR: no self tests available at the moment." |
| 131 | +# $(MAKE) -C test |
74 | 132 |
|
75 | 133 | size: |
| 134 | + @$(ECHO) "--------------------------------- MEASURING EXTENT OF THE CWB CODE" |
76 | 135 | for i in $(SUBDIRS) ;\ |
77 | 136 | do \ |
78 | | - $(ECHO) "--------------------------------- $$i"; \ |
79 | | - cd $$i; \ |
80 | | - $(MAKE) size; \ |
| 137 | + @$(ECHO) "--------------------------------- $$i"; \ |
| 138 | + $(MAKE) -C $$i size; \ |
81 | 139 | done; |
82 | 140 |
|
83 | 141 | depend: |
84 | | - for i in $(SUBDIRS) ; do cd $$i; $(MAKE) depend.mk; cd ..; done; |
| 142 | + @$(ECHO) "--------------------------------- UPDATING ALL DEPENDENCIES" |
| 143 | + for i in $(SUBDIRS) ;\ |
| 144 | + do \ |
| 145 | + $(MAKE) -C $$i depend; \ |
| 146 | + done; |
85 | 147 |
|
86 | 148 | clean: |
87 | | - for i in $(SUBDIRS); do if [ -f "$$i/Makefile" ]; then cd $$i; $(MAKE) clean; cd ..; fi; done; |
| 149 | + @$(ECHO) "--------------------------------- PERFORMING TYPICAL CLEANUP" |
| 150 | + for i in $(SUBDIRS) $(EXTERNALS); do if [ -f "$$i/Makefile" ]; then $(MAKE) -C $$i clean; fi; done; |
88 | 151 | -$(RM) *~ config/*/*~ CQi/*~ CQi/*.o technical/*~ TAGS |
89 | | - -$(RM) -rf build |
90 | | - |
| 152 | + -$(RM) -rf build/* doc/docset_html |
| 153 | + |
| 154 | +realclean: clean |
| 155 | + @$(ECHO) "--------------------------------- PERFORMING EXTRA CLEANUP" |
| 156 | + for i in $(SUBDIRS) ; do $(MAKE) -C $$i realclean; done; |
| 157 | +ifdef __MINGW__ |
| 158 | + -$(RM) -rf mingw-libgnurx-2.5.1/config.log mingw-libgnurx-2.5.1/config.status mingw-libgnurx-2.5.1/Makefile |
| 159 | +endif |
| 160 | + |
| 161 | +install: |
| 162 | +ifdef __MINGW__ |
| 163 | + @$(ECHO) "ERROR: install operation is not supported for Windows binaries!" |
| 164 | +else |
| 165 | + @$(ECHO) "--------------------------------- INSTALLING CORPUS WORKBENCH" |
| 166 | + $(MAKE) -C cl install # not in for loop to make sure we abort on error |
| 167 | + $(MAKE) -C cqp install |
| 168 | + $(MAKE) -C utils install |
| 169 | + $(MAKE) -C man install |
| 170 | + $(MAKE) -C instutils all |
| 171 | + $(MAKE) -C instutils install |
| 172 | +endif |
| 173 | + |
| 174 | +release: |
| 175 | + @$(ECHO) "--------------------------------- BUILDING RELEASE BUNDLE" |
| 176 | + if [ -d "$(RELEASE_DIR)" ]; then $(RM) -rf "$(RELEASE_DIR)"; fi |
| 177 | + $(INSTALL) $(INST_FLAGS_DIR) "$(RELEASE_DIR)" |
| 178 | + $(MAKE) -C cl release |
| 179 | + $(MAKE) -C cqp release |
| 180 | + $(MAKE) -C utils release |
| 181 | + $(MAKE) -C man release |
| 182 | + $(MAKE) -C instutils all |
| 183 | + $(MAKE) -C instutils release |
| 184 | + # in case we need extra static libraries |
| 185 | + for i in $(RELEASE_EXTRA_LIBS); do $(INSTALL) $(INST_FLAGS_DATA) "$$i" "$(RELEASE_DIR)/lib"; done |
| 186 | +ifdef __MINGW__ |
| 187 | + # for windwos, we need DLL file(s) in the bin/ directory |
| 188 | + for i in $(DLLS_TO_INSTALL); do $(INSTALL) $(INST_FLAGS_DATA) $$i "$(RELEASE_DIR)/bin"; done |
| 189 | +endif |
| 190 | + if [ -f "$(RELEASE_COMPRESSED_FILENAME)" ]; then $(RM) "$(RELEASE_COMPRESSED_FILENAME)"; fi |
| 191 | + (cd build/ && $(COMPRESS_COMMAND) "$(RELEASE_COMPRESSED_FILENAME)" "$(RELEASE_NAME)") |
| 192 | + @$(ECHO) "==> CREATED BINARY RELEASE build/$(RELEASE_COMPRESSED_FILENAME)" |
| 193 | + |
| 194 | +tarball: realclean |
| 195 | + @$(ECHO) "--------------------------------- BUILDING SOURCE RELEASE" |
| 196 | + $(MAKE) depend |
| 197 | + $(MAKE) man |
| 198 | + $(MAKE) clean |
| 199 | + if [ -d "$(TARBALL_DIR)" ]; then $(RM) -rf "$(TARBALL_DIR)"; fi |
| 200 | + $(INSTALL) $(INST_FLAGS_DIR) "$(TARBALL_DIR)" |
| 201 | + $(CP) -p AUTHORS CHANGES COPYING INSTALL INSTALL-MACOS INSTALL-WIN README "$(TARBALL_DIR)" |
| 202 | + $(CP) -p config.mk definitions.mk Makefile rpm-linux.spec "$(TARBALL_DIR)" |
| 203 | + $(CP) -pR CQi cl config cqp doc editline install-scripts instutils man utils "$(TARBALL_DIR)" |
| 204 | + $(INSTALL) $(INST_FLAGS_DIR) "$(TARBALL_DIR)/build" |
| 205 | + if [ -f "$(TARBALL_COMPRESSED_FILENAME)" ]; then $(RM) "$(TARBALL_COMPRESSED_FILENAME)"; fi |
| 206 | + (cd build/ && $(COMPRESS_COMMAND) "$(TARBALL_COMPRESSED_FILENAME)" "$(TARBALL_NAME)") |
| 207 | + @$(ECHO) "==> CREATED SOURCE RELEASE build/$(TARBALL_COMPRESSED_FILENAME)" |
| 208 | + |
| 209 | +uninstall: |
| 210 | + @$(ECHO) "ERROR: uninstall operation is currently not supported!" |
| 211 | +# for i in $(SUBDIRS) ;\ |
| 212 | +# do \ |
| 213 | +# $(MAKE) -C $$i uninstall; \ |
| 214 | +# done; |
| 215 | + |
| 216 | +tags: |
| 217 | + @$(ECHO) "--------------------------------- GENERATING 'TAGS' FILES" |
| 218 | + rm -f TAGS |
| 219 | + for i in $(SRCDIRS) ;\ |
| 220 | + do \ |
| 221 | + $(ETAGS) -a -o TAGS $$i/*.[chly]; \ |
| 222 | + done |
| 223 | +# NB "-a" option is required because we build the TAGS file incrementally |
0 commit comments