Skip to content
Commits on Source (4)
# Compiled Object files
*.o
# Compiled Static libraries
*.a
# Executables
src/long_seq_tm_test
src/ntdpal
src/ntthal
src/oligotm
src/primer3_core
src/primer3_masker
src/*.exe
# Temporary Test Files
test/primer1_list_tmp/*
test/primer1_th_list_tmp/*
test/primer_list_tmp/*
test/th-w-other-tasks_list_tmp/*
test/*.err
test/*.tmp
test/*.tmp2
test/*.valg
test/*.vg
test/primer_global_err/*.tmp
test/primer_global_err/*.tmp2
test/primer_global_err/*.valg
test/primer_global_err/*.vg
# Individual Test Files
test/hyb_probe_only.for
test/hyb_probe_only.int
test/left_only.for
test/pcr_primers.for
test/pcr_primers.rev
test/pcr_primers_and_io.for
test/pcr_primers_and_io.int
test/pcr_primers_and_io.rev
test/right_only.for
test/right_only.rev
test/syntax01.for
test/syntax01.int
test/syntax01.rev
test/syntax02.for
test/syntax02.int
test/syntax02.rev
test/syntax03.for
test/syntax03.int
test/syntax03.rev
test/syntax04.for
test/syntax04.int
test/syntax04.rev
test/syntax07.for
test/syntax07.int
test/syntax07.rev
test/syntax09.for
test/syntax09.int
test/syntax09.rev
test/syntax10.for
test/syntax10.int
test/syntax10.rev
.DS_Store
Design PCR primers from DNA sequence. Widely used (190k Google hits for "primer3").
From mispriming libraries to sequence quality data to the generation of internal
oligos, primer3 does it. C&perl.
Installing
----------
`sudo apt-get install -y build-essential g++ cmake git-all`
`git clone https://github.com/primer3-org/primer3.git primer3`
`cd primer3/src`
`make`
`make test`
Run Primer3
-----------
`./primer3_core ../example`
Read the complete Primer3 manual
--------------------------------
[Primer3 Manual](http://primer3.org/primer3_manual.htm)
or see /src/primer3_manual.htm
#!/usr/bin/perl
# ======================================================================
# (c) Copyright 1996,1997,1998,1999,2000,2001,2004,2006,2007,2008,2010,
# 2011,2012,2016
# Whitehead Institute for Biomedical Research, Steve Rozen,
# Andreas Untergasser and Helen Skaletsky
# All rights reserved.
#
# This file is part of the primer3 suite.
#
# The primer3 suite is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# This software is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this file (file gpl-2.0.txt in the source distribution); if
# not, write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# ======================================================================
use warnings 'all';
use strict;
if (-d "test") {
if (-d "test/primer_list_tmp") {
print "Folder excists: test/primer_list_tmp\n";
} else {
mkdir "test/primer_list_tmp";
print "Created folder: test/primer_list_tmp\n";
}
if (-d "test/primer1_list_tmp") {
print "Folder excists: test/primer1_list_tmp\n";
} else {
mkdir "test/primer1_list_tmp";
print "Created folder: test/primer1_list_tmp\n";
}
if (-d "test/primer1_th_list_tmp") {
print "Folder excists: test/primer1_th_list_tmp\n";
} else {
mkdir "test/primer1_th_list_tmp";
print "Created folder: test/primer1_th_list_tmp\n";
}
if (-d "test/th-w-other-tasks_list_tmp") {
print "Folder excists: test/th-w-other-tasks_list_tmp\n";
} else {
mkdir "test/th-w-other-tasks_list_tmp";
print "Created folder: test/th-w-other-tasks_list_tmp\n";
}
}
else {
print "Run this script in the Primer3 root folder\n";
}
primer3 (2.4.0-1) UNRELEASED; urgency=medium
* New upstream version
* Secure URI in watch file
-- Andreas Tille <tille@debian.org> Wed, 21 Feb 2018 09:01:27 +0100
primer3 (2.3.7-5) unstable; urgency=medium
* d/upstream/metadata:
......
version=4
http://sf.net/primer3/primer3-[-src]*([\d.]*)\.(?:tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz)))
https://sf.net/primer3/primer3-[-src]*([\d.]*)\.(?:tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz)))
SEQUENCE_ID=example
SEQUENCE_TEMPLATE=GTAGTCAGTAGACNATGACNACTGACGATGCAGACNACACACACACACACAGCACACAGGTATTAGTGGGCCATTCGATCCCGACCCAAATCGATAGCTACGATGACG
SEQUENCE_TARGET=37,21
PRIMER_TASK=pick_detection_primers
SEQUENCE_TEMPLATE=tattggtgaagcctcaggtagtgcagaatatgaaacttcaggatccagtgggcatgctactggtagtgctgccggccttacaggcattatggtggcaaagtcgacagagttta
PRIMER_TASK=generic
PRIMER_PICK_LEFT_PRIMER=1
PRIMER_PICK_INTERNAL_OLIGO=1
PRIMER_PICK_INTERNAL_OLIGO=0
PRIMER_PICK_RIGHT_PRIMER=1
PRIMER_OPT_SIZE=18
PRIMER_MIN_SIZE=15
PRIMER_MAX_SIZE=21
PRIMER_MAX_NS_ACCEPTED=1
PRIMER_PRODUCT_SIZE_RANGE=75-100
P3_FILE_FLAG=1
SEQUENCE_INTERNAL_EXCLUDED_REGION=37,21
PRIMER_OPT_SIZE=20
PRIMER_MIN_SIZE=18
PRIMER_MAX_SIZE=22
PRIMER_PRODUCT_SIZE_RANGE=75-150
PRIMER_EXPLAIN_FLAG=1
=
Currently, directory kmer_lists contains TEST files (because of the size of
list files).
To download kmer-lists or to make ones, please visit
http://primer3.ut.ee/lists.htm or homepage of "FastGT package version
4.0" at http://bioinfo.ut.ee/?page_id=167&lang=en
By default Primer3 uses kmer-lists with k-mer size 11 and size 16. File name
format should be for human homo_sapiens_11.list and homo_sapiens_16.list
(species_name_wordlenght.list)
\ No newline at end of file
Primer3 File - http://primer3.org
P3_FILE_TYPE=settings
PRIMER_FIRST_BASE_INDEX=1
PRIMER_TASK=generic
P3_FILE_ID=Settings for PCR amplification followed by Sanger sequencing on both strands using PCR primers
# 2012 01 29
PRIMER_MIN_THREE_PRIME_DISTANCE=3
PRIMER_EXPLAIN_FLAG=1
# Put something reasonable for PRIMER_MISPRIMING_LIBRARY depending
# on the species you are designing primers for.
PRIMER_MISPRIMING_LIBRARY=
PRIMER_MAX_LIBRARY_MISPRIMING=12.00
PRIMER_PAIR_MAX_LIBRARY_MISPRIMING=20.00
PRIMER_PRODUCT_SIZE_RANGE=300-400 401-500 501-600 601-700 701-850 851-1001
PRIMER_NUM_RETURN=5
PRIMER_MAX_END_STABILITY=9.0
#
PRIMER_MAX_SELF_ANY_TH=45.00
PRIMER_MAX_SELF_END_TH=35.00
PRIMER_PAIR_MAX_COMPL_ANY_TH=45.00
PRIMER_PAIR_MAX_COMPL_END_TH=35.00
PRIMER_MAX_HAIRPIN_TH=24.00
PRIMER_MAX_TEMPLATE_MISPRIMING_TH=40.00
PRIMER_PAIR_MAX_TEMPLATE_MISPRIMING_TH=70.00
PRIMER_MIN_SIZE=18
PRIMER_OPT_SIZE=20
PRIMER_MAX_SIZE=23
PRIMER_MIN_TM=57.0
PRIMER_OPT_TM=59.0
PRIMER_MAX_TM=62.0
PRIMER_PAIR_MAX_DIFF_TM=5.0
# PRIMER_TM_FORMULA=1 means use the SantaLucia parameters (Proc Natl Acad Sci 95:1460-65)
PRIMER_TM_FORMULA=1
# PRIMER_SALT_CORRECTIONS=1 means used the salt correction in SantaLucia et al 1998
PRIMER_SALT_CORRECTIONS=1
PRIMER_SALT_MONOVALENT=50.0
PRIMER_INTERNAL_SALT_MONOVALENT=50.0
# Millimolar conc of MgCl+2
PRIMER_SALT_DIVALENT=1.5
PRIMER_INTERNAL_SALT_DIVALENT=1.5
# Millimolar conc of dNTPs
PRIMER_DNTP_CONC=0.6
# Correct, 0, since we are assuming
# no dNTP's present when hybridizing.
PRIMER_INTERNAL_DNTP_CONC=0.0
PRIMER_DNA_CONC=50.0
PRIMER_INTERNAL_DNA_CONC=50.0
PRIMER_THERMODYNAMIC_OLIGO_ALIGNMENT=1
PRIMER_THERMODYNAMIC_TEMPLATE_ALIGNMENT=1
PRIMER_THERMODYNAMIC_PARAMETERS_PATH=/data/public/tools/primer3/primer3/trunk/src/primer3_config/
PRIMER_LOWERCASE_MASKING=0
#
PRIMER_MIN_GC=30.0
PRIMER_MAX_GC=70.0
PRIMER_MAX_NS_ACCEPTED=0
PRIMER_MAX_POLY_X=4
PRIMER_OUTSIDE_PENALTY=0
PRIMER_GC_CLAMP=0
PRIMER_LIBERAL_BASE=1
PRIMER_LIB_AMBIGUITY_CODES_CONSENSUS=0
PRIMER_PICK_ANYWAY=1
PRIMER_WT_TM_LT=1.0
PRIMER_WT_TM_GT=1.0
PRIMER_WT_SIZE_LT=1.0
PRIMER_WT_SIZE_GT=1.0
PRIMER_WT_GC_PERCENT_LT=0.0
PRIMER_WT_GC_PERCENT_GT=0.0
PRIMER_WT_SELF_ANY_TH=0.0
PRIMER_WT_SELF_END_TH=0.0
PRIMER_WT_HAIRPIN_TH=0.0
PRIMER_WT_NUM_NS=0.0
PRIMER_WT_LIBRARY_MISPRIMING=0.0
PRIMER_WT_SEQ_QUAL=0.0
PRIMER_WT_END_QUAL=0.0
PRIMER_WT_POS_PENALTY=0.0
PRIMER_WT_END_STABILITY=0.0
PRIMER_WT_TEMPLATE_MISPRIMING_TH=0.0
PRIMER_PAIR_WT_PRODUCT_SIZE_LT=0.0
PRIMER_PAIR_WT_PRODUCT_SIZE_GT=0.0
PRIMER_PAIR_WT_PRODUCT_TM_LT=0.0
PRIMER_PAIR_WT_PRODUCT_TM_GT=0.0
PRIMER_PAIR_WT_DIFF_TM=0.0
PRIMER_PAIR_WT_COMPL_ANY_TH=0.0
PRIMER_PAIR_WT_COMPL_END_TH=0.0
PRIMER_PAIR_WT_LIBRARY_MISPRIMING=0.0
PRIMER_PAIR_WT_PR_PENALTY=1.0
PRIMER_PAIR_WT_IO_PENALTY=0.0
PRIMER_PAIR_WT_TEMPLATE_MISPRIMING=0.0
=
Primer3 File - http://primer3.sourceforge.net
Primer3 File - http://primer3.org
P3_FILE_TYPE=settings
P3_FILE_ID=Default settings of primer3 version 1.1.4
......
Primer3 File - http://primer3.sourceforge.net
Primer3 File - http://primer3.org
P3_FILE_TYPE=settings
P3_FILE_ID=Default settings of primer3web version 0.4.0
......
Primer3 File - http://primer3.sourceforge.net
Primer3 File - http://primer3.org
P3_FILE_TYPE=settings
PRIMER_FIRST_BASE_INDEX=1
......
Primer3 File - http://primer3.sourceforge.net
Primer3 File - http://primer3.org
P3_FILE_TYPE=settings
PRIMER_FIRST_BASE_INDEX=1
......
......@@ -43,7 +43,7 @@
# general users and for biologist programmers. In: Krawetz S, Misener S
# (eds) Bioinformatics Methods and Protocols: Methods in Molecular
# Biology. Humana Press, Totowa, NJ, pp 365-386. Source code available
# from https://sourceforge.net/projects/primer3/
# from https://github.com/primer3-org/primer3
# ======================================================================
# For VALGRIND -- see end of this makefile for testing primer3_core
......@@ -75,12 +75,14 @@ ifeq ($(TESTOPTS),--windows)
NTTHAL_EXE = ntthal.exe
OLIGOTM_EXE = oligotm.exe
LONG_SEQ_EXE = long_seq_tm_test.exe
MASKER_EXE = primer3_masker.exe
else
PRIMER_EXE = primer3_core
NTDPAL_EXE = ntdpal
NTTHAL_EXE = ntthal
OLIGOTM_EXE = oligotm
LONG_SEQ_EXE = long_seq_tm_test
MASKER_EXE = primer3_masker
endif
LIBOLIGOTM = liboligotm.a
LIBOLIGOTM_DYN = liboligotm.so.1.2.0
......@@ -90,21 +92,24 @@ LIBTHAL = libthal.a
LIBTHAL_DYN = libthal.a.so.1.0.0
LIBPRIMER3 = libprimer3.a
LIBPRIMER3_DYN = libprimer3.so.1.0.0
LIBRARIES = $(LIBPRIMER3) $(LIBDPAL) $(LIBTHAL) $(LIBOLIGOTM)
DYNLIBS = $(LIBPRIMER3_DYN) $(LIBDPAL_DYN) $(LIBTHAL_DYN) $(LIBOLIGOTM_DYN)
LIBMASKER = libmasker.a
LIBMASKER_DYN = libmasker.a.so.1.0.0
LIBRARIES = $(LIBPRIMER3) $(LIBDPAL) $(LIBTHAL) $(LIBOLIGOTM) $(LIBMASKER)
DYNLIBS = $(LIBPRIMER3_DYN) $(LIBDPAL_DYN) $(LIBTHAL_DYN) $(LIBOLIGOTM_DYN) $(LIBMASKER_DYN)
RANLIB = ranlib
PRIMER_OBJECTS1=primer3_boulder_main.o\
format_output.o\
read_boulder.o\
print_boulder.o
print_boulder.o\
masker.o
PRIMER_OBJECTS=$(PRIMER_OBJECTS1) $(LIBRARIES)
PRIMER_DYN_OBJECTS=$(PRIMER_OBJECTS1) $(DYNLIBS)
# These are files generated by running ./primer3_core < ../example
example_files=example.for example.rev example.int
EXES=$(PRIMER_EXE) $(NTDPAL_EXE) $(NTTHAL_EXE) $(OLIGOTM_EXE) $(LONG_SEQ_EXE)
EXES=$(PRIMER_EXE) $(NTDPAL_EXE) $(NTTHAL_EXE) $(OLIGOTM_EXE) $(LONG_SEQ_EXE) $(MASKER_EXE)
all: $(EXES) $(LIBRARIES)
......@@ -150,6 +155,13 @@ $(LIBPRIMER3): libprimer3.o p3_seq_lib.o
$(LIBPRIMER3_DYN): libprimer3.o p3_seq_lib.o
$(CC) -shared -W1,-soname,liprimer3.so.1 -o $(LIBPRIMER3_DYN) libprimer3.o p3_seq_lib.o
$(LIBMASKER): masker.o
$(AR) rv $@ masker.o
$(RANLIB) $@
$(LIBMASKER_DYN): masker.o
$(CC) -shared -W1,-soname,libmasker.so.1 -o $(LIBMASKER_DYN) masker.o
$(PRIMER_EXE): $(PRIMER_OBJECTS)
$(CPP) $(LDFLAGS) -o $@ $(PRIMER_OBJECTS) $(LIBOPTS) $(LDLIBS)
......@@ -168,6 +180,9 @@ $(OLIGOTM_EXE): oligotm_main.c oligotm.h $(LIBOLIGOTM)
$(LONG_SEQ_EXE): long_seq_tm_test_main.c oligotm.o
$(CPP) $(CFLAGS) -o $@ long_seq_tm_test_main.c oligotm.o $(LIBOPTS) $(LDLIBS)
$(MASKER_EXE): masker_main.c $(LIBRARIES)
$(CPP) $(CFLAGS) -o $@ masker_main.c $(LIBRARIES) $(LIBOPTS) $(LDLIBS)
read_boulder.o: read_boulder.c read_boulder.h libprimer3.h dpal.h thal.h p3_seq_lib.h
$(CPP) -c $(CFLAGS) $(P_DEFINES) -o $@ read_boulder.c
......@@ -207,6 +222,9 @@ oligotm.o: oligotm.c oligotm.h
primer3_boulder_main.o: primer3_boulder_main.c libprimer3.h dpal.h thal.h oligotm.h format_output.h print_boulder.h read_boulder.h
$(CPP) -c $(CFLAGS) $(P_DEFINES) primer3_boulder_main.c
masker.o: masker.c masker.h libprimer3.h
$(CPP) -c $(CFLAGS) $(P_DEFINES) masker.c
primer_test: test
test: $(PRIMER_EXE) $(NTDPAL_EXE) $(NTTHAL_EXE)
......
# ======================================================================
# (c) Copyright 1996,1997,1998,1999,2000,2001,2004,2006,2007,2008,2009
# Whitehead Institute for Biomedical Research, Steve Rozen,
# Andreas Untergasser and Helen Skaletsky
# All rights reserved.
#
# This file is part of primer3, the libprimer3 library, the oligotm
# library and the dpal library.
#
# Primer3 and the libraries above are free software; you can
# redistribute them and/or modify them under the terms of the GNU
# General Public License as published by the Free Software Foundation;
# either version 2 of the License, or (at your option) any later
# version.
#
# This software is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this file (file gpl-2.0.txt in the source distribution); if
# not, write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301 USA
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# ======================================================================
# ======================================================================
# CITING PRIMER3
#
# Steve Rozen and Helen J. Skaletsky (2000) Primer3 on the WWW for
# general users and for biologist programmers. In: Krawetz S, Misener S
# (eds) Bioinformatics Methods and Protocols: Methods in Molecular
# Biology. Humana Press, Totowa, NJ, pp 365-386. Source code available
# from https://sourceforge.net/projects/primer3/
# ======================================================================
# For VALGRIND -- see end of this makefile for testing primer3_core
# with valgrind, a leak and memory access checker.
TESTOPTS=
WINMAKE=mingw32-make
DEVELOPER=`xcode-select -print-path`
# this is clumsy, but deals with the moving compilers on OSX
ifndef SDKROOT
SDKROOT=$(DEVELOPER)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk
endif
ifneq (exists, $(shell [ -d $(SDKROOT) ] && echo exists))
SDKROOT=$(DEVELOPER)/SDKs/MacOSX10.7.sdk
endif
ifndef MACOSX_DEPLOYMENT_TARGET
MACOSX_DEPLOYMENT_TARGET=10.6
endif
ifndef ARCHS
ARCHS=i386 x86_64
endif
LDLIBS = -lm
CC = gcc
CPP = g++
LIBTOOL = libtool
O_OPTS = -O2
CC_OPTS = -g -Wall -D__USE_FIXED_PROTOTYPES__ -isysroot $(SDKROOT) -mmacosx-version-min=$(MACOSX_DEPLOYMENT_TARGET) $(foreach ARCH,$(ARCHS),-arch $(ARCH))
P_DEFINES =
CFLAGS = $(CC_OPTS) $(O_OPTS)
LDFLAGS = -g $(foreach ARCH,$(ARCHS),-arch $(ARCH))
# ======================================================================
# If you have trouble with library skew when moving primer3 executables
# between systems, you might want to set LIBOPTS to -static
LIBOPTS =
ifeq ($(TESTOPTS),--windows)
PRIMER_EXE = primer3_core.exe
NTDPAL_EXE = ntdpal.exe
NTTHAL_EXE = ntthal.exe
OLIGOTM_EXE = oligotm.exe
LONG_SEQ_EXE = long_seq_tm_test.exe
else
PRIMER_EXE = primer3_core
NTDPAL_EXE = ntdpal
NTTHAL_EXE = ntthal
OLIGOTM_EXE = oligotm
LONG_SEQ_EXE = long_seq_tm_test
endif
LIBOLIGOTM = liboligotm.a
LIBOLIGOTM_DYN = liboligotm.so.1.2.0
LIBDPAL = libdpal.a
LIBDPAL_DYN = libdpal.a.so.1.0.0
LIBTHAL = libthal.a
LIBTHAL_DYN = libthal.a.so.1.0.0
LIBPRIMER3 = libprimer3.a
LIBPRIMER3_DYN = libprimer3.so.1.0.0
LIBRARIES = $(LIBPRIMER3) $(LIBDPAL) $(LIBTHAL) $(LIBOLIGOTM)
DYNLIBS = $(LIBPRIMER3_DYN) $(LIBDPAL_DYN) $(LIBTHAL_DYN) $(LIBOLIGOTM_DYN)
PRIMER_OBJECTS1=primer3_boulder_main.o\
format_output.o\
read_boulder.o\
print_boulder.o
PRIMER_OBJECTS=$(PRIMER_OBJECTS1) $(LIBRARIES)
PRIMER_DYN_OBJECTS=$(PRIMER_OBJECTS1) $(DYNLIBS)
# These are files generated by running ./primer3_core < ../example
example_files=example.for example.rev example.int
EXES=$(PRIMER_EXE) $(NTDPAL_EXE) $(NTTHAL_EXE) $(OLIGOTM_EXE) $(LONG_SEQ_EXE)
all: $(EXES) $(LIBRARIES)
clean_src:
ifeq ($(TESTOPTS),--windows)
del /Q /F *.o $(EXES) *~ $(LIBRARIES) $(example_files) core ..\*~
else
-rm -f *.o $(EXES) *~ $(LIBRARIES) $(DYNLIBS) $(example_files) core ../*~
endif
clean: clean_src
ifeq ($(TESTOPTS),--windows)
cd ..\test & $(WINMAKE) clean TESTOPTS=$(TESTOPTS)
else
cd ../test/; make clean
endif
$(LIBOLIGOTM): oligotm.o
$(LIBTOOL) -static -o $@ oligotm.o
$(LIBOLIGOTM_LIB): oligotm.o
$(CC) -shared -W1,-soname,liboligotm.so.1 -o $(LIBOLIGOTM_DYN) oligotm.o
$(LIBDPAL): dpal_primer.o
$(LIBTOOL) -static -o $@ dpal_primer.o
$(LIBDPAL_DYN): dpal_primer.o
$(CC) -shared -W1,-soname,libdpal.so.1 -o $(LIBDPAL_DYN_LIB) dpal_primer.o
$(LIBTHAL): thal_primer.o
$(LIBTOOL) -static -o $@ thal_primer.o
$(LIBTHAL_DYN): thal_primer.o
$(CC) -shared -W1,-soname,libthal.so.1 -o $(LIBTHAL_DYN_LIB) thal_primer.o
$(LIBPRIMER3): libprimer3.o p3_seq_lib.o
$(LIBTOOL) -static -o $@ libprimer3.o p3_seq_lib.o
$(LIBPRIMER3_DYN): libprimer3.o p3_seq_lib.o
$(CC) -shared -W1,-soname,liprimer3.so.1 -o $(LIBPRIMER3_DYN) libprimer3.o p3_seq_lib.o
$(PRIMER_EXE): $(PRIMER_OBJECTS)
$(CPP) $(LDFLAGS) -o $@ $(PRIMER_OBJECTS) $(LIBOPTS) $(LDLIBS)
libprimer3.o: libprimer3.c libprimer3.h p3_seq_lib.h dpal.h thal.h oligotm.h
$(CPP) -c $(CFLAGS) -Wno-deprecated $(P_DEFINES) -o $@ libprimer3.c
$(NTDPAL_EXE): ntdpal_main.o dpal.o
$(CPP) $(LDFLAGS) -o $@ ntdpal_main.o dpal.o
$(NTTHAL_EXE): thal_main.o thal.o
$(CPP) $(LDFLAGS) -o $@ thal_main.o thal.o $(LDLIBS)
$(OLIGOTM_EXE): oligotm_main.c oligotm.h $(LIBOLIGOTM)
$(CPP) $(CFLAGS) -o $@ oligotm_main.c $(LIBOLIGOTM) $(LIBOPTS) $(LDLIBS)
$(LONG_SEQ_EXE): long_seq_tm_test_main.c oligotm.o
$(CPP) $(CFLAGS) -o $@ long_seq_tm_test_main.c oligotm.o $(LIBOPTS) $(LDLIBS)
read_boulder.o: read_boulder.c read_boulder.h libprimer3.h dpal.h thal.h p3_seq_lib.h
$(CPP) -c $(CFLAGS) $(P_DEFINES) -o $@ read_boulder.c
print_boulder.o: print_boulder.c print_boulder.h libprimer3.h p3_seq_lib.h
$(CPP) -c $(CFLAGS) $(P_DEFINES) -o $@ print_boulder.c
dpal.o: dpal.c dpal.h
$(CPP) -c $(CFLAGS) -o $@ dpal.c
# We use '-ffloat-store' on windows to prevent undesirable
# precision which may lead to differences in floating point results.
thal.o: thal.c thal.h
$(CPP) -c $(CFLAGS) -ffloat-store -o $@ thal.c
p3_seq_lib.o: p3_seq_lib.c p3_seq_lib.h libprimer3.h
$(CPP) -c $(CFLAGS) -o $@ p3_seq_lib.c
dpal_primer.o: dpal.c dpal.h
$(CPP) -c $(CFLAGS) $(P_DEFINES) -o $@ dpal.c
thal_primer.o: thal.c thal.h
$(CPP) -c $(CFLAGS) -ffloat-store $(P_DEFINES) -o $@ thal.c
format_output.o: format_output.c format_output.h libprimer3.h dpal.h thal.h p3_seq_lib.h
$(CPP) -c $(CFLAGS) $(P_DEFINES) -o $@ format_output.c
ntdpal_main.o: ntdpal_main.c dpal.h
$(CPP) -c $(CC_OPTS) -o $@ ntdpal_main.c
thal_main.o: thal_main.c thal.h
$(CPP) -c $(CFLAGS) -o $@ thal_main.c
# We use CC_OPTS above rather than CFLAGS because
# gcc 2.7.2 crashes while compiling ntdpal_main.c with -O2
oligotm.o: oligotm.c oligotm.h
primer3_boulder_main.o: primer3_boulder_main.c libprimer3.h dpal.h thal.h oligotm.h format_output.h print_boulder.h read_boulder.h
$(CPP) -c $(CFLAGS) $(P_DEFINES) primer3_boulder_main.c
primer_test: test
test: $(PRIMER_EXE) $(NTDPAL_EXE) $(NTTHAL_EXE)
ifeq ($(TESTOPTS),--windows)
cd ..\test & $(WINMAKE) TESTOPTS=$(TESTOPTS)
else
cd ../test; make test
endif
# ======================================================================
#
# VALGRIND INSTRUCTIONS.
#
# These instructions work for linux, and run the 'memcheck'
# functionality of valgrind. Tests will be _much_ slower
# when running with valgrind checks.
#
# If necessary, get and install valgrind (should come with most
# Linux's, but you need valgrind >= 3.2.3)
#
# In the src directory for primer3:
#
# $ make clean
#
# Re-complile without optimization and run the normal tests, does
# _not_ valgrind them:
#
# $ make O_OPTS=-O0 test # The value of O_OPTS is Minus Oh Zero
#
# Run valgrind on a small example:
#
# $ valgrind --leak-check=yes --show-reachable=yes --log-file-exactly=p3vg ./primer3_core < ../example
#
# Check output in file p3vg
#
# Note: Valgrind is at /usr/local/bin/valgrind at WI
#
# OK, now for the real tests:
#
# $ cd ../test
#
# Check valgrind path in p3test.pl, ntdpal_test.pl, and oligotm_test.pl
# and correct if necessary. This code works under valgrind 3.2.3.
#
# $ make TESTOPTS=--valgrind # Remember, you have to be in test/
#
# When the --valgrind flag is set, the perl test scripts grep for and
# display errors and leaks, but you need to ***look at the output** to
# see these and figure out which test caused the problem, so you can
# debug it.
#
# ======================================================================