root/branches/stable_5.0/Makefile

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