Generate USING_BINARY{32,64} - blind - suckless command-line video editing util… | |
git clone git://git.suckless.org/blind | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 48ca891887e8260be43ae641b35c4129fd4d2093 | |
parent f3cde9060c57320c9ed7a9b4bcb494bd411fb1f4 | |
Author: Mattias Andrée <[email protected]> | |
Date: Sat, 15 Jul 2017 03:19:46 +0200 | |
Generate USING_BINARY{32,64} | |
Signed-off-by: Mattias Andrée <[email protected]> | |
Diffstat: | |
M .gitignore | 2 ++ | |
M Makefile | 12 +++++++++--- | |
M TODO | 1 - | |
M src/blind-from-portable.c | 3 --- | |
M src/blind-to-portable.c | 3 --- | |
M src/common.h | 1 + | |
A src/generate-macros.c | 22 ++++++++++++++++++++++ | |
7 files changed, 34 insertions(+), 10 deletions(-) | |
--- | |
diff --git a/.gitignore b/.gitignore | |
@@ -7,6 +7,8 @@ | |
*.swp | |
*.o | |
*.out | |
+/platform.h | |
+/generate-macros | |
/blind-* | |
!/blind-rotate-90 | |
!/blind-rotate-180 | |
diff --git a/Makefile b/Makefile | |
@@ -155,9 +155,15 @@ all: $(BIN) | |
%: %.o $(COMMON_OBJ) | |
$(CC) -o $@ $^ $(LDFLAGS) | |
-%.o: src/%.c src/*.h src/*/*.h | |
+%.o: src/%.c src/*.h src/*/*.h platform.h | |
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< | |
+generate-macros: src/generate-macros.c | |
+ $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $< $(LDFLAGS) | |
+ | |
+platform.h: generate-macros | |
+ ./generate-macros > platform.h | |
+ | |
install: all | |
mkdir -p -- "$(DESTDIR)$(PREFIX)/bin" | |
cp -f -- $(BIN) "$(DESTDIR)$(PREFIX)/bin" | |
@@ -196,9 +202,9 @@ dist: | |
rm -rf "blind-$(VERSION)" | |
clean: | |
- -rm -f $(BIN) *.o blind-$(VERSION).tar.gz | |
+ -rm -f $(BIN) *.o blind-$(VERSION).tar.gz platform.h generate-macros | |
-rm -rf "blind-$(VERSION)" | |
.PHONY: all install uninstall dist clean | |
-.PRECIOUS: $(COMMON_OBJ) | |
+.PRECIOUS: $(COMMON_OBJ) platform.h | |
diff --git a/TODO b/TODO | |
@@ -56,7 +56,6 @@ blind-arithm: add support for multiple streams | |
Add [-j jobs] to blind-from-video and blind-to-video. | |
-Generate a header file with the appropriate values for USING_BINARY32, USING_B… | |
long double is slightly faster than long. | |
long double (xyza q) could be added as another format. | |
unsigned char (xyza 8) could be added as another format, it's probably good fo… | |
diff --git a/src/blind-from-portable.c b/src/blind-from-portable.c | |
@@ -3,9 +3,6 @@ | |
USAGE("[-s]") | |
-#define USING_BINARY32 0 | |
-#define USING_BINARY64 0 | |
- | |
#define CONV(ITYPE, SITYPE, OTYPE, EXPONENT, HA2EXPONENT, FRACTION)\ | |
do {\ | |
static int cache_i = 0;\ | |
diff --git a/src/blind-to-portable.c b/src/blind-to-portable.c | |
@@ -9,9 +9,6 @@ | |
USAGE("[-s]") | |
-#define USING_BINARY32 0 | |
-#define USING_BINARY64 0 | |
- | |
#define CONV(ITYPE, OTYPE, SOTYPE, EXPONENT, HA2EXPONENT, FRACTION)\ | |
do {\ | |
static int cache_i = 0;\ | |
diff --git a/src/common.h b/src/common.h | |
@@ -17,6 +17,7 @@ | |
# pragma GCC diagnostic ignored "-Wfloat-conversion" | |
#endif | |
+#include "../platform.h" | |
#include "stream.h" | |
#include "util.h" | |
#include "video-math.h" | |
diff --git a/src/generate-macros.c b/src/generate-macros.c | |
@@ -0,0 +1,22 @@ | |
+#include <stdint.h> | |
+#include <stdio.h> | |
+ | |
+int | |
+main(void) | |
+{ | |
+ if (sizeof(float) == 4) { | |
+ unsigned long int a, b; | |
+ a = (unsigned long int)*(uint32_t *)&(float){ (float)(1. / 12… | |
+ b = (unsigned long int)*(uint32_t *)&(float){ -(float)(1. / 12… | |
+ printf("#define USING_BINARY32 %i\n", | |
+ a == 0x3daaaaabUL && b == 0xbdaaaaabUL); | |
+ } | |
+ if (sizeof(double) == 8) { | |
+ unsigned long long int a, b; | |
+ a = (unsigned long long int)*(uint64_t *)&(double){ 1. / 12. … | |
+ b = (unsigned long long int)*(uint64_t *)&(double){ -1. / 12. … | |
+ printf("#define USING_BINARY64 %i\n", | |
+ a == 0x3fb5555555555555ULL && b == 0xbfb5555555555555UL… | |
+ } | |
+ return 0; | |
+} |