Gentoo Archives: gentoo-commits

From: Nicolas Bock <nicolasbock@×××××.com>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/sci:master commit in: sys-cluster/charm/, sys-cluster/charm/files/
Date: Wed, 20 Nov 2013 19:47:59
Message-Id: 1384976850.39f06977839d8a63808d0043fa6bf6331e508852.nicolasbock@gentoo
1 commit: 39f06977839d8a63808d0043fa6bf6331e508852
2 Author: Nicolas Bock <nicolasbock <AT> gmail <DOT> com>
3 AuthorDate: Wed Nov 20 19:47:30 2013 +0000
4 Commit: Nicolas Bock <nicolasbock <AT> gmail <DOT> com>
5 CommitDate: Wed Nov 20 19:47:30 2013 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/sci.git;a=commit;h=39f06977
7
8 sys-cluster/charm-6.6.0_rc1: Rewrote patch to enable shared mode.
9
10 The patch is targeted now for v6.7.0 by upstream.
11
12 Package-Manager: portage-2.2.7
13
14 ---
15 sys-cluster/charm/ChangeLog | 5 +
16 sys-cluster/charm/charm-6.6.0_rc1.ebuild | 2 +-
17 .../files/charm-6.6.0-static-library-fix.patch | 403 +++++++++++++++++++++
18 3 files changed, 409 insertions(+), 1 deletion(-)
19
20 diff --git a/sys-cluster/charm/ChangeLog b/sys-cluster/charm/ChangeLog
21 index 5f9842d..9b32737 100644
22 --- a/sys-cluster/charm/ChangeLog
23 +++ b/sys-cluster/charm/ChangeLog
24 @@ -2,6 +2,11 @@
25 # Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
26 # $Header: $
27
28 + 20 Nov 2013; Nicolas Bock <nicolasbock@×××××.com>
29 + +files/charm-6.6.0-static-library-fix.patch, charm-6.6.0_rc1.ebuild:
30 + sys-cluster/charm-6.6.0_rc1: Rewrote patch to enable shared mode. The patch
31 + is targeted now for v6.7.0 by upstream.
32 +
33 *charm-6.6.0_rc1 (20 Nov 2013)
34
35 20 Nov 2013; Nicolas Bock <nicolasbock@×××××.com> +charm-6.6.0_rc1.ebuild:
36
37 diff --git a/sys-cluster/charm/charm-6.6.0_rc1.ebuild b/sys-cluster/charm/charm-6.6.0_rc1.ebuild
38 index 0791c1c..0870df5 100644
39 --- a/sys-cluster/charm/charm-6.6.0_rc1.ebuild
40 +++ b/sys-cluster/charm/charm-6.6.0_rc1.ebuild
41 @@ -113,7 +113,7 @@ src_prepare() {
42 #epatch "${FILESDIR}/charm-6.5.1-fix-string-parsing.patch"
43 epatch "${FILESDIR}/charm-6.5.1-fix-navmenuGenerator.patch"
44 epatch "${FILESDIR}/charm-6.5.1-fix-markupSanitizer.patch"
45 - #epatch "${FILESDIR}/charm-6.5.1-static-library-fix.patch"
46 + epatch "${FILESDIR}/charm-6.6.0-static-library-fix.patch"
47 }
48
49 src_compile() {
50
51 diff --git a/sys-cluster/charm/files/charm-6.6.0-static-library-fix.patch b/sys-cluster/charm/files/charm-6.6.0-static-library-fix.patch
52 new file mode 100644
53 index 0000000..1281a65
54 --- /dev/null
55 +++ b/sys-cluster/charm/files/charm-6.6.0-static-library-fix.patch
56 @@ -0,0 +1,403 @@
57 +From 5885fa33575116c8d5c8e6e2e4beb007279a7fdb Mon Sep 17 00:00:00 2001
58 +From: Nicolas Bock <nicolasbock@×××××.com>
59 +Date: Mon, 14 Oct 2013 07:15:14 -0600
60 +Subject: [PATCH] Some libraries are only built statically,
61 +
62 +preventing a Charm++ installation with only dynamic libraries.
63 +
64 +On a typical Linux system only shared libraries are installed, because of the
65 +usual security and bloat arguments. However, if I build charm with
66 +--build-shared, and then install only what is in lib_so, the charmc script
67 +breaks because some Converse libraries are built purely as .o and don't end up
68 +in lib_so. One example is seed based load balancing, e.g. libldb-rand.o. As
69 +far as I can tell, this is not too hard to fix. In the main makefile, the
70 +targets libldb-*.o are renamed to libldb-*.a, and the charmc script now tests
71 +both .a and .so when linking the seed based load balancing code.
72 +---
73 + src/scripts/Makefile | 136 +++++++++++++++++++++++++--------------------------
74 + src/scripts/charmc | 39 +++++++++------
75 + 2 files changed, 92 insertions(+), 83 deletions(-)
76 +
77 +diff --git a/src/scripts/Makefile b/src/scripts/Makefile
78 +index a52b801..d0e5a03 100644
79 +--- a/src/scripts/Makefile
80 ++++ b/src/scripts/Makefile
81 +@@ -358,7 +358,7 @@ dirs+sources:
82 + # Converse Libraries
83 + #
84 + ###############################################################################
85 +-CLBLIBS=$(L)/libldb-rand.o $(L)/libldb-spray.o $(L)/libldb-workstealing.o $(L)/libldb-neighbor.o $(L)/libldb-none.o $(L)/libldb-test.o $(L)/libldb-bluegene.o
86 ++CLBLIBS=$(L)/libldb-rand.a $(L)/libldb-spray.a $(L)/libldb-workstealing.a $(L)/libldb-neighbor.a $(L)/libldb-none.a $(L)/libldb-test.a $(L)/libldb-bluegene.a
87 +
88 + TRACELIBS = $(L)/libtrace-converse.a $(L)/libtracef_f.a
89 +
90 +@@ -372,32 +372,32 @@ TRACELIBS += $(L)/libtrace-projections.a $(L)/libtrace-summary.a \
91 + $(L)/libtrace-memory.a $(L)/libtrace-autoPerf.a
92 + endif
93 +
94 +-MEMLIBS=$(L)/libmemory-default.o $(L)/libmemory-os.o $(L)/libmemory-gnu.o \
95 +- $(L)/libmemory-gnuold.o $(L)/libmemory-verbose.o \
96 +- $(L)/libmemory-paranoid.o \
97 +- $(L)/libmemory-leak.o $(L)/libmemory-isomalloc.o \
98 +- $(L)/libmemory-os-verbose.o $(L)/libmemory-os-isomalloc.o \
99 +- $(L)/libmemory-os-leak.o $(L)/libmemory-os-paranoid.o \
100 +- $(L)/libmemory-os-lock.o $(L)/libmemory-os-wrapper.o
101 ++MEMLIBS=$(L)/libmemory-default.a $(L)/libmemory-os.a $(L)/libmemory-gnu.a \
102 ++ $(L)/libmemory-gnuold.a $(L)/libmemory-verbose.a \
103 ++ $(L)/libmemory-paranoid.a \
104 ++ $(L)/libmemory-leak.a $(L)/libmemory-isomalloc.a \
105 ++ $(L)/libmemory-os-verbose.a $(L)/libmemory-os-isomalloc.a \
106 ++ $(L)/libmemory-os-leak.a $(L)/libmemory-os-paranoid.a \
107 ++ $(L)/libmemory-os-lock.a $(L)/libmemory-os-wrapper.a
108 +
109 + BUILD_CHARMDEBUG=$(shell CHARMINC=.; if test -f ./conv-config.sh; then . ./conv-config.sh; echo $$CMK_CHARMDEBUG; fi )
110 +
111 + ifneq "$(BUILD_CHARMDEBUG)" "0"
112 +-MEMLIBS += $(L)/libmemory-charmdebug.o $(L)/libmemory-charmdebug-mmap.o \
113 +- $(L)/libmemory-charmdebug-slot.o \
114 +- $(L)/libmemory-charmdebug-mmap-slot.o \
115 +- $(L)/libmemory-os-charmdebug.o $(L)/libmemory-hooks-charmdebug.o
116 ++MEMLIBS += $(L)/libmemory-charmdebug.a $(L)/libmemory-charmdebug-mmap.a \
117 ++ $(L)/libmemory-charmdebug-slot.a \
118 ++ $(L)/libmemory-charmdebug-mmap-slot.a \
119 ++ $(L)/libmemory-os-charmdebug.a $(L)/libmemory-hooks-charmdebug.a
120 + endif
121 +
122 +-THREADLIBS=$(L)/libthreads-default.o $(L)/libthreads-default-tls.o \
123 +- $(L)/libthreads-qt.o $(L)/libthreads-qt-tls.o \
124 +- $(L)/libthreads-context.o $(L)/libthreads-context-tls.o \
125 +- $(L)/libthreads-uJcontext.o $(L)/libthreads-uJcontext-tls.o \
126 +- $(L)/libthreads-pthreads.o $(L)/libthreads-fibers.o \
127 +- $(L)/libthreads-stackcopy.o $(L)/libthreads-memoryalias.o \
128 +- $(L)/libthreads-qt-memoryalias.o \
129 +- $(L)/libthreads-context-memoryalias.o \
130 +- $(L)/libthreads-uJcontext-memoryalias.o
131 ++THREADLIBS=$(L)/libthreads-default.a $(L)/libthreads-default-tls.a \
132 ++ $(L)/libthreads-qt.a $(L)/libthreads-qt-tls.a \
133 ++ $(L)/libthreads-context.a $(L)/libthreads-context-tls.a \
134 ++ $(L)/libthreads-uJcontext.a $(L)/libthreads-uJcontext-tls.a \
135 ++ $(L)/libthreads-pthreads.a $(L)/libthreads-fibers.a \
136 ++ $(L)/libthreads-stackcopy.a $(L)/libthreads-memoryalias.a \
137 ++ $(L)/libthreads-qt-memoryalias.a \
138 ++ $(L)/libthreads-context-memoryalias.a \
139 ++ $(L)/libthreads-uJcontext-memoryalias.a
140 +
141 + CVLIBS=$(L)/libconv-core.a \
142 + $(L)/libconv-cplus-y.a $(L)/libconv-cplus-n.a \
143 +@@ -494,19 +494,19 @@ pup_f.o: pup_f.f90 $(CVHEADERS)
144 + -$(CHARMC) -c pup_f.f90 && $(CHARMC) -cpmod ../include pupmod.M || touch pup_f.o
145 +
146 + ## Converse load balancers (seed balancers, -balance)
147 +-$(L)/libldb-none.o: cldb.none.c $(CVHEADERS)
148 ++$(L)/libldb-none.a: cldb.none.c $(CVHEADERS)
149 + $(CHARMC) -o $@ cldb.none.c
150 +
151 +-$(L)/libldb-rand.o: cldb.rand.c cldb.h $(CVHEADERS)
152 ++$(L)/libldb-rand.a: cldb.rand.c cldb.h $(CVHEADERS)
153 + $(CHARMC) -o $@ cldb.rand.c
154 +
155 +-$(L)/libldb-neighbor.o: cldb.neighbor.c cldb.neighbor.h graph.h $(CVHEADERS)
156 ++$(L)/libldb-neighbor.a: cldb.neighbor.c cldb.neighbor.h graph.h $(CVHEADERS)
157 + $(CHARMC) -o $@ cldb.neighbor.c
158 +
159 +-$(L)/libldb-workstealing.o: cldb.workstealing.c cldb.workstealing.h graph.h $(CVHEADERS)
160 ++$(L)/libldb-workstealing.a: cldb.workstealing.c cldb.workstealing.h graph.h $(CVHEADERS)
161 + $(CHARMC) -o $@ cldb.workstealing.c
162 +
163 +-$(L)/libldb-spray.o: cldb.spray.c $(CVHEADERS)
164 ++$(L)/libldb-spray.a: cldb.spray.c $(CVHEADERS)
165 + $(CHARMC) -o $@ cldb.spray.c
166 +
167 +
168 +@@ -516,138 +516,138 @@ $(L)/libldb-spray.o: cldb.spray.c $(CVHEADERS)
169 + #//$(L)/libldb-prioritycentralizedopt.o: cldb.prioritycentralizedopt.c cldb.prioritycentralizedopt.h $(CVHEADERS)
170 + #// $(CHARMC) -o $@ cldb.prioritycentralizedopt.c
171 +
172 +-$(L)/libldb-test.o: cldb.test.c $(CVHEADERS)
173 ++$(L)/libldb-test.a: cldb.test.c $(CVHEADERS)
174 + $(CHARMC) -o $@ cldb.test.c
175 +
176 +-$(L)/libldb-bluegene.o: cldb.bluegene.c $(CVHEADERS)
177 ++$(L)/libldb-bluegene.a: cldb.bluegene.c $(CVHEADERS)
178 + $(CHARMC) -o $@ cldb.bluegene.c
179 +
180 + ## Memory allocation libraries (-memory)
181 + MEM_DEPS=memory.c memory-gnu.c memory-gnuold.c converse.h conv-mach.h $(CVHEADERS)
182 +-$(L)/libmemory-default.o: $(MEM_DEPS)
183 ++$(L)/libmemory-default.a: $(MEM_DEPS)
184 + $(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_DEFAULT memory.c
185 +
186 +-$(L)/libmemory-os.o: $(MEM_DEPS)
187 ++$(L)/libmemory-os.a: $(MEM_DEPS)
188 + $(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_OS memory.c
189 +
190 +-$(L)/libmemory-os-verbose.o: memory-verbose.c $(MEM_DEPS)
191 ++$(L)/libmemory-os-verbose.a: memory-verbose.c $(MEM_DEPS)
192 + -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_VERBOSE memory.c || touch $@
193 +
194 +-$(L)/libmemory-os-paranoid.o: memory-paranoid.c $(MEM_DEPS)
195 ++$(L)/libmemory-os-paranoid.a: memory-paranoid.c $(MEM_DEPS)
196 + -$(CHARMC) -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_PARANOID memory.c || touch $@
197 +
198 +-$(L)/libmemory-os-leak.o: $(MEM_DEPS)
199 ++$(L)/libmemory-os-leak.a: $(MEM_DEPS)
200 + -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_LEAK memory.c || touch $@
201 +
202 +-$(L)/libmemory-os-isomalloc.o: memory-isomalloc.c $(MEM_DEPS)
203 ++$(L)/libmemory-os-isomalloc.a: memory-isomalloc.c $(MEM_DEPS)
204 + -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_ISOMALLOC memory.c || touch $@
205 +
206 +-$(L)/libmemory-os-lock.o: memory-lock.c $(MEM_DEPS)
207 ++$(L)/libmemory-os-lock.a: memory-lock.c $(MEM_DEPS)
208 + -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_LOCK memory.c || touch $@
209 +
210 +-$(L)/libmemory-os-charmdebug.o: memory-charmdebug.c $(MEM_DEPS)
211 ++$(L)/libmemory-os-charmdebug.a: memory-charmdebug.c $(MEM_DEPS)
212 + -$(CHARMC) -o $@ -DCMK_MEMORY_BUILD_OS_WRAPPED -DCMK_MEMORY_BUILD_CHARMDEBUG memory.c || touch $@
213 +
214 +-$(L)/libmemory-os-wrapper.o: memory-os-wrapper.C $(MEM_DEPS)
215 ++$(L)/libmemory-os-wrapper.a: memory-os-wrapper.C $(MEM_DEPS)
216 + -$(CHARMC) -o $@ memory-os-wrapper.C || touch $@
217 +
218 +-$(L)/libmemory-hooks-charmdebug.o: memory-charmdebug.c $(MEM_DEPS)
219 ++$(L)/libmemory-hooks-charmdebug.a: memory-charmdebug.c $(MEM_DEPS)
220 + -$(CHARMC) -o $@ -DCMK_MEMORY_BUILD_GNU_HOOKS -DCMK_MEMORY_BUILD_CHARMDEBUG memory.c || touch $@
221 +
222 + # If the system doesn't have sbrk, these compilations may fail.
223 + # This is OK, but then we can't use "-memory gnu" or friends.
224 +-$(L)/libmemory-gnu.o: $(MEM_DEPS)
225 ++$(L)/libmemory-gnu.a: $(MEM_DEPS)
226 + -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_GNU memory.c || touch $@
227 +
228 +-$(L)/libmemory-gnuold.o: $(MEM_DEPS)
229 ++$(L)/libmemory-gnuold.a: $(MEM_DEPS)
230 + -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_GNUOLD memory.c || touch $@
231 +
232 +-$(L)/libmemory-verbose.o: memory-verbose.c $(MEM_DEPS)
233 ++$(L)/libmemory-verbose.a: memory-verbose.c $(MEM_DEPS)
234 + -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_VERBOSE memory.c || touch $@
235 +
236 +-$(L)/libmemory-paranoid.o: memory-paranoid.c $(MEM_DEPS)
237 ++$(L)/libmemory-paranoid.a: memory-paranoid.c $(MEM_DEPS)
238 + -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_PARANOID memory.c || touch $@
239 +
240 +-$(L)/libmemory-leak.o: memory-leak.c $(MEM_DEPS)
241 ++$(L)/libmemory-leak.a: memory-leak.c $(MEM_DEPS)
242 + -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_LEAK memory.c || touch $@
243 +
244 +-$(L)/libmemory-cache.o: memory-cache.c $(MEM_DEPS)
245 ++$(L)/libmemory-cache.a: memory-cache.c $(MEM_DEPS)
246 + -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_CACHE memory.c || touch $@
247 +
248 +-$(L)/libmemory-isomalloc.o: memory-isomalloc.c $(MEM_DEPS)
249 ++$(L)/libmemory-isomalloc.a: memory-isomalloc.c $(MEM_DEPS)
250 + -$(CHARMC) -I. -o $@ -DCMK_MEMORY_BUILD_ISOMALLOC memory.c || touch $@
251 +
252 +-$(L)/libmemory-charmdebug.o: memory-charmdebug.c $(MEM_DEPS)
253 ++$(L)/libmemory-charmdebug.a: memory-charmdebug.c $(MEM_DEPS)
254 + -$(CHARMC) -I. -optimize -o $@ -DCMK_MEMORY_BUILD_CHARMDEBUG memory.c || touch $@
255 +
256 +-$(L)/libmemory-charmdebug-slot.o: memory-charmdebug.c $(MEM_DEPS)
257 ++$(L)/libmemory-charmdebug-slot.a: memory-charmdebug.c $(MEM_DEPS)
258 + -$(CHARMC) -I. -optimize -o $@ -DCMK_MEMORY_BUILD_CHARMDEBUG -DCMK_SEPARATE_SLOT memory.c || touch $@
259 +
260 +-$(L)/libmemory-charmdebug-mmap.o: memory-charmdebug.c $(MEM_DEPS)
261 ++$(L)/libmemory-charmdebug-mmap.a: memory-charmdebug.c $(MEM_DEPS)
262 + -$(CHARMC) -I. -optimize -o $@ -DCMK_MEMORY_BUILD_CHARMDEBUG -DCPD_USE_MMAP memory.c || touch $@
263 +
264 +-$(L)/libmemory-charmdebug-mmap-slot.o: memory-charmdebug.c $(MEM_DEPS)
265 ++$(L)/libmemory-charmdebug-mmap-slot.a: memory-charmdebug.c $(MEM_DEPS)
266 + -$(CHARMC) -I. -optimize -o $@ -DCMK_MEMORY_BUILD_CHARMDEBUG -DCPD_USE_MMAP -DCMK_SEPARATE_SLOT memory.c || touch $@
267 +
268 + ## Thread libraries (-thread)
269 +
270 + LIBTHREADSDEPS = threads.c $(CVHEADERS) QUICK_THREADS
271 +
272 +-$(L)/libthreads-default.o: $(LIBTHREADSDEPS)
273 ++$(L)/libthreads-default.a: $(LIBTHREADSDEPS)
274 + $(CHARMC) -o $@ -DCMK_THREADS_BUILD_DEFAULT=1 -IQuickThreads -I. threads.c
275 +
276 +-$(L)/libthreads-default-tls.o: $(LIBTHREADSDEPS)
277 ++$(L)/libthreads-default-tls.a: $(LIBTHREADSDEPS)
278 + -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_DEFAULT=1 -DCMK_THREADS_BUILD_TLS=1 -IQuickThreads -I. threads.c 2> /dev/null || touch $@
279 +
280 +-$(L)/libthreads-qt.o: $(LIBTHREADSDEPS)
281 ++$(L)/libthreads-qt.a: $(LIBTHREADSDEPS)
282 + $(CHARMC) -o $@ -DCMK_THREADS_BUILD_QT=1 -IQuickThreads threads.c
283 +
284 +-$(L)/libthreads-qt-tls.o: $(LIBTHREADSDEPS)
285 ++$(L)/libthreads-qt-tls.a: $(LIBTHREADSDEPS)
286 + -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_QT=1 -DCMK_THREADS_BUILD_TLS=1 -IQuickThreads threads.c 2> /dev/null || touch $@
287 +
288 +-$(L)/libthreads-context.o: $(LIBTHREADSDEPS)
289 ++$(L)/libthreads-context.a: $(LIBTHREADSDEPS)
290 + -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_CONTEXT=1 -IQuickThreads threads.c || touch $@
291 +
292 +-$(L)/libthreads-context-tls.o: $(LIBTHREADSDEPS)
293 ++$(L)/libthreads-context-tls.a: $(LIBTHREADSDEPS)
294 + -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_CONTEXT=1 -DCMK_THREADS_BUILD_TLS=1 -IQuickThreads threads.c 2> /dev/null || touch $@
295 +
296 +-$(L)/libthreads-uJcontext.o: $(LIBTHREADSDEPS) uJcontext.c
297 ++$(L)/libthreads-uJcontext.a: $(LIBTHREADSDEPS) uJcontext.c
298 + -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_JCONTEXT=1 -IQuickThreads -I. threads.c || touch $@
299 +
300 +-$(L)/libthreads-uJcontext-tls.o: $(LIBTHREADSDEPS) uJcontext.c
301 ++$(L)/libthreads-uJcontext-tls.a: $(LIBTHREADSDEPS) uJcontext.c
302 + -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_JCONTEXT=1 -DCMK_THREADS_BUILD_TLS=1 -IQuickThreads -I. threads.c || touch $@
303 +
304 +-$(L)/libthreads-pthreads.o: $(LIBTHREADSDEPS)
305 ++$(L)/libthreads-pthreads.a: $(LIBTHREADSDEPS)
306 + -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_PTHREADS=1 -IQuickThreads threads.c || touch $@
307 +
308 +-$(L)/libthreads-fibers.o: $(LIBTHREADSDEPS)
309 ++$(L)/libthreads-fibers.a: $(LIBTHREADSDEPS)
310 + -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_FIBERS=1 -IQuickThreads threads.c 2> /dev/null || touch $@
311 +
312 +-$(L)/libthreads-stackcopy.o: $(LIBTHREADSDEPS)
313 ++$(L)/libthreads-stackcopy.a: $(LIBTHREADSDEPS)
314 + -$(CHARMC) -o $@ -DCMK_THREADS_BUILD_STACKCOPY=1 -IQuickThreads threads.c || touch $@
315 +
316 +-$(L)/libthreads-memoryalias.o: $(LIBTHREADSDEPS)
317 ++$(L)/libthreads-memoryalias.a: $(LIBTHREADSDEPS)
318 + -$(CHARMC) -o $@ -DCMK_THREADS_ALIAS_STACK=1 -DCMK_THREADS_BUILD_DEFAULT=1 -IQuickThreads threads.c || touch $@
319 +
320 +-$(L)/libthreads-qt-memoryalias.o: $(LIBTHREADSDEPS)
321 ++$(L)/libthreads-qt-memoryalias.a: $(LIBTHREADSDEPS)
322 + -$(CHARMC) -o $@ -DCMK_THREADS_ALIAS_STACK=1 -DCMK_THREADS_BUILD_QT=1 -IQuickThreads threads.c || touch $@
323 +
324 +-$(L)/libthreads-context-memoryalias.o: $(LIBTHREADSDEPS)
325 ++$(L)/libthreads-context-memoryalias.a: $(LIBTHREADSDEPS)
326 + -$(CHARMC) -o $@ -DCMK_THREADS_ALIAS_STACK=1 -DCMK_THREADS_BUILD_CONTEXT=1 -IQuickThreads threads.c || touch $@
327 +
328 +-$(L)/libthreads-uJcontext-memoryalias.o: $(LIBTHREADSDEPS)
329 ++$(L)/libthreads-uJcontext-memoryalias.a: $(LIBTHREADSDEPS)
330 + -$(CHARMC) -o $@ -DCMK_THREADS_ALIAS_STACK=1 -DCMK_THREADS_BUILD_JCONTEXT=1 -IQuickThreads -I. threads.c || touch $@
331 +
332 + ## Global swapping (-swapglobal)
333 +-swapglobal-target: $(L)/libglobal-swap.o $(L)/libglobal-copy.o $(L)/loadsym.o
334 ++swapglobal-target: $(L)/libglobal-swap.a $(L)/libglobal-copy.a $(L)/loadsym.a
335 +
336 +-$(L)/libglobal-swap.o: global-elfgot.C $(CVHEADERS)
337 ++$(L)/libglobal-swap.a: global-elfgot.C $(CVHEADERS)
338 + -$(CHARMC) -c global-elfgot.C -o $@ || touch $@
339 +
340 +-$(L)/libglobal-copy.o: global-elfcopy.C $(CVHEADERS)
341 ++$(L)/libglobal-copy.a: global-elfcopy.C $(CVHEADERS)
342 + -$(CHARMC) -c global-elfcopy.C -o $@ || touch $@
343 +
344 +-$(L)/loadsym.o: loadsym.c $(CVHEADERS)
345 ++$(L)/loadsym.a: loadsym.c $(CVHEADERS)
346 + -$(CHARMC) -c loadsym.c -o $@ || touch $@
347 +
348 + ###############################################################################
349 +diff --git a/src/scripts/charmc b/src/scripts/charmc
350 +index 0502c27..a984b18 100755
351 +--- a/src/scripts/charmc
352 ++++ b/src/scripts/charmc
353 +@@ -346,6 +346,14 @@ printVersion()
354 + echo Charm++ Version $version
355 + }
356 +
357 ++getLibraryObject()
358 ++{
359 ++ if [[ -f "${CHARMLIB}/$1-$2.a" ]]; then
360 ++ echo "${CHARMLIB}/$1-$2.a"
361 ++ else
362 ++ echo "${CHARMLIBSO}/$1-$2.so"
363 ++ fi
364 ++}
365 +
366 + ##############################################################################
367 + #
368 +@@ -1697,13 +1705,12 @@ then
369 + fi
370 +
371 + BAL_EXT=`getExtention $BALANCE`
372 +-if [ -z "$BAL_EXT" ]
373 +-then
374 +-# Balance has no extention-- is a library reference
375 +- BAL_OBJ="$CHARMLIB/libldb-$BALANCE.o"
376 ++if [[ -z "$BAL_EXT" ]]; then
377 ++ # Balance has no extension-- is a library reference
378 ++ BAL_OBJ=$(getLibraryObject "libldb" ${BALANCE})
379 + else
380 +-# Balance has some extention-- must be a .o or .a file
381 +- BAL_OBJ="$BALANCE"
382 ++ # Balance has some extension-- must be a .o or .a file
383 ++ BAL_OBJ="$BALANCE"
384 + fi
385 +
386 + Debug "Finished with BAL_OBJ=$BAL_OBJ, TRACEMODE=$TRACEMODE..."
387 +@@ -1719,10 +1726,11 @@ then
388 + fi
389 + fi
390 +
391 ++Debug "Finished with BAL_OBJ=$BAL_OBJ, TRACEMODE=$TRACEMODE..."
392 +
393 + # Check for valid choice of MEMORY
394 +
395 +-MEM_OBJ="$CHARMLIB/libmemory-$MEMORY.o"
396 ++MEM_OBJ=$(getLibraryObject "libmemory" ${MEMORY})
397 +
398 + if [ ! -r $MEM_OBJ -o ! -s $MEM_OBJ ]
399 + then
400 +@@ -1733,7 +1741,7 @@ fi
401 + # For memory wrapping around the OS allocator, need to add also the wrapper object
402 + case $MEMORY in
403 + os-*)
404 +- MEM_OBJ=$MEM_OBJ" $CHARMLIB/libmemory-os-wrapper.o"
405 ++ MEM_OBJ="${MEM_OBJ} $(getLibraryObject 'libmemory' 'os-wrapper')"
406 + ;;
407 + esac
408 +
409 +@@ -1751,7 +1759,8 @@ then
410 + THREAD=${THREAD}-tls
411 + fi
412 + fi
413 +-THREAD_OBJ="$CHARMLIB/libthreads-$THREAD.o"
414 ++
415 ++THREAD_OBJ=$(getLibraryObject "libthreads" ${THREAD})
416 +
417 + if [ ! -r $THREAD_OBJ -o ! -s $THREAD_OBJ ]
418 + then
419 +@@ -1931,7 +1940,7 @@ esac
420 +
421 + if [ "$BUILD_SHARE" = "0" ]
422 + then
423 +- MIDDLE_LIBS="$MEM_OBJ $THREAD_OBJ $MIDDLE_LIBS"
424 ++ MIDDLE_LIBS="$MIDDLE_LIBS $MEM_OBJ $THREAD_OBJ"
425 + fi
426 +
427 + if [ "$CHARM_SHARED" = "1" ]
428 +@@ -1943,23 +1952,23 @@ then
429 + then
430 + LANG_LIBS="-L$CHARMLIBSO $OBJECTFILES $PRE_LIBRARIES"
431 + else
432 +- LANG_LIBS="-L$CHARMLIBSO $BAL_OBJ $OBJECTFILES $modInitObj $PRE_LIBRARIES"
433 ++ LANG_LIBS="-L$CHARMLIBSO $OBJECTFILES $modInitObj $PRE_LIBRARIES"
434 + fi
435 + else
436 + # if interoperate, need a lib with moduleinit
437 + if [ "$MPI_INTEROPERATE" != "" ]
438 + then
439 +- LANG_LIBS="-L$CHARMLIB -I$CHARMINC $CMK_SYSINC $BAL_OBJ $PRE_LIBRARIES"
440 ++ LANG_LIBS="-L$CHARMLIB -I$CHARMINC $CMK_SYSINC $PRE_LIBRARIES"
441 + else
442 +- LANG_LIBS="-L$CHARMLIB -I$CHARMINC $CMK_SYSINC $BAL_OBJ $OBJECTFILES $modInitObj $PRE_LIBRARIES"
443 ++ LANG_LIBS="-L$CHARMLIB -I$CHARMINC $CMK_SYSINC $OBJECTFILES $modInitObj $PRE_LIBRARIES"
444 + fi
445 + fi
446 + if [ "$TRACE_WITH_TAU" = 1 ]
447 + then
448 + echo "Linking with the TAU libraries: $TAU_LIBS"
449 +- ALL_LIBS="$LANG_LIBS $MIDDLE_LIBS $CMK_LIBS $POST_LIBRARIES $CMK_SYSLIBS $TAU_LIBS"
450 ++ ALL_LIBS="$LANG_LIBS $MIDDLE_LIBS $BAL_OBJ $CMK_LIBS $POST_LIBRARIES $CMK_SYSLIBS $TAU_LIBS"
451 + else
452 +- ALL_LIBS="$LANG_LIBS $MIDDLE_LIBS $CMK_LIBS $POST_LIBRARIES $CMK_SYSLIBS"
453 ++ ALL_LIBS="$LANG_LIBS $MIDDLE_LIBS $BAL_OBJ $CMK_LIBS $POST_LIBRARIES $CMK_SYSLIBS"
454 + fi
455 + Debugf "All libraries are: $ALL_LIBS"
456 +
457 +--
458 +1.8.3.2
459 +