source: src/Jobs/Makefile.am@ fbf005

Action_Thermostats Add_AtomRandomPerturbation Add_RotateAroundBondAction Add_SelectAtomByNameAction Adding_Graph_to_ChangeBondActions Adding_MD_integration_tests Adding_StructOpt_integration_tests AutomationFragmentation_failures Candidate_v1.6.0 Candidate_v1.6.1 ChangeBugEmailaddress ChangingTestPorts ChemicalSpaceEvaluator Combining_Subpackages Debian_Package_split Debian_package_split_molecuildergui_only Disabling_MemDebug Docu_Python_wait EmpiricalPotential_contain_HomologyGraph_documentation Enable_parallel_make_install Enhance_userguide Enhanced_StructuralOptimization Enhanced_StructuralOptimization_continued Example_ManyWaysToTranslateAtom Exclude_Hydrogens_annealWithBondGraph FitPartialCharges_GlobalError Fix_ChronosMutex Fix_StatusMsg Fix_StepWorldTime_single_argument Fix_Verbose_Codepatterns ForceAnnealing_goodresults ForceAnnealing_oldresults ForceAnnealing_tocheck ForceAnnealing_with_BondGraph ForceAnnealing_with_BondGraph_continued ForceAnnealing_with_BondGraph_continued_betteresults ForceAnnealing_with_BondGraph_contraction-expansion GeometryObjects Gui_displays_atomic_force_velocity IndependentFragmentGrids_IntegrationTest JobMarket_RobustOnKillsSegFaults JobMarket_StableWorkerPool JobMarket_unresolvable_hostname_fix PartialCharges_OrthogonalSummation PythonUI_with_named_parameters QtGui_reactivate_TimeChanged_changes Recreated_GuiChecks RotateToPrincipalAxisSystem_UndoRedo StoppableMakroAction TremoloParser_IncreasedPrecision TremoloParser_MultipleTimesteps Ubuntu_1604_changes stable
Last change on this file since fbf005 was fbf005, checked in by Frederik Heber <heber@…>, 8 years ago

HUGE: Extracted libmolecuilder_mpqc that is now linked to poolworker.

  • This stops the problems with MemDebug and mpqc when linking against libLinearAlgebra in debug mode: static global variables in libLinAlg are allocated using MemDebug (prefixed with a checksum) but are deallocated using normal libc's free() on exit. This causes an invalid free() as the ptr given to free points inside the block and not at its start. The problem comes from mpqc's use of own new and delete implementation. I'm guessing its reference counting is the culprit. Hence, we need to separate these two compilations from another in different units/libraries. Therefore, we have split off libmolecuilder_mpqc, .._mpqc_extract and additionally place the MPQCJob::Work() implementation inside libMolecuilderJobs_Work.
  • libmolecuilder_mpqc contains all MPQC's code in mpqc.cc (and linked libraries) that is not the main() function.
  • libmolecuilder_mpqc_extract contains functions that extract results such as energies, forces, charge grids from the obtained mpqc solution. These were added by myself to the mpqc code before.
  • molecuilder_mpqc is then linked against a NoOp .._extract library version. Thereby, it does not use any of the Molecuilder or related libraries and does not come in contact with MemDebug.
  • molecuilder_poolworker however is linked with the full .._extract library and hence performs these extractions.
  • poolworker now executes MPQCJob, MPQCCommandJob, and VMGJob and therefore needs to enforce binding to all of them.
  • TESTS: renamed molecuilder_mpqc.in to molecuilder_poolworker.in.
  • Property mode set to 100644
