source: tags/arb_5.3/Makefile

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