URI: 
       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;
       +}