Add support for spaces in filenames (10/x)

This takes care of libraries.

GNU Make is required for this to work.
This commit is contained in:
Pierre Pronchery 2019-02-28 14:16:40 +01:00
parent 7c672403b2
commit 75472fa2c0

View File

@ -1335,22 +1335,22 @@ static int _target_library(Makefile * makefile, String const * target)
if(soname == NULL) if(soname == NULL)
return 1; return 1;
if(os == HO_MACOSX) if(os == HO_MACOSX)
_makefile_print(makefile, "%s%s%s%s%s", "\n$(OBJDIR)", soname, ": $(", _makefile_print(makefile, "%s%s", "\n$(OBJDIR)", soname);
target, "_OBJS)");
else if(os == HO_WIN32) else if(os == HO_WIN32)
_makefile_print(makefile, "%s%s%s%s%s", "\n$(OBJDIR)", soname, ": $(", _makefile_print(makefile, "%s%s", "\n$(OBJDIR)", soname);
target, "_OBJS)");
else else
_makefile_print(makefile, "%s%s%s%s%s", "\n$(OBJDIR)", soname, _makefile_print(makefile, "%s%s%s", "\n$(OBJDIR)", soname,
".0: $(", target, "_OBJS)"); ".0");
_makefile_print(makefile, ": $(");
_makefile_print_escape_variable(makefile, target);
_makefile_print(makefile, "%s", "_OBJS)");
if((p = _makefile_get_config(makefile, target, "depends")) != NULL if((p = _makefile_get_config(makefile, target, "depends")) != NULL
&& _makefile_expand(makefile, p) != 0) && _makefile_expand(makefile, p) != 0)
return error_print(PROGNAME); return error_print(PROGNAME);
_makefile_print(makefile, "\n"); _makefile_print(makefile, "\n");
/* build the shared library */ /* build the shared library */
_makefile_print(makefile, "%s%s%s", "\t$(CCSHARED) -o $(OBJDIR)", soname, _makefile_print(makefile, "%s%s%s", "\t$(CCSHARED) -o $(OBJDIR)", soname,
(os != HO_MACOSX && os != HO_WIN32) (os != HO_MACOSX && os != HO_WIN32) ? ".0" : "");
? ".0" : "");
if((p = _makefile_get_config(makefile, target, "install")) != NULL) if((p = _makefile_get_config(makefile, target, "install")) != NULL)
{ {
/* soname is not available on MacOS X */ /* soname is not available on MacOS X */
@ -1362,8 +1362,11 @@ static int _target_library(Makefile * makefile, String const * target)
_makefile_print(makefile, "%s%s", " -Wl,-soname,", _makefile_print(makefile, "%s%s", " -Wl,-soname,",
soname); soname);
} }
_makefile_print(makefile, "%s%s%s%s%s", " $(", target, "_OBJS) $(", _makefile_print(makefile, "%s", " $(");
target, "_LDFLAGS)"); _makefile_print_escape_variable(makefile, target);
_makefile_print(makefile, "%s", "_OBJS) $(");
_makefile_print_escape_variable(makefile, target);
_makefile_print(makefile, "%s", "_LDFLAGS)");
if((q = string_new_append(target, "$(SOEXT)", NULL)) == NULL) if((q = string_new_append(target, "$(SOEXT)", NULL)) == NULL)
{ {
string_delete(soname); string_delete(soname);
@ -1377,19 +1380,19 @@ static int _target_library(Makefile * makefile, String const * target)
{ {
_makefile_print(makefile, "%s%s%s%s%s", "\n$(OBJDIR)", target, _makefile_print(makefile, "%s%s%s%s%s", "\n$(OBJDIR)", target,
".0$(SOEXT): $(OBJDIR)", soname, "\n"); ".0$(SOEXT): $(OBJDIR)", soname, "\n");
_makefile_print(makefile, "%s%s%s%s%s%s", "\t$(LN) -s -- ", soname, _makefile_print(makefile, "%s%s%s%s%s\n", "\t$(LN) -s -- ",
" $(OBJDIR)", target, ".0$(SOEXT)", "\n"); soname, " $(OBJDIR)", target, ".0$(SOEXT)");
_makefile_print(makefile, "%s%s%s%s%s", "\n$(OBJDIR)", target, _makefile_print(makefile, "%s%s%s%s\n", "\n$(OBJDIR)", target,
"$(SOEXT): $(OBJDIR)", soname, "\n"); "$(SOEXT): $(OBJDIR)", soname);
_makefile_print(makefile, "%s%s%s%s%s", "\t$(LN) -s -- ", soname, _makefile_print(makefile, "%s%s%s%s%s", "\t$(LN) -s -- ",
" $(OBJDIR)", target, "$(SOEXT)\n"); soname, " $(OBJDIR)", target, "$(SOEXT)\n");
} }
else if(os != HO_WIN32) else if(os != HO_WIN32)
{ {
_makefile_print(makefile, "%s%s%s%s%s", "\n$(OBJDIR)", soname, _makefile_print(makefile, "%s%s%s%s%s", "\n$(OBJDIR)", soname,
": $(OBJDIR)", soname, ".0\n"); ": $(OBJDIR)", soname, ".0\n");
_makefile_print(makefile, "%s%s%s%s%s", "\t$(LN) -s -- ", soname, _makefile_print(makefile, "%s%s%s%s\n", "\t$(LN) -s -- ",
".0 $(OBJDIR)", soname, "\n"); soname, ".0 $(OBJDIR)", soname);
_makefile_print(makefile, "%s%s%s%s%s", "\n$(OBJDIR)", target, _makefile_print(makefile, "%s%s%s%s%s", "\n$(OBJDIR)", target,
"$(SOEXT): $(OBJDIR)", soname, ".0\n"); "$(SOEXT): $(OBJDIR)", soname, ".0\n");
_makefile_print(makefile, "%s%s%s%s%s", "\t$(LN) -s -- ", soname, _makefile_print(makefile, "%s%s%s%s%s", "\t$(LN) -s -- ", soname,
@ -1412,15 +1415,16 @@ static int _target_library_static(Makefile * makefile, String const * target)
return error_print(PROGNAME); return error_print(PROGNAME);
_makefile_print(makefile, "\n"); _makefile_print(makefile, "\n");
/* build the static library */ /* build the static library */
_makefile_print(makefile, "%s%s%s%s%s", _makefile_print(makefile, "%s", "\t$(AR) $(ARFLAGS) $(OBJDIR)");
"\t$(AR) $(ARFLAGS) $(OBJDIR)", target, ".a $(", _makefile_print_escape(makefile, target);
target, "_OBJS)"); _makefile_print(makefile, "%s", ".a $(");
_makefile_print_escape_variable(makefile, target);
_makefile_print(makefile, "%s", "_OBJS)");
len = strlen(target) + 3; len = strlen(target) + 3;
if((q = malloc(len)) == NULL) if((q = malloc(len)) == NULL)
return 1; return 1;
snprintf(q, len, "%s.a", target); snprintf(q, len, "%s.a", target);
if((p = _makefile_get_config(makefile, q, "ldflags")) if((p = _makefile_get_config(makefile, q, "ldflags")) != NULL)
!= NULL)
_binary_ldflags(makefile, p); _binary_ldflags(makefile, p);
free(q); free(q);
_makefile_print(makefile, "%s%s%s", _makefile_print(makefile, "%s%s%s",