Makefile.wiz
author Sam Lantinga <slouken@libsdl.org>
Fri, 28 Nov 2014 04:51:33 -0800
changeset 9246 a761913e5e91
parent 5586 7fe92c1dc1d9
child 9954 75f31b13bf4b
permissions -rw-r--r--
Fixed bug 2786 - "UCS-2-INTERNAL" iconv encoding is not supported everywhere, use UTF-16LE instead

Jonas Kulla

src/main/windows/SDL_windows_main.c:137:
cmdline = SDL_iconv_string("UTF-8", "UCS-2-INTERNAL", (char *)(text), (SDL_wcslen(text)+1)*sizeof(WCHAR));

I'm trying to compile an SDL2 application for windows using the mingw-w64 32bit toolchain provided by my distro (Fedora 19). However, even the simplest test program that does nothing at all fails to startup with a "Fatal error - out of memory" message because the mingw iconv library provided by my distro does not support the "UCS-2-INTERNAL" encoding and the conversion returns null.

From my little bit of research, it turns out that even though this encoding is supported by the external GNU libiconv library, some glibc versions (?) don't support it with their internal iconv routines, and will instead provide the native endian encoding when "UCS-2" is specified.

Nonetheless, I wonder why the native endianness is considered in the first place when Windows doesn't even run on any big endian archs (to my knowledge). And true enough, 'WIN_StringToUTF8' from core/windows/SDL_windows.h is used everywhere else in the windows backend, which is just a macro to iconv with "UTF-16LE" as source. Therefore it would IMO make sense to use this macro here as well, which would solve my problem (patch attached).
slouken@3438
     1
# Makefile to build the pandora SDL library
slouken@3438
     2
WIZSDK = /mythtv/media/devel/toolchains/openwiz/arm-openwiz-linux-gnu
slouken@3438
     3
slouken@3438
     4
AR	= $(WIZSDK)/bin/arm-openwiz-linux-gnu-ar
slouken@3438
     5
RANLIB	= $(WIZSDK)/bin/arm-openwiz-linux-gnu-ranlib
slouken@3438
     6
CC = $(WIZSDK)/bin/arm-openwiz-linux-gnu-gcc
slouken@3438
     7
CXX = $(WIZSDK)/bin/arm-openwiz-linux-gnu-g++
slouken@3438
     8
STRIP = $(WIZSDK)/bin/arm-openwiz-linux-gnu-strip
slouken@3438
     9
slouken@3438
    10
CFLAGS  = -Wall -fPIC -I./include -I$(WIZSDK)/include -DWIZ_GLES_LITE
slouken@3438
    11
slouken@3438
    12
TARGET_STATIC  = libSDL13.a
slouken@3438
    13
TARGET_SHARED  = libSDL13.so
slouken@3438
    14
slouken@3438
    15
SOURCES = ./src/*.c ./src/audio/*.c ./src/cdrom/*.c ./src/cpuinfo/*.c ./src/events/*.c \
slouken@3438
    16
	./src/file/*.c ./src/stdlib/*.c ./src/thread/*.c ./src/timer/*.c ./src/video/*.c \
slouken@3438
    17
	./src/joystick/*.c ./src/haptic/*.c ./src/video/dummy/*.c ./src/audio/disk/*.c \
icculus@5586
    18
	./src/audio/dummy/*.c ./src/loadso/dlopen/*.c ./src/audio/dsp/*.c \
slouken@3438
    19
	./src/thread/pthread/SDL_systhread.c ./src/thread/pthread/SDL_syssem.c \
slouken@3438
    20
	./src/thread/pthread/SDL_sysmutex.c ./src/thread/pthread/SDL_syscond.c \
slouken@3438
    21
	./src/joystick/linux/*.c ./src/haptic/linux/*.c ./src/timer/unix/*.c ./src/cdrom/dummy/*.c \
slouken@3438
    22
	./src/video/pandora/SDL_pandora.o ./src/video/pandora/SDL_pandora_events.o
slouken@3438
    23
	
slouken@3438
    24
slouken@3438
    25
OBJECTS = $(shell echo $(SOURCES) | sed -e 's,\.c,\.o,g')
slouken@3438
    26
slouken@3438
    27
all: config_copy $(TARGET_STATIC) $(TARGET_SHARED)
slouken@3438
    28
slouken@3438
    29
$(TARGET_STATIC): $(OBJECTS)
slouken@3438
    30
	$(AR) crv $@ $^
slouken@3438
    31
	$(RANLIB) $@
slouken@3438
    32
slouken@3438
    33
$(TARGET_SHARED):
slouken@3438
    34
	$(CC) -shared -Wl,-soname,$(TARGET_SHARED).0 -o $(TARGET_SHARED).0.0.1  $(OBJECTS)
slouken@3438
    35
	ln -s $(TARGET_SHARED).0.0.1 $(TARGET_SHARED).0
slouken@3438
    36
	ln -s $(TARGET_SHARED).0 $(TARGET_SHARED)
slouken@3438
    37
slouken@3438
    38
config_copy:
slouken@3438
    39
	cp include/SDL_config_wiz.h include/SDL_config.h
slouken@3438
    40
slouken@3438
    41
clean:
slouken@3438
    42
	rm -f $(TARGET_STATIC) $(TARGET_SHARED)* $(OBJECTS)
slouken@3438
    43
slouken@3438
    44
install:
slouken@3438
    45
	mkdir -p $(WIZSDK)/lib
slouken@3438
    46
	mkdir -p $(WIZSDK)/include/SDL13
slouken@3438
    47
	cp -f $(TARGET_STATIC) $(WIZSDK)/lib
slouken@3438
    48
	cp -f $(TARGET_SHARED).0.0.1 $(WIZSDK)/lib
slouken@3438
    49
	rm -f $(WIZSDK)/lib/$(TARGET_SHARED).0 $(WIZSDK)/lib/$(TARGET_SHARED)
slouken@3438
    50
	ln -s $(WIZSDK)/lib/$(TARGET_SHARED).0.0.1 $(WIZSDK)/lib/$(TARGET_SHARED).0
slouken@3438
    51
	ln -s $(WIZSDK)/lib/$(TARGET_SHARED).0 $(WIZSDK)/lib/$(TARGET_SHARED)
slouken@3438
    52
slouken@3438
    53
	cp $(TARGET_STATIC) ../../toolchain/libs
slouken@3438
    54
	cp $(TARGET_SHARED).0.0.1 ../../toolchain/libs
slouken@3438
    55
	rm -f ../../toolchain/libs/$(TARGET_SHARED).0 ../../toolchain/libs/$(TARGET_SHARED)
slouken@3438
    56
	ln -s ../../toolchain/libs/$(TARGET_SHARED).0.0.1 ../../toolchain/libs/$(TARGET_SHARED).0
slouken@3438
    57
	ln -s ../../toolchain/libs/$(TARGET_SHARED).0 ../../toolchain/libs/$(TARGET_SHARED)
slouken@3438
    58
slouken@3438
    59
	cp $(TARGET_SHARED).0.0.1 ../nehe_demos/build/$(TARGET_SHARED).0
slouken@3438
    60
	cp -f include/*.h $(WIZSDK)/include/SDL13/
slouken@3438
    61
	cp -f include/*.h ../../toolchain/include/SDL13/