Generate USING_BINARY{32,64} - blind - suckless command-line video editing utility
HTML git clone git://git.suckless.org/blind
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit 48ca891887e8260be43ae641b35c4129fd4d2093
DIR parent f3cde9060c57320c9ed7a9b4bcb494bd411fb1f4
HTML Author: Mattias Andrée <maandree@kth.se>
Date: Sat, 15 Jul 2017 03:19:46 +0200
Generate USING_BINARY{32,64}
Signed-off-by: Mattias Andrée <maandree@kth.se>
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(-)
---
DIR diff --git a/.gitignore b/.gitignore
@@ -7,6 +7,8 @@
*.swp
*.o
*.out
+/platform.h
+/generate-macros
/blind-*
!/blind-rotate-90
!/blind-rotate-180
DIR 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
DIR 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_BINARY64.
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 for previewing
DIR 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;\
DIR 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;\
DIR 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"
DIR 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 == 0xbfb5555555555555ULL);
+ }
+ return 0;
+}