File: makefile-internal

package info (click to toggle)
mothur 1.44.3-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 13,328 kB
  • sloc: cpp: 158,612; makefile: 119; sh: 10
file content (129 lines) | stat: -rw-r--r-- 3,560 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129

USEREADLINE ?= yes
USEBOOST ?= yes
USEHDF5 ?= yes
USEGSL ?= yes
LOGFILE_NAME ?= yes
VERSION = "\"1.44.1\""

# Optimize to level 3:
    CXXFLAGS += -O3 -std=c++11
    LDFLAGS += -std=c++11 -pthreads

ifeq  ($(strip $(LOGFILE_NAME)),yes)
    LOGFILE_NAME="\"mothur.logfile\""
endif


#if you are a mac user use the following line
#TARGET_ARCH += -arch x86_64

#if you using cygwin to build Windows the following line
#CXX = x86_64-w64-mingw32-g++
#CC = x86_64-w64-mingw32-g++
#TARGET_ARCH += -m64 -static

#if you are a linux user use the following line
#CXXFLAGS += -mtune=generic


CXXFLAGS += -DRELEASE_DATE=${RELEASE_DATE} -DVERSION=${VERSION}

# if you do not want to use the readline library, set this to no.
# make sure you have the library installed
ifeq  ($(strip $(USEREADLINE)),yes)
    CXXFLAGS += -DUSE_READLINE
    LIBS += -lreadline
endif


#The boost libraries allow you to read gz files.
ifeq  ($(strip $(USEBOOST)),yes)
    #statically link so the boost install is not required on users machine
    BOOST_INCLUDE_DIR="/usr/local/include"
    BOOST_LIBRARY_DIR="/usr/local/lib"

    #windows paths
    #BOOST_INCLUDE_DIR="/usr/x86_64-w64-mingw32/sys-root/mingw/include"
    #BOOST_LIBRARY_DIR="/usr/x86_64-w64-mingw32/sys-root/mingw/lib"

    CXXFLAGS += -DUSE_BOOST -I ${BOOST_INCLUDE_DIR}

    LIBS += ${BOOST_LIBRARY_DIR}/libboost_iostreams.a
    LIBS += ${BOOST_LIBRARY_DIR}/libboost_filesystem.a

    #if mac
    LIBS += -lz

    #if linux or windows
    #LIBS += ${BOOST_LIBRARY_DIR}/libz.a
endif

#User specified HDF5 library
ifeq  ($(strip $(USEHDF5)),yes)

    HDF5_INCLUDE_DIR="/usr/local/include"
    HDF5_LIBRARY_DIR="/usr/local/lib"

    LDFLAGS +=  -L ${HDF5_LIBRARY_DIR} 
    LIBS += ${HDF5_LIBRARY_DIR}/libhdf5_hl_cpp.a
    LIBS += ${HDF5_LIBRARY_DIR}/libhdf5_cpp.a
    LIBS += ${HDF5_LIBRARY_DIR}/libhdf5_hl.a
    LIBS += ${HDF5_LIBRARY_DIR}/libhdf5.a

    CXXFLAGS += -DUSE_HDF5 -I ${HDF5_INCLUDE_DIR}
endif

#User specified GSL library
ifeq  ($(strip $(USEGSL)),yes)
    GSL_LIBRARY_DIR ?= "\"/usr/local/gsl/lib\""
    GSL_INCLUDE_DIR ?= "\"/usr/local/gsl/include\""

#windows paths
#GSL_INCLUDE_DIR="/usr/x86_64-w64-mingw32/sys-root/mingw/include" 
#GSL_LIBRARY_DIR="/usr/x86_64-w64-mingw32/sys-root/mingw/lib"


    LDFLAGS += -L ${GSL_LIBRARY_DIR}
    LIBS += ${GSL_LIBRARY_DIR}/libgsl.a
    LIBS += ${GSL_LIBRARY_DIR}/libgslcblas.a

    CXXFLAGS += -DUSE_GSL -I ${GSL_INCLUDE_DIR}

endif

#
# INCLUDE directories for mothur
#
#
    VPATH=source/calculators:source/chimera:source/classifier:source/clearcut:source/commands:source/communitytype:source/datastructures:source/engines:source/metastats:source/read:source/svm
    skipUchime := source/uchime_src/
    subdirs :=  $(sort $(dir $(filter-out  $(skipUchime), $(wildcard source/*/))))
    subDirIncludes = $(patsubst %, -I %, $(subdirs))
    subDirLinking =  $(patsubst %, -L%, $(subdirs))
    CXXFLAGS += -I. $(subDirIncludes)
    LDFLAGS += $(subDirLinking)


#
# Get the list of all .cpp files, rename to .o files
#
    OBJECTS=$(patsubst %.cpp,%.o,$(wildcard $(addsuffix *.cpp,$(subdirs))))
    OBJECTS+=$(patsubst %.c,%.o,$(wildcard $(addsuffix *.c,$(subdirs))))
    OBJECTS+=$(patsubst %.cpp,%.o,$(wildcard *.cpp))
    OBJECTS+=$(patsubst %.c,%.o,$(wildcard *.c))

mothur : $(OBJECTS)
    $(CXX) $(LDFLAGS) $(TARGET_ARCH) -o $@ $(OBJECTS) $(LIBS)
    strip mothur

%.o : %.c %.h
    $(COMPILE.c) $(OUTPUT_OPTION) $<
%.o : %.cpp %.h
    $(COMPILE.cpp) $(OUTPUT_OPTION) $<
%.o : %.cpp %.hpp
    $(COMPILE.cpp) $(OUTPUT_OPTION) $<


clean :
    @rm -f $(OBJECTS)