diff options
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | Makefile | 12 | ||||
| -rw-r--r-- | XLIBS.c | 23 | ||||
| -rw-r--r-- | config.c | 45 | 
4 files changed, 52 insertions, 30 deletions
| @@ -1,4 +1,4 @@ -XLIBS +config  config.h  *.o  sxiv @@ -24,27 +24,27 @@ options:  	@echo "CC $<"  	@$(CC) $(CFLAGS) -DVERSION=\"$(VERSION)\" -c -o $@ $< -$(OBJ) XLIBS: Makefile config.h +$(OBJ) config: Makefile config.h -XLIBS: XLIBS.c +config: config.c  	@$(CC) $(CFLAGS) -o $@ $@.c  config.h:  	@echo "creating $@ from config.def.h"  	@cp config.def.h $@ -sxiv:	$(OBJ) XLIBS +sxiv:	$(OBJ) config  	@echo "CC -o $@" -	@$(CC) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) $$(./XLIBS) +	@$(CC) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) $$(./config -l)  clean:  	@echo "cleaning" -	@rm -f $(OBJ) XLIBS sxiv sxiv-$(VERSION).tar.gz +	@rm -f $(OBJ) config sxiv sxiv-$(VERSION).tar.gz  dist: clean  	@echo "creating dist tarball"  	@mkdir -p sxiv-$(VERSION) -	@cp LICENSE Makefile README.md config.def.h sxiv.1 $(SRC) XLIBS.c \ +	@cp LICENSE Makefile README.md config.def.h sxiv.1 $(SRC) config.c \  	    sxiv-$(VERSION)  	@tar -cf sxiv-$(VERSION).tar sxiv-$(VERSION)  	@gzip sxiv-$(VERSION).tar diff --git a/XLIBS.c b/XLIBS.c deleted file mode 100644 index 14dc1e1..0000000 --- a/XLIBS.c +++ /dev/null @@ -1,23 +0,0 @@ -#define _POSIX_C_SOURCE 200112L -#define _FEATURE_CONFIG - -#include <stdio.h> - -#include "config.h" - -int n = 0; - -inline void put_lib_flag(const char *flag, int needed) { -	if (needed) -		printf("%s%s", n++ ? " " : "", flag); -} - -int main(int argc, char **argv) { -	put_lib_flag("-lexif", EXIF_SUPPORT); -	put_lib_flag("-lgif",  GIF_SUPPORT); - -	if (n) -		printf("\n"); - -	return 0; -} diff --git a/config.c b/config.c new file mode 100644 index 0000000..51da7db --- /dev/null +++ b/config.c @@ -0,0 +1,45 @@ +#define _POSIX_C_SOURCE 200112L +#define _FEATURE_CONFIG + +#include <stdio.h> +#include <string.h> + +#include "config.h" + +#define QUOTE(m) #m +#define PUT_MACRO(m) \ +	printf("%s-D%s=%s", n++ ? " " : "", #m, QUOTE(m)) + +int n = 0; + +inline void puts_if(const char *s, int c) { +	if (c) +		printf("%s%s", n++ ? " " : "", s); +} + +inline void endl() { +	if (n) { +		printf("\n"); +		n = 0; +	} +} + +int main(int argc, char **argv) { +	int i; + +	for (i = 1; i < argc; i++) { +		if (!strcmp(argv[i], "-D")) { +			PUT_MACRO(EXIF_SUPPORT); +			PUT_MACRO(GIF_SUPPORT); +			endl(); +		} else if (!strcmp(argv[i], "-l")) { +			puts_if("-lexif", EXIF_SUPPORT); +			puts_if("-lgif",  GIF_SUPPORT); +			endl(); +		} else { +			fprintf(stderr, "%s: invalid argument: %s\n", argv[0], argv[i]); +			return 1; +		} +	} +	return 0; +} | 