File size: 5.9 KB
Line 
1# PLEASE adhere to the alphabetical ordering in this Makefile!
2# Also indentation by a single tab
3
4JOBSSOURCE =
5if CONDJOBMARKET
6else
7JOBSSOURCE += \
8 Jobs/JobMarket/FragmentJob.cpp \
9 Jobs/JobMarket/FragmentResult.cpp \
10 Jobs/JobMarket/JobId.cpp \
11 Jobs/JobMarket/SystemCommandJob.cpp
12endif
13JOBSSOURCE += \
14 Jobs/MPQCCommandJob.cpp \
15 Jobs/MPQCJob.cpp
16if CONDJOBMARKET
17if CONDVMG
18JOBSSOURCE += \
19 Jobs/ChargeSmearer.cpp \
20 Jobs/InterfaceVMGDebugGridJob.cpp \
21 Jobs/InterfaceVMGJob.cpp \
22 Jobs/VMGDebugGridJob.cpp \
23 Jobs/VMGJob.cpp \
24 Jobs/WindowGrid_converter.cpp
25endif
26endif
27
28JOBSHEADER =
29if CONDJOBMARKET
30else
31JOBSHEADER += \
32 Jobs/JobMarket/FragmentJob.hpp \
33 Jobs/JobMarket/FragmentResult.hpp \
34 Jobs/JobMarket/JobId.hpp \
35 Jobs/JobMarket/SystemCommandJob.hpp \
36 Jobs/JobMarket/types.hpp
37endif
38JOBSHEADER += \
39 Jobs/MPQCCommandJob.hpp \
40 Jobs/MPQCCommandJob_binding.hpp \
41 Jobs/MPQCJob.hpp \
42 Jobs/MPQCJob_binding.hpp
43if CONDJOBMARKET
44if CONDVMG
45JOBSHEADER += \
46 Jobs/ChargeSmearer.hpp \
47 Jobs/InterfaceVMGDebugGridJob.hpp \
48 Jobs/InterfaceVMGJob.hpp \
49 Jobs/VMGDebugGridJob.hpp \
50 Jobs/VMGDebugGridJob_binding.hpp \
51 Jobs/VMGJob.hpp \
52 Jobs/VMGJob_binding.hpp \
53 Jobs/WindowGrid_converter.hpp
54endif
55endif
56
57lib_LTLIBRARIES += \
58 libMolecuilderJobs.la \
59 libmolecuilder_mpqc_extract.la
60noinst_LTLIBRARIES += \
61 libMolecuilderJobs_Work.la
62
63### libmolecuilder_mpqc_extract.la
64libmolecuilder_mpqc_extract_la_SOURCES = \
65 Jobs/mpqc_extract.cc \
66 $(top_srcdir)/ThirdParty/mpqc_open/src/bin/mpqc/mpqc.h
67libmolecuilder_mpqc_extract_la_LDFLAGS = \
68 $(AM_CPPFLAGS) \
69 -L$(abs_top_builddir)/../JobMarket/src/JobMarket/.libs -Wl,-rpath,$(abs_top_builddir)/../JobMarket/src/JobMarket/.libs \
70 -L$(abs_top_builddir)/../../src/.libs -Wl,-rpath,$(abs_top_builddir)/../../src/.libs \
71 $(BOOST_SYSTEM_LDFLAGS)
72libmolecuilder_mpqc_extract_la_CPPFLAGS = \
73 $(AM_CPPFLAGS) \
74 ${CodePatterns_CFLAGS} ${JobMarket_CFLAGS} \
75 $(BOOST_SYSTEM_CFLAGS) \
76 -DHAVE_MPQCDATA \
77 -DHAVE_JOBMARKET \
78 -I$(top_builddir)/ThirdParty/mpqc_open/src/lib \
79 -I$(top_srcdir)/ThirdParty/mpqc_open/src/lib \
80 -I$(top_srcdir)/ThirdParty/mpqc_open/src/bin/mpqc
81libmolecuilder_mpqc_extract_la_LIBADD = \
82 libMolecuilderJobs.la \
83 libMolecuilderFragmentationSummation.la \
84 -lboost_serialization
85
86### libMolecuilderJobs_Work.la
87libMolecuilderJobs_Work_la_CPPFLAGS = \
88 $(AM_CPPFLAGS) ${BOOST_CPPFLAGS} ${CodePatterns_CFLAGS} ${JobMarket_CFLAGS} -Dvmg_float=double -Dvmg_int=int $(VMG_CFLAGS) \
89 -I$(top_builddir)/ThirdParty/mpqc_open/src/lib \
90 -I$(top_srcdir)/ThirdParty/mpqc_open/src/lib \
91 -I$(top_srcdir)/ThirdParty/mpqc_open/src/bin/mpqc
92libMolecuilderJobs_Work_la_LDFLAGS = $(AM_LDFLAGS)
93if CONDJOBMARKET
94libMolecuilderJobs_Work_la_LDFLAGS += \
95 $(JobMarket_LDFLAGS)
96endif
97
98### libMolecuilderJobs.la
99libMolecuilderJobs_la_includedir = $(includedir)/MoleCuilder/
100nobase_libMolecuilderJobs_la_include_HEADERS = $(JOBSHEADER)
101libMolecuilderJobs_la_CPPFLAGS = \
102 $(AM_CPPFLAGS) ${BOOST_CPPFLAGS} ${CodePatterns_CFLAGS} ${JobMarket_CFLAGS} -Dvmg_float=double -Dvmg_int=int $(VMG_CFLAGS)
103libMolecuilderJobs_la_LDFLAGS = $(AM_LDFLAGS) \
104 $(BOOST_IOSTREAMS_LDFLAGS) \
105 $(BOOST_SERIALIZATION_LDFLAGS) \
106 $(BOOST_SYSTEM_LDFLAGS)
107libMolecuilderJobs_la_LDFLAGS += \
108 $(JobMarket_LDFLAGS)
109libMolecuilderJobs_la_LDFLAGS += \
110 $(CodePatterns_LDFLAGS)
111libMolecuilderJobs_la_LIBADD = \
112 libMolecuilderFragmentationSummation.la
113if CONDJOBMARKET
114if CONDVMG
115libMolecuilderJobs_la_LDFLAGS += \
116 $(VMG_LDFLAGS)
117libMolecuilderJobs_la_LIBADD += \
118 $(VMG_LIBS)
119endif
120endif
121if CONDJOBMARKET
122libMolecuilderJobs_la_LIBADD += \
123 $(JobMarket_LIBS)
124libMolecuilderJobs_Work_la_LIBADD = \
125 $(top_builddir)/ThirdParty/mpqc_open/src/bin/mpqc/libmolecuilder_mpqc.la \
126 libmolecuilder_mpqc_extract.la \
127 $(JobMarket_LIBS)
128endif
129libMolecuilderJobs_la_LIBADD += \
130 $(BOOST_IOSTREAMS_LIBS) \
131 $(BOOST_SERIALIZATION_LIBS) \
132 $(BOOST_SYSTEM_LIBS) \
133 $(top_builddir)/ThirdParty/LinearAlgebra/src/LinearAlgebra/libLinearAlgebra.la \
134 $(CodePatterns_LIBS)
135if CONDVMGMPI
136libMolecuilderJobs_la_CPPFLAGS += $(MPI_CXXFLAGS)
137libMolecuilderJobs_la_LDFLAGS += $(MPI_CXXLDFLAGS)
138endif
139
140## Define the source file list for the "libexample-@MOLECUILDER_API_VERSION@.la"
141## target. Note that @MOLECUILDER_API_VERSION@ is not interpreted by Automake and
142## will therefore be treated as if it were literally part of the target name,
143## and the variable name derived from that.
144## The file extension .cc is recognized by Automake, and makes it produce
145## rules which invoke the C++ compiler to produce a libtool object file (.lo)
146## from each source file. Note that it is not necessary to list header files
147## which are already listed elsewhere in a _HEADERS variable assignment.
148libMolecuilderJobs_la_SOURCES = $(JOBSSOURCE)
149libMolecuilderJobs_Work_la_SOURCES = Jobs/MPQCJob_Work.cpp
150
151## Instruct libtool to include ABI version information in the generated shared
152## library file (.so). The library ABI version is defined in configure.ac, so
153## that all version information is kept in one place.
154libMolecuilderJobs_la_LDFLAGS += -version-info $(MOLECUILDER_SO_VERSION)
155
156## The generated configuration header is installed in its own subdirectory of
157## $(libdir). The reason for this is that the configuration information put
158## into this header file describes the target platform the installed library
159## has been built for. Thus the file must not be installed into a location
160## intended for architecture-independent files, as defined by the Filesystem
161## Hierarchy Standard (FHS).
162## The nodist_ prefix instructs Automake to not generate rules for including
163## the listed files in the distribution on 'make dist'. Files that are listed
164## in _HEADERS variables are normally included in the distribution, but the
165## configuration header file is generated at configure time and should not be
166## shipped with the source tarball.
167libMolecuilderJobs_libincludedir = $(libdir)/MoleCuilder/include
168nodist_libMolecuilderJobs_libinclude_HEADERS = $(top_builddir)/libmolecuilder_config.h
169
Note: See TracBrowser for help on using the repository browser.