Browse Source

Fix windows build for so version greater than 0

Samuel Thibault 13 years ago
parent
commit
77c5f483ad
2 changed files with 16 additions and 6 deletions
  1. 4 2
      src/Makefile.am
  2. 12 4
      src/dolib.c

+ 4 - 2
src/Makefile.am

@@ -22,6 +22,8 @@ EXTRA_DIST = dolib.c
 
 ldflags =
 
+libstarpu_so_version = $(LIBSTARPU_INTERFACE_CURRENT):$(LIBSTARPU_INTERFACE_REVISION):$(LIBSTARPU_INTERFACE_AGE)
+
 if STARPU_HAVE_WINDOWS
 
 LC_MESSAGES=C
@@ -31,7 +33,7 @@ ldflags += -Xlinker --output-def -Xlinker .libs/libstarpu-@STARPU_EFFECTIVE_VERS
 
 if STARPU_HAVE_MS_LIB
 .libs/libstarpu-@STARPU_EFFECTIVE_VERSION@.lib: libstarpu-@STARPU_EFFECTIVE_VERSION@.la dolib
-	./dolib "$(STARPU_MS_LIB)" $(STARPU_MS_LIB_ARCH) .libs/libstarpu-@STARPU_EFFECTIVE_VERSION@.def libstarpu-0 .libs/libstarpu-@STARPU_EFFECTIVE_VERSION@.lib
+	./dolib "$(STARPU_MS_LIB)" $(STARPU_MS_LIB_ARCH) .libs/libstarpu-@STARPU_EFFECTIVE_VERSION@.def $(libstarpu_so_version) .libs/libstarpu-@STARPU_EFFECTIVE_VERSION@.lib
 all-local: .libs/libstarpu-@STARPU_EFFECTIVE_VERSION@.lib
 endif STARPU_HAVE_MS_LIB
 
@@ -51,7 +53,7 @@ libstarpu_@STARPU_EFFECTIVE_VERSION@_la_CPPFLAGS = -I$(top_srcdir)/include/ -DBU
 libstarpu_@STARPU_EFFECTIVE_VERSION@_la_CFLAGS = $(GLOBAL_AM_CFLAGS) $(HWLOC_CFLAGS) $(STARPU_CUDA_CPPFLAGS) $(STARPU_OPENCL_CPPFLAGS) $(FXT_CFLAGS)
 libstarpu_@STARPU_EFFECTIVE_VERSION@_la_LIBADD = -lm $(HWLOC_LIBS) $(STARPU_CUDA_LDFLAGS) $(STARPU_OPENCL_LDFLAGS) $(FXT_LIBS) $(STARPU_GLPK_LDFLAGS)
 libstarpu_@STARPU_EFFECTIVE_VERSION@_la_LDFLAGS = $(ldflags) -no-undefined									\
-  -version-info $(LIBSTARPU_INTERFACE_CURRENT):$(LIBSTARPU_INTERFACE_REVISION):$(LIBSTARPU_INTERFACE_AGE)
+  -version-info $(libstarpu_so_version)
 
 noinst_HEADERS = 						\
 	core/dependencies/data_concurrency.h			\

+ 12 - 4
src/dolib.c

@@ -1,6 +1,6 @@
 /* StarPU --- Runtime system for heterogeneous multicore architectures.
  *
- * Copyright (C) 2010  Université de Bordeaux 1
+ * Copyright (C) 2010, 2012  Université de Bordeaux 1
  *
  * StarPU is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -22,8 +22,10 @@
 
 int main(int argc, char *argv[])
 {
-	char *prog, *arch, *def, *name, *lib;
+	char *prog, *arch, *def, *name, *version, *lib;
 	char s[1024];
+	char name[16];
+	int current, age, revision;
 
 	if (argc != 6)
 	{
@@ -34,10 +36,16 @@ int main(int argc, char *argv[])
 	prog = argv[1];
 	arch = argv[2];
 	def = argv[3];
-	name = argv[4];
+	version = argv[4];
 	lib = argv[5];
 
-	snprintf(s, sizeof(s), "\"%s\" /machine:%s /def:%s /name:%s /out:%s",
+	if (sscanf(version, "%d:%d:%d", &current, &revision, &age) != 3)
+		exit(EXIT_FAILURE);
+
+	_snprintf(name, sizeof(name), "libstarpu-%d", current - age);
+	printf("using soname %s\n", name);
+
+	_snprintf(s, sizeof(s), "\"%s\" /machine:%s /def:%s /name:%s /out:%s",
 		 prog, arch, def, name, lib);
 	if (system(s))
 	{