+# returns Linux, Darwin, FreeBSD, etc.
+ifdef OS_OVERRIDE
+ OS := $(OS_OVERRIDE)
+else
+ OS := $(shell uname -s)
+endif
+# returns i386, x86_64, powerpc, etc.
+ifdef PROC_OVERRIDE
+ PROC := $(PROC_OVERRIDE)
+else
+ ifeq ($(findstring MINGW,$(OS)),MINGW)
+ PROC := i386 # failsafe
+ # ifeq (mingw32,$(shell gcc -dumpmachine)) # MinGW (mainline): mingw32
+ ifeq ($(findstring i686,$(shell gcc -dumpmachine)),i686) # MinGW-w64: i686-w64-mingw32
+ USE_ICONV := 0
+ else ifeq ($(findstring x86_64,$(shell gcc -dumpmachine)),x86_64) # MinGW-w64: x86_64-w64-mingw32
+ USE_ICONV := 0
+ PROC := x86_64
+ endif
+ else
+ PROC := $(shell uname -p)
+ endif
+endif
+ifeq ($(PROC),powerpc)
+ PROC := ppc
+endif
+
+ifeq ($(OS),Linux)
+ PROC := $(shell uname -m)
+ USE_ICONV := 0
+endif
+