Fri, 06 Sep 2013 13:20:20 +0200
minor code fixes + added clang support + improved build system
1.1 --- a/Makefile Thu Sep 05 13:55:04 2013 +0200 1.2 +++ b/Makefile Fri Sep 06 13:20:20 2013 +0200 1.3 @@ -29,20 +29,20 @@ 1.4 1.5 # 1.6 # available configurations: 1.7 -# gcc 1.8 -# suncc 1.9 +# clang, clang-debug 1.10 +# gcc, gcc-debug 1.11 +# g++, g++-debug 1.12 +# osx, osx-debug 1.13 +# suncc, suncc-debug 1.14 # windows 1.15 -# osx 1.16 # 1.17 1.18 -#ifndef CONF 1.19 - CONF=gcc 1.20 -#endif 1.21 +CONF=gcc 1.22 +PREFIX=/usr/local 1.23 1.24 +include unix.mk 1.25 include $(CONF).mk 1.26 1.27 -all: ucx test 1.28 - 1.29 ucx: FORCE 1.30 cd ucx; $(MAKE) CONF=$(CONF) all 1.31 1.32 @@ -52,9 +52,22 @@ 1.33 run: FORCE test 1.34 ./build/test$(APP_EXT) 1.35 1.36 +install: ucx | $(PREFIX)/include/ucx $(PREFIX)/lib 1.37 + cp ./build/libucx$(LIB_EXT) $(PREFIX)/lib && \ 1.38 + cp ./ucx/*.h $(PREFIX)/include/ucx 1.39 + 1.40 +uninstall: 1.41 + $(RM) $(RMFLAGS) $(PREFIX)/include/ucx &&\ 1.42 + $(RM) $(RMFLAGS) $(PREFIX)/lib/libucx$(LIB_EXT) 1.43 + 1.44 +$(PREFIX)/lib: 1.45 + mkdir -p $(PREFIX)/lib 1.46 + 1.47 +$(PREFIX)/include/ucx: 1.48 + mkdir -p $(PREFIX)/include/ucx 1.49 + 1.50 clean: FORCE 1.51 - $(RM) $(RMFLAGS) build/*.${OBJ_EXT} 1.52 - $(RM) $(RMFLAGS) build/*.${LIB_EXT} 1.53 + $(RM) $(RMFLAGS) build 1.54 1.55 FORCE: 1.56
2.1 --- a/README Thu Sep 05 13:55:04 2013 +0200 2.2 +++ b/README Fri Sep 06 13:20:20 2013 +0200 2.3 @@ -31,10 +31,10 @@ 2.4 2.5 make 2.6 2.7 -The further available configurations are gcc-debug, g++, g++-debug, osx, 2.8 -osx-debug, suncc, suncc-debug and windows. The later uses microsoft visual C++ 2.9 -compiler. If you want to use mingw oder cygwin, you can use the default gcc 2.10 -configuration. 2.11 +The available configurations are clang, clang-debug, gcc, gcc-debug, g++, 2.12 +g++-debug, osx, osx-debug, suncc, suncc-debug and windows. The later uses 2.13 +microsoft visual C++ compiler. If you want to use mingw oder cygwin, you can 2.14 +use the default gcc configuration. 2.15 2.16 The build files are placed into a build subdirectory, which is created if it 2.17 does not exists. 2.18 @@ -49,7 +49,7 @@ 2.19 2.20 The default prefix is /usr/local. 2.21 2.22 -If you want to test you build, run 2.23 +If you want to test your build, run 2.24 2.25 make run CONF=<yourconfig> 2.26
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/clang-debug.mk Fri Sep 06 13:20:20 2013 +0200 3.3 @@ -0,0 +1,34 @@ 3.4 +# 3.5 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. 3.6 +# 3.7 +# Copyright 2013 Olaf Wintermann. All rights reserved. 3.8 +# 3.9 +# Redistribution and use in source and binary forms, with or without 3.10 +# modification, are permitted provided that the following conditions are met: 3.11 +# 3.12 +# 1. Redistributions of source code must retain the above copyright 3.13 +# notice, this list of conditions and the following disclaimer. 3.14 +# 3.15 +# 2. Redistributions in binary form must reproduce the above copyright 3.16 +# notice, this list of conditions and the following disclaimer in the 3.17 +# documentation and/or other materials provided with the distribution. 3.18 +# 3.19 +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 3.20 +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 3.21 +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 3.22 +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 3.23 +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 3.24 +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 3.25 +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 3.26 +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 3.27 +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 3.28 +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 3.29 +# POSSIBILITY OF SUCH DAMAGE. 3.30 +# 3.31 + 3.32 +CC = clang 3.33 +LD = clang 3.34 + 3.35 +CFLAGS = -std=gnu99 -g -fstrict-aliasing -Wall -pedantic -c 3.36 +LDFLAGS = -lm 3.37 +
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 4.2 +++ b/clang.mk Fri Sep 06 13:20:20 2013 +0200 4.3 @@ -0,0 +1,34 @@ 4.4 +# 4.5 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. 4.6 +# 4.7 +# Copyright 2013 Olaf Wintermann. All rights reserved. 4.8 +# 4.9 +# Redistribution and use in source and binary forms, with or without 4.10 +# modification, are permitted provided that the following conditions are met: 4.11 +# 4.12 +# 1. Redistributions of source code must retain the above copyright 4.13 +# notice, this list of conditions and the following disclaimer. 4.14 +# 4.15 +# 2. Redistributions in binary form must reproduce the above copyright 4.16 +# notice, this list of conditions and the following disclaimer in the 4.17 +# documentation and/or other materials provided with the distribution. 4.18 +# 4.19 +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 4.20 +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 4.21 +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 4.22 +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 4.23 +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 4.24 +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 4.25 +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 4.26 +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 4.27 +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 4.28 +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 4.29 +# POSSIBILITY OF SUCH DAMAGE. 4.30 +# 4.31 + 4.32 +CC = clang 4.33 +LD = clang 4.34 + 4.35 +CFLAGS = -std=gnu99 -O2 -fstrict-aliasing -c 4.36 +LDFLAGS = -lm 4.37 +
5.1 --- a/gcc-debug.mk Thu Sep 05 13:55:04 2013 +0200 5.2 +++ b/gcc-debug.mk Fri Sep 06 13:20:20 2013 +0200 5.3 @@ -28,16 +28,7 @@ 5.4 5.5 CC = gcc 5.6 LD = gcc 5.7 -AR = ar 5.8 -RM = rm 5.9 5.10 CFLAGS = -std=gnu99 -g -fstrict-aliasing -Wall -pedantic -c 5.11 -COFLAGS = -o 5.12 LDFLAGS = 5.13 -LOFLAGS = -o 5.14 -ARFLAGS = -r 5.15 -RMFLAGS = -f 5.16 5.17 -OBJ_EXT = o 5.18 -LIB_EXT = a 5.19 -APP_EXT =
6.1 --- a/gcc.mk Thu Sep 05 13:55:04 2013 +0200 6.2 +++ b/gcc.mk Fri Sep 06 13:20:20 2013 +0200 6.3 @@ -28,17 +28,7 @@ 6.4 6.5 CC = gcc 6.6 LD = gcc 6.7 -AR = ar 6.8 -RM = rm 6.9 6.10 CFLAGS = -std=gnu99 -O2 -fstrict-aliasing -c 6.11 -COFLAGS = -o 6.12 LDFLAGS = 6.13 -LOFLAGS = -o 6.14 -ARFLAGS = -r 6.15 -RMFLAGS = -f 6.16 6.17 -OBJ_EXT = o 6.18 -LIB_EXT = a 6.19 -APP_EXT = 6.20 -
7.1 --- a/osx-debug.mk Thu Sep 05 13:55:04 2013 +0200 7.2 +++ b/osx-debug.mk Fri Sep 06 13:20:20 2013 +0200 7.3 @@ -28,17 +28,7 @@ 7.4 7.5 CC = cc 7.6 LD = cc 7.7 -AR = ar 7.8 -RM = rm 7.9 7.10 CFLAGS = -g -c 7.11 -COFLAGS = -o ./ 7.12 LDFLAGS = 7.13 -LOFLAGS = -o ./ 7.14 -ARFLAGS = -r 7.15 -RMFLAGS = -f 7.16 7.17 -OBJ_EXT = o 7.18 -LIB_EXT = a 7.19 -APP_EXT = 7.20 -
8.1 --- a/osx.mk Thu Sep 05 13:55:04 2013 +0200 8.2 +++ b/osx.mk Fri Sep 06 13:20:20 2013 +0200 8.3 @@ -28,17 +28,7 @@ 8.4 8.5 CC = cc 8.6 LD = cc 8.7 -AR = ar 8.8 -RM = rm 8.9 8.10 CFLAGS = -O2 -c 8.11 -COFLAGS = -o ./ 8.12 LDFLAGS = 8.13 -LOFLAGS = -o ./ 8.14 -ARFLAGS = -r 8.15 -RMFLAGS = -f 8.16 8.17 -OBJ_EXT = o 8.18 -LIB_EXT = a 8.19 -APP_EXT = 8.20 -
9.1 --- a/suncc-debug.mk Thu Sep 05 13:55:04 2013 +0200 9.2 +++ b/suncc-debug.mk Fri Sep 06 13:20:20 2013 +0200 9.3 @@ -26,19 +26,9 @@ 9.4 # POSSIBILITY OF SUCH DAMAGE. 9.5 # 9.6 9.7 -CC = CC 9.8 +CC = cc 9.9 LD = cc 9.10 -AR = ar 9.11 -RM = rm 9.12 9.13 CFLAGS = -g -c 9.14 -COFLAGS = -o 9.15 LDFLAGS = -lm 9.16 -LOFLAGS = -o 9.17 -ARFLAGS = -r 9.18 -RMFLAGS = -f 9.19 9.20 -OBJ_EXT = o 9.21 -LIB_EXT = a 9.22 -APP_EXT = 9.23 -
10.1 --- a/suncc.mk Thu Sep 05 13:55:04 2013 +0200 10.2 +++ b/suncc.mk Fri Sep 06 13:20:20 2013 +0200 10.3 @@ -28,17 +28,7 @@ 10.4 10.5 CC = cc 10.6 LD = cc 10.7 -AR = ar 10.8 -RM = rm 10.9 10.10 CFLAGS = -O -c 10.11 -COFLAGS = -o 10.12 LDFLAGS = -lm 10.13 -LOFLAGS = -o 10.14 -ARFLAGS = -r 10.15 -RMFLAGS = -f 10.16 10.17 -OBJ_EXT = o 10.18 -LIB_EXT = a 10.19 -APP_EXT = 10.20 -
11.1 --- a/test/Makefile Thu Sep 05 13:55:04 2013 +0200 11.2 +++ b/test/Makefile Fri Sep 06 13:20:20 2013 +0200 11.3 @@ -26,6 +26,7 @@ 11.4 # POSSIBILITY OF SUCH DAMAGE. 11.5 # 11.6 11.7 +include ../unix.mk 11.8 include ../$(CONF).mk 11.9 11.10 SRC = main.c 11.11 @@ -38,16 +39,14 @@ 11.12 SRC += buffer_tests.c 11.13 SRC += utils_tests.c 11.14 11.15 -OBJ = $(SRC:%.c=../build/%.$(OBJ_EXT)) 11.16 +OBJ = $(SRC:%.c=../build/%$(OBJ_EXT)) 11.17 11.18 -all: ../build/test1 11.19 +all: $(OBJ) 11.20 + $(LD) $(LDFLAGS) $(LOFLAGS)../build/test$(APP_EXT) $(OBJ) \ 11.21 + ../build/libucx$(LIB_EXT) 11.22 11.23 -../build/test1: $(OBJ) 11.24 - $(LD) $(LDFLAGS) $(LOFLAGS)../build/test$(APP_EXT) $(OBJ) \ 11.25 - ../build/libucx.$(LIB_EXT) 11.26 - 11.27 -../build/%.$(OBJ_EXT): %.c ../build 11.28 +../build/%$(OBJ_EXT): %.c | ../build 11.29 $(CC) $(CFLAGS) -I../ $(COFLAGS)$@ $< 11.30 11.31 ../build: 11.32 - mkdir -p build 11.33 + $(MKDIR) $(MKDIRFLAGS) build
12.1 --- a/test/map_tests.c Thu Sep 05 13:55:04 2013 +0200 12.2 +++ b/test/map_tests.c Fri Sep 06 13:20:20 2013 +0200 12.3 @@ -178,9 +178,9 @@ 12.4 int check = 0; 12.5 int hit = 0; 12.6 12.7 - int* v; 12.8 + void* v; 12.9 UCX_MAP_FOREACH(key, v, i) { 12.10 - check += *v; 12.11 + check += *((int*)v); 12.12 hit++; 12.13 } 12.14
13.1 --- a/ucx/Makefile Thu Sep 05 13:55:04 2013 +0200 13.2 +++ b/ucx/Makefile Fri Sep 06 13:20:20 2013 +0200 13.3 @@ -26,6 +26,7 @@ 13.4 # POSSIBILITY OF SUCH DAMAGE. 13.5 # 13.6 13.7 +include ../unix.mk 13.8 include ../$(CONF).mk 13.9 13.10 # list of source files 13.11 @@ -40,15 +41,15 @@ 13.12 SRC += logging.c 13.13 SRC += buffer.c 13.14 13.15 -OBJ = $(SRC:%.c=../build/%.$(OBJ_EXT)) 13.16 +OBJ = $(SRC:%.c=../build/ucx/%$(OBJ_EXT)) 13.17 13.18 all: libucx 13.19 13.20 libucx: $(OBJ) 13.21 - $(AR) $(ARFLAGS) $(AOFLAGS)../build/libucx.$(LIB_EXT) $(OBJ) 13.22 + $(AR) $(ARFLAGS) $(AOFLAGS)../build/libucx$(LIB_EXT) $(OBJ) 13.23 13.24 -../build/%.$(OBJ_EXT): %.c ../build 13.25 +../build/ucx/%$(OBJ_EXT): %.c | ../build/ucx 13.26 $(CC) $(CFLAGS) $(COFLAGS)$@ $< 13.27 13.28 -../build: 13.29 - mkdir -p ../build 13.30 +../build/ucx: 13.31 + $(MKDIR) $(MKDIRFLAGS) ../build/ucx
14.1 --- a/ucx/logging.c Thu Sep 05 13:55:04 2013 +0200 14.2 +++ b/ucx/logging.c Fri Sep 06 13:20:20 2013 +0200 14.3 @@ -61,11 +61,13 @@ 14.4 free(logger); 14.5 } 14.6 14.7 +// estimated max. message length (documented) 14.8 +#define UCX_LOGGER_MSGMAX 4096 14.9 + 14.10 void ucx_logger_logf(UcxLogger *logger, unsigned int level, const char* file, 14.11 const unsigned int line, const char *format, ...) { 14.12 if (level <= logger->level) { 14.13 - const size_t max = 4096; // estimated max. message length (documented) 14.14 - char msg[max]; 14.15 + char msg[UCX_LOGGER_MSGMAX]; 14.16 char *text; 14.17 size_t k = 0; 14.18 size_t n; 14.19 @@ -85,14 +87,14 @@ 14.20 n = strlen(file); 14.21 memcpy(msg+k, file, n); 14.22 k += n; 14.23 - k += sprintf(msg+k, ":%d ", line); 14.24 + k += snprintf(msg+k, UCX_LOGGER_MSGMAX-k, ":%d ", line); 14.25 } 14.26 14.27 msg[k++] = '-'; msg[k++] = ' '; 14.28 14.29 va_list args; 14.30 va_start (args, format); 14.31 - k += vsnprintf(msg+k, max-k-1, format, args); 14.32 + k += vsnprintf(msg+k, UCX_LOGGER_MSGMAX-k-1, format, args); 14.33 va_end (args); 14.34 14.35 msg[k++] = '\n';
15.1 --- a/ucx/properties.c Thu Sep 05 13:55:04 2013 +0200 15.2 +++ b/ucx/properties.c Fri Sep 06 13:20:20 2013 +0200 15.3 @@ -217,38 +217,36 @@ 15.4 } 15.5 } 15.6 15.7 +// buffer size is documented - change doc, when you change bufsize! 15.8 +#define UCX_PROPLOAD_BUFSIZE 1024 15.9 int ucx_properties_load(UcxMap *map, FILE *file) { 15.10 UcxProperties *parser = ucx_properties_new(); 15.11 if(!(parser && map && file)) { 15.12 return 1; 15.13 } 15.14 15.15 - // buffer size is documented - change doc, when you change bufsize! 15.16 - const size_t bufsize = 1024; 15.17 - 15.18 int error = 0; 15.19 size_t r; 15.20 - char buf[bufsize]; 15.21 - while((r = fread(buf, 1, bufsize, file)) != 0) { 15.22 + char buf[UCX_PROPLOAD_BUFSIZE]; 15.23 + while((r = fread(buf, 1, UCX_PROPLOAD_BUFSIZE, file)) != 0) { 15.24 ucx_properties_fill(parser, buf, r); 15.25 error = ucx_properties2map(parser, map); 15.26 if (error) { 15.27 break; 15.28 } 15.29 } 15.30 - 15.31 ucx_properties_free(parser); 15.32 return error; 15.33 } 15.34 15.35 int ucx_properties_store(UcxMap *map, FILE *file) { 15.36 UcxMapIterator iter = ucx_map_iterator(map); 15.37 - char *v; 15.38 + void *v; 15.39 sstr_t value; 15.40 size_t written; 15.41 15.42 UCX_MAP_FOREACH(k, v, iter) { 15.43 - value = sstr(v); 15.44 + value = sstr((char*)v); 15.45 15.46 written = 0; 15.47 written += fwrite(k.data, 1, k.len, file);
16.1 --- a/ucx/string.c Thu Sep 05 13:55:04 2013 +0200 16.2 +++ b/ucx/string.c Fri Sep 06 13:20:20 2013 +0200 16.3 @@ -121,9 +121,9 @@ 16.4 16.5 sstr_t sstrrchr(sstr_t s, int c) { 16.6 if (s.length > 0) { 16.7 - for(size_t i=s.length-1;i>=0;i--) { 16.8 - if(s.ptr[i] == c) { 16.9 - return sstrsubs(s, i); 16.10 + for(size_t i=s.length;i>0;i--) { 16.11 + if(s.ptr[i-1] == c) { 16.12 + return sstrsubs(s, i-1); 16.13 } 16.14 } 16.15 }
17.1 --- a/ucx/ucx.h Thu Sep 05 13:55:04 2013 +0200 17.2 +++ b/ucx/ucx.h Fri Sep 06 13:20:20 2013 +0200 17.3 @@ -63,9 +63,11 @@ 17.4 #define _Bool bool 17.5 #define restrict 17.6 #endif 17.7 +/** Use C naming even when compiling with C++. */ 17.8 #define UCX_EXTERN extern "C" 17.9 extern "C" { 17.10 #else 17.11 +/** Pointless in C. */ 17.12 #define UCX_EXTERN 17.13 #endif 17.14
18.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 18.2 +++ b/unix.mk Fri Sep 06 13:20:20 2013 +0200 18.3 @@ -0,0 +1,44 @@ 18.4 +# 18.5 +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. 18.6 +# 18.7 +# Copyright 2013 Olaf Wintermann. All rights reserved. 18.8 +# 18.9 +# Redistribution and use in source and binary forms, with or without 18.10 +# modification, are permitted provided that the following conditions are met: 18.11 +# 18.12 +# 1. Redistributions of source code must retain the above copyright 18.13 +# notice, this list of conditions and the following disclaimer. 18.14 +# 18.15 +# 2. Redistributions in binary form must reproduce the above copyright 18.16 +# notice, this list of conditions and the following disclaimer in the 18.17 +# documentation and/or other materials provided with the distribution. 18.18 +# 18.19 +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 18.20 +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18.21 +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18.22 +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 18.23 +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 18.24 +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 18.25 +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 18.26 +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 18.27 +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 18.28 +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 18.29 +# POSSIBILITY OF SUCH DAMAGE. 18.30 +# 18.31 + 18.32 +CC = @echo "\nInvalid configuration.\n" && /bin/false 18.33 +LD = @echo "\nInvalid configuration.\n" && /bin/false 18.34 +AR = ar 18.35 +RM = rm 18.36 +MKDIR = mkdir 18.37 + 18.38 +COFLAGS = -o ./ 18.39 +LOFLAGS = -o ./ 18.40 +ARFLAGS = -r 18.41 +RMFLAGS = -f -R 18.42 +MKDIRFLAGS = -p 18.43 + 18.44 +OBJ_EXT = .o 18.45 +LIB_EXT = .a 18.46 +APP_EXT = 18.47 +
19.1 --- a/windows.mk Thu Sep 05 13:55:04 2013 +0200 19.2 +++ b/windows.mk Fri Sep 06 13:20:20 2013 +0200 19.3 @@ -29,7 +29,8 @@ 19.4 CC = cl 19.5 LD = link 19.6 AR = lib 19.7 -RM = rm 19.8 +RM = del 19.9 +MKDIR = mkdir 19.10 19.11 CFLAGS = -c -TP -I../msc 19.12 COFLAGS = -Fo 19.13 @@ -37,9 +38,10 @@ 19.14 LOFLAGS = -OUT: 19.15 ARFLAGS = 19.16 AOFLAGS = -OUT: 19.17 -RMFLAGS = -f 19.18 +RMFLAGS = /F /S /Q 19.19 +MKDIRFLAGS = 19.20 19.21 -OBJ_EXT = obj 19.22 -LIB_EXT = lib 19.23 +OBJ_EXT = .obj 19.24 +LIB_EXT = .lib 19.25 APP_EXT = .exe 19.26