Output more portable Makefiles

The extensions for executable files and shared objects can be
chosen without re-generating the Makefiles. There are still major
differences between MacOS X, Windows and UNIX platforms but these
changes reduce them a lot, especially when building binaries.

This should also help writing cross-platform "project.conf" files.
This commit is contained in:
Pierre Pronchery 2015-09-09 12:38:37 -04:00
parent 0173cf2984
commit 8567ccc29a

View File

@ -285,7 +285,6 @@ static int _variables_targets(Configure * configure, FILE * fp)
int ret = 0; int ret = 0;
String const * p; String const * p;
String * prints; String * prints;
String const * soext;
String * q; String * q;
size_t i; size_t i;
char c; char c;
@ -296,7 +295,6 @@ static int _variables_targets(Configure * configure, FILE * fp)
return 0; return 0;
if((prints = string_new(p)) == NULL) if((prints = string_new(p)) == NULL)
return 1; return 1;
soext = configure_get_soext(configure);
q = prints; q = prints;
_makefile_print(fp, "%s", "TARGETS\t="); _makefile_print(fp, "%s", "TARGETS\t=");
for(i = 0;; i++) for(i = 0;; i++)
@ -312,11 +310,9 @@ static int _variables_targets(Configure * configure, FILE * fp)
switch(enum_string(TT_LAST, sTargetType, type)) switch(enum_string(TT_LAST, sTargetType, type))
{ {
case TT_BINARY: case TT_BINARY:
_makefile_print(fp, " $(OBJDIR)%s", _makefile_print(fp,
" $(OBJDIR)%s$(EXEEXT)",
prints); prints);
if(configure->os == HO_WIN32)
_makefile_print(fp, "%s",
"$(EXEEXT)");
break; break;
case TT_LIBRARY: case TT_LIBRARY:
ret |= _variables_targets_library( ret |= _variables_targets_library(
@ -339,9 +335,9 @@ static int _variables_targets(Configure * configure, FILE * fp)
prints); prints);
break; break;
case TT_PLUGIN: case TT_PLUGIN:
_makefile_print(fp, " $(OBJDIR)%s%s", _makefile_print(fp,
prints, " $(OBJDIR)%s$(SOEXT)",
soext); prints);
break; break;
} }
if(c == '\0') if(c == '\0')
@ -357,36 +353,34 @@ static int _variables_targets(Configure * configure, FILE * fp)
static int _variables_targets_library(Configure * configure, FILE * fp, static int _variables_targets_library(Configure * configure, FILE * fp,
char const * target) char const * target)
{ {
String const * soext;
String * soname; String * soname;
String const * p; String const * p;
soext = configure_get_soext(configure);
if((p = config_get(configure->config, target, "soname")) != NULL) if((p = config_get(configure->config, target, "soname")) != NULL)
soname = string_new(p); soname = string_new(p);
else if(configure->os == HO_MACOSX) else if(configure->os == HO_MACOSX)
/* versioning is different on MacOS X */ /* versioning is different on MacOS X */
soname = string_new_append(target, ".0.0", soext, NULL); soname = string_new_append(target, ".0.0$(SOEXT)", NULL);
else if(configure->os == HO_WIN32) else if(configure->os == HO_WIN32)
/* and on Windows */ /* and on Windows */
soname = string_new_append(target, soext, NULL); soname = string_new_append(target, "$(SOEXT)", NULL);
else else
soname = string_new_append(target, soext, ".0", NULL); soname = string_new_append(target, "$(SOEXT)", ".0", NULL);
if(soname == NULL) if(soname == NULL)
return 1; return 1;
if(configure_can_library_static(configure)) if(configure_can_library_static(configure))
/* generate a static library */ /* generate a static library */
_makefile_print(fp, "%s%s%s", " $(OBJDIR)", target, ".a"); _makefile_print(fp, "%s%s%s", " $(OBJDIR)", target, ".a");
if(configure->os == HO_MACOSX) if(configure->os == HO_MACOSX)
_makefile_print(fp, "%s%s%s%s%s%s%s%s%s", " $(OBJDIR)", soname, _makefile_print(fp, "%s%s%s%s%s%s%s", " $(OBJDIR)", soname,
" $(OBJDIR)", target, ".0", soext, " $(OBJDIR)", " $(OBJDIR)", target, ".0$(SOEXT) $(OBJDIR)",
target, soext); target, "$(SOEXT)");
else if(configure->os == HO_WIN32) else if(configure->os == HO_WIN32)
_makefile_print(fp, "%s%s", " $(OBJDIR)", soname); _makefile_print(fp, "%s%s", " $(OBJDIR)", soname);
else else
_makefile_print(fp, "%s%s%s%s%s%s%s", " $(OBJDIR)", soname, _makefile_print(fp, "%s%s%s%s%s%s%s", " $(OBJDIR)", soname,
".0 $(OBJDIR)", soname, " $(OBJDIR)", target, ".0 $(OBJDIR)", soname, " $(OBJDIR)", target,
soext); "$(SOEXT)");
string_delete(soname); string_delete(soname);
return 0; return 0;
} }
@ -1056,17 +1050,16 @@ static int _target_binary(Configure * configure, FILE * fp,
return 1; return 1;
_makefile_print(fp, "%c", '\n'); _makefile_print(fp, "%c", '\n');
/* output the binary target */ /* output the binary target */
_makefile_print(fp, "%s%s%s%s%s%s", "$(OBJDIR)", target, _makefile_print(fp, "%s%s%s%s%s%s", "$(OBJDIR)", target, "$(EXEEXT)",
(configure->os == HO_WIN32) ? "$(EXEEXT)" : "",
": $(", target, "_OBJS)"); ": $(", target, "_OBJS)");
if((p = config_get(configure->config, target, "depends")) != NULL if((p = config_get(configure->config, target, "depends")) != NULL
&& _makefile_expand(fp, p) != 0) && _makefile_expand(fp, p) != 0)
return error_print(PROGNAME); return error_print(PROGNAME);
_makefile_print(fp, "%c", '\n'); _makefile_print(fp, "%c", '\n');
/* build the binary */ /* build the binary */
_makefile_print(fp, "%s%s%s%s%s%s%s%s", "\t$(CC) -o $(OBJDIR)", target, _makefile_print(fp, "%s%s%s%s%s%s%s", "\t$(CC) -o $(OBJDIR)", target,
(configure->os == HO_WIN32) ? "$(EXEEXT)" : "", " $(", "$(EXEEXT) $(", target, "_OBJS) $(", target,
target, "_OBJS) $(", target, "_LDFLAGS)\n"); "_LDFLAGS)\n");
return 0; return 0;
} }
@ -1194,17 +1187,14 @@ static void _flags_cxx(Configure * configure, FILE * fp, String const * target)
static int _target_library(Configure * configure, FILE * fp, static int _target_library(Configure * configure, FILE * fp,
String const * target) String const * target)
{ {
String const * soext;
String const * p; String const * p;
String * q; String * q;
String * soname; String * soname;
size_t len;
if(_target_objs(configure, fp, target) != 0) if(_target_objs(configure, fp, target) != 0)
return 1; return 1;
if(_target_flags(configure, fp, target) != 0) if(_target_flags(configure, fp, target) != 0)
return 1; return 1;
soext = configure_get_soext(configure);
if(configure_can_library_static(configure) if(configure_can_library_static(configure)
/* generate a static library */ /* generate a static library */
&& _target_library_static(configure, fp, target) != 0) && _target_library_static(configure, fp, target) != 0)
@ -1213,12 +1203,12 @@ static int _target_library(Configure * configure, FILE * fp,
soname = string_new(p); soname = string_new(p);
else if(configure->os == HO_MACOSX) else if(configure->os == HO_MACOSX)
/* versioning is different on MacOS X */ /* versioning is different on MacOS X */
soname = string_new_append(target, ".0.0", soext, NULL); soname = string_new_append(target, ".0.0$(SOEXT)", NULL);
else if(configure->os == HO_WIN32) else if(configure->os == HO_WIN32)
/* and on Windows */ /* and on Windows */
soname = string_new_append(target, soext, NULL); soname = string_new_append(target, "$(SOEXT)", NULL);
else else
soname = string_new_append(target, soext, ".0", NULL); soname = string_new_append(target, "$(SOEXT)", ".0", NULL);
if(soname == NULL) if(soname == NULL)
return 1; return 1;
if(configure->os == HO_MACOSX) if(configure->os == HO_MACOSX)
@ -1242,34 +1232,32 @@ static int _target_library(Configure * configure, FILE * fp,
{ {
/* soname is not available on MacOS X */ /* soname is not available on MacOS X */
if(configure->os == HO_MACOSX) if(configure->os == HO_MACOSX)
_makefile_print(fp, "%s%s%s%s%s%s", " -install_name ", _makefile_print(fp, "%s%s%s%s%s", " -install_name ",
p, "/", target, ".0", soext); p, "/", target, ".0$(SOEXT)");
else if(configure->os != HO_WIN32) else if(configure->os != HO_WIN32)
_makefile_print(fp, "%s%s", " -Wl,-soname,", soname); _makefile_print(fp, "%s%s", " -Wl,-soname,", soname);
} }
_makefile_print(fp, "%s%s%s%s%s", " $(", target, "_OBJS) $(", target, _makefile_print(fp, "%s%s%s%s%s", " $(", target, "_OBJS) $(", target,
"_LDFLAGS)"); "_LDFLAGS)");
len = strlen(target) + strlen(soext) + 1; if((q = string_new_append(target, "$(SOEXT)", NULL)) == NULL)
if((q = malloc(len)) == NULL)
{ {
string_delete(soname); string_delete(soname);
return 1; return 1;
} }
snprintf(q, len, "%s%s", target, soext);
if((p = config_get(configure->config, q, "ldflags")) != NULL) if((p = config_get(configure->config, q, "ldflags")) != NULL)
_binary_ldflags(configure, fp, p); _binary_ldflags(configure, fp, p);
free(q); string_delete(q);
_makefile_print(fp, "%c", '\n'); _makefile_print(fp, "%c", '\n');
if(configure->os == HO_MACOSX) if(configure->os == HO_MACOSX)
{ {
_makefile_print(fp, "%s%s%s%s%s%s%s", "\n$(OBJDIR)", target, _makefile_print(fp, "%s%s%s%s%s", "\n$(OBJDIR)", target,
".0", soext, ": $(OBJDIR)", soname, "\n"); ".0$(SOEXT): $(OBJDIR)", soname, "\n");
_makefile_print(fp, "%s%s%s%s%s%s%s", "\t$(LN) -s -- ", soname,
" $(OBJDIR)", target, ".0", soext, "\n");
_makefile_print(fp, "%s%s%s%s%s%s", "\n$(OBJDIR)", target,
soext, ": $(OBJDIR)", soname, "\n");
_makefile_print(fp, "%s%s%s%s%s%s", "\t$(LN) -s -- ", soname, _makefile_print(fp, "%s%s%s%s%s%s", "\t$(LN) -s -- ", soname,
" $(OBJDIR)", target, soext, "\n"); " $(OBJDIR)", target, ".0$(SOEXT)", "\n");
_makefile_print(fp, "%s%s%s%s%s", "\n$(OBJDIR)", target,
"$(SOEXT): $(OBJDIR)", soname, "\n");
_makefile_print(fp, "%s%s%s%s%s", "\t$(LN) -s -- ", soname,
" $(OBJDIR)", target, "$(SOEXT)\n");
} }
else if(configure->os != HO_WIN32) else if(configure->os != HO_WIN32)
{ {
@ -1277,10 +1265,10 @@ static int _target_library(Configure * configure, FILE * fp,
": $(OBJDIR)", soname, ".0\n"); ": $(OBJDIR)", soname, ".0\n");
_makefile_print(fp, "%s%s%s%s%s", "\t$(LN) -s -- ", soname, _makefile_print(fp, "%s%s%s%s%s", "\t$(LN) -s -- ", soname,
".0 $(OBJDIR)", soname, "\n"); ".0 $(OBJDIR)", soname, "\n");
_makefile_print(fp, "%s%s%s%s%s%s", "\n$(OBJDIR)", target, _makefile_print(fp, "%s%s%s%s%s", "\n$(OBJDIR)", target,
soext, ": $(OBJDIR)", soname, ".0\n"); "$(SOEXT): $(OBJDIR)", soname, ".0\n");
_makefile_print(fp, "%s%s%s%s%s%s", "\t$(LN) -s -- ", soname, _makefile_print(fp, "%s%s%s%s%s", "\t$(LN) -s -- ", soname,
".0 $(OBJDIR)", target, soext, "\n"); ".0 $(OBJDIR)", target, "$(SOEXT)\n");
} }
string_delete(soname); string_delete(soname);
return 0; return 0;
@ -1402,7 +1390,6 @@ static int _target_object(Configure * configure, FILE * fp,
static int _target_plugin(Configure * configure, FILE * fp, static int _target_plugin(Configure * configure, FILE * fp,
String const * target) String const * target)
{ {
String const * soext;
String const * p; String const * p;
String * q; String * q;
@ -1410,24 +1397,21 @@ static int _target_plugin(Configure * configure, FILE * fp,
return 1; return 1;
if(_target_flags(configure, fp, target) != 0) if(_target_flags(configure, fp, target) != 0)
return 1; return 1;
soext = configure_get_soext(configure); _makefile_print(fp, "%s%s%s%s%s", "\n$(OBJDIR)", target,
_makefile_print(fp, "%s%s%s%s%s%s", "\n$(OBJDIR)", target, "$(SOEXT): $(", target, "_OBJS)");
soext, ": $(", target, "_OBJS)");
if((p = config_get(configure->config, target, "depends")) != NULL if((p = config_get(configure->config, target, "depends")) != NULL
&& _makefile_expand(fp, p) != 0) && _makefile_expand(fp, p) != 0)
return error_print(PROGNAME); return error_print(PROGNAME);
_makefile_print(fp, "%c", '\n'); _makefile_print(fp, "%c", '\n');
/* build the plug-in */ /* build the plug-in */
_makefile_print(fp, "%s%s%s%s%s%s%s%s", "\t$(CCSHARED) -o $(OBJDIR)", _makefile_print(fp, "%s%s%s%s%s%s%s", "\t$(CCSHARED) -o $(OBJDIR)",
target, soext, " $(", target, "_OBJS) $(", target, target, "$(SOEXT) $(", target, "_OBJS) $(", target,
"_LDFLAGS)"); "_LDFLAGS)");
if((q = malloc(strlen(target) + strlen(soext) + 1)) != NULL) if((q = string_new_append(target, "$(SOEXT)", NULL)) == NULL)
{ return error_print(PROGNAME);
sprintf(q, "%s%s", target, soext);
if((p = config_get(configure->config, q, "ldflags")) != NULL) if((p = config_get(configure->config, q, "ldflags")) != NULL)
_binary_ldflags(configure, fp, p); _binary_ldflags(configure, fp, p);
free(q); string_delete(q);
}
_makefile_print(fp, "%c", '\n'); _makefile_print(fp, "%c", '\n');
return 0; return 0;
} }
@ -2044,28 +2028,24 @@ static void _install_target_binary(Configure * configure, FILE * fp,
String const * target) String const * target)
{ {
String const * path; String const * path;
String const * exeext;
if((path = config_get(configure->config, target, "install")) == NULL) if((path = config_get(configure->config, target, "install")) == NULL)
return; return;
exeext = (configure->os == HO_WIN32) ? "$(EXEEXT)" : "";
_makefile_print(fp, "%s%s\n", "\t$(MKDIR) $(DESTDIR)", path); _makefile_print(fp, "%s%s\n", "\t$(MKDIR) $(DESTDIR)", path);
_makefile_print(fp, "%s%s%s%s%s/%s%s\n", _makefile_print(fp, "%s%s%s%s/%s%s\n",
"\t$(INSTALL) -m 0755 $(OBJDIR)", target, exeext, "\t$(INSTALL) -m 0755 $(OBJDIR)", target,
" $(DESTDIR)", path, target, exeext); "$(EXEEXT) $(DESTDIR)", path, target, "$(EXEEXT)");
} }
static int _install_target_library(Configure * configure, FILE * fp, static int _install_target_library(Configure * configure, FILE * fp,
String const * target) String const * target)
{ {
String const * path; String const * path;
String const * soext;
String const * p; String const * p;
String * soname; String * soname;
if((path = config_get(configure->config, target, "install")) == NULL) if((path = config_get(configure->config, target, "install")) == NULL)
return 0; return 0;
soext = configure_get_soext(configure);
_makefile_print(fp, "%s%s\n", "\t$(MKDIR) $(DESTDIR)", path); _makefile_print(fp, "%s%s\n", "\t$(MKDIR) $(DESTDIR)", path);
if(configure_can_library_static(configure)) if(configure_can_library_static(configure))
/* install the static library */ /* install the static library */
@ -2076,12 +2056,12 @@ static int _install_target_library(Configure * configure, FILE * fp,
soname = string_new(p); soname = string_new(p);
else if(configure->os == HO_MACOSX) else if(configure->os == HO_MACOSX)
/* versioning is different on MacOS X */ /* versioning is different on MacOS X */
soname = string_new_append(target, ".0.0", soext, NULL); soname = string_new_append(target, ".0.0$(SOEXT)", NULL);
else if(configure->os == HO_WIN32) else if(configure->os == HO_WIN32)
/* and on Windows */ /* and on Windows */
soname = string_new_append(target, soext, NULL); soname = string_new_append(target, "$(SOEXT)", NULL);
else else
soname = string_new_append(target, soext, ".0", NULL); soname = string_new_append(target, "$(SOEXT)", ".0", NULL);
if(soname == NULL) if(soname == NULL)
return 1; return 1;
/* install the shared library */ /* install the shared library */
@ -2089,10 +2069,10 @@ static int _install_target_library(Configure * configure, FILE * fp,
{ {
_makefile_print(fp, "%s%s%s%s/%s%s", "\t$(INSTALL) -m 0755 $(OBJDIR)", _makefile_print(fp, "%s%s%s%s/%s%s", "\t$(INSTALL) -m 0755 $(OBJDIR)",
soname, " $(DESTDIR)", path, soname, "\n"); soname, " $(DESTDIR)", path, soname, "\n");
_makefile_print(fp, "%s%s%s%s/%s%s%s%s", "\t$(LN) -s -- ", soname, _makefile_print(fp, "%s%s%s%s/%s%s", "\t$(LN) -s -- ", soname,
" $(DESTDIR)", path, target, ".0", soext, "\n"); " $(DESTDIR)", path, target, ".0$(SOEXT)\n");
_makefile_print(fp, "%s%s%s%s/%s%s%s", "\t$(LN) -s -- ", soname, _makefile_print(fp, "%s%s%s%s/%s%s", "\t$(LN) -s -- ", soname,
" $(DESTDIR)", path, target, soext, "\n"); " $(DESTDIR)", path, target, "$(SOEXT)\n");
} }
else if(configure->os == HO_WIN32) else if(configure->os == HO_WIN32)
_makefile_print(fp, "%s%s%s%s%s%s%s", "\t$(INSTALL) -m 0755 $(OBJDIR)", _makefile_print(fp, "%s%s%s%s%s%s%s", "\t$(INSTALL) -m 0755 $(OBJDIR)",
@ -2103,8 +2083,8 @@ static int _install_target_library(Configure * configure, FILE * fp,
soname, ".0 $(DESTDIR)", path, soname, ".0\n"); soname, ".0 $(DESTDIR)", path, soname, ".0\n");
_makefile_print(fp, "%s%s%s%s/%s%s", "\t$(LN) -s -- ", soname, _makefile_print(fp, "%s%s%s%s/%s%s", "\t$(LN) -s -- ", soname,
".0 $(DESTDIR)", path, soname, "\n"); ".0 $(DESTDIR)", path, soname, "\n");
_makefile_print(fp, "%s%s%s%s/%s%s%s", "\t$(LN) -s -- ", soname, _makefile_print(fp, "%s%s%s%s/%s%s", "\t$(LN) -s -- ", soname,
".0 $(DESTDIR)", path, target, soext, "\n"); ".0 $(DESTDIR)", path, target, "$(SOEXT)\n");
} }
string_delete(soname); string_delete(soname);
return 0; return 0;
@ -2142,14 +2122,12 @@ static void _install_target_plugin(Configure * configure, FILE * fp,
String const * target) String const * target)
{ {
String const * path; String const * path;
String const * soext;
String const * mode; String const * mode;
mode_t m = 0755; mode_t m = 0755;
String * p; String * p;
if((path = config_get(configure->config, target, "install")) == NULL) if((path = config_get(configure->config, target, "install")) == NULL)
return; return;
soext = configure_get_soext(configure);
if((mode = config_get(configure->config, target, "mode")) == NULL if((mode = config_get(configure->config, target, "mode")) == NULL
/* XXX these tests are not sufficient */ /* XXX these tests are not sufficient */
|| mode[0] == '\0' || mode[0] == '\0'
@ -2157,9 +2135,9 @@ static void _install_target_plugin(Configure * configure, FILE * fp,
|| *p != '\0') || *p != '\0')
mode = "0755"; mode = "0755";
_makefile_print(fp, "%s%s\n", "\t$(MKDIR) $(DESTDIR)", path); _makefile_print(fp, "%s%s\n", "\t$(MKDIR) $(DESTDIR)", path);
_makefile_print(fp, "%s%04o%s%s%s%s%s%s%s%s%s", "\t$(INSTALL) -m ", m, _makefile_print(fp, "%s%04o%s%s%s%s%s%s%s", "\t$(INSTALL) -m ", m,
" $(OBJDIR)", target, soext, " $(DESTDIR)", path, "/", " $(OBJDIR)", target, "$(SOEXT) $(DESTDIR)", path, "/",
target, soext, "\n"); target, "$(SOEXT)\n");
} }
static void _install_target_script(Configure * configure, FILE * fp, static void _install_target_script(Configure * configure, FILE * fp,
@ -2460,8 +2438,6 @@ static int _uninstall_target(Configure * configure, FILE * fp,
{ {
String const * type; String const * type;
String const * path; String const * path;
String const * exeext;
String const * soext;
TargetType tt; TargetType tt;
const String rm_destdir[] = "$(RM) -- $(DESTDIR)"; const String rm_destdir[] = "$(RM) -- $(DESTDIR)";
@ -2469,14 +2445,12 @@ static int _uninstall_target(Configure * configure, FILE * fp,
return 1; return 1;
if((path = config_get(configure->config, target, "install")) == NULL) if((path = config_get(configure->config, target, "install")) == NULL)
return 0; return 0;
exeext = (configure->os == HO_WIN32) ? "$(EXEEXT)" : "";
soext = configure_get_soext(configure);
tt = enum_string(TT_LAST, sTargetType, type); tt = enum_string(TT_LAST, sTargetType, type);
switch(tt) switch(tt)
{ {
case TT_BINARY: case TT_BINARY:
_makefile_print(fp, "\t%s%s/%s%s\n", rm_destdir, path, _makefile_print(fp, "\t%s%s/%s%s\n", rm_destdir, path,
target, exeext); target, "$(EXEEXT)");
break; break;
case TT_LIBRARY: case TT_LIBRARY:
if(_uninstall_target_library(configure, fp, target, if(_uninstall_target_library(configure, fp, target,
@ -2489,11 +2463,12 @@ static int _uninstall_target(Configure * configure, FILE * fp,
target, ".la\n"); target, ".la\n");
break; break;
case TT_OBJECT: case TT_OBJECT:
_makefile_print(fp, "\t%s%s/%s\n", rm_destdir, path, target); _makefile_print(fp, "\t%s%s/%s\n", rm_destdir, path,
target);
break; break;
case TT_PLUGIN: case TT_PLUGIN:
_makefile_print(fp, "\t%s%s/%s%s\n", rm_destdir, path, target, _makefile_print(fp, "\t%s%s/%s%s\n", rm_destdir, path,
soext); target, "$(SOEXT)");
break; break;
case TT_SCRIPT: case TT_SCRIPT:
_uninstall_target_script(configure, fp, target, path); _uninstall_target_script(configure, fp, target, path);
@ -2507,13 +2482,11 @@ static int _uninstall_target(Configure * configure, FILE * fp,
static int _uninstall_target_library(Configure * configure, FILE * fp, static int _uninstall_target_library(Configure * configure, FILE * fp,
String const * target, String const * path) String const * target, String const * path)
{ {
String const * soext;
String * soname; String * soname;
String const * p; String const * p;
const String format[] = "\t%s%s/%s%s%s%s"; const String format[] = "\t%s%s/%s%s%s%s";
const String rm_destdir[] = "$(RM) -- $(DESTDIR)"; const String rm_destdir[] = "$(RM) -- $(DESTDIR)";
soext = configure_get_soext(configure);
if(configure_can_library_static(configure)) if(configure_can_library_static(configure))
/* uninstall the static library */ /* uninstall the static library */
_makefile_print(fp, format, rm_destdir, path, target, ".a\n", _makefile_print(fp, format, rm_destdir, path, target, ".a\n",
@ -2522,12 +2495,12 @@ static int _uninstall_target_library(Configure * configure, FILE * fp,
soname = string_new(p); soname = string_new(p);
else if(configure->os == HO_MACOSX) else if(configure->os == HO_MACOSX)
/* versioning is different on MacOS X */ /* versioning is different on MacOS X */
soname = string_new_append(target, ".0.0", soext, NULL); soname = string_new_append(target, ".0.0$(SOEXT)", NULL);
else if(configure->os == HO_WIN32) else if(configure->os == HO_WIN32)
/* and on Windows */ /* and on Windows */
soname = string_new_append(target, soext, NULL); soname = string_new_append(target, "$(SOEXT)", NULL);
else else
soname = string_new_append(target, soext, ".0", NULL); soname = string_new_append(target, "$(SOEXT).0", NULL);
if(soname == NULL) if(soname == NULL)
return 1; return 1;
/* uninstall the shared library */ /* uninstall the shared library */
@ -2536,7 +2509,7 @@ static int _uninstall_target_library(Configure * configure, FILE * fp,
_makefile_print(fp, format, rm_destdir, path, soname, "\n", "", _makefile_print(fp, format, rm_destdir, path, soname, "\n", "",
""); "");
_makefile_print(fp, format, rm_destdir, path, target, ".0", _makefile_print(fp, format, rm_destdir, path, target, ".0",
soext, "\n"); "$(SOEXT)", "\n");
} }
else if(configure->os != HO_WIN32) else if(configure->os != HO_WIN32)
{ {
@ -2545,7 +2518,8 @@ static int _uninstall_target_library(Configure * configure, FILE * fp,
_makefile_print(fp, format, rm_destdir, path, soname, "\n", "", _makefile_print(fp, format, rm_destdir, path, soname, "\n", "",
""); "");
} }
_makefile_print(fp, format, rm_destdir, path, target, soext, "\n", ""); _makefile_print(fp, format, rm_destdir, path, target, "$(SOEXT)", "\n",
"");
string_delete(soname); string_delete(soname);
return 0; return 0;
} }