software: add nofloat libbase for size-optimized binaries
authorSebastien Bourdeauducq <sebastien@milkymist.org>
Sun, 19 May 2013 10:41:40 +0000 (12:41 +0200)
committerSebastien Bourdeauducq <sebastien@milkymist.org>
Sun, 19 May 2013 10:41:40 +0000 (12:41 +0200)
software/bios/Makefile
software/common.mak
software/libbase/Makefile
software/libbase/vsnprintf.c

index af8552e88d8cf6828ff12894daf4d0f6d0d0e770..95d182c46ecdb9f6a63778611b0fc3222d80acad 100644 (file)
@@ -22,7 +22,7 @@ bios-rescue.elf: linker-rescue.ld $(OBJECTS) libs
                -L$(M2DIR)/software/libnet \
                -L$(M2DIR)/software/libbase \
                -L$(M2DIR)/software/libcompiler-rt \
-               -lnet -lbase -lcompiler-rt
+               -lnet -lbase-nofloat -lcompiler-rt
        chmod -x $@
 
 main.o: main.c
index 8f6e507e001f16c039552cb1a9ea4a147c2ff56a..adc7c9362ffd78e3e2699c838a36daa19fc99b9e 100644 (file)
@@ -49,8 +49,8 @@ LDFLAGS = -nostdlib -nodefaultlibs
 # http://scottmcpeak.com/autodepend/autodepend.html
 
 define compilexx-dep
-$(CX) -c $(CXXFLAGS) $< -o $*.o
-@$(CX_normal) -MM $(CXXFLAGS) $< > $*.d
+$(CX) -c $(CXXFLAGS) $(1) $< -o $*.o
+@$(CX_normal) -MM $(CXXFLAGS) $(1) $< > $*.d
 @mv -f $*.d $*.d.tmp
 @sed -e 's|.*:|$*.o:|' < $*.d.tmp > $*.d
 @sed -e 's/.*://' -e 's/\\$$//' < $*.d.tmp | fmt -1 | \
@@ -59,8 +59,8 @@ $(CX) -c $(CXXFLAGS) $< -o $*.o
 endef
 
 define compile-dep
-$(CC) -c $(CFLAGS) $< -o $*.o
-@$(CC_normal) -MM $(CFLAGS) $< > $*.d
+$(CC) -c $(CFLAGS) $(1) $< -o $*.o
+@$(CC_normal) -MM $(CFLAGS) $(1) $< > $*.d
 @mv -f $*.d $*.d.tmp
 @sed -e 's|.*:|$*.o:|' < $*.d.tmp > $*.d
 @sed -e 's/.*://' -e 's/\\$$//' < $*.d.tmp | fmt -1 | \
index 1a80ed19d304e114bcae788f36cb65a84960543f..0a97b9730c4d10d18c1e1403b71e7c9d9410aef5 100644 (file)
@@ -1,17 +1,24 @@
 M2DIR=../..
 include $(M2DIR)/software/common.mak
 
-OBJECTS=setjmp.o libc.o errno.o crc16.o crc32.o console.o system.o board.o uart.o vsnprintf.o strtod.o qsort.o
+OBJECTS=setjmp.o libc.o errno.o crc16.o crc32.o console.o system.o board.o uart.o qsort.o strtod.o
 
-all: libbase.a
+all: libbase.a libbase-nofloat.a
 
 # pull in dependency info for *existing* .o files
 -include $(OBJECTS:.o=.d)
 
-libbase.a: $(OBJECTS)
-       $(AR) clr libbase.a $(OBJECTS)
+libbase.a: $(OBJECTS) vsnprintf.o
+       $(AR) clr libbase.a $(OBJECTS) vsnprintf.o
        $(RANLIB) libbase.a
 
+libbase-nofloat.a: $(OBJECTS) vsnprintf-nofloat.o
+       $(AR) clr libbase-nofloat.a $(OBJECTS) vsnprintf-nofloat.o
+       $(RANLIB) libbase-nofloat.a
+
+vsnprintf-nofloat.o: vsnprintf.c
+       $(call compile-dep,-DNO_FLOAT)
+
 %.o: %.c
        $(compile-dep)
 
@@ -21,4 +28,5 @@ libbase.a: $(OBJECTS)
 .PHONY: clean
 
 clean:
-       $(RM) $(OBJECTS) $(OBJECTS:.o=.ts) $(OBJECTS:.o=.d) libbase.a .*~ *~
+       $(RM) $(OBJECTS) $(OBJECTS:.o=.d) vsnprintf.o vsnprintf.d vsnprintf-nofloat.o vsnprintf-nofloat.d
+       $(RM) libbase.a libbase-nofloat.a .*~ *~
index 57948a6a9a4b8ab0916d91998525efde121c050f..d23f66a7b3aaec4b9e61ed648d77f4b0b2008f6c 100644 (file)
@@ -192,6 +192,7 @@ int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
                                                16, field_width, precision, flags);
                                continue;
 
+#ifndef NO_FLOAT
                        case 'g':
                        case 'f': {
                                int m;
@@ -241,6 +242,7 @@ int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
                                
                                continue;
                        }
+#endif
 
                        case 'n':
                                /* FIXME: