Blame Makefile

Packit 2bcd41
# Makefile for win-iconv
Packit 2bcd41
#
Packit 2bcd41
# Variables that can be overriden:
Packit 2bcd41
#
Packit 2bcd41
# CC, AR, RANLIB, DLLTOOL
Packit 2bcd41
# MKDIR_P, INSTALL, RM
Packit 2bcd41
# prefix, BINARY_PATH, INCLUDE_PATH, LIBRARY_PATH
Packit 2bcd41
Packit 2bcd41
CC ?= gcc
Packit 2bcd41
AR ?= ar
Packit 2bcd41
RANLIB ?= ranlib
Packit 2bcd41
DLLTOOL ?= dlltool
Packit 2bcd41
Packit 2bcd41
MKDIR_P = mkdir -p
Packit 2bcd41
INSTALL = install -c
Packit 2bcd41
RM = rm -f
Packit 2bcd41
Packit 2bcd41
# comma separated list (e.g. "iconv.dll,libiconv.dll")
Packit 2bcd41
DEFAULT_LIBICONV_DLL ?= \"\"
Packit 2bcd41

Packit 2bcd41
CFLAGS += -pedantic -Wall
Packit 2bcd41
CFLAGS += -DUSE_LIBICONV_DLL
Packit 2bcd41
CFLAGS += -DDEFAULT_LIBICONV_DLL=$(DEFAULT_LIBICONV_DLL)
Packit 2bcd41
Packit 2bcd41
prefix ?= /usr/local
Packit 2bcd41
BINARY_PATH = $(prefix)/bin
Packit 2bcd41
INCLUDE_PATH = $(prefix)/include
Packit 2bcd41
LIBRARY_PATH = $(prefix)/lib
Packit 2bcd41
Packit 2bcd41
all: iconv.dll libiconv.a win_iconv.exe
Packit 2bcd41
Packit 2bcd41
dist: test win_iconv.zip
Packit 2bcd41

Packit 2bcd41
iconv.dll: win_iconv.c
Packit 2bcd41
	$(CC) $(CFLAGS) -c win_iconv.c -DMAKE_DLL
Packit 2bcd41
	$(CC) -shared -o iconv.dll -Wl,-s -Wl,--out-implib=libiconv.dll.a -Wl,--export-all-symbols win_iconv.o $(SPECS_FLAGS)
Packit 2bcd41

Packit 2bcd41
libiconv.a: win_iconv.c
Packit 2bcd41
	$(CC) $(CFLAGS) -c win_iconv.c
Packit 2bcd41
	$(AR) rcs libiconv.a win_iconv.o
Packit 2bcd41
	$(RANLIB) libiconv.a
Packit 2bcd41

Packit 2bcd41
win_iconv.exe: win_iconv.c
Packit 2bcd41
	$(CC) $(CFLAGS) -s -o win_iconv.exe win_iconv.c -DMAKE_EXE
Packit 2bcd41

Packit 2bcd41
libmlang.a: mlang.def
Packit 2bcd41
	$(DLLTOOL) --kill-at --input-def mlang.def --output-lib libmlang.a
Packit 2bcd41

Packit 2bcd41
test:
Packit 2bcd41
	$(CC) $(CFLAGS) -s -o win_iconv_test.exe win_iconv_test.c
Packit 2bcd41
	./win_iconv_test.exe
Packit 2bcd41

Packit 2bcd41
win_iconv.zip: msvcrt msvcr70 msvcr71
Packit 2bcd41
	rm -rf win_iconv
Packit 2bcd41
	svn export . win_iconv
Packit 2bcd41
	cp msvcrt/iconv.dll msvcrt/win_iconv.exe win_iconv/
Packit 2bcd41
	mkdir win_iconv/msvcr70
Packit 2bcd41
	cp msvcr70/iconv.dll win_iconv/msvcr70/
Packit 2bcd41
	mkdir win_iconv/msvcr71
Packit 2bcd41
	cp msvcr71/iconv.dll win_iconv/msvcr71/
Packit 2bcd41
	zip -r win_iconv.zip win_iconv
Packit 2bcd41

Packit 2bcd41
msvcrt:
Packit 2bcd41
	svn export . msvcrt; \
Packit 2bcd41
	cd msvcrt; \
Packit 2bcd41
	$(MAKE);
Packit 2bcd41

Packit 2bcd41
msvcr70:
Packit 2bcd41
	svn export . msvcr70; \
Packit 2bcd41
	cd msvcr70; \
Packit 2bcd41
	gcc -dumpspecs | sed s/-lmsvcrt/-lmsvcr70/ > specs; \
Packit 2bcd41
	$(MAKE) "SPECS_FLAGS=-specs=$$PWD/specs";
Packit 2bcd41

Packit 2bcd41
msvcr71:
Packit 2bcd41
	svn export . msvcr71; \
Packit 2bcd41
	cd msvcr71; \
Packit 2bcd41
	gcc -dumpspecs | sed s/-lmsvcrt/-lmsvcr71/ > specs; \
Packit 2bcd41
	$(MAKE) "SPECS_FLAGS=-specs=$$PWD/specs";
Packit 2bcd41
Packit 2bcd41
install: iconv.dll libiconv.a win_iconv.exe
Packit 2bcd41
	-@$(MKDIR_P) '$(DESTDIR)$(BINARY_PATH)'
Packit 2bcd41
	-@$(MKDIR_P) '$(DESTDIR)$(INCLUDE_PATH)'
Packit 2bcd41
	-@$(MKDIR_P) '$(DESTDIR)$(LIBRARY_PATH)'
Packit 2bcd41
	-$(INSTALL) iconv.dll '$(DESTDIR)$(BINARY_PATH)'
Packit 2bcd41
	-$(INSTALL) win_iconv.exe '$(DESTDIR)$(BINARY_PATH)'
Packit 2bcd41
	-$(INSTALL) iconv.h '$(DESTDIR)$(INCLUDE_PATH)'
Packit 2bcd41
	-$(INSTALL) libiconv.dll.a '$(DESTDIR)$(LIBRARY_PATH)'
Packit 2bcd41
	-$(INSTALL) libiconv.a '$(DESTDIR)$(LIBRARY_PATH)'
Packit 2bcd41
Packit 2bcd41
uninstall:
Packit 2bcd41
	-$(RM) '$(DESTDIR)$(LIBRARY_PATH)'/libiconv.a
Packit 2bcd41
	-$(RM) '$(DESTDIR)$(LIBRARY_PATH)'/libiconv.dll.a
Packit 2bcd41
	-$(RM) '$(DESTDIR)$(INCLUDE_PATH)'/iconv.h
Packit 2bcd41
	-$(RM) '$(DESTDIR)$(BINARY_PATH)'/win_iconv.exe
Packit 2bcd41
	-$(RM) '$(DESTDIR)$(BINARY_PATH)'/iconv.dll
Packit 2bcd41
Packit 2bcd41
clean:
Packit 2bcd41
	rm -f win_iconv.exe
Packit 2bcd41
	rm -f win_iconv.o
Packit 2bcd41
	rm -f iconv.dll*
Packit 2bcd41
	rm -f libiconv.a
Packit 2bcd41
	rm -f libiconv.dll
Packit 2bcd41
	rm -f win_iconv_test.exe
Packit 2bcd41
	rm -f libmlang.a
Packit 2bcd41
	rm -rf win_iconv
Packit 2bcd41
	rm -rf win_iconv.zip
Packit 2bcd41
	rm -rf msvcrt
Packit 2bcd41
	rm -rf msvcr70
Packit 2bcd41
	rm -rf msvcr71
Packit 2bcd41