source: tags/arb_5.1/Makefile

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