# =============================================================== #
# #
# File : Makefile #
# #
# Institute of Microbiology (Technical University Munich) #
# http://www.arb-home.de/ #
# #
# =============================================================== #
# -----------------------------------------------------
# The ARB Makefile is aware of the following defines:
#
# BUILDHOST_64=0/1 1=>compile on 64 bit platform (defaults to ARB_64)
# DEVELOPER=name special compilation (values: ANY,RELEASE,your name)
# OPENGL=0/1 whether OPENGL is available
#
# -----------------------------------------------------
# ARB Makefile and ARB source code are aware of the following defines:
#
# $(MACH) name of the machine (LINUX,SUN4,SUN5,HP,SGI or DIGITAL; see config.makefile)
# DEBUG compiles the DEBUG sections
# DEBUG_GRAPHICS all X-graphics are flushed immediately (for debugging)
# ARB_64=0/1 1=>compile 64 bit version
#
# -----------------------------------------------------
# The ARB source code is aware of the following defines:
#
# NDEBUG doesn't compile the DEBUG sections
# DEVEL_$(DEVELOPER) developer-dependent flag (enables you to have private sections in code)
# DEVELOPER='ANY' (default setting) will be ignored
# configurable in config.makefile
#
# -----------------------------------------------------
# Read configuration
include config.makefile
ifeq ($(LD_LIBRARY_PATH),'')
LD_LIBRARY_PATH:=${ARBHOME}/lib
endif
FORCEMASK = umask 002
# ---------------------- [basic compiler setting]
ifdef DARWIN
# GCC and GPP now set in the Portfile
else
GCC:=$(CC)
GPP:=$(CXX)
# to use clang-static-analyzer , call make like this:
# setenv CLANG_STATIC_CHECKER 1 ; scan-build make -j5 build
ifeq ($(CLANG_STATIC_CHECKER),1)
CCC_ANALYZER_CPLUSPLUS=1
endif
endif
# ---------------------- compiler version detection
# supported compiler versions:
ALLOWED_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
ALLOWED_GCC_4xx_VERSIONS=\
4.0.0 4.0.1 4.0.2 4.0.3 \
4.1.1 4.1.2 4.1.3 \
4.2.0 4.2.1 4.2.3 4.2.4 \
4.3.1 4.3.2 4.3.3 \
4.4.1 4.4.3 \
4.6.1 \
4.7.1 \
5.5.0
ALLOWED_GCC_VERSIONS=$(ALLOWED_GCC_3xx_VERSIONS) $(ALLOWED_GCC_4xx_VERSIONS)
GCC_VERSION_FOUND=$(shell $(ARBHOME)/SOURCE_TOOLS/arb_gcc_version.pl)
GCC_VERSION_ALLOWED=$(strip $(subst ___,,$(foreach version,$(ALLOWED_GCC_VERSIONS),$(findstring ___$(version)___,___$(GCC_VERSION_FOUND)___))))
USING_GCC_3XX=$(strip $(foreach version,$(ALLOWED_GCC_3xx_VERSIONS),$(findstring $(version),$(GCC_VERSION_ALLOWED))))
USING_GCC_4XX=$(strip $(foreach version,$(ALLOWED_GCC_4xx_VERSIONS),$(findstring $(version),$(GCC_VERSION_ALLOWED))))
#---------------------- define special directories for non standard builds
ifdef DARWIN
OSX_FW:=/System/Library/Frameworks
OSX_FW_OPENGL:=$(OSX_FW)/OpenGL.framework/Versions/A/Libraries
OSX_FW_GLUT:=$(OSX_FW)/GLUT.framework/Versions/A/Libraries
OSX_FW_IMAGEIO:=$(OSX_FW)/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources
endif
#----------------------
ifdef DARWIN
LINK_STATIC=1# link static
else
LINK_STATIC=0# link dynamically
endif
shared_cflags :=# flags for shared lib compilation
lflags :=# linker flags
extended_warnings :=# warning flags for C and C++-compiler
extended_cpp_warnings :=# warning flags for C++-compiler only
ifeq ($(DEBUG),0)
dflags := -DNDEBUG
cflags := -O4# compiler flags (C and C++)
ifndef DARWIN
lflags += -O99# linker flags
endif
endif
ifeq ($(DEBUG),1)
dflags := -DDEBUG
cflags := -O0 -g -g3 -ggdb -ggdb3
# cflags := -O2 -g -g3 -ggdb -ggdb3 # use this for callgrind (force inlining)
ifndef DARWIN
lflags += -g
endif
POST_COMPILE := 2>&1 | $(ARBHOME)/SOURCE_TOOLS/postcompile.pl
# Enable several warnings
extended_warnings := -Wwrite-strings -Wunused -Wno-aggregate-return -Wshadow
extended_cpp_warnings := -Wnon-virtual-dtor -Wreorder -Wpointer-arith
ifneq ('$(USING_GCC_3XX)','')
extended_cpp_warnings += -Wdisabled-optimization -Wmissing-format-attribute
extended_cpp_warnings += -Wmissing-noreturn # -Wfloat-equal
endif
ifneq ('$(USING_GCC_4XX)','')
# extended_cpp_warnings += -Wwhatever
endif
ifeq ($(DEBUG_GRAPHICS),1)
dflags += -DDEBUG_GRAPHICS
endif
endif
#---------------------- developer
ifneq ($(DEVELOPER),ANY) # ANY=default setting (skip all developer specific code)
ifdef dflags
dflags += -DDEVEL_$(DEVELOPER)# activate developer/release specific code
endif
endif
#---------------------- 32 or 64 bit
ifndef ARB_64
ARB_64=0#default to 32bit
endif
ifndef BUILDHOST_64
BUILDHOST_64:=$(ARB_64)# assume build host is same as version (see config.makefile)
endif
ifeq ($(ARB_64),1)
dflags += -DARB_64 #-fPIC
lflags +=
shared_cflags += -fPIC
ifeq ($(BUILDHOST_64),1)
# build 64-bit ARB version on 64-bit host
CROSS_LIB:=# empty = autodetect below
ifdef DARWIN
cflags += -arch x86_64
lflags += -arch x86_64
endif
else
# build 64-bit ARB version on 32-bit host
CROSS_LIB:=/lib64
cflags += -m64
lflags += -m64 -m elf_x86_64
endif
else
ifeq ($(BUILDHOST_64),1)
# build 32-bit ARB version on 64-bit host
CROSS_LIB:=# empty = autodetect below
cflags += -m32
lflags += -m32 -m elf_i386
else
# build 32-bit ARB version on 32-bit host
CROSS_LIB:=/lib
endif
endif
ifeq ('$(CROSS_LIB)','')
# autodetect libdir
ifeq ($(ARB_64),1)
CROSS_LIB:=`(test -d /lib64 && echo lib64) || echo lib`
else
CROSS_LIB:=`(test -d /lib32 && echo lib32) || echo lib`
endif
endif
#---------------------- other flags
dflags += -D$(MACH) # define machine
ifdef DARWIN
shared_cflags += -fno-common
else
dflags += $(shell getconf LFS_CFLAGS)
endif
cflags += -pipe
cflags += -fmessage-length=0# don't wrap compiler output
cflags += -funit-at-a-time
cflags += -fPIC
#---------------------- X11 location
ifdef DARWIN
XHOME:=$(PREFIX)
else
XHOME:=/usr/X11R6
endif
XINCLUDES:=-I$(XHOME)/include
ifdef DARWIN
XINCLUDES += -I$(OSX_FW)/GLUT.framework/Headers -I$(OSX_FW)/OpenGL.framework/Headers -I$(OSX_SDK)/usr/include/krb5
XLIBS := -L$(XHOME)/lib -lXm -lpng -lz -lXt -lX11 -lXext -lXp -lXmu -lXi
XLIBS += -Wl,-dylib_file,$(OSX_FW_OPENGL)/libGL.dylib:$(OSX_FW_OPENGL)/libGL.dylib
XLIBS += -Wl,-dylib_file,$(OSX_FW_OPENGL)/libGLU.dylib:$(OSX_FW_OPENGL)/libGLU.dylib
else
XLIBS:=-L$(XHOME)/$(CROSS_LIB) -lXm -lXpm -lXt -lXext -lX11
endif
#---------------------- open GL
ifeq ($(OPENGL),1)
cflags += -DARB_OPENGL # activate OPENGL code
GL := gl # this is the name of the OPENGL base target
GL_LIB := -lGL -L$(ARBHOME)/GL/glAW -lglAW
ifdef DEBIAN
GL_LIB += -lpthread
endif
GL_PNGLIBS := -L$(ARBHOME)/GL/glpng -lglpng_arb -lpng
GLEWLIB := -lGLEW -lGLw
ifdef DARWIN
GLUTLIB := -glut
else
GLUTLIB := -lglut
endif
GL_LIBS := $(GL_LIB) $(GLEWLIB) $(GLUTLIB) $(GL_PNGLIBS)
else
GL_LIBS:=# no opengl -> no libs
GL:=# don't build ARB openGL libs
endif
#---------------------- tiff lib:
TIFFLIBS := -ltiff
#---------------------- basic libs:
SYSLIBS:=
ifdef DARWIN
SYSLIBS += -lstdc++
else
SYSLIBS += -lm
endif
#---------------------- include symbols?
ifeq ($(TRACESYM),1)
ifdef DARWIN
cdynamic =
ldynamic =
else
cdynamic = -rdynamic -Wl,--export-dynamic
ldynamic = --export-dynamic
endif
endif
# -------------------------------------------------------------------------
# Don't put any machine/version/etc conditionals below!
# (instead define variables above)
# -------------------------------------------------------------------------
cflags += -W -Wall $(dflags) $(extended_warnings) $(cdynamic)
cppflags := $(extended_cpp_warnings)
ifeq ($(DEVELOPER),RALF)
HAVE_GNUPP0X=`SOURCE_TOOLS/requireVersion.pl 4.3 $(GCC_VERSION_FOUND)`
ifeq ($(HAVE_GNUPP0X),1)
# ensure compatibility with upcoming C++ standard
cppflags += -std=gnu++0x
endif
endif
# compiler settings:
ACC := $(GCC)# compile C
CPP := $(GPP) $(cppflags)# compile C++
ACCLIB := $(ACC) $(shared_cflags)# compile C (shared libs)
CPPLIB := $(CPP) $(shared_cflags)# compile C++ (shared libs)
LINK_STATIC_LIB := ld $(lflags) $(ldynamic) -r -o# link static lib
LINK_EXECUTABLE := $(GPP) $(lflags) $(cdynamic) -o# link executable (c++)
ifeq ($(LINK_STATIC),1)
SHARED_LIB_SUFFIX = a# static lib suffix
LINK_SHARED_LIB := $(LINK_STATIC_LIB)
else
SHARED_LIB_SUFFIX = so# shared lib suffix
LINK_SHARED_LIB := $(GPP) $(lflags) $(cdynamic) -shared -o# link shared lib
endif
# other used tools
CTAGS := etags
ifdef DARWIN
XMKMF := $(PREFIX)/bin/xmkmf
else
XMKMF := /usr/bin/X11/xmkmf
endif
MAKEDEPEND_PLAIN = makedepend
MAKEDEPEND = $(FORCEMASK);$(MAKEDEPEND_PLAIN)
SEP:=--------------------------------------------------------------------------------
# delete variables unused below
lflags:=
# -------------------------
# Main arb targets:
# -------------------------
first_target:
$(MAKE) checks
@echo $(SEP)
@echo 'Main targets:'
@echo ''
@echo ' all - Compile ARB + TOOLs + and copy shared libs + link foreign software'
@echo ' (That is most likely the target you want)'
@echo ''
@echo ' clean - remove generated files ("SUBDIR/SUBDIR.clean" to clean only SUBDIR)'
@echo ' rebuild - clean + all'
@echo ' relink - remove all binaries and relink them from objects'
@echo ''
@echo 'Some often used sub targets (make all makes them all):'
@echo ''
@echo ' arb - Just compile ARB (but none of the integrated tools)'
@echo ' menus - create GDEHELP/ARB_GDEmenus from GDEHELP/ARB_GDEmenus.source'
@echo ' perl - Compile the PERL XSUBS into lib/ARB.so and create links in lib to perl'
@echo ' binlink - Create all links in the bin directory'
@echo ''
@echo 'Development targets:'
@echo ''
@echo ' depends - create or update dependencies ("SUBDIR/SUBDIR.depends" to update only SUBDIR)'
@echo ' proto - create or update prototypes ("SUBDIR/SUBDIR.proto" to update only SUBDIR)'
@echo ' tags - create tags for xemacs'
@echo ' rmbak - remove all "*%" and cores'
@echo ' show - show available shortcuts (AKA subtargets)'
@echo ' up - shortcut for depends+proto+tags'
@echo ' modified - rebuild files modified in svn checkout (touches files!)'
@echo ''
@echo 'Internal maintenance:'
@echo ''
@echo ' rel_minor - build a release (increases minor version number)'
@echo ' rel_major - build a release (increases MAJOR version number)'
@echo ' tarfile - make rebuild and create arb version tarfile ("tarfile_quick" to skip rebuild)'
@echo ' save - save all basic ARB sources into arbsrc_DATE'
@echo ' rtc_patch - create LIBLINK/libRTC8M.so (SOLARIS ONLY)'
@echo ' source_doc - create doxygen documentation'
@echo ' relocated - rebuild partly (use when you have relocated ARBHOME)'
@echo ' check_res - check ressource usage'
@echo ''
@echo $(SEP)
@echo ''
# auto-generate config.makefile:
CONFIG_MAKEFILE_FOUND=$(wildcard config.makefile)
config.makefile : config.makefile.template
@echo --------------------------------------------------------------------------------
ifeq ($(strip $(CONFIG_MAKEFILE_FOUND)),)
@cp $< $@
@echo '$(ARBHOME)/$@:1: has been generated.'
@echo 'Please edit $@ to configure your system!'
@echo --------------------------------------------------------------------------------
@false
else
@echo '$(ARBHOME)/$<:1: is more recent than'
@echo '$(ARBHOME)/$@:1:'
@ls -al config.makefile*
@echo --------------------------------------------------------------------------------
@echo "Updating $@ (if this fails, check manually)"
SOURCE_TOOLS/update_config_makefile.pl
@echo "Sucessfully updated $@"
@echo --------------------------------------------------------------------------------
@ls -al config.makefile*
@echo --------------------------------------------------------------------------------
@echo "Diff to your old config.makefile:"
@echo --------------------------------------------------------------------------------
-diff $@.bak $@
@echo --------------------------------------------------------------------------------
endif
# check if everything is configured correctly
check_DEVELOPER:
ifndef DEVELOPER
@echo 'config.makefile:1: DEVELOPER not defined'
@false
endif
check_DEBUG:
ifndef dflags
@echo 'config.makefile:1: DEBUG has to be defined. Valid values are 0 and 1'
@false
endif
check_ARB_64:
ifndef ARB_64
@echo 'config.makefile:1: ARB_64 has to be defined. Valid values are 0 and 1'
@false
endif
# ---------------------------------------- check gcc version
check_same_GCC_VERSION:
$(ARBHOME)/SOURCE_TOOLS/check_same_gcc_version.pl $(GCC_VERSION_ALLOWED)
check_GCC_VERSION:
@echo 'GCC version check:'
@echo " - Your version is '$(GCC_VERSION_FOUND)'"
ifeq ('$(GCC_VERSION_ALLOWED)', '')
@echo ' - This version is not in the list of supported gcc-versions:'
@$(foreach version,$(ALLOWED_GCC_VERSIONS),echo ' * $(version)';)
@echo ' - You may either ..'
@echo ' - add your version to ALLOWED_GCC_VERSIONS in the Makefile and try it out or'
@echo ' - switch to one of the allowed versions (see arb_README_gcc.txt for installing'
@echo ' a different version of gcc)'
@echo ''
@false
else
@echo " - Supported gcc version '$(GCC_VERSION_ALLOWED)' detected - fine!"
@echo ''
$(MAKE) check_same_GCC_VERSION
endif
GCC_WITH_VTABLE_AFTER_CLASS=#occurred only with no longer supported $(ALLOWED_GCC_295_VERSIONS)
HAVE_GCC_WITH_VTABLE_AFTER_CLASS=$(strip $(foreach version,$(GCC_WITH_VTABLE_AFTER_CLASS),$(findstring $(version),$(GCC_VERSION_ALLOWED))))
# depending on the version of gcc the location of the vtable pointer differs.
ifeq ('$(HAVE_GCC_WITH_VTABLE_AFTER_CLASS)', '')
VTABLE_INFRONTOF_CLASS=1
else
VTABLE_INFRONTOF_CLASS=0
endif
#---------------------- check ARBHOME
# use arb_INSTALL.txt to determine whether ARBHOME points to correct directory
ARB_INSTALL_FOUND=$(wildcard $(ARBHOME)/arb_INSTALL.txt)
check_ARBHOME:
ifeq ($(strip $(ARB_INSTALL_FOUND)),)
@echo ------------------------------------------------------------
@echo "ARBHOME is set to '$(ARBHOME)'"
@echo "The environment variable ARBHOME has to point to the top arb source directory."
@echo "If you use bash enter:"
@echo " export ARBHOME='`pwd`'"
@echo ------------------------------------------------------------
@false
endif
ARB_PATH_SET=$(findstring $(ARBHOME)/bin,$(PATH))
check_PATH: check_ARBHOME
ifeq ($(strip $(ARB_PATH_SET)),)
@echo ------------------------------------------------------------
@echo "The environment variable PATH has to contain $(ARBHOME)/bin"
@echo "If you use bash enter:"
@echo ' export PATH=$$ARBHOME/bin:$$PATH'
@echo ------------------------------------------------------------
@false
endif
check_TOOLS:
@util/arb_check_build_env.pl \
"$(ACC)" \
"$(CPP)" \
"$(GPP)" \
"$(ACCLIB)" \
"$(CPPLIB)" \
"$(XMKMF)" \
"$(MAKEDEPEND_PLAIN)" \
"$(LINK_SHARED_LIB)" \
"$(LINK_SHARED_LIB)" \
check_ENVIRONMENT : check_PATH check_TOOLS
check_tabs: check_setup
ifeq ($(DEBUG),1)
@SOURCE_TOOLS/tabBrake.pl
endif
force_tab_check:
@touch -t 198001010000 SOURCE_TOOLS/tabBrake.stamp
@$(MAKE) check_tabs
# ---------------------
check_setup: check_ENVIRONMENT check_DEBUG check_ARB_64 check_DEVELOPER check_GCC_VERSION
@echo Your setup seems to be ok.
checks: check_setup check_tabs
# end test section ------------------------------
ARBDB_LIB=-lARBDB
ARBDBPP_LIB=-lARBDBPP
LIBS = $(ARBDB_LIB) $(SYSLIBS)
ifdef DARWIN
GUI_LIBS = -framework GLUT -framework OpenGL $(LIBS) -lAW -lAWT $(XLIBS)
else
GUI_LIBS = $(LIBS) -lAW -lAWT $(XLIBS)
endif
LIBPATH = -L$(ARBHOME)/LIBLINK
DEST_LIB = lib
DEST_BIN = bin
AINCLUDES := -I. -I$(ARBHOME)/INCLUDE $(XINCLUDES)
CPPINCLUDES := -I. -I$(ARBHOME)/INCLUDE $(XINCLUDES)
MAKEDEPENDFLAGS := -- $(cflags) -- -DARB_OPENGL -I. -Y$(ARBHOME)/INCLUDE
ifeq ($(VTABLE_INFRONTOF_CLASS),1)
# Some code in ARB depends on the location of the vtable pointer
# (it does a cast from class AP_tree to struct GBT_TREE). In order to
# work around that hack properly, we define FAKE_VTAB_PTR
# if the vtable is located at the beginning of class.
# We are really sorry for that hack.
cflags:=$(cflags) -DFAKE_VTAB_PTR=char
endif
# -------------------------------
# old PTSERVER or PTPAN?
ifeq ($(PTPAN),1)
# PTPAN only libs
ARCHS_PT_SERVER = \
ptpan/PROBE.a
else
ifeq ($(PTPAN),2)
# special mode to compile both servers (developers only!)
ARCHS_PT_SERVER = \
ptpan/PROBE.a \
PROBE/PROBE.a
ARCHS_PT_SERVER_LINK = PROBE/PROBE.a # default to old ptserver
else
# PT-server only libs
ARCHS_PT_SERVER = \
PROBE/PROBE.a
endif
endif
ifndef ARCHS_PT_SERVER_LINK
ARCHS_PT_SERVER_LINK = $(ARCHS_PT_SERVER)
endif
# -------------------------------
# List of all Directories
ARCHS = \
$(ARCHS_PT_SERVER) \
AISC/dummy.a \
AISC_MKPTPS/dummy.a \
ALIV3/ALIV3.a \
ARBDB/libARBDB.a \
ARBDB2/libARBDB.a \
ARBDBPP/libARBDBPP.a \
ARBDBS/libARBDB.a \
ARB_GDE/ARB_GDE.a \
AWT/libAWT.a \
AWTC/AWTC.a \
AWTI/AWTI.a \
CONSENSUS_TREE/CONSENSUS_TREE.a \
CONVERTALN/CONVERTALN.a \
DBSERVER/DBSERVER.a \
DIST/DIST.a \
EDIT/EDIT.a \
EDIT4/EDIT4.a \
EISPACK/EISPACK.a \
GDE/GDE.a \
GENOM/GENOM.a \
GENOM_IMPORT/GENOM_IMPORT.a \
GL/GL.a \
ISLAND_HOPPING/ISLAND_HOPPING.a \
MERGE/MERGE.a \
MULTI_PROBE/MULTI_PROBE.a \
NALIGNER/NALIGNER.a \
NAMES/NAMES.a \
NAMES_COM/server.a \
NTREE/NTREE.a \
PARSIMONY/PARSIMONY.a \
PGT/PGT.a \
PHYLO/PHYLO.a \
PRIMER_DESIGN/PRIMER_DESIGN.a \
PROBE_COM/server.a \
PROBE_DESIGN/PROBE_DESIGN.a \
PROBE_SET/PROBE_SET.a \
READSEQ/READSEQ.a \
RNA3D/RNA3D.a \
SECEDIT/SECEDIT.a \
SEQ_QUALITY/SEQ_QUALITY.a \
SERVERCNTRL/SERVERCNTRL.a \
SL/SL.a \
STAT/STAT.a \
TOOLS/TOOLS.a \
TREEGEN/TREEGEN.a \
WETC/WETC.a \
WINDOW/libAW.a \
XML/XML.a \
ARCHS_CLIENT_PROBE = PROBE_COM/client.a
ARCHS_CLIENT_NAMES = NAMES_COM/client.a
ARCHS_MAKEBIN = AISC_MKPTPS/dummy.a AISC/dummy.a
ARCHS_COMMUNICATION = NAMES_COM/server.a \
PROBE_COM/server.a
# communication libs need aisc and aisc_mkpts:
$(ARCHS_COMMUNICATION:.a=.dummy) : $(ARCHS_MAKEBIN:.a=.dummy)
#***************************************************************************************
# Individual Programs Section
#***************************************************************************************
#*********************************** arb_ntree **************************************
NTREE = bin/arb_ntree
ARCHS_NTREE = \
$(ARCHS_CLIENT_PROBE) \
ARB_GDE/ARB_GDE.a \
AWTC/AWTC.a \
AWTI/AWTI.a \
GENOM/GENOM.a \
GENOM_IMPORT/GENOM_IMPORT.a \
MERGE/MERGE.a \
MULTI_PROBE/MULTI_PROBE.a \
NTREE/NTREE.a \
PRIMER_DESIGN/PRIMER_DESIGN.a \
PROBE_DESIGN/PROBE_DESIGN.a \
SEQ_QUALITY/SEQ_QUALITY.a \
SERVERCNTRL/SERVERCNTRL.a \
SL/AW_NAME/AW_NAME.a \
SL/DB_SCANNER/DB_SCANNER.a \
SL/FILE_BUFFER/FILE_BUFFER.a \
SL/HELIX/HELIX.a \
SL/REGEXPR/REGEXPR.a \
SL/TREE_READ/TREE_READ.a \
SL/TREE_WRITE/TREE_WRITE.a \
STAT/STAT.a \
XML/XML.a \
$(NTREE): $(ARCHS_NTREE:.a=.dummy) NAMES_COM/server.dummy shared_libs
@SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_NTREE) $(GUI_LIBS) || ( \
echo Link $@ ; \
echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NTREE) $(GUI_LIBS)" ; \
$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NTREE) $(GUI_LIBS) \
)
#*********************************** arb_rna3d **************************************
RNA3D = bin/arb_rna3d
ARCHS_RNA3D = \
RNA3D/RNA3D.a \
$(RNA3D): $(ARCHS_RNA3D:.a=.dummy) shared_libs
@echo $@ currently does not work as standalone application
false
#*********************************** arb_edit **************************************
EDIT = bin/arb_edit
ARCHS_EDIT = \
NAMES_COM/client.a \
SERVERCNTRL/SERVERCNTRL.a \
EDIT/EDIT.a \
ARB_GDE/ARB_GDE.a \
STAT/STAT.a \
XML/XML.a \
SL/HELIX/HELIX.a \
SL/AW_HELIX/AW_HELIX.a \
SL/AW_NAME/AW_NAME.a \
$(EDIT): $(ARCHS_EDIT:.a=.dummy) shared_libs
@SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_EDIT) $(GUI_LIBS) || ( \
echo Link $@ ; \
echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_EDIT) -lARBDBPP $(GUI_LIBS)" ; \
$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_EDIT) -lARBDBPP $(GUI_LIBS) ; \
)
#*********************************** arb_edit4 **************************************
EDIT4 = bin/arb_edit4
ARCHS_EDIT4 := \
NAMES_COM/client.a \
AWTC/AWTC.a \
EDIT4/EDIT4.a \
SECEDIT/SECEDIT.a \
SERVERCNTRL/SERVERCNTRL.a \
STAT/STAT.a \
ARB_GDE/ARB_GDE.a \
ISLAND_HOPPING/ISLAND_HOPPING.a \
SL/FAST_ALIGNER/FAST_ALIGNER.a \
SL/HELIX/HELIX.a \
SL/AW_HELIX/AW_HELIX.a \
SL/AW_NAME/AW_NAME.a \
SL/FILE_BUFFER/FILE_BUFFER.a \
XML/XML.a \
ifeq ($(OPENGL),1)
ARCHS_EDIT4 += RNA3D/RNA3D.a
endif
LIBS_EDIT4 := $(GL_LIBS)
$(EDIT4): $(ARCHS_EDIT4:.a=.dummy) shared_libs $(GL)
@SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_EDIT4) $(GUI_LIBS) || ( \
echo Link $@ ; \
echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_EDIT4) $(GUI_LIBS) $(LIBS_EDIT4)" ; \
$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_EDIT4) $(GUI_LIBS) $(LIBS_EDIT4) \
)
#*********************************** arb_pgt **************************************
PGT = bin/arb_pgt
ARCHS_PGT = \
PGT/PGT.a \
PGT_SYS_LIBS=$(XLIBS) $(TIFFLIBS) $(LIBS)
$(PGT) : $(ARCHS_PGT:.a=.dummy) shared_libs
@SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_PGT) || ( \
echo Link $@ ; \
echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PGT) $(PGT_SYS_LIBS)"; \
$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PGT) $(PGT_SYS_LIBS); \
)
#*********************************** arb_wetc **************************************
WETC = bin/arb_wetc
ARCHS_WETC = \
WETC/WETC.a \
SL/HELIX/HELIX.a \
XML/XML.a \
$(WETC): $(ARCHS_WETC:.a=.dummy) shared_libs
@SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_WETC) $(GUI_LIBS) || ( \
echo Link $@ ; \
echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_WETC) $(GUI_LIBS)" ; \
$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_WETC) $(GUI_LIBS) ; \
)
#*********************************** arb_dist **************************************
DIST = bin/arb_dist
ARCHS_DIST = \
$(ARCHS_CLIENT_PROBE) \
DIST/DIST.a \
SERVERCNTRL/SERVERCNTRL.a \
CONSENSUS_TREE/CONSENSUS_TREE.a \
EISPACK/EISPACK.a \
SL/HELIX/HELIX.a \
XML/XML.a \
$(DIST): $(ARCHS_DIST:.a=.dummy) shared_libs
@SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_DIST) $(GUI_LIBS) || ( \
echo Link $@ ; \
echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_DIST) $(GUI_LIBS)" ; \
$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_DIST) $(GUI_LIBS) ; \
)
#*********************************** arb_pars **************************************
PARSIMONY = bin/arb_pars
ARCHS_PARSIMONY = \
NAMES_COM/client.a \
SERVERCNTRL/SERVERCNTRL.a \
PARSIMONY/PARSIMONY.a \
SL/HELIX/HELIX.a \
SL/AW_NAME/AW_NAME.a \
XML/XML.a \
$(PARSIMONY): $(ARCHS_PARSIMONY:.a=.dummy) shared_libs
@SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_PARSIMONY) $(GUI_LIBS) || ( \
echo Link $@ ; \
echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PARSIMONY) $(GUI_LIBS)" ; \
$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PARSIMONY) $(GUI_LIBS) ; \
)
#*********************************** arb_treegen **************************************
TREEGEN = bin/arb_treegen
ARCHS_TREEGEN = \
TREEGEN/TREEGEN.a \
$(TREEGEN) : $(ARCHS_TREEGEN:.a=.dummy)
@SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_TREEGEN) || ( \
echo Link $@ ; \
echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_TREEGEN)" ; \
$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_TREEGEN) ; \
)
#*********************************** arb_naligner **************************************
NALIGNER = bin/arb_naligner
ARCHS_NALIGNER = \
$(ARCHS_CLIENT_PROBE) \
NALIGNER/NALIGNER.a \
SERVERCNTRL/SERVERCNTRL.a \
SL/HELIX/HELIX.a \
$(NALIGNER): $(ARCHS_NALIGNER:.a=.dummy) shared_libs
@SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_NALIGNER) || ( \
echo Link $@ ; \
echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NALIGNER) $(LIBS)" ; \
$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NALIGNER) $(LIBS) \
)
#*********************************** arb_secedit **************************************
SECEDIT = bin/arb_secedit
ARCHS_SECEDIT = \
SECEDIT/SECEDIT.a \
XML/XML.a \
$(SECEDIT): $(ARCHS_SECEDIT:.a=.dummy) shared_libs
@echo $@ currently does not work as standalone application
false
#*********************************** arb_phylo **************************************
PHYLO = bin/arb_phylo
ARCHS_PHYLO = \
PHYLO/PHYLO.a \
SL/HELIX/HELIX.a \
XML/XML.a \
$(PHYLO): $(ARCHS_PHYLO:.a=.dummy) shared_libs
@SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_PHYLO) $(GUI_LIBS) || ( \
echo Link $@ ; \
echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PHYLO) $(GUI_LIBS)" ; \
$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PHYLO) $(GUI_LIBS) ; \
)
#***************************************************************************************
# SERVER SECTION
#***************************************************************************************
#*********************************** arb_db_server **************************************
DBSERVER = bin/arb_db_server
ARCHS_DBSERVER = \
DBSERVER/DBSERVER.a \
SERVERCNTRL/SERVERCNTRL.a \
$(DBSERVER): $(ARCHS_DBSERVER:.a=.dummy) shared_libs
@SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_DBSERVER) $(ARBDB_LIB) || ( \
echo Link $@ ; \
echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_DBSERVER) $(ARBDB_LIB) $(SYSLIBS)" ; \
$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_DBSERVER) $(ARBDB_LIB) $(SYSLIBS) ; \
)
#*********************************** arb_pt_server **************************************
PROBE = bin/arb_pt_server
ARCHS_PROBE_COMMON = \
PROBE_COM/server.a \
SERVERCNTRL/SERVERCNTRL.a \
SL/HELIX/HELIX.a \
ARCHS_PROBE_LINK = \
$(ARCHS_PROBE_COMMON) \
$(ARCHS_PT_SERVER_LINK) \
ARCHS_PROBE_DEPEND = \
$(ARCHS_PROBE_COMMON) \
$(ARCHS_PT_SERVER) \
$(PROBE): $(ARCHS_PROBE_DEPEND:.a=.dummy) shared_libs
@SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_PROBE_LINK) $(ARBDB_LIB) $(ARCHS_CLIENT_PROBE) || ( \
echo Link $@ ; \
echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PROBE_LINK) $(ARBDB_LIB) $(ARCHS_CLIENT_PROBE) $(SYSLIBS)" ; \
$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_PROBE_LINK) $(ARBDB_LIB) $(ARCHS_CLIENT_PROBE) $(SYSLIBS) ; \
)
#*********************************** arb_name_server **************************************
NAMES = bin/arb_name_server
ARCHS_NAMES = \
NAMES_COM/server.a \
NAMES/NAMES.a \
SERVERCNTRL/SERVERCNTRL.a \
$(NAMES): $(ARCHS_NAMES:.a=.dummy) shared_libs
@SOURCE_TOOLS/binuptodate.pl $@ $(ARCHS_NAMES) $(ARBDB_LIB) $(ARCHS_CLIENT_NAMES) || ( \
echo Link $@ ; \
echo "$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NAMES) $(ARBDB_LIB) $(ARCHS_CLIENT_NAMES) $(SYSLIBS)" ; \
$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_NAMES) $(ARBDB_LIB) $(ARCHS_CLIENT_NAMES) $(SYSLIBS) ; \
)
#*********************************** OTHER EXECUTABLES ********************************************
ALIV3 = bin/aliv3
ARCHS_ALIV3 = \
ALIV3/ALIV3.a \
SL/HELIX/HELIX.a \
$(ALIV3): $(ARCHS_ALIV3:.a=.dummy) shared_libs
@echo $(SEP) Link $@
$(LINK_EXECUTABLE) $@ $(LIBPATH) $(ARCHS_ALIV3) $(ARBDB_LIB) $(SYSLIBS)
#*********************************** SHARED LIBRARIES SECTION **************************************
shared_libs: dball aw awt
@echo -------------------- Updating shared libraries
$(MAKE) libs
addlibs:
(perl $(ARBHOME)/SOURCE_TOOLS/provide_libs.pl \
"arbhome=$(ARBHOME)" \
"opengl=$(OPENGL)" \
"link_static=$(LINK_STATIC)" \
)
libs: lib/libARBDB.$(SHARED_LIB_SUFFIX) \
lib/libARBDBPP.$(SHARED_LIB_SUFFIX) \
lib/libARBDO.$(SHARED_LIB_SUFFIX) \
lib/libAW.$(SHARED_LIB_SUFFIX) \
lib/libAWT.$(SHARED_LIB_SUFFIX)
lib/lib%.$(SHARED_LIB_SUFFIX): LIBLINK/lib%.$(SHARED_LIB_SUFFIX)
cp $< $@
# lib/$(MOTIF_LIBNAME): $(MOTIF_LIBPATH)
# cp $< $@
#***************************************************************************************
# Recursive calls to sub-makefiles
#***************************************************************************************
include SOURCE_TOOLS/export2sub
%.depends:
@cp -p $(@D)/Makefile $(@D)/Makefile.old # save old Makefile
@$(MAKE) -C $(@D) -r \
"AUTODEPENDS=1" \
"MAIN=nothing" \
"cflags=noCflags" \
depends;
@grep "^# DO NOT DELETE" $(@D)/Makefile >/dev/null
@cat $(@D)/Makefile \
| SOURCE_TOOLS/fix_depends.pl \
>$(@D)/Makefile.2
@mv $(@D)/Makefile.old $(@D)/Makefile # restore old Makefile
@$(ARBHOME)/SOURCE_TOOLS/mv_if_diff $(@D)/Makefile.2 $(@D)/Makefile # update Makefile if changed
%.proto:
@$(MAKE) -C $(@D) \
"AUTODEPENDS=0" \
"MAIN=nothing" \
"cflags=noCflags" \
proto
%.clean:
@$(MAKE) -C $(@D) \
"AUTODEPENDS=0" \
"MAIN=nothing" \
"cflags=noCflags" \
clean
# rule to generate main target (normally a library):
%.dummy:
@( export ID=$$$$; \
(( \
echo "$(SEP) Make everything in $(@D)"; \
$(MAKE) -C $(@D) -r \
"AUTODEPENDS=1" \
"MAIN = $(@F:.dummy=.a)" \
"cflags = $(cflags) -DIN_ARB_$(subst /,_,$(@D))" \
) >$(@D).$$ID.log 2>&1 && (cat $(@D).$$ID.log;rm $(@D).$$ID.log)) || (cat $(@D).$$ID.log;rm $(@D).$$ID.log;false))
# Additional dependencies for subtargets:
comtools: $(ARCHS_MAKEBIN:.a=.dummy)
PROBE_COM/PROBE_COM.dummy : comtools
PROBE_COM/server.dummy : comtools
PROBE_COM/client.dummy : comtools
NAMES_COM/NAMES_COM.dummy : comtools
NAMES_COM/server.dummy : comtools
NAMES_COM/client.dummy : comtools
com_probe: PROBE_COM/PROBE_COM.dummy
com_names: NAMES_COM/NAMES_COM.dummy
com_all: com_probe com_names
TOOLS/TOOLS.dummy : shared_libs SERVERCNTRL/SERVERCNTRL.dummy com_probe
AWTC/AWTC.dummy : com_names com_probe
NAMES/NAMES.dummy : com_names
SL/AW_NAME/AW_NAME.dummy : com_names
PROBE/PROBE.dummy : com_probe
MULTI_PROBE/MULTI_PROBE.dummy : com_probe
PROBE_DESIGN/PROBE_DESIGN.dummy : com_probe
NALIGNER/NALIGNER.dummy : com_probe
ARB_GDE/ARB_GDE.dummy : proto_tools
#***************************************************************************************
# Short aliases to make targets
#***************************************************************************************
show:
@echo $(SEP)
@echo 'Aliases for often needed targets:'
@echo ''
@echo ' executables:'
@echo ''
@echo ' nt arb_ntree'
@echo ' e4 arb_edit4 (includes secedit)'
@echo ' di arb_dist'
@echo ' ph arb_phylo'
@echo ' pa arb_parsimony'
@echo ' tg arb_treegen'
@echo ' ds arb_dbserver'
@echo ' pt arb_pt_server'
@echo ' na arb_name_server'
@echo ''
@echo ' libraries:'
@echo ''
@echo ' com communication libraries'
@echo ' dball ARB database (all versions: db dbs and db2)'
@echo ' aw GUI lib'
@echo ' awt GUI toolkit'
@echo ' awtc general purpose library'
@echo ' awti import/export library'
@echo ' mp multi probe library'
@echo ' ge genome library'
@echo ' pd probe design lib'
@echo ' prd primer design lib'
@echo ''
@echo ' other targets:'
@echo ''
@echo ' help recompile help files'
@echo ' tools make small tools used by arb'
@echo ''
@echo ' foreign targets:'
@echo ''
@echo ' gde GDE'
@echo ' agde ARB_GDE'
@echo ''
@echo 'for other targets inspect $(ARBHOME)/Makefile'
@echo ''
@echo $(SEP)
source_doc:
doxygen
mbin: $(ARCHS_MAKEBIN:.a=.dummy)
com: $(ARCHS_COMMUNICATION:.a=.dummy)
help: HELP_SOURCE/HELP_SOURCE.dummy
HELP_SOURCE/HELP_SOURCE.dummy: xml menus# need to create some files in GDE-subtree first
dball: db dbs db2 dp
db: ARBDB/libARBDB.dummy
dbs: ARBDBS/libARBDB.dummy
db2: ARBDB2/libARBDB.dummy
dp: ARBDBPP/libARBDBPP.dummy
aw: WINDOW/libAW.dummy
awt: AWT/libAWT.dummy
awtc: AWTC/AWTC.dummy
awti: AWTI/AWTI.dummy
mp: MULTI_PROBE/MULTI_PROBE.dummy
mg: MERGE/MERGE.dummy
ge: GENOM/GENOM.dummy
prd: PRIMER_DESIGN/PRIMER_DESIGN.dummy
nt: menus $(NTREE)
ed: $(EDIT)
nal: $(NALIGNER)
a3: $(ALIV3)
di: $(DIST)
ph: $(PHYLO)
pa: $(PARSIMONY)
tg: $(TREEGEN)
3d: RNA3D/RNA3D.dummy
gl: GL/GL.dummy
sl: NAMES_COM/NAMES_COM.dummy
$(MAKE) SL/SL.dummy
ds: $(DBSERVER)
pt: $(PROBE)
pst: PROBE_SET/PROBE_SET.dummy
pd: PROBE_DESIGN/PROBE_DESIGN.dummy
na: $(NAMES)
sq: SEQ_QUALITY/SEQ_QUALITY.dummy
sec: SECEDIT/SECEDIT.dummy
e4: wetc help readseq menus $(EDIT4)
gi: GENOM_IMPORT/GENOM_IMPORT.dummy
wetc: $(WETC)
pgt: $(PGT)
xml: XML/XML.dummy
xmlin: XML_IMPORT/XML_IMPORT.dummy# broken
templ: TEMPLATES/TEMPLATES.dummy
#********************************************************************************
up: checks
$(MAKE) links
$(MAKE) -k up_internal
up_internal: depends proto tags valgrind_update
#********************************************************************************
modified:
SOURCE_TOOLS/touch_modified.pl
$(MAKE) all
#********************************************************************************
depends:
$(MAKE) comtools
@echo "$(SEP) Partially build com interface"
$(MAKE) PROBE_COM/PROBE_COM.depends
$(MAKE) NAMES_COM/NAMES_COM.depends
@echo $(SEP) Updating dependencies
$(MAKE) $(ARCHS:.a=.depends) \
HELP_SOURCE/HELP_SOURCE.depends \
depend: depends
proto_tools:
@echo $(SEP) Building prototyper
$(MAKE) AISC_MKPTPS/AISC_MKPTPS.dummy
#proto: proto_tools TOOLS/TOOLS.dummy
proto: proto_tools
@echo $(SEP) Updating prototypes
$(MAKE) \
AISC/AISC.proto \
ARBDB/ARBDB.proto \
ARB_GDE/ARB_GDE.proto \
CONVERTALN/CONVERTALN.proto \
NTREE/NTREE.proto \
$(ARCHS_PT_SERVER:.a=.proto) \
SERVERCNTRL/SERVERCNTRL.proto \
AISC_COM/AISC_COM.proto \
GDE/GDE.proto \
#********************************************************************************
valgrind_update:
@echo $(SEP) Updating for valgrind
$(MAKE) -C SOURCE_TOOLS valgrind_update
#********************************************************************************
TAGFILE=TAGS
TAGFILE_TMP=TAGS.tmp
tags:
@echo $(SEP) Updating tags
$(MAKE) tags_$(MACH)
mv $(TAGFILE_TMP) $(TAGFILE)
tags_LINUX: tags2
tags_SUN5: tags1
tags1:
# first search class definitions
$(CTAGS) -f $(TAGFILE_TMP) --language=none "--regex=/^[ \t]*class[ \t]+\([^ \t]+\)/" `find . -name '*.[ch]xx' -type f`
$(CTAGS) -f $(TAGFILE_TMP) --append --language=none "--regex=/\([^ \t]+\)::/" `find . -name '*.[ch]xx' -type f`
# then append normal tags (headers first)
$(CTAGS) -f $(TAGFILE_TMP) --append --members ARBDB/*.h `find . -name '*.[h]xx' -type f`
$(CTAGS) -f $(TAGFILE_TMP) --append ARBDB/*.c `find . -name '*.[c]xx' -type f`
# if the above tag creation does not work -> try tags2:
tags2:
ctags -f $(TAGFILE_TMP) -e --c-types=cdt --sort=no `find . \( -name '*.[ch]xx' -o -name "*.[ch]" \) -type f | grep -v -i perl5`
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`
#********************************************************************************
links: SOURCE_TOOLS/generate_all_links.stamp
SOURCE_TOOLS/generate_all_links.stamp: SOURCE_TOOLS/generate_all_links.sh
SOURCE_TOOLS/generate_all_links.sh
touch SOURCE_TOOLS/generate_all_links.stamp
gde: GDE/GDE.dummy
GDE: gde
agde: ARB_GDE/ARB_GDE.dummy
tools: SL/SL.dummy TOOLS/TOOLS.dummy
convert: SL/FILE_BUFFER/FILE_BUFFER.dummy shared_libs
$(MAKE) CONVERTALN/CONVERTALN.dummy
readseq: READSEQ/READSEQ.dummy
#***************************************************************************************
# Some user commands
#***************************************************************************************
rtc_patch:
rtc_patch_area -so LIBLINK/libRTC8M.so
menus: binlink
@(( \
echo "$(SEP) Make GDEHELP"; \
$(MAKE) -C GDEHELP -r all && \
echo "$(SEP) Make GDEHELP [done]"; \
) > GDEHELP.log 2>&1 && (cat GDEHELP.log;rm GDEHELP.log)) || (cat GDEHELP.log;rm GDEHELP.log;false)
ifeq ($(DEBUG),1)
BIN_TARGET=develall
else
BIN_TARGET=all
endif
binlink:
$(MAKE) -C bin $(BIN_TARGET)
bin/arb_%: DEPOT2/%
cp $< $@
bin/%: DEPOT2/%
cp $< $@
preplib:
(cd lib;$(MAKE) all)
# ---------------------------------------- perl
perl: tools
@echo $(SEP) Make everything in PERL2ARB
@$(MAKE) -C PERL2ARB -r -f Makefile.main \
"AUTODEPENDS=1" \
"dflags=$(dflags)" \
all
@$(MAKE) testperlscripts
testperlscripts:
@$(MAKE) -C PERL_SCRIPTS/test test
perl_clean:
@$(MAKE) -C PERL2ARB -r -f Makefile.main \
"AUTODEPENDS=0" \
clean
# ----------------------------------------
wc:
wc `find . -type f \( -name '*.[ch]' -o -name '*.[ch]xx' \) -print`
# ---------------------------------------- check ressources
check_res:
$(ARBHOME)/SOURCE_TOOLS/check_ressources.pl
# ---------------------------------------- cleaning
rmbak:
@echo "Cleanup:"
@find . \( -name '*%' -o -name '*.bak' -o -name 'core' \
-o -name 'infile' -o -name treefile -o -name outfile \
-o -name 'gde*_?' -o -name '*~' \) \
-exec rm -v {} \;
binclean:
@echo Cleaning bin directory
find bin -type l -exec rm {} \;
find bin -type f \! \( -name ".cvsignore" -o -name "Makefile" -o -path "bin/CVS/*" -o -path "bin/.svn/*" \) -exec rm {} \;
cd bin;make all
libclean:
find $(ARBHOME) -type f \( -name '*.a' ! -type l \) -exec rm -f {} \;
objclean:
find $(ARBHOME) -type f \( -name '*.o' ! -type l \) -exec rm -f {} \;
clean2: $(ARCHS:.a=.clean) \
GDEHELP/GDEHELP.clean \
HELP_SOURCE/HELP_SOURCE.clean \
SOURCE_TOOLS/SOURCE_TOOLS.clean \
bin/bin.clean \
perl_clean
rm -f *.last_gcc
# links are needed for cleanup
clean: links
$(MAKE) clean2
# 'relocated' is about 50% faster than 'rebuild'
reloc_clean: links
@echo "---------------------------------------- Relocation cleanup"
$(MAKE) \
perl_clean \
GDEHELP/GDEHELP.clean \
HELP_SOURCE/genhelp/genhelp.clean \
binclean \
libclean \
objclean
relocated: links
$(MAKE) reloc_clean
@echo "---------------------------------------- and remake"
$(MAKE) all
# -----------------------------------
rebuild: clean
$(MAKE) all
relink: binclean libclean
$(MAKE) all
tarfile: rebuild
$(MAKE) addlibs
util/arb_compress
tarfile_quick: all
$(MAKE) addlibs
util/arb_compress
save: sourcetarfile
# test early whether save will work
testsave:
@util/arb_srclst.pl >/dev/null
sourcetarfile: rmbak
util/arb_save
save2: rmbak
util/arb_save ignore
save_test: rmbak
@echo "Testing source list.."
@util/arb_srclst.pl > /dev/null
rel_minor:
touch SOURCE_TOOLS/inc_minor.stamp
$(MAKE) do_release
rel_major:
touch SOURCE_TOOLS/inc_major.stamp
$(MAKE) do_release
do_release:
@echo Building release
@echo PATH=$(PATH)
@echo ARBHOME=$(ARBHOME)
-rm arb.tgz arbsrc.tgz
$(MAKE) testsave
$(MAKE) templ # auto upgrades version early
$(MAKE) tarfile
$(MAKE) sourcetarfile
release_quick:
-rm arb.tgz arbsrc.tgz
$(MAKE) tarfile_quick
$(MAKE) sourcetarfile
# --------------------------------------------------------------------------------
# basic arb libraries
arbbasic: links preplib
$(MAKE) arbbasic2
arbbasic2: templ mbin com sl $(GL)
# shared arb libraries
arbshared: dball aw dp awt
# needed arb applications
arbapplications: nt pa ed e4 wetc pt na nal di ph ds pgt
# optionally things (no real harm for ARB if any of them fails):
arbxtras: tg pst a3 xmlin
tryxtras:
@echo $(SEP)
@( $(MAKE) arbxtras || ( \
echo $(SEP) ;\
echo "One of the optional tools failed to build (see error somewhere above)" ;\
echo "ARB will work nevertheless!" ) )
arb: arbbasic
$(MAKE) arbshared arbapplications help
all: checks
$(MAKE) links
$(MAKE) com
$(MAKE) arb
$(MAKE) libs
$(MAKE) convert tools gde readseq
$(MAKE) binlink
$(MAKE) perl
-$(MAKE) tryxtras
ifeq ("$(DEVELOPER)","SAVETEST")
$(MAKE) save_test
endif
@echo $(SEP)
@echo "made 'all' with success."
@echo "to start arb enter 'arb'"