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
RevLine 
[5223]1# =============================================================== #
2#                                                                 #
3#   File      : Makefile                                          #
4#                                                                 #
5#   Institute of Microbiology (Technical University Munich)       #
6#   http://www.arb-home.de/                                       #
7#                                                                 #
8# =============================================================== #
[2]9
[5223]10# -----------------------------------------------------
11# The ARB Makefile is aware of the following defines:
[1107]12#
[5223]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
[1107]16#
[5223]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#
[6142]28# NDEBUG                doesn't compile the DEBUG sections
[5133]29# DEVEL_$(DEVELOPER)    developer-dependent flag (enables you to have private sections in code)
[1336]30#                       DEVELOPER='ANY' (default setting) will be ignored
31#                       configurable in config.makefile
[1107]32#
[5223]33# -----------------------------------------------------
34# Read configuration
35include config.makefile
36
[5829]37ifeq ($(LD_LIBRARY_PATH),'')
38LD_LIBRARY_PATH:=${ARBHOME}/lib
39endif
40
[2]41FORCEMASK = umask 002
42
[8525]43# ---------------------- [basic compiler setting]
[2]44
[8655]45ifdef DARWIN
[9151]46#       GCC and GPP now set in the Portfile
[8655]47else
48        GCC:=$(CC)
49        GPP:=$(CXX)
[2]50
[8655]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
[8525]56endif
[3137]57
[8655]58
[4034]59# ---------------------- compiler version detection
60
[3227]61# supported compiler versions:
62
[3815]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
[5556]64ALLOWED_GCC_4xx_VERSIONS=\
[5829]65        4.0.0 4.0.1 4.0.2 4.0.3 \
[9164]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 \
[17622]71              4.7.1 \
72              5.5.0
[5556]73
[5188]74ALLOWED_GCC_VERSIONS=$(ALLOWED_GCC_3xx_VERSIONS) $(ALLOWED_GCC_4xx_VERSIONS)
[3227]75
[9164]76GCC_VERSION_FOUND=$(shell $(ARBHOME)/SOURCE_TOOLS/arb_gcc_version.pl)
[4034]77GCC_VERSION_ALLOWED=$(strip $(subst ___,,$(foreach version,$(ALLOWED_GCC_VERSIONS),$(findstring ___$(version)___,___$(GCC_VERSION_FOUND)___))))
[3227]78
[5188]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
[5877]82#---------------------- define special directories for non standard builds
83
84ifdef DARWIN
[8655]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
[5877]89endif
90
[5223]91#----------------------
[4034]92
[5877]93ifdef DARWIN
94        LINK_STATIC=1# link static
95else
96        LINK_STATIC=0# link dynamically
97endif
[5829]98
[5223]99shared_cflags :=# flags for shared lib compilation
[5877]100lflags :=# linker flags
[5887]101extended_warnings :=# warning flags for C and C++-compiler
102extended_cpp_warnings :=# warning flags for C++-compiler only
[5188]103
[5887]104
[5223]105ifeq ($(DEBUG),0)
[17623]106        dflags := -DNDEBUG
[5223]107        cflags := -O4# compiler flags (C and C++)
[5877]108 ifndef DARWIN
[8777]109        lflags += -O99# linker flags
[5877]110 endif
[4034]111endif
112
[5223]113ifeq ($(DEBUG),1)
114        dflags := -DDEBUG
[5360]115        cflags := -O0 -g -g3 -ggdb -ggdb3
[5911]116#       cflags := -O2 -g -g3 -ggdb -ggdb3 # use this for callgrind (force inlining)
[5877]117 ifndef DARWIN
118        lflags += -g
119 endif
[5133]120
[5223]121        POST_COMPILE := 2>&1 | $(ARBHOME)/SOURCE_TOOLS/postcompile.pl
[5133]122
[5223]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)','')
[5877]127        extended_cpp_warnings += -Wdisabled-optimization -Wmissing-format-attribute
128        extended_cpp_warnings += -Wmissing-noreturn # -Wfloat-equal
[5223]129 endif
130 ifneq ('$(USING_GCC_4XX)','')
[5877]131#       extended_cpp_warnings += -Wwhatever
[5223]132 endif
[5133]133
[5223]134 ifeq ($(DEBUG_GRAPHICS),1)
[5877]135        dflags += -DDEBUG_GRAPHICS
[5223]136 endif
[5133]137endif
138
[5223]139#---------------------- developer
[4034]140
[5223]141ifneq ($(DEVELOPER),ANY) # ANY=default setting (skip all developer specific code)
142ifdef dflags
143        dflags += -DDEVEL_$(DEVELOPER)# activate developer/release specific code
[2869]144endif
[5223]145endif
[2869]146
[5223]147#---------------------- 32 or 64 bit
[2]148
[5223]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
[5133]155
[5223]156ifeq ($(ARB_64),1)
157        dflags += -DARB_64 #-fPIC
158        lflags +=
159        shared_cflags += -fPIC
[2]160
[5223]161        ifeq ($(BUILDHOST_64),1)
162#               build 64-bit ARB version on 64-bit host
163                CROSS_LIB:=# empty = autodetect below
[5877]164                ifdef DARWIN
165                        cflags += -arch x86_64
166                        lflags += -arch x86_64
167                endif
[5223]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
[2]174else
[5223]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
[2]184endif
185
[5223]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
[655]194
[5223]195#---------------------- other flags
[655]196
[5223]197dflags += -D$(MACH) # define machine
[655]198
[5223]199ifdef DARWIN
200        shared_cflags += -fno-common
[5877]201else
202        dflags +=  $(shell getconf LFS_CFLAGS)
[655]203endif
204
[5223]205cflags += -pipe
[6142]206cflags += -fmessage-length=0# don't wrap compiler output
[5708]207cflags += -funit-at-a-time
[5897]208cflags += -fPIC
[2]209
[5223]210#---------------------- X11 location
[2350]211
[5877]212ifdef DARWIN
[8655]213        XHOME:=$(PREFIX)
214else
215        XHOME:=/usr/X11R6
[5877]216endif
217
[8655]218XINCLUDES:=-I$(XHOME)/include
[5877]219ifdef DARWIN
[8655]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
[344]225else
[7490]226        XLIBS:=-L$(XHOME)/$(CROSS_LIB) -lXm -lXpm -lXt -lXext -lX11
[1491]227endif
228
[5223]229#---------------------- open GL
[3635]230
[5223]231ifeq ($(OPENGL),1)
232        cflags += -DARB_OPENGL # activate OPENGL code
[5877]233        GL     := gl # this is the name of the OPENGL base target
234        GL_LIB := -lGL -L$(ARBHOME)/GL/glAW -lglAW
235
[8655]236        ifdef DEBIAN
237                GL_LIB += -lpthread
238        endif
[5877]239
[8655]240        GL_PNGLIBS := -L$(ARBHOME)/GL/glpng -lglpng_arb -lpng
[5877]241        GLEWLIB := -lGLEW -lGLw
242
[8655]243        ifdef DARWIN
244                GLUTLIB := -glut
245        else
246                GLUTLIB := -lglut
247        endif
[5877]248
[8655]249        GL_LIBS := $(GL_LIB) $(GLEWLIB) $(GLUTLIB) $(GL_PNGLIBS)
[5877]250
[5881]251else
252
[5882]253GL_LIBS:=# no opengl -> no libs
[6142]254GL:=# don't build ARB openGL libs
[5881]255
[5223]256endif
257
[5877]258#---------------------- tiff lib:
259
[8655]260TIFFLIBS := -ltiff
[3635]261
[5223]262#---------------------- basic libs:
263
[5877]264SYSLIBS:=
265
[5223]266ifdef DARWIN
[5877]267        SYSLIBS += -lstdc++
268else
269        SYSLIBS += -lm
[5223]270endif
271
[5708]272#---------------------- include symbols?
273
274ifeq ($(TRACESYM),1)
[5877]275        ifdef DARWIN
276                cdynamic =
277                ldynamic =
278        else
[8777]279                cdynamic = -rdynamic -Wl,--export-dynamic
280                ldynamic = --export-dynamic
[5877]281        endif
[5708]282endif
283
[5223]284# -------------------------------------------------------------------------
285#       Don't put any machine/version/etc conditionals below!
286#       (instead define variables above)
287# -------------------------------------------------------------------------
[2]288
[5708]289cflags += -W -Wall $(dflags) $(extended_warnings) $(cdynamic)
[2]290
[6114]291cppflags := $(extended_cpp_warnings)
[5708]292
[6114]293ifeq ($(DEVELOPER),RALF)
[6119]294HAVE_GNUPP0X=`SOURCE_TOOLS/requireVersion.pl 4.3 $(GCC_VERSION_FOUND)`
[6117]295ifeq ($(HAVE_GNUPP0X),1)
[6114]296# ensure compatibility with upcoming C++ standard
297cppflags += -std=gnu++0x
298endif
[6117]299endif
[6114]300
[5223]301# compiler settings:
[834]302
[5223]303ACC := $(GCC)# compile C
304CPP := $(GPP) $(cppflags)# compile C++
305ACCLIB := $(ACC) $(shared_cflags)# compile C (shared libs)
[5829]306CPPLIB := $(CPP) $(shared_cflags)# compile C++ (shared libs)
[834]307
[8777]308LINK_STATIC_LIB := ld $(lflags) $(ldynamic) -r -o# link static lib
[5708]309LINK_EXECUTABLE := $(GPP) $(lflags) $(cdynamic) -o# link executable (c++)
[2389]310
[5829]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
[8778]316LINK_SHARED_LIB := $(GPP) $(lflags) $(cdynamic) -shared -o# link shared lib
[5829]317endif
318
[5223]319# other used tools
[2389]320
[5223]321CTAGS := etags
[8655]322
[5877]323ifdef DARWIN
[8655]324        XMKMF := $(PREFIX)/bin/xmkmf
[5877]325else
326        XMKMF := /usr/bin/X11/xmkmf
327endif
[8655]328
[5829]329MAKEDEPEND_PLAIN = makedepend
[2412]330
[5829]331MAKEDEPEND = $(FORCEMASK);$(MAKEDEPEND_PLAIN)
332
[5878]333SEP:=--------------------------------------------------------------------------------
[2389]334
[5223]335# delete variables unused below
[2]336
[5223]337lflags:=
[1076]338
[5223]339# -------------------------
340#     Main arb targets:     
341# -------------------------
[2]342
[1076]343first_target:
344                $(MAKE) checks
[743]345                @echo $(SEP)
[643]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 ''
[4692]351                @echo ' clean       - remove generated files ("SUBDIR/SUBDIR.clean" to clean only SUBDIR)'
[4632]352                @echo ' rebuild     - clean + all'
[2907]353                @echo ' relink      - remove all binaries and relink them from objects'
[643]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 ''
[4255]364                @echo ' depends      - create or update dependencies ("SUBDIR/SUBDIR.depends" to update only SUBDIR)'
[4600]365                @echo ' proto        - create or update prototypes ("SUBDIR/SUBDIR.proto" to update only SUBDIR)'
[1617]366                @echo ' tags         - create tags for xemacs'
367                @echo ' rmbak        - remove all "*%" and cores'
368                @echo ' show         - show available shortcuts (AKA subtargets)'
[4600]369                @echo ' up           - shortcut for depends+proto+tags'
[5952]370                @echo ' modified     - rebuild files modified in svn checkout (touches files!)'
[643]371                @echo ''
[6142]372                @echo 'Internal maintenance:'
[643]373                @echo ''
[6772]374                @echo ' rel_minor   - build a release (increases minor version number)'
375                @echo ' rel_major   - build a release (increases MAJOR version number)'
[2303]376                @echo ' tarfile     - make rebuild and create arb version tarfile ("tarfile_quick" to skip rebuild)'
[2875]377                @echo ' save        - save all basic ARB sources into arbsrc_DATE'
[643]378                @echo ' rtc_patch   - create LIBLINK/libRTC8M.so (SOLARIS ONLY)'
[2520]379                @echo ' source_doc  - create doxygen documentation'
[5672]380                @echo ' relocated   - rebuild partly (use when you have relocated ARBHOME)'
[6122]381                @echo ' check_res   - check ressource usage'
[643]382                @echo ''
[743]383                @echo $(SEP)
384                @echo ''
[2]385
[1459]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 $< $@
[5708]395                @echo '$(ARBHOME)/$@:1: has been generated.'
[1459]396                @echo 'Please edit $@ to configure your system!'
[6163]397                @echo --------------------------------------------------------------------------------
398                @false
[1459]399else
[5708]400                @echo '$(ARBHOME)/$<:1: is more recent than'
401                @echo '$(ARBHOME)/$@:1:'
[1459]402                @ls -al config.makefile*
[6163]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 --------------------------------------------------------------------------------
[6165]412                -diff $@.bak $@
[6163]413                @echo --------------------------------------------------------------------------------
[1459]414endif
415
[1076]416# check if everything is configured correctly
[2]417
[1076]418check_DEVELOPER:
419ifndef DEVELOPER
[2988]420                @echo 'config.makefile:1: DEVELOPER not defined'
[1076]421                @false
422endif
423
424check_DEBUG:
[643]425ifndef dflags
[2988]426                @echo 'config.makefile:1: DEBUG has to be defined. Valid values are 0 and 1'
[643]427                @false
428endif
[2]429
[5133]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
[1238]436# ---------------------------------------- check gcc version
437
[3311]438check_same_GCC_VERSION:
439                $(ARBHOME)/SOURCE_TOOLS/check_same_gcc_version.pl $(GCC_VERSION_ALLOWED)
440
[1238]441check_GCC_VERSION:
[3227]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'
[3790]449                @echo '    - switch to one of the allowed versions (see arb_README_gcc.txt for installing'
450                @echo '      a different version of gcc)'
[1238]451                @echo ''
[5829]452                @false
[1238]453else
[3227]454                @echo "  - Supported gcc version '$(GCC_VERSION_ALLOWED)' detected - fine!"
[1238]455                @echo ''
[3311]456                $(MAKE) check_same_GCC_VERSION
[3332]457
[1238]458endif
459
[5872]460GCC_WITH_VTABLE_AFTER_CLASS=#occurred only with no longer supported $(ALLOWED_GCC_295_VERSIONS)
[3332]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
[1459]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
[5829]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)" \
[1459]509
[5829]510
511check_ENVIRONMENT : check_PATH check_TOOLS
512
[5387]513check_tabs: check_setup
514ifeq ($(DEBUG),1)
515        @SOURCE_TOOLS/tabBrake.pl
516endif
517
518force_tab_check:
[5829]519        @touch -t 198001010000 SOURCE_TOOLS/tabBrake.stamp
520        @$(MAKE) check_tabs
[5387]521
522
[1459]523# ---------------------
524
[5387]525check_setup: check_ENVIRONMENT check_DEBUG check_ARB_64 check_DEVELOPER check_GCC_VERSION
[1076]526                @echo Your setup seems to be ok.
[2]527
[5387]528checks: check_setup check_tabs
[2]529
[5387]530
[1459]531# end test section ------------------------------
532
[3304]533ARBDB_LIB=-lARBDB
534ARBDBPP_LIB=-lARBDBPP
535
536LIBS = $(ARBDB_LIB) $(SYSLIBS)
537
[8655]538ifdef DARWIN
539        GUI_LIBS = -framework GLUT -framework OpenGL $(LIBS) -lAW -lAWT $(XLIBS)
540else
541        GUI_LIBS = $(LIBS) -lAW -lAWT $(XLIBS)
542endif
543
[1308]544LIBPATH = -L$(ARBHOME)/LIBLINK
[2]545
546DEST_LIB = lib
547DEST_BIN = bin
548
[5872]549AINCLUDES := -I. -I$(ARBHOME)/INCLUDE $(XINCLUDES)
550CPPINCLUDES := -I. -I$(ARBHOME)/INCLUDE $(XINCLUDES)
551MAKEDEPENDFLAGS := -- $(cflags) -- -DARB_OPENGL -I. -Y$(ARBHOME)/INCLUDE
[2]552
[3332]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
[3411]556# work around that hack properly, we define FAKE_VTAB_PTR
[3332]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
[5629]562# -------------------------------
563#     old PTSERVER or PTPAN?
[2649]564
[5629]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
[2649]582
[5629]583ifndef ARCHS_PT_SERVER_LINK
584ARCHS_PT_SERVER_LINK = $(ARCHS_PT_SERVER)
585endif
[5565]586
[5629]587# -------------------------------
588#     List of all Directories
589
[5565]590ARCHS = \
[5629]591                        $(ARCHS_PT_SERVER) \
[5565]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 \
[866]625                        PROBE_COM/server.a \
[2]626                        PROBE_DESIGN/PROBE_DESIGN.a \
[619]627                        PROBE_SET/PROBE_SET.a \
[866]628                        READSEQ/READSEQ.a \
[3494]629                        RNA3D/RNA3D.a \
[866]630                        SECEDIT/SECEDIT.a \
[3494]631                        SEQ_QUALITY/SEQ_QUALITY.a \
[866]632                        SERVERCNTRL/SERVERCNTRL.a \
[3494]633                        SL/SL.a \
[866]634                        STAT/STAT.a \
635                        TOOLS/TOOLS.a \
636                        TREEGEN/TREEGEN.a \
637                        WETC/WETC.a \
638                        WINDOW/libAW.a \
639                        XML/XML.a \
[2]640
[2744]641ARCHS_CLIENT_PROBE = PROBE_COM/client.a
642ARCHS_CLIENT_NAMES = NAMES_COM/client.a
[5223]643ARCHS_MAKEBIN = AISC_MKPTPS/dummy.a AISC/dummy.a
[2]644
[5223]645ARCHS_COMMUNICATION =   NAMES_COM/server.a \
646                        PROBE_COM/server.a
[2]647
[200]648# communication libs need aisc and aisc_mkpts:
649$(ARCHS_COMMUNICATION:.a=.dummy) : $(ARCHS_MAKEBIN:.a=.dummy)
[2]650
651#***************************************************************************************
652#               Individual Programs Section
653#***************************************************************************************
654
655#***********************************    arb_ntree **************************************
656NTREE = bin/arb_ntree
[591]657ARCHS_NTREE = \
[2744]658                $(ARCHS_CLIENT_PROBE) \
[591]659                ARB_GDE/ARB_GDE.a \
660                AWTC/AWTC.a \
661                AWTI/AWTI.a \
662                GENOM/GENOM.a \
[3821]663                GENOM_IMPORT/GENOM_IMPORT.a \
[591]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 \
[3821]669                SEQ_QUALITY/SEQ_QUALITY.a \
[591]670                SERVERCNTRL/SERVERCNTRL.a \
[3821]671                SL/AW_NAME/AW_NAME.a \
672                SL/DB_SCANNER/DB_SCANNER.a \
[4255]673                SL/FILE_BUFFER/FILE_BUFFER.a \
[5805]674                SL/HELIX/HELIX.a \
675                SL/REGEXPR/REGEXPR.a \
[6023]676                SL/TREE_READ/TREE_READ.a \
677                SL/TREE_WRITE/TREE_WRITE.a \
[591]678                STAT/STAT.a \
679                XML/XML.a \
[2]680
[2223]681$(NTREE): $(ARCHS_NTREE:.a=.dummy) NAMES_COM/server.dummy shared_libs
[2744]682        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_NTREE) $(GUI_LIBS) || ( \
683                echo Link $@ ; \
[5223]684                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NTREE) $(GUI_LIBS)" ; \
685                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NTREE) $(GUI_LIBS)  \
[2744]686                )
[591]687
[3429]688#*********************************** arb_rna3d **************************************
689RNA3D = bin/arb_rna3d
690ARCHS_RNA3D = \
691                RNA3D/RNA3D.a \
692
[3458]693$(RNA3D): $(ARCHS_RNA3D:.a=.dummy) shared_libs
694        @echo $@ currently does not work as standalone application
695        false
[3429]696
[2]697#***********************************    arb_edit **************************************
[62]698EDIT = bin/arb_edit
[989]699ARCHS_EDIT = \
[3821]700                NAMES_COM/client.a \
701                SERVERCNTRL/SERVERCNTRL.a \
[989]702                EDIT/EDIT.a \
703                ARB_GDE/ARB_GDE.a \
704                STAT/STAT.a \
705                XML/XML.a \
[3494]706                SL/HELIX/HELIX.a \
707                SL/AW_HELIX/AW_HELIX.a \
[3821]708                SL/AW_NAME/AW_NAME.a \
[989]709
710$(EDIT): $(ARCHS_EDIT:.a=.dummy) shared_libs
[3304]711        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_EDIT) $(GUI_LIBS) || ( \
[2744]712                echo Link $@ ; \
[5223]713                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_EDIT) -lARBDBPP $(GUI_LIBS)" ; \
714                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_EDIT) -lARBDBPP $(GUI_LIBS) ; \
[2744]715                )
[2]716
717#***********************************    arb_edit4 **************************************
718EDIT4 = bin/arb_edit4
[3477]719
[5223]720ARCHS_EDIT4 := \
[989]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 \
[5885]729                SL/FAST_ALIGNER/FAST_ALIGNER.a \
[3494]730                SL/HELIX/HELIX.a \
731                SL/AW_HELIX/AW_HELIX.a \
[3821]732                SL/AW_NAME/AW_NAME.a \
[4844]733                SL/FILE_BUFFER/FILE_BUFFER.a \
[989]734                XML/XML.a \
735
[5223]736ifeq ($(OPENGL),1)
737ARCHS_EDIT4 += RNA3D/RNA3D.a
[3477]738endif
[5877]739LIBS_EDIT4 := $(GL_LIBS)
[3462]740
[5884]741$(EDIT4): $(ARCHS_EDIT4:.a=.dummy) shared_libs $(GL)
[3477]742        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_EDIT4) $(GUI_LIBS) || ( \
[3462]743                echo Link $@ ; \
[5223]744                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_EDIT4) $(GUI_LIBS) $(LIBS_EDIT4)" ; \
745                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_EDIT4) $(GUI_LIBS) $(LIBS_EDIT4) \
[3462]746                )
747
[3954]748#***********************************    arb_pgt **************************************
749
750PGT = bin/arb_pgt
751ARCHS_PGT = \
752                PGT/PGT.a \
753
[5877]754PGT_SYS_LIBS=$(XLIBS) $(TIFFLIBS) $(LIBS)
[3954]755
756$(PGT) : $(ARCHS_PGT:.a=.dummy) shared_libs
757        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_PGT) || ( \
758                echo Link $@ ; \
[5223]759                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PGT) $(PGT_SYS_LIBS)"; \
760                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PGT) $(PGT_SYS_LIBS); \
[3954]761                )
762
763
[2]764#***********************************    arb_wetc **************************************
765WETC = bin/arb_wetc
[989]766ARCHS_WETC = \
767                WETC/WETC.a \
[3494]768                SL/HELIX/HELIX.a \
[989]769                XML/XML.a \
770
771$(WETC): $(ARCHS_WETC:.a=.dummy) shared_libs
[2744]772        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_WETC) $(GUI_LIBS) || ( \
773                echo Link $@ ; \
[5223]774                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_WETC) $(GUI_LIBS)" ; \
775                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_WETC) $(GUI_LIBS) ; \
[2744]776                )
[2]777
778#***********************************    arb_dist **************************************
779DIST = bin/arb_dist
[989]780ARCHS_DIST = \
[2744]781                $(ARCHS_CLIENT_PROBE) \
[989]782                DIST/DIST.a \
783                SERVERCNTRL/SERVERCNTRL.a \
784                CONSENSUS_TREE/CONSENSUS_TREE.a \
785                EISPACK/EISPACK.a \
[3494]786                SL/HELIX/HELIX.a \
[989]787                XML/XML.a \
788
789$(DIST): $(ARCHS_DIST:.a=.dummy) shared_libs
[2744]790        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_DIST) $(GUI_LIBS) || ( \
791                echo Link $@ ; \
[5223]792                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_DIST) $(GUI_LIBS)" ; \
793                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_DIST) $(GUI_LIBS) ; \
[2744]794                )
[2]795
796#***********************************    arb_pars **************************************
[866]797PARSIMONY = bin/arb_pars
[989]798ARCHS_PARSIMONY = \
[3821]799                NAMES_COM/client.a \
800                SERVERCNTRL/SERVERCNTRL.a \
[989]801                PARSIMONY/PARSIMONY.a \
[3494]802                SL/HELIX/HELIX.a \
[3821]803                SL/AW_NAME/AW_NAME.a \
[989]804                XML/XML.a \
805
806$(PARSIMONY): $(ARCHS_PARSIMONY:.a=.dummy) shared_libs
[2744]807        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_PARSIMONY) $(GUI_LIBS) || ( \
808                echo Link $@ ; \
[5223]809                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PARSIMONY) $(GUI_LIBS)" ; \
810                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PARSIMONY) $(GUI_LIBS) ; \
[2744]811                )
[2]812
[866]813#*********************************** arb_treegen **************************************
[8777]814
[866]815TREEGEN = bin/arb_treegen
[989]816ARCHS_TREEGEN = \
817                TREEGEN/TREEGEN.a \
818
[1617]819$(TREEGEN) :  $(ARCHS_TREEGEN:.a=.dummy)
[2744]820        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_TREEGEN) || ( \
821                echo Link $@ ; \
[5223]822                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_TREEGEN)" ; \
823                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_TREEGEN) ; \
[2744]824                )
[2]825
826#***********************************    arb_naligner **************************************
827NALIGNER = bin/arb_naligner
[989]828ARCHS_NALIGNER = \
[3494]829                $(ARCHS_CLIENT_PROBE) \
[989]830                NALIGNER/NALIGNER.a \
831                SERVERCNTRL/SERVERCNTRL.a \
[3494]832                SL/HELIX/HELIX.a \
[989]833
834$(NALIGNER): $(ARCHS_NALIGNER:.a=.dummy) shared_libs
[3494]835        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_NALIGNER) || ( \
[2744]836                echo Link $@ ; \
[5223]837                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NALIGNER) $(LIBS)" ; \
838                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NALIGNER) $(LIBS) \
[2744]839                )
[2]840
841#***********************************    arb_secedit **************************************
842SECEDIT = bin/arb_secedit
[989]843ARCHS_SECEDIT = \
844                SECEDIT/SECEDIT.a \
845                XML/XML.a \
846
847$(SECEDIT):     $(ARCHS_SECEDIT:.a=.dummy) shared_libs
[2744]848        @echo $@ currently does not work as standalone application
849        false
[2]850
851
852#***********************************    arb_phylo **************************************
853PHYLO = bin/arb_phylo
[989]854ARCHS_PHYLO = \
855                PHYLO/PHYLO.a \
[3494]856                SL/HELIX/HELIX.a \
[989]857                XML/XML.a \
858
859$(PHYLO): $(ARCHS_PHYLO:.a=.dummy) shared_libs
[2744]860        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_PHYLO) $(GUI_LIBS) || ( \
861                echo Link $@ ; \
[5223]862                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PHYLO) $(GUI_LIBS)" ; \
863                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PHYLO) $(GUI_LIBS) ; \
[2744]864                )
[2]865
866#***************************************************************************************
867#                                       SERVER SECTION
868#***************************************************************************************
869
870#***********************************    arb_db_server **************************************
871DBSERVER = bin/arb_db_server
[989]872ARCHS_DBSERVER = \
873                DBSERVER/DBSERVER.a \
874                SERVERCNTRL/SERVERCNTRL.a \
875
876$(DBSERVER): $(ARCHS_DBSERVER:.a=.dummy) shared_libs
[3304]877        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_DBSERVER) $(ARBDB_LIB) || ( \
[2744]878                echo Link $@ ; \
[5223]879                echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_DBSERVER) $(ARBDB_LIB) $(SYSLIBS)" ; \
880                $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_DBSERVER) $(ARBDB_LIB) $(SYSLIBS) ; \
[2744]881                )
[2]882
883#***********************************    arb_pt_server **************************************
884PROBE = bin/arb_pt_server
[5629]885ARCHS_PROBE_COMMON = \
[989]886                PROBE_COM/server.a \
[5565]887                SERVERCNTRL/SERVERCNTRL.a \
888                SL/HELIX/HELIX.a \
889
[5629]890ARCHS_PROBE_LINK = \
891                $(ARCHS_PROBE_COMMON) \
892                $(ARCHS_PT_SERVER_LINK) \
[989]893
[5629]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) || ( \
[2744]900                echo Link $@ ; \
[5629]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) ; \
[2744]903                )
[2]904
905#***********************************    arb_name_server **************************************
906NAMES = bin/arb_name_server
[989]907ARCHS_NAMES = \
908                NAMES_COM/server.a \
909                NAMES/NAMES.a \
910                SERVERCNTRL/SERVERCNTRL.a \
911
912$(NAMES): $(ARCHS_NAMES:.a=.dummy) shared_libs
[3304]913        @SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_NAMES) $(ARBDB_LIB) $(ARCHS_CLIENT_NAMES) || ( \
[2744]914                echo Link $@ ; \
[5223]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) ; \
[2744]917                )
[2]918
[5704]919#***********************************    OTHER EXECUTABLES   ********************************************
[989]920
[3494]921ALIV3 = bin/aliv3
[989]922ARCHS_ALIV3 = \
923                ALIV3/ALIV3.a \
[3494]924                SL/HELIX/HELIX.a \
[989]925
926$(ALIV3): $(ARCHS_ALIV3:.a=.dummy) shared_libs
[743]927        @echo $(SEP) Link $@
[5829]928        $(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_ALIV3) $(ARBDB_LIB) $(SYSLIBS)
[2]929
[989]930#***********************************    SHARED LIBRARIES SECTION  **************************************
[2]931
[2223]932shared_libs: dball aw awt
[989]933                @echo -------------------- Updating shared libraries
934                $(MAKE) libs
935
[6038]936addlibs:
937        (perl $(ARBHOME)/SOURCE_TOOLS/provide_libs.pl \
938                                "arbhome=$(ARBHOME)" \
939                                "opengl=$(OPENGL)" \
940                                "link_static=$(LINK_STATIC)" \
941        )
942
[989]943libs:   lib/libARBDB.$(SHARED_LIB_SUFFIX) \
944        lib/libARBDBPP.$(SHARED_LIB_SUFFIX) \
945        lib/libARBDO.$(SHARED_LIB_SUFFIX) \
946        lib/libAW.$(SHARED_LIB_SUFFIX) \
[1459]947        lib/libAWT.$(SHARED_LIB_SUFFIX)
[989]948
949lib/lib%.$(SHARED_LIB_SUFFIX): LIBLINK/lib%.$(SHARED_LIB_SUFFIX)
950        cp $< $@
951
[5223]952# lib/$(MOTIF_LIBNAME):  $(MOTIF_LIBPATH)
953#       cp $< $@
[989]954
[2]955#***************************************************************************************
[6142]956#                       Recursive calls to sub-makefiles
[2]957#***************************************************************************************
[1617]958
[5872]959include SOURCE_TOOLS/export2sub
960
[1617]961%.depends:
962        @cp -p $(@D)/Makefile $(@D)/Makefile.old # save old Makefile
963        @$(MAKE) -C $(@D) -r \
[4632]964                "AUTODEPENDS=1" \
[5872]965                "MAIN=nothing" \
966                "cflags=noCflags" \
[1617]967                depends;
968        @grep "^# DO NOT DELETE" $(@D)/Makefile >/dev/null
969        @cat $(@D)/Makefile \
[2337]970                | SOURCE_TOOLS/fix_depends.pl \
[1617]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
[2]974
[4600]975%.proto:
[4632]976        @$(MAKE) -C $(@D) \
977                "AUTODEPENDS=0" \
[5872]978                "MAIN=nothing" \
979                "cflags=noCflags" \
[4632]980                proto
[4600]981
[4632]982%.clean:
983        @$(MAKE) -C $(@D) \
984                "AUTODEPENDS=0" \
[5872]985                "MAIN=nothing" \
986                "cflags=noCflags" \
[4632]987                clean
988
989# rule to generate main target (normally a library):
[2]990%.dummy:
[5143]991        @( export ID=$$$$; \
[5165]992        (( \
[5143]993            echo "$(SEP) Make everything in $(@D)"; \
994            $(MAKE) -C $(@D) -r \
[4632]995                "AUTODEPENDS=1" \
[5223]996                "MAIN = $(@F:.dummy=.a)" \
997                "cflags = $(cflags) -DIN_ARB_$(subst /,_,$(@D))" \
[5165]998        ) >$(@D).$$ID.log 2>&1 && (cat $(@D).$$ID.log;rm $(@D).$$ID.log)) || (cat $(@D).$$ID.log;rm $(@D).$$ID.log;false))
[2]999
[2223]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
[5143]1012com_probe: PROBE_COM/PROBE_COM.dummy
[5605]1013com_names: NAMES_COM/NAMES_COM.dummy
1014com_all: com_probe com_names
[2223]1015
[5846]1016TOOLS/TOOLS.dummy : shared_libs SERVERCNTRL/SERVERCNTRL.dummy com_probe
[5143]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
[2]1031#***************************************************************************************
1032#                       Short aliases to make targets
1033#***************************************************************************************
1034
[1076]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'
[1938]1048                @echo '  pt     arb_pt_server'
[1076]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
[2520]1078source_doc:
[1138]1079                doxygen
1080
[2]1081mbin:   $(ARCHS_MAKEBIN:.a=.dummy)
[200]1082
[2]1083com:    $(ARCHS_COMMUNICATION:.a=.dummy)
1084
[5166]1085help:   HELP_SOURCE/HELP_SOURCE.dummy
[369]1086
[5166]1087HELP_SOURCE/HELP_SOURCE.dummy: xml menus# need to create some files in GDE-subtree first
[5143]1088
[4690]1089dball:  db dbs db2 dp
[5143]1090db:     ARBDB/libARBDB.dummy
[2]1091dbs:    ARBDBS/libARBDB.dummy
1092db2:    ARBDB2/libARBDB.dummy
[5143]1093dp:     ARBDBPP/libARBDBPP.dummy
1094aw:     WINDOW/libAW.dummy
[2]1095awt:    AWT/libAWT.dummy
[33]1096awtc:   AWTC/AWTC.dummy
[68]1097awti:   AWTI/AWTI.dummy
[2]1098
1099mp:     MULTI_PROBE/MULTI_PROBE.dummy
[5143]1100mg:     MERGE/MERGE.dummy
[26]1101ge:     GENOM/GENOM.dummy
[113]1102prd:    PRIMER_DESIGN/PRIMER_DESIGN.dummy
[2]1103
[3447]1104nt:     menus $(NTREE)
1105ed:     $(EDIT)
[2]1106
[866]1107nal:    $(NALIGNER)
[3447]1108a3:     $(ALIV3)
[2]1109
[3447]1110di:     $(DIST)
1111ph:     $(PHYLO)
1112pa:     $(PARSIMONY)
1113tg:     $(TREEGEN)
[3429]1114
[4844]11153d:     RNA3D/RNA3D.dummy
[3447]1116gl:     GL/GL.dummy
[5143]1117sl:     NAMES_COM/NAMES_COM.dummy
1118        $(MAKE) SL/SL.dummy
[2]1119
[3447]1120ds:     $(DBSERVER)
1121pt:     $(PROBE)
[5143]1122pst:    PROBE_SET/PROBE_SET.dummy
[3447]1123pd:     PROBE_DESIGN/PROBE_DESIGN.dummy
1124na:     $(NAMES)
[5660]1125sq:     SEQ_QUALITY/SEQ_QUALITY.dummy
[2]1126
[5704]1127sec:    SECEDIT/SECEDIT.dummy
[2]1128
[5884]1129e4:     wetc help readseq menus $(EDIT4)
[3447]1130gi:     GENOM_IMPORT/GENOM_IMPORT.dummy
[5884]1131wetc:   $(WETC)
[2]1132
[3954]1133pgt:    $(PGT)
[151]1134xml:    XML/XML.dummy
[5872]1135xmlin:  XML_IMPORT/XML_IMPORT.dummy# broken
[4399]1136templ:  TEMPLATES/TEMPLATES.dummy
[151]1137
[2]1138#********************************************************************************
1139
[5799]1140up: checks
1141        $(MAKE) links
[5761]1142        $(MAKE) -k up_internal
[4559]1143
[5761]1144up_internal: depends proto tags valgrind_update
1145
[4559]1146#********************************************************************************
1147
[5952]1148modified:
1149        SOURCE_TOOLS/touch_modified.pl
1150        $(MAKE) all
1151
1152#********************************************************************************
1153
[5845]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
[5605]1160        $(MAKE) $(ARCHS:.a=.depends) \
1161                        HELP_SOURCE/HELP_SOURCE.depends \
[200]1162
[5714]1163depend: depends
1164
[5845]1165proto_tools:
1166        @echo $(SEP) Building prototyper
1167        $(MAKE) AISC_MKPTPS/AISC_MKPTPS.dummy
[5143]1168
[5843]1169#proto: proto_tools TOOLS/TOOLS.dummy
1170proto: proto_tools
[5845]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 \
[4600]1182
[200]1183#********************************************************************************
1184
[4844]1185valgrind_update:
[5845]1186        @echo $(SEP) Updating for valgrind
1187        $(MAKE) -C SOURCE_TOOLS valgrind_update
[4844]1188
1189#********************************************************************************
1190
[2586]1191TAGFILE=TAGS
1192TAGFILE_TMP=TAGS.tmp
1193
[5845]1194tags:
1195        @echo $(SEP) Updating tags
1196        $(MAKE) tags_$(MACH)
[2649]1197        mv $(TAGFILE_TMP) $(TAGFILE)
[2586]1198
[200]1199tags_LINUX: tags2
1200tags_SUN5: tags1
1201
1202tags1:
[2]1203# first search class definitions
[5223]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`
[2]1206# then append normal tags (headers first)
[5223]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`
[200]1209
1210# if the above tag creation does not work -> try tags2:
[2]1211tags2:
[5223]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`
[2]1214
[200]1215#********************************************************************************
1216
[12]1217links: SOURCE_TOOLS/generate_all_links.stamp
[2]1218
[163]1219SOURCE_TOOLS/generate_all_links.stamp: SOURCE_TOOLS/generate_all_links.sh
[3494]1220        SOURCE_TOOLS/generate_all_links.sh
[12]1221        touch SOURCE_TOOLS/generate_all_links.stamp
1222
[2]1223gde:            GDE/GDE.dummy
[2223]1224GDE:            gde
[31]1225agde:           ARB_GDE/ARB_GDE.dummy
[6065]1226tools:          SL/SL.dummy TOOLS/TOOLS.dummy
[5708]1227convert:        SL/FILE_BUFFER/FILE_BUFFER.dummy shared_libs
[5223]1228        $(MAKE) CONVERTALN/CONVERTALN.dummy
1229
[2]1230readseq:        READSEQ/READSEQ.dummy
1231
1232#***************************************************************************************
1233#                       Some user commands
1234#***************************************************************************************
1235rtc_patch:
1236        rtc_patch_area -so LIBLINK/libRTC8M.so
1237
[1725]1238menus: binlink
[5179]1239        @(( \
[9151]1240                echo "$(SEP) Make GDEHELP"; \
1241                $(MAKE) -C GDEHELP -r all && \
1242                echo "$(SEP) Make GDEHELP [done]"; \
[5179]1243        ) > GDEHELP.log 2>&1 && (cat GDEHELP.log;rm GDEHELP.log)) || (cat GDEHELP.log;rm GDEHELP.log;false)
[2]1244
[2303]1245ifeq ($(DEBUG),1)
1246BIN_TARGET=develall
1247else
1248BIN_TARGET=all
1249endif
1250
1251
[2]1252binlink:
[2303]1253        $(MAKE) -C bin $(BIN_TARGET)
[2]1254
1255bin/arb_%:      DEPOT2/%
1256        cp $< $@
1257bin/%:  DEPOT2/%
1258        cp $< $@
1259
1260
[4218]1261preplib:
[5223]1262        (cd lib;$(MAKE) all)
[369]1263
[4632]1264# ---------------------------------------- perl
[2]1265
[4632]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
[5857]1272        @$(MAKE) testperlscripts
[2]1273
[5857]1274testperlscripts: 
[5878]1275        @$(MAKE) -C PERL_SCRIPTS/test test
[5857]1276
[4632]1277perl_clean:
1278        @$(MAKE) -C PERL2ARB -r -f Makefile.main \
1279                "AUTODEPENDS=0" \
1280                clean
[2142]1281
[4632]1282# ----------------------------------------
[2415]1283
[2]1284wc:
1285        wc `find . -type f \( -name '*.[ch]' -o -name '*.[ch]xx' \) -print`
1286
[5887]1287# ---------------------------------------- check ressources
1288
[6122]1289check_res:
[5887]1290        $(ARBHOME)/SOURCE_TOOLS/check_ressources.pl
1291
[4632]1292# ---------------------------------------- cleaning
1293
[2]1294rmbak:
[5947]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 {} \;
[2]1300
[5672]1301binclean:
[3123]1302        @echo Cleaning bin directory
[2907]1303        find bin -type l -exec rm {} \;
[5672]1304        find bin -type f \! \( -name ".cvsignore" -o -name "Makefile" -o -path "bin/CVS/*" -o -path "bin/.svn/*" \) -exec rm {} \;
[2]1305        cd bin;make all
1306
[2907]1307libclean:
[5672]1308        find $(ARBHOME) -type f \( -name '*.a' ! -type l \) -exec rm -f {} \;
[2907]1309
[5672]1310objclean:
1311        find $(ARBHOME) -type f \( -name '*.o' ! -type l \) -exec rm -f {} \;
1312
[4923]1313clean2: $(ARCHS:.a=.clean) \
[4632]1314                GDEHELP/GDEHELP.clean \
1315                HELP_SOURCE/HELP_SOURCE.clean \
1316                SOURCE_TOOLS/SOURCE_TOOLS.clean \
[4844]1317                bin/bin.clean \
[4632]1318                perl_clean
1319        rm -f *.last_gcc
[2]1320
[4923]1321# links are needed for cleanup
1322clean: links
1323        $(MAKE) clean2
1324
[5672]1325# 'relocated' is about 50% faster than 'rebuild'
[5833]1326reloc_clean: links
[5663]1327        @echo "---------------------------------------- Relocation cleanup"
[5672]1328        $(MAKE) \
1329                perl_clean \
1330                GDEHELP/GDEHELP.clean \
1331                HELP_SOURCE/genhelp/genhelp.clean \
1332                binclean \
1333                libclean \
1334                objclean
[5833]1335
1336relocated: links
1337        $(MAKE) reloc_clean
[5672]1338        @echo "---------------------------------------- and remake"
[5663]1339        $(MAKE) all
1340
[4632]1341# -----------------------------------
[2]1342
[4632]1343rebuild: clean
[2907]1344        $(MAKE) all
[643]1345
[5672]1346relink: binclean libclean
[2907]1347        $(MAKE) all
1348
[4632]1349tarfile: rebuild
[6038]1350        $(MAKE) addlibs
[4632]1351        util/arb_compress
1352
1353tarfile_quick: all
[6038]1354        $(MAKE) addlibs
[4632]1355        util/arb_compress
1356
[5257]1357save: sourcetarfile
1358
1359# test early whether save will work
1360testsave:
1361        @util/arb_srclst.pl >/dev/null
1362
[4632]1363sourcetarfile: rmbak
1364        util/arb_save
1365
[4844]1366save2: rmbak
[5477]1367        util/arb_save ignore
[4844]1368
[5947]1369save_test: rmbak
1370        @echo "Testing source list.."
1371        @util/arb_srclst.pl > /dev/null
1372
[6772]1373rel_minor:
[5477]1374        touch SOURCE_TOOLS/inc_minor.stamp
1375        $(MAKE) do_release
1376
[6772]1377rel_major:
[5477]1378        touch SOURCE_TOOLS/inc_major.stamp
1379        $(MAKE) do_release
1380
1381do_release: 
[6772]1382        @echo Building release
[4452]1383        @echo PATH=$(PATH)
1384        @echo ARBHOME=$(ARBHOME)
[4319]1385        -rm arb.tgz arbsrc.tgz
[5257]1386        $(MAKE) testsave
[5552]1387        $(MAKE) templ # auto upgrades version early
[9166]1388        $(MAKE) tarfile
1389        $(MAKE) sourcetarfile
[3346]1390
[4319]1391release_quick:
1392        -rm arb.tgz arbsrc.tgz
[9166]1393        $(MAKE) tarfile_quick
1394        $(MAKE) sourcetarfile
[4319]1395
[1878]1396# --------------------------------------------------------------------------------
1397
1398# basic arb libraries
[4218]1399arbbasic: links preplib
[534]1400                $(MAKE) arbbasic2
[2]1401
[5872]1402arbbasic2: templ mbin com sl $(GL)
[3635]1403
[1878]1404# shared arb libraries
1405arbshared: dball aw dp awt
[2]1406
[1878]1407# needed arb applications
[5884]1408arbapplications: nt pa ed e4 wetc pt na nal di ph ds pgt
[866]1409
[1878]1410# optionally things (no real harm for ARB if any of them fails):
[5872]1411arbxtras: tg pst a3 xmlin
[866]1412
[1878]1413tryxtras:
[5143]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!" ) )
[866]1419
[5223]1420arb: arbbasic
1421        $(MAKE) arbshared arbapplications help
[866]1422
[5143]1423all: checks
[5188]1424        $(MAKE) links
[5143]1425        $(MAKE) com
1426        $(MAKE) arb
1427        $(MAKE) libs
[5223]1428        $(MAKE) convert tools gde readseq
[5143]1429        $(MAKE) binlink
[5223]1430        $(MAKE) perl
[5143]1431        -$(MAKE) tryxtras
[5947]1432ifeq ("$(DEVELOPER)","SAVETEST")
1433        $(MAKE) save_test
1434endif
[5143]1435        @echo $(SEP)
1436        @echo "made 'all' with success."
1437        @echo "to start arb enter 'arb'"
[1878]1438
Note: See TracBrowser for help on using the repository browser.