From a415d0adf1a078325ddb500e0643eb5a4a67e0ac Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Wed, 12 Nov 2014 01:43:50 +0100 Subject: [PATCH] Isolated the generation of static libraries as a platform capability --- src/configure.c | 14 ++++++++++++++ src/configure.h | 2 ++ src/makefile.c | 23 +++++++++++++---------- 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/configure.c b/src/configure.c index 8b46f16..c3b798e 100644 --- a/src/configure.c +++ b/src/configure.c @@ -410,6 +410,20 @@ static int _configure_do(Configure * configure, configArray * ca) } +/* accessors */ +/* configure_can_library_static */ +int configure_can_library_static(Configure * configure) +{ + switch(configure->os) + { + case HO_WIN32: + return 0; + default: + return 1; + } +} + + /* configure_get_config */ String const * configure_get_config(Configure * configure, String const * section, String const * variable) diff --git a/src/configure.h b/src/configure.h index 7431832..e2ae6c5 100644 --- a/src/configure.h +++ b/src/configure.h @@ -167,6 +167,8 @@ typedef struct _Configure int configure(Prefs * prefs, char const * directory); /* accessors */ +int configure_can_library_static(Configure * configure); + String const * configure_get_config(Configure * configure, String const * section, String const * variable); String const * configure_get_soext(Configure * configure); diff --git a/src/makefile.c b/src/makefile.c index 8d895a7..37a4fc4 100644 --- a/src/makefile.c +++ b/src/makefile.c @@ -351,16 +351,19 @@ static int _variables_targets_library(Configure * configure, FILE * fp, soname = string_new_append(target, soext, ".0", NULL); if(soname == NULL) return 1; + if(configure_can_library_static(configure)) + /* generate a static library */ + fprintf(fp, "%s%s%s", " $(OBJDIR)", target, ".a"); if(configure->os == HO_MACOSX) - fprintf(fp, " %s%s%s%s%s%s%s%s%s%s%s", "$(OBJDIR)", target, - ".a $(OBJDIR)", soname, " $(OBJDIR)", target, - ".0", soext, " $(OBJDIR)", target, soext); + fprintf(fp, "%s%s%s%s%s%s%s%s%s", " $(OBJDIR)", soname, + " $(OBJDIR)", target, ".0", soext, " $(OBJDIR)", + target, soext); else if(configure->os == HO_WIN32) - fprintf(fp, " %s%s", "$(OBJDIR)", soname); + fprintf(fp, "%s%s", " $(OBJDIR)", soname); else - fprintf(fp, " %s%s%s%s%s%s%s%s%s", "$(OBJDIR)", target, - ".a $(OBJDIR)", soname, ".0 $(OBJDIR)", soname, - " $(OBJDIR)", target, soext); + fprintf(fp, "%s%s%s%s%s%s%s", " $(OBJDIR)", soname, + ".0 $(OBJDIR)", soname, " $(OBJDIR)", target, + soext); string_delete(soname); return 0; } @@ -1143,7 +1146,7 @@ static int _target_library(Configure * configure, FILE * fp, if(_target_flags(configure, fp, target) != 0) return 1; soext = configure_get_soext(configure); - if(configure->os != HO_WIN32) + if(configure_can_library_static(configure)) { /* generate a static library */ fprintf(fp, "\n%s%s%s%s%s", "$(OBJDIR)", target, ".a: $(", target, @@ -1975,7 +1978,7 @@ static int _install_target_library(Configure * configure, FILE * fp, return 0; soext = configure_get_soext(configure); fprintf(fp, "%s%s\n", "\t$(MKDIR) $(DESTDIR)", path); - if(configure->os != HO_WIN32) + if(configure_can_library_static(configure)) fprintf(fp, "%s%s%s%s/%s%s", "\t$(INSTALL) -m 0644 $(OBJDIR)", target, ".a $(DESTDIR)", path, target, ".a\n"); if((p = config_get(configure->config, target, "soname")) != NULL) @@ -2362,7 +2365,7 @@ static int _uninstall_target_library(Configure * configure, FILE * fp, const String rm_destdir[] = "$(RM) -- $(DESTDIR)"; soext = configure_get_soext(configure); - if(configure->os != HO_WIN32) + if(configure_can_library_static(configure)) fprintf(fp, format, rm_destdir, path, target, ".a\n", "", ""); if((p = config_get(configure->config, target, "soname")) != NULL) soname = string_new(p);