source: branches/port5/Makefile

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