source: tags/arb_5.5/Makefile

Last change on this file was 9166, checked in by westram, 11 years ago

attempt to fix failing build of 'make -j9 do_release' (dont understand what fails)

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