source: tags/cvs_2_svn/Makefile

Last change on this file was 5430, checked in by westram, 16 years ago
  • allowed gcc 4.3.1
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 36.6 KB
Line 
1# =============================================================== #
2#                                                                 #
3#   File      : Makefile                                          #
4#   Time-stamp: <Tue Jul/08/2008 12:39 MET Coder@ReallySoft.de>   #
5#                                                                 #
6#   Institute of Microbiology (Technical University Munich)       #
7#   http://www.arb-home.de/                                       #
8#                                                                 #
9# =============================================================== #
10
11# -----------------------------------------------------
12# The ARB Makefile is aware of the following defines:
13#
14# BUILDHOST_64=0/1      1=>compile on 64 bit platform (defaults to ARB_64)
15# DEVELOPER=name        special compilation (values: ANY,RELEASE,your name)
16# OPENGL=0/1            whether OPENGL is available
17#
18# -----------------------------------------------------
19# ARB Makefile and ARB source code are aware of the following defines:
20#
21# $(MACH)               name of the machine (LINUX,SUN4,SUN5,HP,SGI or DIGITAL; see config.makefile)
22# DEBUG                 compiles the DEBUG sections
23# DEBUG_GRAPHICS        all X-graphics are flushed immediately (for debugging)
24# ARB_64=0/1            1=>compile 64 bit version
25#
26# -----------------------------------------------------
27# The ARB source code is aware of the following defines:
28#
29# HAVE_BOOL             should be true if compiler supports the type 'bool'
30# NO_REGEXPR            for machines w/o regular expression library
31# NDEBUG                doesnt compile the DEBUG sections
32# DEVEL_$(DEVELOPER)    developer-dependent flag (enables you to have private sections in code)
33#                       DEVELOPER='ANY' (default setting) will be ignored
34#                       configurable in config.makefile
35#
36# -----------------------------------------------------
37# Read configuration
38include config.makefile
39
40FORCEMASK = umask 002
41
42# ---------------------- [unconditionally used options]
43
44GCC:=gcc
45GPP:=g++ -fmessage-length=0
46CPPreal:=cpp
47
48ifdef DARWIN
49        GCC:=gcc2
50        GPP:=g++2
51endif
52
53# ---------------------- compiler version detection
54
55# supported compiler versions:
56
57ALLOWED_GCC_3xx_VERSIONS=3.2 3.3.1 3.3.3 3.3.4 3.3.5 3.3.6 3.4.0 3.4.2 3.4.3
58ALLOWED_GCC_4xx_VERSIONS=4.0.0 4.0.2 4.0.3 4.1.1 4.1.2 4.1.3 4.2.0 4.2.1 4.2.3 4.3.1
59ALLOWED_GCC_VERSIONS=$(ALLOWED_GCC_3xx_VERSIONS) $(ALLOWED_GCC_4xx_VERSIONS)
60
61GCC_VERSION_FOUND=$(shell $(GCC) -dumpversion)
62GCC_VERSION_ALLOWED=$(strip $(subst ___,,$(foreach version,$(ALLOWED_GCC_VERSIONS),$(findstring ___$(version)___,___$(GCC_VERSION_FOUND)___))))
63
64USING_GCC_3XX=$(strip $(foreach version,$(ALLOWED_GCC_3xx_VERSIONS),$(findstring $(version),$(GCC_VERSION_ALLOWED))))
65USING_GCC_4XX=$(strip $(foreach version,$(ALLOWED_GCC_4xx_VERSIONS),$(findstring $(version),$(GCC_VERSION_ALLOWED))))
66
67#----------------------
68
69shared_cflags :=# flags for shared lib compilation
70
71ifeq ($(DEBUG),0)
72        dflags := -DNDEBUG# defines
73        cflags := -O4# compiler flags (C and C++)
74        lflags := -O99 --strip-all# linker flags
75endif
76
77ifeq ($(DEBUG),1)
78        dflags := -DDEBUG
79        cflags := -O0 -g -g3 -ggdb -ggdb3
80        lflags := -g
81
82        POST_COMPILE := 2>&1 | $(ARBHOME)/SOURCE_TOOLS/postcompile.pl
83
84# Enable several warnings
85        extended_warnings     := -Wwrite-strings -Wunused -Wno-aggregate-return -Wshadow
86        extended_cpp_warnings := -Wnon-virtual-dtor -Wreorder -Wpointer-arith
87 ifneq ('$(USING_GCC_3XX)','')
88                extended_cpp_warnings += -Wdisabled-optimization -Wmissing-format-attribute
89                extended_cpp_warnings += -Wmissing-noreturn # -Wfloat-equal
90 endif
91 ifneq ('$(USING_GCC_4XX)','')
92#               extended_cpp_warnings += -Wwhatever
93 endif
94
95 ifeq ($(DEBUG_GRAPHICS),1)
96                dflags += -DDEBUG_GRAPHICS
97 endif
98endif
99
100#---------------------- developer
101
102ifneq ($(DEVELOPER),ANY) # ANY=default setting (skip all developer specific code)
103ifdef dflags
104        dflags += -DDEVEL_$(DEVELOPER)# activate developer/release specific code
105endif
106endif
107
108#---------------------- 32 or 64 bit
109
110ifndef ARB_64
111        ARB_64=0#default to 32bit
112endif
113ifndef BUILDHOST_64
114        BUILDHOST_64:=$(ARB_64)# assume build host is same as version (see config.makefile)
115endif
116
117ifeq ($(ARB_64),1)
118        dflags += -DARB_64 #-fPIC
119        lflags +=
120        shared_cflags += -fPIC
121
122        ifeq ($(BUILDHOST_64),1)
123#               build 64-bit ARB version on 64-bit host
124                CROSS_LIB:=# empty = autodetect below
125        else
126#               build 64-bit ARB version on 32-bit host
127                CROSS_LIB:=/lib64
128                cflags += -m64
129                lflags += -m64 -m elf_x86_64
130        endif
131else
132        ifeq ($(BUILDHOST_64),1)
133#               build 32-bit ARB version on 64-bit host
134                CROSS_LIB:=# empty = autodetect below
135                cflags += -m32
136                lflags += -m32 -m elf_i386
137        else
138#               build 32-bit ARB version on 32-bit host
139                CROSS_LIB:=/lib
140        endif
141endif
142
143ifeq ('$(CROSS_LIB)','')
144# autodetect libdir
145        ifeq ($(ARB_64),1)
146                CROSS_LIB:=`(test -d /lib64 && echo lib64) || echo lib`
147        else
148                CROSS_LIB:=`(test -d /lib32 && echo lib32) || echo lib`
149        endif
150endif
151
152#---------------------- other flags
153
154dflags += -D$(MACH) # define machine
155dflags += -DHAVE_BOOL # all have bool [@@@ TODO: remove dependent code from ARB source]
156dflags += -DNO_REGEXPR # for machines w/o regular expression library
157
158ifdef DARWIN
159        cflags += -no-cpp-precomp
160        shared_cflags += -fno-common
161        dflags +=
162        lflags += $(LDFLAGS) -force_flat_namespace -Wl,-stack_size -Wl,10000000 -Wl,-stack_addr -Wl,c0000000
163endif
164
165cflags += -pipe
166
167#---------------------- X11 location
168
169X11R6=1# we use X11R6
170
171ifeq ($(X11R6),1)
172        XHOME:=/usr/X11R6
173        XINCLUDES:=-I$(XHOME)/include
174else
175        XHOME:=/usr/X11
176        XINCLUDES:=-I$(XHOME)/include -I$(XHOME)/include/Xm
177endif
178
179XLIBS:=-L$(XHOME)/$(CROSS_LIB) -lXm -lXpm -lXp -lXt -lXext -lX11
180
181#---------------------- open GL
182
183ifeq ($(OPENGL),1)
184        cflags += -DARB_OPENGL # activate OPENGL code
185endif
186
187ifeq ($(OPENGL),1)
188GL:=gl # this is the name of the OPENGL base target
189ifdef DEBIAN
190GL_LIB:=-lGL -lpthread
191else
192GL_LIB:=-lGL
193endif
194GL_PNGLIBS:= -L$(ARBHOME)/GL/glpng -lglpng_arb -lpng
195GLLIBS:=-lGLEW -lGLw -lglut $(GL_PNGLIBS)
196endif
197
198XLIBS += $(GL_LIB)
199
200#---------------------- basic libs:
201
202SYSLIBS := -lm
203ifdef DARWIN
204SYSLIBS += -lstdc++
205endif
206
207ifdef SEER
208    SEERLIB = SEER/SEER.a # @@@ not compiled for very long time. Dunno what SEER is..
209else
210    SEERLIB =
211endif
212
213# -------------------------------------------------------------------------
214#       Don't put any machine/version/etc conditionals below!
215#       (instead define variables above)
216# -------------------------------------------------------------------------
217
218cflags += -W -Wall $(dflags) $(extended_warnings)
219cppflags := $(extended_cpp_warnings)
220
221# compiler settings:
222
223ACC := $(GCC)# compile C
224CPP := $(GPP) $(cppflags)# compile C++
225ACCLIB := $(ACC) $(shared_cflags)# compile C (shared libs)
226CCPLIB := $(CPP) $(shared_cflags)# compile C++ (shared libs)
227
228PP := $(CPPreal)# preprocessor
229
230SHARED_LIB_SUFFIX = so# shared lib suffix (can be set to 'a' to link statically)
231
232LINK_STATIC_LIB := ld $(lflags) -r -o# link static lib
233LINK_SHARED_LIB := $(GPP) $(lflags) -shared -o# link shared lib
234LINK_EXECUTABLE := $(GPP) $(lflags) -o# link executable (c++)
235
236# other used tools
237
238CTAGS := etags
239XMKMF := /usr/bin/X11/xmkmf
240MAKEDEPEND = $(FORCEMASK);makedepend
241
242SEP=--------------------------------------------------------------------------------
243
244# delete variables unused below
245
246lflags:=
247
248# -------------------------
249#     Main arb targets:     
250# -------------------------
251
252first_target:
253                $(MAKE) checks
254                @echo $(SEP)
255                @echo 'Main targets:'
256                @echo ''
257                @echo ' all         - Compile ARB + TOOLs + and copy shared libs + link foreign software'
258                @echo '               (That is most likely the target you want)'
259                @echo ''
260                @echo ' clean       - remove generated files ("SUBDIR/SUBDIR.clean" to clean only SUBDIR)'
261                @echo ' rebuild     - clean + all'
262                @echo ' relink      - remove all binaries and relink them from objects'
263                @echo ''
264                @echo 'Some often used sub targets (make all makes them all):'
265                @echo ''
266                @echo ' arb         - Just compile ARB (but none of the integrated tools)'
267                @echo ' menus       - create GDEHELP/ARB_GDEmenus from GDEHELP/ARB_GDEmenus.source'
268                @echo ' perl        - Compile the PERL XSUBS into lib/ARB.so  and create links in lib to perl'
269                @echo ' binlink     - Create all links in the bin directory'
270                @echo ''
271                @echo 'Development targets:'
272                @echo ''
273                @echo ' depends      - create or update dependencies ("SUBDIR/SUBDIR.depends" to update only SUBDIR)'
274                @echo ' proto        - create or update prototypes ("SUBDIR/SUBDIR.proto" to update only SUBDIR)'
275                @echo ' tags         - create tags for xemacs'
276                @echo ' rmbak        - remove all "*%" and cores'
277                @echo ' show         - show available shortcuts (AKA subtargets)'
278                @echo ' up           - shortcut for depends+proto+tags'
279                @echo ''
280                @echo 'Internal maintainance:'
281                @echo ''
282                @echo ' release     - make tarfile + make save ("release_quick" to skip rebuild)'
283                @echo ' tarfile     - make rebuild and create arb version tarfile ("tarfile_quick" to skip rebuild)'
284#               @echo ' tarale      - compress emacs and ale lisp files int arb_ale.tar.gz'
285                @echo ' save        - save all basic ARB sources into arbsrc_DATE'
286#               @echo ' savedepot   - save all extended ARB source (DEPOT2 subdir) into arbdepot_DATE.cpio.gz'
287                @echo ' rtc_patch   - create LIBLINK/libRTC8M.so (SOLARIS ONLY)'
288                @echo ' source_doc  - create doxygen documentation'
289                @echo ''
290                @echo $(SEP)
291                @echo ''
292
293
294# auto-generate config.makefile:
295
296CONFIG_MAKEFILE_FOUND=$(wildcard config.makefile)
297
298config.makefile : config.makefile.template
299                @echo --------------------------------------------------------------------------------
300ifeq ($(strip $(CONFIG_MAKEFILE_FOUND)),)
301                @cp $< $@
302                @echo '$@:1: has been generated.'
303                @echo 'Please edit $@ to configure your system!'
304                @echo '(not needed for linux systems - simply type "make all")'
305else
306                @echo '$<:1: is more recent than'
307                @echo '$@:1:'
308                @ls -al config.makefile*
309                @echo "you may either:"
310                @echo "- ignore it and touch $@"
311                @echo "- merge difference between $@ and $< (recommended)"
312                @echo "- remove $@, run make again and edit the freshly generated $@"
313endif
314                @echo --------------------------------------------------------------------------------
315                @false
316
317# check if everything is configured correctly
318
319check_DEVELOPER:
320ifndef DEVELOPER
321                @echo 'config.makefile:1: DEVELOPER not defined'
322                @false
323endif
324
325check_DEBUG:
326ifndef dflags
327                @echo 'config.makefile:1: DEBUG has to be defined. Valid values are 0 and 1'
328                @false
329endif
330
331check_ARB_64:
332ifndef ARB_64
333                @echo 'config.makefile:1: ARB_64 has to be defined. Valid values are 0 and 1'
334                @false
335endif
336
337# ---------------------------------------- check gcc version
338
339check_same_GCC_VERSION:
340                $(ARBHOME)/SOURCE_TOOLS/check_same_gcc_version.pl $(GCC_VERSION_ALLOWED)
341
342check_GCC_VERSION:
343                @echo 'GCC version check:'
344                @echo "  - Your version is '$(GCC_VERSION_FOUND)'"
345ifeq ('$(GCC_VERSION_ALLOWED)', '')
346                @echo '  - This version is not in the list of supported gcc-versions:'
347                @$(foreach version,$(ALLOWED_GCC_VERSIONS),echo '    * $(version)';)
348                @echo '  - You may either ..'
349                @echo '    - add your version to ALLOWED_GCC_VERSIONS in the Makefile and try it out or'
350                @echo '    - switch to one of the allowed versions (see arb_README_gcc.txt for installing'
351                @echo '      a different version of gcc)'
352                @echo ''
353                @/bin/false
354else
355                @echo "  - Supported gcc version '$(GCC_VERSION_ALLOWED)' detected - fine!"
356                @echo ''
357                $(MAKE) check_same_GCC_VERSION
358
359endif
360
361GCC_WITH_VTABLE_AFTER_CLASS=$(ALLOWED_GCC_295_VERSIONS)
362HAVE_GCC_WITH_VTABLE_AFTER_CLASS=$(strip $(foreach version,$(GCC_WITH_VTABLE_AFTER_CLASS),$(findstring $(version),$(GCC_VERSION_ALLOWED))))
363
364# depending on the version of gcc the location of the vtable pointer differs.
365ifeq ('$(HAVE_GCC_WITH_VTABLE_AFTER_CLASS)', '')
366VTABLE_INFRONTOF_CLASS=1
367else
368VTABLE_INFRONTOF_CLASS=0
369endif
370
371#---------------------- check ARBHOME
372
373# use arb_INSTALL.txt to determine whether ARBHOME points to correct directory
374ARB_INSTALL_FOUND=$(wildcard $(ARBHOME)/arb_INSTALL.txt)
375
376check_ARBHOME:
377ifeq ($(strip $(ARB_INSTALL_FOUND)),)
378                @echo ------------------------------------------------------------
379                @echo "ARBHOME is set to '$(ARBHOME)'"
380                @echo "The environment variable ARBHOME has to point to the top arb source directory."
381                @echo "If you use bash enter:"
382                @echo "          export ARBHOME='`pwd`'"
383                @echo ------------------------------------------------------------
384                @false
385endif
386
387ARB_PATH_SET=$(findstring $(ARBHOME)/bin,$(PATH))
388
389check_PATH: check_ARBHOME
390ifeq ($(strip $(ARB_PATH_SET)),)
391                @echo ------------------------------------------------------------
392                @echo "The environment variable PATH has to contain $(ARBHOME)/bin"
393                @echo "If you use bash enter:"
394                @echo '                 export PATH=$$ARBHOME/bin:$$PATH'
395                @echo ------------------------------------------------------------
396                @false
397endif
398
399check_ENVIRONMENT : check_PATH
400
401check_tabs: check_setup
402ifeq ($(DEBUG),1)
403        @SOURCE_TOOLS/tabBrake.pl
404endif
405
406force_tab_check:
407        touch -t 198001010000 SOURCE_TOOLS/tabBrake.stamp
408        $(MAKE) check_tabs
409
410
411# ---------------------
412
413check_setup: check_ENVIRONMENT check_DEBUG check_ARB_64 check_DEVELOPER check_GCC_VERSION
414                @echo Your setup seems to be ok.
415
416checks: check_setup check_tabs
417
418
419# end test section ------------------------------
420
421ARBDB_LIB=-lARBDB
422ARBDBPP_LIB=-lARBDBPP
423
424LIBS = $(ARBDB_LIB) $(SYSLIBS)
425GUI_LIBS = $(LIBS) -lAW -lAWT $(RTC) $(XLIBS)
426
427LIBPATH = -L$(ARBHOME)/LIBLINK
428
429DEST_LIB = lib
430DEST_BIN = bin
431
432AINCLUDES =     -I. -I$(ARBHOME)/INCLUDE $(XINCLUDES)
433CPPINCLUDES =   -I. -I$(ARBHOME)/INCLUDE $(XINCLUDES)
434MAKEDEPENDFLAGS = -- $(cflags) -DARB_OPENGL -I. -Y$(ARBHOME)/INCLUDE --
435
436ifeq ($(VTABLE_INFRONTOF_CLASS),1)
437# Some code in ARB depends on the location of the vtable pointer
438# (it does a cast from class AP_tree to struct GBT_TREE). In order to
439# work around that hack properly, we define FAKE_VTAB_PTR
440# if the vtable is located at the beginning of class.
441# We are really sorry for that hack.
442cflags:=$(cflags) -DFAKE_VTAB_PTR=char
443endif
444
445#*****          List of all Directories
446
447#                       ALEIO/ALEIO.a \
448
449ARCHS = \
450                        AISC/dummy.a \
451                        AISC_MKPTPS/dummy.a \
452                        ALIV3/ALIV3.a \
453                        ARBDB/libARBDB.a \
454                        ARBDB2/libARBDB.a \
455                        ARBDBPP/libARBDBPP.a \
456                        ARBDBS/libARBDB.a \
457                        ARBDB_COMPRESS/ARBDB_COMPRESS.a \
458                        ARB_GDE/ARB_GDE.a \
459                        AWDEMO/AWDEMO.a \
460                        AWT/libAWT.a \
461                        AWTC/AWTC.a \
462                        AWTI/AWTI.a \
463                        CAT/CAT.a \
464                        CONSENSUS_TREE/CONSENSUS_TREE.a \
465                        CONVERTALN/CONVERTALN.a \
466                        DBSERVER/DBSERVER.a \
467                        DIST/DIST.a \
468                        EDIT/EDIT.a \
469                        EDIT4/EDIT4.a \
470                        EISPACK/EISPACK.a \
471                        GDE/GDE.a \
472                        GENOM/GENOM.a \
473                        GENOM_IMPORT/GENOM_IMPORT.a \
474                        GL/GL.a \
475                        ISLAND_HOPPING/ISLAND_HOPPING.a \
476                        MERGE/MERGE.a \
477                        MULTI_PROBE/MULTI_PROBE.a \
478                        NALIGNER/NALIGNER.a \
479                        NAMES/NAMES.a \
480                        NAMES_COM/server.a \
481                        NTREE/NTREE.a \
482                        PARSIMONY/PARSIMONY.a \
483                        PGT/PGT.a \
484                        PHYLO/PHYLO.a \
485                        PRIMER_DESIGN/PRIMER_DESIGN.a \
486                        PROBE/PROBE.a \
487                        PROBE_COM/server.a \
488                        PROBE_DESIGN/PROBE_DESIGN.a \
489                        PROBE_SERVER/PROBE_SERVER.a \
490                        PROBE_SET/PROBE_SET.a \
491                        READSEQ/READSEQ.a \
492                        RNA3D/RNA3D.a \
493                        SECEDIT/SECEDIT.a \
494                        SEER/SEER.a \
495                        SEQ_QUALITY/SEQ_QUALITY.a \
496                        SERVERCNTRL/SERVERCNTRL.a \
497                        SL/SL.a \
498                        STAT/STAT.a \
499                        TEST/TEST.a \
500                        TOOLS/TOOLS.a \
501                        TREEGEN/TREEGEN.a \
502                        TRS/TRS.a \
503                        WETC/WETC.a \
504                        WINDOW/libAW.a \
505                        XML/XML.a \
506
507#ARCHS_CLIENTACC = PROBE_COM/client.a
508#ARCHS_CLIENTCPP = NAMES_COM/client.a
509ARCHS_CLIENT_PROBE = PROBE_COM/client.a
510ARCHS_CLIENT_NAMES = NAMES_COM/client.a
511#ARCHS_CLIENT = $(ARCHS_CLIENT_NAMES)
512ARCHS_MAKEBIN = AISC_MKPTPS/dummy.a AISC/dummy.a
513
514ARCHS_COMMUNICATION =   NAMES_COM/server.a \
515                        PROBE_COM/server.a
516
517# communication libs need aisc and aisc_mkpts:
518$(ARCHS_COMMUNICATION:.a=.dummy) : $(ARCHS_MAKEBIN:.a=.dummy)
519
520#***************************************************************************************
521#               Individual Programs Section
522#***************************************************************************************
523
524#***********************************    arb_ntree **************************************
525NTREE = bin/arb_ntree
526ARCHS_NTREE = \
527                $(ARCHS_CLIENT_PROBE) \
528                $(SEERLIB) \
529                ARB_GDE/ARB_GDE.a \
530                AWTC/AWTC.a \
531                AWTI/AWTI.a \
532                CAT/CAT.a \
533                GENOM/GENOM.a \
534                GENOM_IMPORT/GENOM_IMPORT.a \
535                ISLAND_HOPPING/ISLAND_HOPPING.a \
536                MERGE/MERGE.a \
537                MULTI_PROBE/MULTI_PROBE.a \
538                NTREE/NTREE.a \
539                PRIMER_DESIGN/PRIMER_DESIGN.a \
540                PROBE_DESIGN/PROBE_DESIGN.a \
541                SEQ_QUALITY/SEQ_QUALITY.a \
542                SERVERCNTRL/SERVERCNTRL.a \
543                SL/AW_NAME/AW_NAME.a \
544                SL/HELIX/HELIX.a \
545                SL/DB_SCANNER/DB_SCANNER.a \
546                SL/FILE_BUFFER/FILE_BUFFER.a \
547                STAT/STAT.a \
548                XML/XML.a \
549
550$(NTREE): $(ARCHS_NTREE:.a=.dummy) NAMES_COM/server.dummy shared_libs
551        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_NTREE) $(GUI_LIBS) || ( \
552                echo Link $@ ; \
553                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NTREE) $(GUI_LIBS)" ; \
554                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NTREE) $(GUI_LIBS)  \
555                )
556
557#*********************************** arb_rna3d **************************************
558RNA3D = bin/arb_rna3d
559ARCHS_RNA3D = \
560                RNA3D/RNA3D.a \
561
562$(RNA3D): $(ARCHS_RNA3D:.a=.dummy) shared_libs
563        @echo $@ currently does not work as standalone application
564        false
565
566#***********************************    arb_edit **************************************
567EDIT = bin/arb_edit
568ARCHS_EDIT = \
569                NAMES_COM/client.a \
570                SERVERCNTRL/SERVERCNTRL.a \
571                EDIT/EDIT.a \
572                ARB_GDE/ARB_GDE.a \
573                STAT/STAT.a \
574                XML/XML.a \
575                SL/HELIX/HELIX.a \
576                SL/AW_HELIX/AW_HELIX.a \
577                SL/AW_NAME/AW_NAME.a \
578
579$(EDIT): $(ARCHS_EDIT:.a=.dummy) shared_libs
580        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_EDIT) $(GUI_LIBS) || ( \
581                echo Link $@ ; \
582                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_EDIT) -lARBDBPP $(GUI_LIBS)" ; \
583                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_EDIT) -lARBDBPP $(GUI_LIBS) ; \
584                )
585
586#***********************************    arb_edit4 **************************************
587EDIT4 = bin/arb_edit4
588
589ARCHS_EDIT4 := \
590                NAMES_COM/client.a \
591                AWTC/AWTC.a \
592                EDIT4/EDIT4.a \
593                SECEDIT/SECEDIT.a \
594                SERVERCNTRL/SERVERCNTRL.a \
595                STAT/STAT.a \
596                ARB_GDE/ARB_GDE.a \
597                ISLAND_HOPPING/ISLAND_HOPPING.a \
598                SL/HELIX/HELIX.a \
599                SL/AW_HELIX/AW_HELIX.a \
600                SL/AW_NAME/AW_NAME.a \
601                SL/FILE_BUFFER/FILE_BUFFER.a \
602                XML/XML.a \
603
604ifeq ($(OPENGL),1)
605ARCHS_EDIT4 += RNA3D/RNA3D.a
606endif
607LIBS_EDIT4 := $(GLLIBS)
608
609$(EDIT4): $(ARCHS_EDIT4:.a=.dummy) shared_libs
610        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_EDIT4) $(GUI_LIBS) || ( \
611                echo Link $@ ; \
612                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_EDIT4) $(GUI_LIBS) $(LIBS_EDIT4)" ; \
613                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_EDIT4) $(GUI_LIBS) $(LIBS_EDIT4) \
614                )
615
616#***********************************    arb_pgt **************************************
617
618PGT = bin/arb_pgt
619ARCHS_PGT = \
620                PGT/PGT.a \
621
622PGT_SYS_LIBS=$(XLIBS) -ltiff $(LIBS)
623
624$(PGT) : $(ARCHS_PGT:.a=.dummy) shared_libs
625        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_PGT) || ( \
626                echo Link $@ ; \
627                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PGT) $(PGT_SYS_LIBS)"; \
628                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PGT) $(PGT_SYS_LIBS); \
629                )
630
631
632#***********************************    arb_wetc **************************************
633WETC = bin/arb_wetc
634ARCHS_WETC = \
635                WETC/WETC.a \
636                SL/HELIX/HELIX.a \
637                XML/XML.a \
638
639$(WETC): $(ARCHS_WETC:.a=.dummy) shared_libs
640        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_WETC) $(GUI_LIBS) || ( \
641                echo Link $@ ; \
642                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_WETC) $(GUI_LIBS)" ; \
643                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_WETC) $(GUI_LIBS) ; \
644                )
645
646#***********************************    arb_dist **************************************
647DIST = bin/arb_dist
648ARCHS_DIST = \
649                $(ARCHS_CLIENT_PROBE) \
650                DIST/DIST.a \
651                SERVERCNTRL/SERVERCNTRL.a \
652                CONSENSUS_TREE/CONSENSUS_TREE.a \
653                EISPACK/EISPACK.a \
654                SL/HELIX/HELIX.a \
655                XML/XML.a \
656
657$(DIST): $(ARCHS_DIST:.a=.dummy) shared_libs
658        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_DIST) $(GUI_LIBS) || ( \
659                echo Link $@ ; \
660                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_DIST) $(GUI_LIBS)" ; \
661                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_DIST) $(GUI_LIBS) ; \
662                )
663
664#***********************************    arb_pars **************************************
665PARSIMONY = bin/arb_pars
666ARCHS_PARSIMONY = \
667                NAMES_COM/client.a \
668                SERVERCNTRL/SERVERCNTRL.a \
669                PARSIMONY/PARSIMONY.a \
670                SL/HELIX/HELIX.a \
671                SL/AW_NAME/AW_NAME.a \
672                XML/XML.a \
673
674$(PARSIMONY): $(ARCHS_PARSIMONY:.a=.dummy) shared_libs
675        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_PARSIMONY) $(GUI_LIBS) || ( \
676                echo Link $@ ; \
677                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PARSIMONY) $(GUI_LIBS)" ; \
678                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PARSIMONY) $(GUI_LIBS) ; \
679                )
680
681#*********************************** arb_treegen **************************************
682TREEGEN = bin/arb_treegen
683ARCHS_TREEGEN = \
684                TREEGEN/TREEGEN.a \
685
686$(TREEGEN) :  $(ARCHS_TREEGEN:.a=.dummy)
687        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_TREEGEN) || ( \
688                echo Link $@ ; \
689                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_TREEGEN)" ; \
690                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_TREEGEN) ; \
691                )
692
693#***********************************    arb_naligner **************************************
694NALIGNER = bin/arb_naligner
695ARCHS_NALIGNER = \
696                $(ARCHS_CLIENT_PROBE) \
697                NALIGNER/NALIGNER.a \
698                SERVERCNTRL/SERVERCNTRL.a \
699                SL/HELIX/HELIX.a \
700
701$(NALIGNER): $(ARCHS_NALIGNER:.a=.dummy) shared_libs
702        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_NALIGNER) || ( \
703                echo Link $@ ; \
704                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NALIGNER) $(LIBS)" ; \
705                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NALIGNER) $(LIBS) \
706                )
707
708#***********************************    arb_secedit **************************************
709SECEDIT = bin/arb_secedit
710ARCHS_SECEDIT = \
711                SECEDIT/SECEDIT.a \
712                XML/XML.a \
713
714$(SECEDIT):     $(ARCHS_SECEDIT:.a=.dummy) shared_libs
715        @echo $@ currently does not work as standalone application
716        false
717
718
719#***********************************    arb_phylo **************************************
720PHYLO = bin/arb_phylo
721ARCHS_PHYLO = \
722                PHYLO/PHYLO.a \
723                SL/HELIX/HELIX.a \
724                XML/XML.a \
725
726$(PHYLO): $(ARCHS_PHYLO:.a=.dummy) shared_libs
727        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_PHYLO) $(GUI_LIBS) || ( \
728                echo Link $@ ; \
729                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PHYLO) $(GUI_LIBS)" ; \
730                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PHYLO) $(GUI_LIBS) ; \
731                )
732
733#***************************************************************************************
734#                                       SERVER SECTION
735#***************************************************************************************
736
737#***********************************    arb_db_server **************************************
738DBSERVER = bin/arb_db_server
739ARCHS_DBSERVER = \
740                DBSERVER/DBSERVER.a \
741                SERVERCNTRL/SERVERCNTRL.a \
742
743$(DBSERVER): $(ARCHS_DBSERVER:.a=.dummy) shared_libs
744        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_DBSERVER) $(ARBDB_LIB) || ( \
745                echo Link $@ ; \
746                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_DBSERVER) $(ARBDB_LIB) $(SYSLIBS)" ; \
747                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_DBSERVER) $(ARBDB_LIB) $(SYSLIBS) ; \
748                )
749
750#***********************************    arb_pt_server **************************************
751PROBE = bin/arb_pt_server
752ARCHS_PROBE = \
753                PROBE_COM/server.a \
754                PROBE/PROBE.a \
755                SERVERCNTRL/SERVERCNTRL.a \
756                SL/HELIX/HELIX.a \
757
758$(PROBE): $(ARCHS_PROBE:.a=.dummy) shared_libs
759        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_PROBE) $(ARBDB_LIB) $(ARCHS_CLIENT_PROBE) || ( \
760                echo Link $@ ; \
761                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PROBE) $(ARBDB_LIB) $(ARCHS_CLIENT_PROBE) $(SYSLIBS)" ; \
762                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PROBE) $(ARBDB_LIB) $(ARCHS_CLIENT_PROBE) $(SYSLIBS) ; \
763                )
764
765#***********************************    arb_name_server **************************************
766NAMES = bin/arb_name_server
767ARCHS_NAMES = \
768                NAMES_COM/server.a \
769                NAMES/NAMES.a \
770                SERVERCNTRL/SERVERCNTRL.a \
771
772$(NAMES): $(ARCHS_NAMES:.a=.dummy) shared_libs
773        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_NAMES) $(ARBDB_LIB) $(ARCHS_CLIENT_NAMES) || ( \
774                echo Link $@ ; \
775                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NAMES) $(ARBDB_LIB) $(ARCHS_CLIENT_NAMES) $(SYSLIBS)" ; \
776                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NAMES) $(ARBDB_LIB) $(ARCHS_CLIENT_NAMES) $(SYSLIBS) ; \
777                )
778
779#***********************************    TEST SECTION  **************************************
780AWDEMO = tb/awdemo
781ARCHS_AWDEMO = \
782                AWDEMO/AWDEMO.a \
783
784$(AWDEMO): $(ARCHS_AWDEMO:.a=.dummy) shared_libs
785        @echo $(SEP) Link $@
786        $(LINK_EXECUTABLE) $@ $(ARCHS_AWDEMO) $(LIBS)
787
788TEST = tb/dbtest
789ARCHS_TEST = \
790                TEST/TEST.a \
791                XML/XML.a \
792
793$(TEST): $(ARCHS_TEST:.a=.dummy) shared_libs
794        @echo $(SEP) Link $@
795        $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_TEST)  -lAWT $(LIBS)
796
797ALIV3 = bin/aliv3
798ARCHS_ALIV3 = \
799                ALIV3/ALIV3.a \
800                SL/HELIX/HELIX.a \
801
802$(ALIV3): $(ARCHS_ALIV3:.a=.dummy) shared_libs
803        @echo $(SEP) Link $@
804        $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_ALIV3) $(ARBDB_LIB) $(SYSLIBS) $(CCPLIBS)
805
806
807ACORR = tb/acorr
808ARCHS_ACORR = \
809                DIST/DIST.a \
810                SERVERCNTRL/SERVERCNTRL.a \
811                FINDCORRASC/FINDCORRASC.a \
812                FINDCORRMATH/FINDCORRMATH.a \
813                FINDCORRWIN/FINDCORRWIN.a \
814                XML/XML.a \
815
816$(ACORR): $(ARCHS_ACORR:.a=.dummy) shared_libs
817        @echo $(SEP) Link $@
818        $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_ACORR) -lAWT $(ARBDBPP_LIB) $(LIBS)
819
820
821ARBDB_COMPRESS = tb/arbdb_compress
822ARCHS_ARBDB_COMPRESS = \
823                ARBDB_COMPRESS/ARBDB_COMPRESS.a \
824
825$(ARBDB_COMPRESS): $(ARCHS_ARBDB_COMPRESS:.a=.dummy) shared_libs
826        @echo $(SEP) Link $@
827        $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_ARBDB_COMPRESS) $(ARBDB_LIB)
828
829#***********************************    OTHER EXECUTABLES   ********************************************
830
831
832#***********************************    SHARED LIBRARIES SECTION  **************************************
833
834shared_libs: dball aw awt
835                @echo -------------------- Updating shared libraries
836                $(MAKE) libs
837
838libs:   lib/libARBDB.$(SHARED_LIB_SUFFIX) \
839        lib/libARBDBPP.$(SHARED_LIB_SUFFIX) \
840        lib/libARBDO.$(SHARED_LIB_SUFFIX) \
841        lib/libAW.$(SHARED_LIB_SUFFIX) \
842        lib/libAWT.$(SHARED_LIB_SUFFIX)
843
844lib/lib%.$(SHARED_LIB_SUFFIX): LIBLINK/lib%.$(SHARED_LIB_SUFFIX)
845        cp $< $@
846
847# lib/$(MOTIF_LIBNAME):  $(MOTIF_LIBPATH)
848#       cp $< $@
849
850#***************************************************************************************
851#                       Rekursiv calls to submakefiles
852#***************************************************************************************
853
854%.depends:
855        @cp -p $(@D)/Makefile $(@D)/Makefile.old # save old Makefile
856        @$(MAKE) -C $(@D) -r \
857                "AUTODEPENDS=1" \
858                "LD_LIBRARY_PATH  = ${LD_LIBRARY_PATH}" \
859                "MAKEDEPENDFLAGS = $(MAKEDEPENDFLAGS)" \
860                "MAKEDEPEND=$(MAKEDEPEND)" \
861                "ARBHOME=$(ARBHOME)" \
862                depends;
863        @grep "^# DO NOT DELETE" $(@D)/Makefile >/dev/null
864        @cat $(@D)/Makefile \
865                | SOURCE_TOOLS/fix_depends.pl \
866                >$(@D)/Makefile.2
867        @mv $(@D)/Makefile.old $(@D)/Makefile # restore old Makefile
868        @$(ARBHOME)/SOURCE_TOOLS/mv_if_diff $(@D)/Makefile.2 $(@D)/Makefile # update Makefile if changed
869
870%.proto:
871        @$(MAKE) -C $(@D) \
872                "AUTODEPENDS=0" \
873                proto
874
875%.clean:
876        @$(MAKE) -C $(@D) \
877                "AUTODEPENDS=0" \
878                "MACH=$(MACH)" \
879                "OPENGL=$(OPENGL)" \
880                clean
881
882# rule to generate main target (normally a library):
883%.dummy:
884        @( export ID=$$$$; \
885        (( \
886            echo "$(SEP) Make everything in $(@D)"; \
887            $(MAKE) -C $(@D) -r \
888                "ACC = $(ACC)" \
889                "ACCLIB = $(ACCLIB)" \
890                "AINCLUDES = $(AINCLUDES)" \
891                "ARBHOME = $(ARBHOME)" \
892                "ARLIB = $(ARLIB)" \
893                "AUTODEPENDS=1" \
894                "CCPLIB = $(CCPLIB)" \
895                "CCPLIBS = $(CCPLIBS)" \
896                "CPP = $(CPP)" \
897                "CPPINCLUDES = $(CPPINCLUDES)" \
898                "DEBUG=$(DEBUG)" \
899                "LD_LIBRARY_PATH  = $(LD_LIBRARY_PATH)" \
900                "LIBPATH = $(LIBPATH)" \
901                "LINK_EXECUTABLE = $(LINK_EXECUTABLE)" \
902                "LINK_STATIC_LIB = $(LINK_STATIC_LIB)" \
903                "LINK_SHARED_LIB = $(LINK_SHARED_LIB)" \
904                "MAIN = $(@F:.dummy=.a)" \
905                "OPENGL  = $(OPENGL)" \
906                "POST_COMPILE = $(POST_COMPILE)" \
907                "SHARED_LIB_SUFFIX = $(SHARED_LIB_SUFFIX)" \
908                "STATIC = $(STATIC)"\
909                "SYSLIBS = $(SYSLIBS)" \
910                "XHOME = $(XHOME)" \
911                "XLIBS = $(XLIBS)" \
912                "cflags = $(cflags) -DIN_ARB_$(subst /,_,$(@D))" \
913        ) >$(@D).$$ID.log 2>&1 && (cat $(@D).$$ID.log;rm $(@D).$$ID.log)) || (cat $(@D).$$ID.log;rm $(@D).$$ID.log;false))
914
915# Additional dependencies for subtargets:
916
917comtools: $(ARCHS_MAKEBIN:.a=.dummy)
918
919PROBE_COM/PROBE_COM.dummy : comtools
920PROBE_COM/server.dummy : comtools
921PROBE_COM/client.dummy : comtools
922
923NAMES_COM/NAMES_COM.dummy : comtools
924NAMES_COM/server.dummy : comtools
925NAMES_COM/client.dummy : comtools
926
927com_probe: PROBE_COM/PROBE_COM.dummy
928com_names: NAMES_COM/NAMES_COM.dummy
929
930TOOLS/TOOLS.dummy : shared_libs SERVERCNTRL/SERVERCNTRL.dummy CAT/CAT.dummy com_probe
931
932AWTC/AWTC.dummy :                       com_names com_probe
933
934NAMES/NAMES.dummy :                     com_names
935SL/AW_NAME/AW_NAME.dummy :              com_names
936
937PROBE/PROBE.dummy :                     com_probe
938MULTI_PROBE/MULTI_PROBE.dummy :         com_probe
939PROBE_DESIGN/PROBE_DESIGN.dummy :       com_probe
940NALIGNER/NALIGNER.dummy :               com_probe
941
942ARB_GDE/ARB_GDE.dummy :                 proto_tools
943
944
945#***************************************************************************************
946#                       Short aliases to make targets
947#***************************************************************************************
948
949show:
950                @echo $(SEP)
951                @echo 'Aliases for often needed targets:'
952                @echo ''
953                @echo ' executables:'
954                @echo ''
955                @echo '  nt     arb_ntree'
956                @echo '  e4     arb_edit4 (includes secedit)'
957                @echo '  di     arb_dist'
958                @echo '  ph     arb_phylo'
959                @echo '  pa     arb_parsimony'
960                @echo '  tg     arb_treegen'
961                @echo '  ds     arb_dbserver'
962                @echo '  pt     arb_pt_server'
963                @echo '  na     arb_name_server'
964                @echo ''
965                @echo ' libraries:'
966                @echo ''
967                @echo '  com    communication libraries'
968                @echo '  dball  ARB database (all versions: db dbs and db2)'
969                @echo '  aw     GUI lib'
970                @echo '  awt    GUI toolkit'
971                @echo '  awtc   general purpose library'
972                @echo '  awti   import/export library'
973                @echo '  mp     multi probe library'
974                @echo '  ge     genome library'
975                @echo '  pd     probe design lib'
976                @echo '  prd    primer design lib'
977                @echo '  ih     island hopper'
978                @echo ''
979                @echo ' other targets:'
980                @echo ''
981                @echo '  help   recompile help files'
982                @echo '  test   test arbdb (needs fix)'
983                @echo '  demo   GUI demo (needs fix)'
984                @echo '  tools  make small tools used by arb'
985                @echo ''
986                @echo ' optional targets (not build by make all)'
987                @echo ''
988                @echo '  ps             ARB probe server'
989                @echo '  pc             ARB probe client (you need java)'
990                @echo ''
991                @echo ' foreign targets:'
992                @echo ''
993                @echo '  gde    GDE'
994                @echo '  agde   ARB_GDE'
995                @echo ''
996                @echo 'for other targets inspect $(ARBHOME)/Makefile'
997                @echo ''
998                @echo $(SEP)
999
1000source_doc:
1001                doxygen
1002
1003mbin:   $(ARCHS_MAKEBIN:.a=.dummy)
1004
1005com:    $(ARCHS_COMMUNICATION:.a=.dummy)
1006
1007help:   HELP_SOURCE/HELP_SOURCE.dummy
1008
1009HELP_SOURCE/HELP_SOURCE.dummy: xml menus# need to create some files in GDE-subtree first
1010
1011dball:  db dbs db2 dp
1012db:     ARBDB/libARBDB.dummy
1013dbs:    ARBDBS/libARBDB.dummy
1014db2:    ARBDB2/libARBDB.dummy
1015dp:     ARBDBPP/libARBDBPP.dummy
1016aw:     WINDOW/libAW.dummy
1017awt:    AWT/libAWT.dummy
1018awtc:   AWTC/AWTC.dummy
1019awti:   AWTI/AWTI.dummy
1020
1021ih:     ISLAND_HOPPING/ISLAND_HOPPING.dummy
1022
1023mp:     MULTI_PROBE/MULTI_PROBE.dummy
1024mg:     MERGE/MERGE.dummy
1025ge:     GENOM/GENOM.dummy
1026prd:    PRIMER_DESIGN/PRIMER_DESIGN.dummy
1027
1028nt:     menus $(NTREE)
1029ed:     $(EDIT)
1030
1031al:     $(ALIGNER)
1032nal:    $(NALIGNER)
1033a3:     $(ALIV3)
1034
1035di:     $(DIST)
1036ph:     $(PHYLO)
1037pa:     $(PARSIMONY)
1038tg:     $(TREEGEN)
1039
10403d:     RNA3D/RNA3D.dummy
1041gl:     GL/GL.dummy
1042sl:     NAMES_COM/NAMES_COM.dummy
1043        $(MAKE) SL/SL.dummy
1044
1045ds:     $(DBSERVER)
1046pt:     $(PROBE)
1047ps:     PROBE_SERVER/PROBE_SERVER.dummy
1048pc:     PROBE_WEB/PROBE_WEB.dummy
1049pst:    PROBE_SET/PROBE_SET.dummy
1050pd:     PROBE_DESIGN/PROBE_DESIGN.dummy
1051na:     $(NAMES)
1052
1053ac:     $(ARBDB_COMPRESS) # unused? does not compile
1054
1055test:   $(TEST)
1056demo:   $(AWDEMO)
1057
1058sec: SECEDIT/SECEDIT.dummy
1059
1060e4:     $(EDIT4)
1061gi:     GENOM_IMPORT/GENOM_IMPORT.dummy
1062we:     $(WETC)
1063eb:     $(EDITDB)
1064
1065pgt:    $(PGT)
1066xml:    XML/XML.dummy
1067templ:  TEMPLATES/TEMPLATES.dummy
1068
1069#********************************************************************************
1070
1071up: depends proto tags valgrind_update
1072
1073#********************************************************************************
1074
1075depends: $(ARCHS:.a=.depends) \
1076                HELP_SOURCE/HELP_SOURCE.depends \
1077
1078proto_tools: AISC_MKPTPS/AISC_MKPTPS.dummy
1079
1080proto: proto_tools TOOLS/TOOLS.dummy
1081                $(MAKE) \
1082                                AISC/AISC.proto \
1083                                ARBDB/ARBDB.proto \
1084                                ARB_GDE/ARB_GDE.proto \
1085                                CONVERTALN/CONVERTALN.proto \
1086                                NTREE/NTREE.proto \
1087                                PROBE/PROBE.proto \
1088                                SERVERCNTRL/SERVERCNTRL.proto \
1089                                TRS/TRS.proto \
1090                                AISC_COM/AISC_COM.proto \
1091                                GDE/GDE.proto \
1092
1093#********************************************************************************
1094
1095valgrind_update:
1096                $(MAKE) -C SOURCE_TOOLS valgrind_update
1097
1098#********************************************************************************
1099
1100TAGFILE=TAGS
1101TAGFILE_TMP=TAGS.tmp
1102
1103tags: tags_$(MACH)
1104        mv $(TAGFILE_TMP) $(TAGFILE)
1105
1106tags_LINUX: tags2
1107tags_SUN5: tags1
1108
1109tags1:
1110# first search class definitions
1111        $(CTAGS) -f $(TAGFILE_TMP)          --language=none "--regex=/^[ \t]*class[ \t]+\([^ \t]+\)/" `find . -name '*.[ch]xx' -type f`
1112        $(CTAGS) -f $(TAGFILE_TMP) --append --language=none "--regex=/\([^ \t]+\)::/" `find . -name '*.[ch]xx' -type f`
1113# then append normal tags (headers first)
1114        $(CTAGS) -f $(TAGFILE_TMP) --append --members ARBDB/*.h `find . -name '*.[h]xx' -type f`
1115        $(CTAGS) -f $(TAGFILE_TMP) --append ARBDB/*.c `find . -name '*.[c]xx' -type f`
1116
1117# if the above tag creation does not work -> try tags2:
1118tags2:
1119        ctags -f $(TAGFILE_TMP)    -e --c-types=cdt --sort=no `find . \( -name '*.[ch]xx' -o -name "*.[ch]" \) -type f | grep -v -i perl5`
1120        ctags -f $(TAGFILE_TMP) -a -e --c-types=f-tvx --sort=no `find . \( -name '*.[ch]xx' -o -name "*.[ch]" \) -type f | grep -v -i perl5`
1121
1122#********************************************************************************
1123
1124links: SOURCE_TOOLS/generate_all_links.stamp
1125
1126SOURCE_TOOLS/generate_all_links.stamp: SOURCE_TOOLS/generate_all_links.sh
1127        SOURCE_TOOLS/generate_all_links.sh
1128        touch SOURCE_TOOLS/generate_all_links.stamp
1129
1130gde:            GDE/GDE.dummy
1131GDE:            gde
1132agde:           ARB_GDE/ARB_GDE.dummy
1133tools:          TOOLS/TOOLS.dummy
1134trs:            TRS/TRS.dummy
1135convert:        SL/FILE_BUFFER/FILE_BUFFER.dummy
1136        $(MAKE) CONVERTALN/CONVERTALN.dummy
1137
1138readseq:        READSEQ/READSEQ.dummy
1139
1140#***************************************************************************************
1141#                       Some user commands
1142#***************************************************************************************
1143rtc_patch:
1144        rtc_patch_area -so LIBLINK/libRTC8M.so
1145
1146menus: binlink
1147        @(( \
1148                echo $(SEP) Make everything in GDEHELP; \
1149                $(MAKE) -C GDEHELP -r "PP=$(PP)" all \
1150        ) > GDEHELP.log 2>&1 && (cat GDEHELP.log;rm GDEHELP.log)) || (cat GDEHELP.log;rm GDEHELP.log;false)
1151
1152ifeq ($(DEBUG),1)
1153BIN_TARGET=develall
1154else
1155BIN_TARGET=all
1156endif
1157
1158
1159binlink:
1160        $(MAKE) -C bin $(BIN_TARGET)
1161
1162bin/arb_%:      DEPOT2/%
1163        cp $< $@
1164bin/%:  DEPOT2/%
1165        cp $< $@
1166
1167
1168preplib:
1169        (cd lib;$(MAKE) all)
1170
1171# ---------------------------------------- perl
1172
1173perl: tools
1174        @echo $(SEP) Make everything in PERL2ARB
1175        @$(MAKE) -C PERL2ARB -r -f Makefile.main \
1176                "AUTODEPENDS=1" \
1177                "MACH=$(MACH)" \
1178                "dflags=$(dflags)" \
1179                "ARBHOME=$(ARBHOME)" \
1180                "DEBUG=$(DEBUG)" \
1181                "MAKEDEPEND=$(MAKEDEPEND)" \
1182                "MAKEDEPENDFLAGS=$(MAKEDEPENDFLAGS)" \
1183                all
1184
1185perl_clean:
1186        @$(MAKE) -C PERL2ARB -r -f Makefile.main \
1187                "AUTODEPENDS=0" \
1188                "MACH=$(MACH)" \
1189                clean
1190
1191# ----------------------------------------
1192
1193wc:
1194        wc `find . -type f \( -name '*.[ch]' -o -name '*.[ch]xx' \) -print`
1195
1196# ---------------------------------------- cleaning
1197
1198rmbak:
1199        find . \( -name '*%' -o -name '*.bak' -o -name 'core' \
1200                -o -name 'infile' -o -name treefile -o -name outfile \
1201                -o -name 'gde*_?' -o -name '*~' \) \
1202        -print -exec rm {} \;
1203
1204bclean:
1205        @echo Cleaning bin directory
1206        find bin -type l -exec rm {} \;
1207        find bin -type f \! \( -name ".cvsignore" -o -name "Makefile" -o -path "bin/CVS*" \) -exec rm {} \;
1208        cd bin;make all
1209
1210libclean:
1211        rm -f `find . -type f \( -name '*.a' ! -type l \) -print`
1212
1213clean2: $(ARCHS:.a=.clean) \
1214                GDEHELP/GDEHELP.clean \
1215                HELP_SOURCE/HELP_SOURCE.clean \
1216                SOURCE_TOOLS/SOURCE_TOOLS.clean \
1217                bin/bin.clean \
1218                perl_clean
1219        rm -f *.last_gcc
1220
1221# links are needed for cleanup
1222clean: links
1223        $(MAKE) clean2
1224
1225# -----------------------------------
1226
1227rebuild: clean
1228        $(MAKE) all
1229
1230relink: bclean libclean
1231        $(MAKE) all
1232
1233savedepot: rmbak
1234        util/arb_save_depot
1235
1236tarfile: rebuild
1237        util/arb_compress
1238
1239tarfile_quick: all
1240        util/arb_compress
1241
1242save: sourcetarfile
1243
1244# test early whether save will work
1245testsave:
1246        @util/arb_srclst.pl >/dev/null
1247
1248sourcetarfile: rmbak
1249        util/arb_save
1250
1251save2: rmbak
1252                util/arb_save ignore
1253
1254release: 
1255        @echo Making release
1256        @echo PATH=$(PATH)
1257        @echo ARBHOME=$(ARBHOME)
1258        -rm arb.tgz arbsrc.tgz
1259        $(MAKE) testsave
1260        $(MAKE) tarfile sourcetarfile
1261
1262release_quick:
1263        -rm arb.tgz arbsrc.tgz
1264        $(MAKE) tarfile_quick sourcetarfile
1265
1266# --------------------------------------------------------------------------------
1267
1268# basic arb libraries
1269arbbasic: links preplib
1270                $(MAKE) arbbasic2
1271
1272arbbasic2: templ mbin com ${MAKE_RTC} sl $(GL)
1273
1274# shared arb libraries
1275arbshared: dball aw dp awt
1276
1277# needed arb applications
1278arbapplications: nt pa ed e4 we pt na al nal di ph ds trs pgt
1279
1280# optionally things (no real harm for ARB if any of them fails):
1281arbxtras: tg ps pc pst a3
1282
1283tryxtras:
1284        @echo $(SEP)
1285        @( $(MAKE) arbxtras || ( \
1286                echo $(SEP) ;\
1287                echo "One of the optional tools failed to build (see error somewhere above)" ;\
1288                echo "ARB will work nevertheless!" ) )
1289
1290arb: arbbasic
1291        $(MAKE) arbshared arbapplications help
1292
1293all: checks
1294        $(MAKE) links
1295        $(MAKE) com
1296        $(MAKE) arb
1297        $(MAKE) libs
1298        $(MAKE) convert tools gde readseq
1299        $(MAKE) binlink
1300        $(MAKE) perl
1301        -$(MAKE) tryxtras
1302        @echo $(SEP)
1303        @echo "made 'all' with success."
1304        @echo "to start arb enter 'arb'"
1305
1306# DO NOT DELETE
Note: See TracBrowser for help on using the repository browser.