From: Bruno Haible Date: Wed, 13 Feb 2002 13:56:35 +0000 (+0000) Subject: OS/2 port update. X-Git-Tag: v0.11.1~69 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b7d362ff0f3e2dc50e37fc73f4000b6abb45981e;p=thirdparty%2Fgettext.git OS/2 port update. --- diff --git a/ChangeLog b/ChangeLog index 15dfc368f..d1e1b1ebc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2002-02-14 Andrew Zabolotny + + * os2/README.OS2: Update. + * os2/Makefile: Update. + 2002-02-10 Bruno Haible * Makefile.am (EXTRA_DIST): Remove os2/iconv/README. diff --git a/os2/Makefile b/os2/Makefile index a598737ab..09d78e5a6 100644 --- a/os2/Makefile +++ b/os2/Makefile @@ -1,467 +1,235 @@ -# -# OS/2 GNU Makefile for building gettext with GNU Make and GNU C compiler -# -# OS/2 still supports the regular configure/make building mechanism, but its -# way more clumsy, complicated and error prone. It is highly recommended to -# use this makefile instead, because : -# - this makefile builds an optimized static and dynamic version of the -# library -# - it is able to build both optimized and debug versions of the library -# without any reconfiguring -# - this makefile builds an backward compatible DLL. When building with -# configure you will get a DLL which is compatible only with the 0.10.40 -# and later DLLs of gettext; this makefile builds a DLL which is binary -# compatible with gettext 0.10.35 (exports by ordinal matter). -# - it is able to generate a complete OS/2 binary distribution (make distr) -# - besides its simply alot faster than configure generated makefiles -# -# The makefile is designed to be more or less gettext version independent, -# so it is likely to work with future versions of gettext as well. -# - -# Use CMD.EXE as shell since its way faster -SHELL = $(COMSPEC) -# An Unix-like shell (needed for running config.charset) -UNIXSHELL = sh.exe - -# Debug mode (1) or optimize mode (0) -DEBUG = 0 - -# The version of INTL.DLL (the name suffix) -INTLDLLVER = - -# Pack the DLL and executables with lxlite -LXLITE = 1 - -# Output directory -OUT = out/$(OUT.SUFFIX)/ -# Root package directory -ROOT = ../ -# The base directory for distribution archive (emx/ or usr/) -INST = emx/ - -# Tools -CC = gcc -c -CFLAGS = -Wall -Zmt $(INCLUDE) $(DEFS) -INCLUDE = -I. -I$(ROOT) -I$(ROOT)intl -I$(ROOT)src -I$(ROOT)lib -DEFS = -DHAVE_CONFIG_H -DLIBDIR=\"/usr/lib\" \ - -DLOCALEDIR=\"/usr/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/share/locale\" \ - -DPROJECTSDIR=\"/usr/share/gettext/projects\" \ - -DGETTEXTJAR=\"/usr/share/gettext/gettext.jar\" - -LD = gcc -LDFLAGS = -Zmt -Zcrtdll -LDFLAGS.SHARED = -Zmt -Zcrtdll -Zdll -LIBS = -liberty -lgcc - -AR = ar -ARFLAGS = crs - -MKDIR = mkdir.exe -p -COPY = cp -p - -LINKINTL = $(OUT)intl.a - -ifeq ($(DEBUG),0) - CFLAGS += -s -O2 - LDFLAGS += -s -Zexe - LDFLAGS.SHARED += -s - OUT.SUFFIX = release -else - CFLAGS += -g - LDFLAGS += -g -Zexe - LDFLAGS.SHARED += -g - OUT.SUFFIX = debug - LXLITE := 0 - LINKINTL = $(OUT)intl_s.a -endif - -# Languages with encodings unsupported by OS/2 API (BIG5) -BAD.LINGUAS=zh - -# The list of languages to be included in binary distribution -LINGUAS = $(filter-out $(BAD.LINGUAS),$(shell sed -e "/^\#/d" $(ROOT)po/LINGUAS)) - -# Fetch version number from configure.in -VERSION = $(shell sed ../configure.in -ne "/AM_INIT_AUTOMAKE/{" -e "s/.*(gettext, *\\(.*\\))/\\1/" -e "p" -e "}") - -# Fetch the list of source files for libintl from intl/Makefile.in -INTL.SOURCES = $(addprefix $(ROOT)intl/,\ - $(subst $$lo,c,\ - $(subst @INTLOBJS@,intl-compat.c,\ - $(subst OBJECTS = ,,\ - $(subst \,,\ - $(shell sed $(ROOT)intl/Makefile.in -ne "/^OBJECTS =/,/[^\]$$/p")))))) -INTL.OBJECTS = $(addprefix $(OUT),$(subst $(ROOT),,$(INTL.SOURCES:.c=.o))) - -PROGRAMS = $(addsuffix .exe,$(subst bin_PROGRAMS = ,,\ - $(subst \,,\ - $(shell sed $(ROOT)src/Makefile.am -ne "/^bin_PROGRAMS =/,/[^\]$$/p")))) -PROGRAMS.EXE = $(addprefix $(OUT),$(PROGRAMS)) -SRC.SOURCES = $(filter-out $(addprefix $(ROOT)src/,$(PROGRAMS:.exe=.c)),\ - $(wildcard $(ROOT)src/*.c)) -SRC.OBJECTS = $(addprefix $(OUT),$(subst $(ROOT),,$(SRC.SOURCES:.c=.o))) -LIB.SOURCES = $(addprefix $(ROOT)lib/, error.c stpcpy.c stpncpy.c mkdtemp.c getline.c \ - $(subst libgettextlib_la_SOURCES = ,,\ - $(subst \,,\ - $(patsubst getopt%.c,,\ - $(shell sed $(ROOT)lib/Makefile.am -ne "/^libgettextlib_la_SOURCES =/,/[^\]$$/p"))))) -LIB.OBJECTS = $(addprefix $(OUT),$(subst $(ROOT),,$(LIB.SOURCES:.c=.o))) - -OUTDIRS = $(OUT) $(sort $(dir $(INTL.OBJECTS) $(SRC.OBJECTS) $(LIB.OBJECTS) $(INSTALL.FILES))) - -INSTALL.FILES = $(addprefix $(INST)bin/,$(PROGRAMS)) \ - $(INST)lib/intl.a $(INST)lib/intl_s.a $(INST)lib/iconv.a \ - $(INST)include/libintl.h $(INST)include/iconv.h $(INST)dll/intl.dll \ - $(INST)share/locale/charset.alias $(INST)share/locale/locale.alias \ - $(INST)doc/gettext-$(VERSION)/README.OS2 \ - $(INST)doc/gettext-$(VERSION)/COPYING $(INST)doc/gettext-$(VERSION)/README \ - $(addsuffix /LC_MESSAGES/gettext.mo,$(addprefix $(INST)share/locale/,$(LINGUAS))) \ - $(INSTALL.DIFF) - -.SUFFIXES: -.SUFFIXES: .o .a .def .exe .dll .po .mo -.PRECIOUS: $(OUT)%.o $(OUT)%.a - -.PHONY: all depend clean distr rmzip - -$(OUT)%.o: $(ROOT)%.c - $(CC) $(CFLAGS) -o $@ $< - -# To avoid playing with object file lists for every program we will build -# instead a library containing all the object files from src directory, and -# then link the library against the main program module, so that linker can -# pull all the required functions from there -$(OUT)%.exe: $(OUT)src/%.o $(OUT)util.a $(LINKINTL) - $(LD) $(LDFLAGS) -o $@ $^ $(LIBS) -ifeq ($(LXLITE),1) - lxlite /b- $@ -endif - -all: config.h $(OUTDIRS) $(ROOT)src/po-gram-gen2.h $(ROOT)intl/libintl.h \ - $(OUT)intl.a $(OUT)intl_s.a $(OUT)intl$(INTLDLLVER).dll $(PROGRAMS.EXE) - -define MAKEDEP - echo $(OUT)PATH = FILENAME - makedep $(INCLUDE) $(DEFS) -p $$(OUT)PATH -r -a FILENAME - -endef - -depend: $(INTL.SOURCES) $(SRC.SOURCES) -# Remove all dependencies - @makedep os2compat.h -# Build dependencies, by one file (to avoid 1024 chars command line length limit) - @$(foreach fn,$^,$(subst PATH,$(subst ../,,$(dir $(fn))),$(subst FILENAME,$(fn),$(MAKEDEP)))) - @rm -f __tmp__ - -clean: - rm -rf out emx - -distr: all rmzip gettext-os2-$(VERSION)-bin.zip - -rmzip: - rm -f gettext-os2-$(VERSION)-bin.zip - -# How to configure without configure... -config.h: ../config.h.in ./configure.awk - gawk -f configure.awk -v PACKAGE=gettext -v VERSION=$(VERSION) $< >config.h - -$(OUTDIRS): - $(MKDIR) $(@:/=) - -$(OUT)intl_s.a: $(INTL.OBJECTS) - $(AR) $(ARFLAGS) $@ $^ - -$(OUT)intl.def: $(INTL.OBJECTS) - @echo LIBRARY INTL$(INTLDLLVER) INITINSTANCE TERMINSTANCE>$@ - @echo DESCRIPTION "GNU gettext internationalization library version $(VERSION)">>$@ - @echo DATA MULTIPLE NONSHARED>>$@ - @echo EXPORTS>>$@ - type backward.def>>$@ - emxexp $^ >>$@ - -$(OUT)intl$(INTLDLLVER).dll: $(INTL.OBJECTS) $(OUT)intl.def - @echo ********************************************************* - @echo *** YOU CAN SAFELY IGNORE WARNINGS FROM EMXBIND BELOW *** - @echo ********************************************************* - $(LD) $(LDFLAGS.SHARED) -o $@ $^ $(LIBS) -ifeq ($(LXLITE),1) - lxlite $@ -endif - -# How to build an import library from a .DEF file -$(OUT)%.a: $(OUT)%.def - emximp -o $@ $< - -# iconv.a is just a subset of intl.a (imports from INTL.DLL) -$(OUT)iconv.def: - @echo LIBRARY INTL$(INTLDLLVER) INITINSTANCE TERMINSTANCE>$@ - @echo EXPORTS>>$@ - @echo iconv_open>>$@ - @echo iconv>>$@ - @echo iconv_close>>$@ - -$(OUT)util.a: $(SRC.OBJECTS) $(LIB.OBJECTS) - $(AR) $(ARFLAGS) $@ $^ - -$(ROOT)src/po-gram-gen2.h: $(ROOT)src/po-gram-gen.h - sed -e "s/[yY][yY]/po_gram_/g" $< > $@ - -$(ROOT)intl/libintl.h: $(ROOT)intl/libgnuintl.h - $(COPY) $< $@ - -gettext-os2-$(VERSION)-bin.zip: $(INSTALL.FILES) - @rm -f $@ - zip -9XD $@ $^ - -# The following rules are for `make distr' target only - -$(INST)share/locale/charset.alias: $(ROOT)lib/config.charset - $(UNIXSHELL) $< i386-pc-os2-emx >$@ -$(INST)share/locale/locale.alias: $(ROOT)intl/locale.alias - $(COPY) $< $@ -$(INST)bin/% $(INST)lib/% $(INST)dll/%: $(OUT)% - $(COPY) $< $@ -$(INST)include/%: $(ROOT)intl/% - $(COPY) $< $@ -$(INST)doc/gettext-$(VERSION)/%: $(ROOT)% - $(COPY) $< $@ -$(INST)doc/gettext-$(VERSION)/% $(INST)include/%: % - $(COPY) $< $@ -$(INST)share/locale/%/LC_MESSAGES/gettext.mo: $(ROOT)po/%.po - $(MKDIR) $(dir $@) - $(COMSPEC) /c "$(subst /,\\,set BEGINLIBPATH=$(OUT:/=) && \ - $(OUT)msgfmt.exe) --statistics --verbose -o $@ $<" - -# DO NOT DELETE this line -- makedep depends on it! - -$(OUT)intl/intl-compat.o: ../intl/libgnuintl.h ../intl/gettextP.h \ - ../intl/loadinfo.h ../intl/gettext.h - -$(OUT)intl/bindtextdom.o: ../intl/libgnuintl.h ../intl/gettextP.h \ - ../intl/loadinfo.h ../intl/gettext.h - -$(OUT)intl/dcgettext.o: ../intl/gettextP.h ../intl/loadinfo.h \ - ../intl/gettext.h ../intl/libgnuintl.h - -$(OUT)intl/dgettext.o: ../intl/gettextP.h ../intl/loadinfo.h \ - ../intl/gettext.h ../intl/libgnuintl.h - -$(OUT)intl/gettext.o: ../intl/gettextP.h ../intl/loadinfo.h ../intl/gettext.h \ - ../intl/libgnuintl.h - -$(OUT)intl/finddomain.o: ../intl/gettextP.h ../intl/loadinfo.h \ - ../intl/gettext.h ../intl/libgnuintl.h - -$(OUT)intl/loadmsgcat.o: ../intl/gettext.h ../intl/gettextP.h \ - ../intl/loadinfo.h ../intl/plural-exp.h - -$(OUT)intl/localealias.o: ../intl/gettextP.h ../intl/loadinfo.h \ - ../intl/gettext.h - -$(OUT)intl/textdomain.o: ../intl/libgnuintl.h ../intl/gettextP.h \ - ../intl/loadinfo.h ../intl/gettext.h - -$(OUT)intl/l10nflist.o: ../intl/loadinfo.h - -$(OUT)intl/explodename.o: ../intl/loadinfo.h - -$(OUT)intl/dcigettext.o: ../intl/gettextP.h ../intl/loadinfo.h \ - ../intl/gettext.h ../intl/plural-exp.h ../intl/libgnuintl.h \ - ../intl/hash-string.h ../intl/plural-eval.c - -$(OUT)intl/dcngettext.o: ../intl/gettextP.h ../intl/loadinfo.h \ - ../intl/gettext.h ../intl/libgnuintl.h - -$(OUT)intl/dngettext.o: ../intl/gettextP.h ../intl/loadinfo.h \ - ../intl/gettext.h ../intl/libgnuintl.h - -$(OUT)intl/ngettext.o: ../intl/gettextP.h ../intl/loadinfo.h \ - ../intl/gettext.h ../intl/libgnuintl.h - -$(OUT)intl/plural.o: ../intl/plural-exp.h - -$(OUT)intl/plural-exp.o: ../intl/plural-exp.h - -$(OUT)intl/osdep.o: os2compat.c iconv.c iconv.h - -$(OUT)src/dir-list.o: config.h ../os2/os2compat.h ../src/dir-list.h \ - ../lib/system.h ../src/str-list.h - -$(OUT)src/file-list.o: config.h ../os2/os2compat.h ../src/file-list.h \ - ../src/str-list.h ../lib/error.h ../lib/system.h ../lib/getline.h \ - ../intl/libgettext.h - -$(OUT)src/format-c.o: ../src/format.h ../src/pos.h ../src/message.h \ - ../src/str-list.h ../lib/hash.h ../lib/xmalloc.h ../lib/error.h \ - ../lib/progname.h ../intl/libgettext.h - -$(OUT)src/format-java.o: ../src/format.h ../src/pos.h ../src/message.h \ - ../src/str-list.h ../lib/hash.h ../lib/c-ctype.h ../lib/xmalloc.h \ - ../lib/error.h ../lib/progname.h ../intl/libgettext.h - -$(OUT)src/format-librep.o: ../src/format.h ../src/pos.h ../src/message.h \ - ../src/str-list.h ../lib/hash.h ../lib/xmalloc.h ../lib/error.h \ - ../lib/progname.h ../intl/libgettext.h - -$(OUT)src/format-lisp.o: ../src/format.h ../src/pos.h ../src/message.h \ - ../src/str-list.h ../lib/hash.h ../lib/c-ctype.h ../lib/gcd.h \ - ../lib/xmalloc.h ../lib/system.h ../lib/error.h ../lib/progname.h \ - ../intl/libgettext.h - -$(OUT)src/format-pascal.o: ../src/format.h ../src/pos.h ../src/message.h \ - ../src/str-list.h ../lib/hash.h ../lib/c-ctype.h ../lib/xmalloc.h \ - ../lib/error.h ../lib/progname.h ../intl/libgettext.h - -$(OUT)src/format-python.o: ../src/format.h ../src/pos.h ../src/message.h \ - ../src/str-list.h ../lib/hash.h ../lib/xmalloc.h ../lib/error.h \ - ../lib/progname.h ../intl/libgettext.h - -$(OUT)src/format-ycp.o: ../src/format.h ../src/pos.h ../src/message.h \ - ../src/str-list.h ../lib/hash.h ../lib/xmalloc.h ../lib/error.h \ - ../lib/progname.h ../intl/libgettext.h - -$(OUT)src/format.o: ../src/format.h ../src/pos.h ../src/message.h \ - ../src/str-list.h ../lib/hash.h - -$(OUT)src/hostname.o: config.h ../os2/os2compat.h ../lib/error.h \ - ../lib/progname.h ../lib/basename.h ../lib/xmalloc.h ../lib/system.h \ - ../intl/libgettext.h - -$(OUT)src/message.o: ../src/message.h ../src/str-list.h ../src/pos.h \ - ../lib/hash.h ../lib/fstrcmp.h ../src/format.h ../lib/xmalloc.h \ - ../lib/strstr.h ../lib/system.h - -$(OUT)src/msgl-ascii.o: config.h ../os2/os2compat.h ../src/msgl-ascii.h \ - ../src/message.h ../src/str-list.h ../src/pos.h ../lib/hash.h \ - ../lib/c-ctype.h - -$(OUT)src/msgl-cat.o: config.h ../os2/os2compat.h ../src/msgl-cat.h \ - ../src/message.h ../src/str-list.h ../src/pos.h ../lib/hash.h \ - ../lib/error.h ../lib/xerror.h ../src/read-po.h ../src/po-charset.h \ - ../src/msgl-ascii.h ../src/msgl-equal.h ../src/msgl-iconv.h \ - ../lib/xmalloc.h ../lib/strstr.h ../lib/basename.h ../lib/system.h \ - ../intl/libgettext.h - -$(OUT)src/msgl-charset.o: config.h ../os2/os2compat.h ../src/msgl-charset.h \ - ../src/message.h ../src/str-list.h ../src/pos.h ../lib/hash.h \ - ../src/po-charset.h ../lib/error.h ../lib/progname.h ../lib/basename.h \ - ../lib/xerror.h ../lib/strstr.h ../lib/system.h ../intl/libgettext.h - -$(OUT)src/msgl-english.o: config.h ../os2/os2compat.h ../src/msgl-english.h \ - ../src/message.h ../src/str-list.h ../src/pos.h ../lib/hash.h \ - ../lib/xmalloc.h - -$(OUT)src/msgl-equal.o: config.h ../os2/os2compat.h ../src/msgl-equal.h \ - ../src/message.h ../src/str-list.h ../src/pos.h ../lib/hash.h - -$(OUT)src/msgl-iconv.o: config.h ../os2/os2compat.h ../src/msgl-iconv.h \ - ../src/message.h ../src/str-list.h ../src/pos.h ../lib/hash.h \ - ../lib/error.h ../lib/progname.h ../lib/basename.h ../src/po-charset.h \ - ../src/msgl-ascii.h ../lib/xmalloc.h ../lib/strstr.h ../lib/system.h \ - ../intl/libgettext.h - -$(OUT)src/open-po.o: ../src/open-po.h ../src/dir-list.h ../lib/error.h \ - ../lib/system.h ../intl/libgettext.h - -$(OUT)src/plural-eval.o: ../intl/plural-exp.h ../intl/plural-eval.c - -$(OUT)src/plural.o: ../intl/plural.c ../intl/plural-exp.h \ - ../intl/plural-exp.c - -$(OUT)src/po-charset.o: config.h ../os2/os2compat.h ../src/po-charset.h \ - ../lib/error.h ../lib/xerror.h ../lib/basename.h ../lib/strstr.h \ - ../lib/system.h ../intl/libgettext.h - -$(OUT)src/po-gram-gen.o: config.h ../os2/os2compat.h ../src/po-gram.h \ - ../src/str-list.h ../src/po-lex.h ../lib/error.h ../lib/progname.h \ - ../src/pos.h ../lib/xerror.h ../lib/xmalloc.h ../intl/libgettext.h \ - ../src/po.h ../src/message.h ../lib/hash.h - -$(OUT)src/po-hash-gen.o: config.h ../os2/os2compat.h ../src/po-hash.h \ - ../lib/xmalloc.h ../src/po.h ../src/po-lex.h ../lib/error.h \ - ../lib/progname.h ../src/pos.h ../lib/xerror.h ../src/message.h \ - ../src/str-list.h ../lib/hash.h - -$(OUT)src/po-lex.o: config.h ../os2/os2compat.h ../src/po-lex.h \ - ../lib/error.h ../lib/progname.h ../src/pos.h ../lib/xerror.h \ - ../lib/c-ctype.h ../lib/linebreak.h ../intl/libgettext.h \ - ../src/str-list.h ../src/po-charset.h ../lib/xmalloc.h ../lib/system.h \ - ../src/open-po.h ../src/po-gram-gen2.h ../lib/utf8-ucs4.h - -$(OUT)src/po-time.o: ../src/po-time.h ../lib/xerror.h ../lib/error.h - -$(OUT)src/po.o: config.h ../os2/os2compat.h ../src/po.h ../src/po-lex.h \ - ../lib/error.h ../lib/progname.h ../src/pos.h ../lib/xerror.h \ - ../src/message.h ../src/str-list.h ../lib/hash.h ../src/po-charset.h \ - ../src/po-hash.h ../lib/xmalloc.h - -$(OUT)src/read-java.o: ../src/read-java.h ../src/message.h ../src/str-list.h \ - ../src/pos.h ../lib/hash.h ../src/msgunfmt.h ../lib/javaexec.h \ - ../lib/pipe.h ../lib/wait-process.h ../src/read-po.h ../lib/error.h \ - ../lib/system.h ../intl/libgettext.h - -$(OUT)src/read-mo.o: ../src/read-mo.h ../src/message.h ../src/str-list.h \ - ../src/pos.h ../lib/hash.h ../intl/gettext.h ../lib/error.h \ - ../lib/xmalloc.h ../lib/system.h ../intl/libgettext.h - -$(OUT)src/read-po.o: ../src/read-po.h ../src/message.h ../src/str-list.h \ - ../src/pos.h ../lib/hash.h ../src/po.h ../src/po-lex.h ../lib/error.h \ - ../lib/progname.h ../lib/xerror.h ../lib/xmalloc.h ../intl/libgettext.h - -$(OUT)src/str-list.o: config.h ../os2/os2compat.h ../src/str-list.h \ - ../lib/xmalloc.h - -$(OUT)src/urlget.o: config.h ../os2/os2compat.h ../lib/error.h \ - ../lib/progname.h ../lib/basename.h ../lib/full-write.h ../lib/execute.h \ - ../lib/javaexec.h ../lib/system.h ../intl/libgettext.h - -$(OUT)src/write-java.o: ../src/write-java.h ../src/message.h \ - ../src/str-list.h ../src/pos.h ../lib/hash.h ../lib/c-ctype.h \ - ../lib/error.h ../lib/javacomp.h ../lib/mkdtemp.h ../src/msgfmt.h \ - ../src/msgl-iconv.h ../lib/pathmax.h ../intl/plural-exp.h \ - ../src/po-charset.h ../lib/xmalloc.h ../lib/system.h ../lib/tmpdir.h \ - ../lib/utf8-ucs4.h ../intl/libgettext.h - -$(OUT)src/write-mo.o: ../src/write-mo.h ../src/message.h ../src/str-list.h \ - ../src/pos.h ../lib/hash.h ../src/msgfmt.h ../intl/gettext.h \ - ../intl/hash-string.h ../lib/error.h ../lib/system.h ../intl/libgettext.h - -$(OUT)src/write-po.o: ../src/write-po.h ../src/message.h ../src/str-list.h \ - ../src/pos.h ../lib/hash.h ../lib/c-ctype.h ../lib/linebreak.h \ - ../src/msgl-ascii.h ../lib/xmalloc.h ../lib/strstr.h ../lib/system.h \ - ../lib/error.h ../lib/xerror.h ../intl/libgettext.h - -$(OUT)src/x-c.o: config.h ../os2/os2compat.h ../src/message.h \ - ../src/str-list.h ../src/pos.h ../lib/hash.h ../src/x-c.h \ - ../src/xgettext.h ../lib/error.h ../lib/progname.h ../lib/xmalloc.h \ - ../lib/system.h ../intl/libgettext.h - -$(OUT)src/x-java.o: ../src/message.h ../src/str-list.h ../src/pos.h \ - ../lib/hash.h ../src/x-java.h ../src/xgettext.h ../lib/xmalloc.h \ - ../lib/strstr.h - -$(OUT)src/x-librep.o: config.h ../os2/os2compat.h ../src/message.h \ - ../src/str-list.h ../src/pos.h ../lib/hash.h ../src/x-librep.h \ - ../src/xgettext.h ../lib/error.h ../lib/xmalloc.h ../lib/system.h \ - ../intl/libgettext.h - -$(OUT)src/x-lisp.o: config.h ../os2/os2compat.h ../src/message.h \ - ../src/str-list.h ../src/pos.h ../lib/hash.h ../src/x-lisp.h \ - ../src/xgettext.h ../lib/error.h ../lib/xmalloc.h ../lib/system.h \ - ../intl/libgettext.h - -$(OUT)src/x-po.o: ../src/message.h ../src/str-list.h ../src/pos.h \ - ../lib/hash.h ../src/x-po.h ../src/xgettext.h ../lib/xmalloc.h \ - ../src/po.h ../src/po-lex.h ../lib/error.h ../lib/progname.h \ - ../lib/xerror.h ../intl/libgettext.h - -$(OUT)src/x-rst.o: config.h ../os2/os2compat.h ../src/message.h \ - ../src/str-list.h ../src/pos.h ../lib/hash.h ../src/x-rst.h \ - ../src/xgettext.h ../lib/error.h ../lib/progname.h ../lib/xmalloc.h \ - ../lib/system.h ../intl/libgettext.h - -$(OUT)src/x-ycp.o: config.h ../os2/os2compat.h ../src/message.h \ - ../src/str-list.h ../src/pos.h ../lib/hash.h ../src/x-ycp.h \ - ../src/xgettext.h ../lib/error.h ../lib/xmalloc.h ../lib/system.h \ - ../intl/libgettext.h +# +# OS/2 GNU Makefile for building gettext with GNU Make and GNU C compiler +# +# OS/2 still supports the regular configure/make building mechanism, but its +# way more clumsy, complicated and error prone. It is highly recommended to +# use this makefile instead, because : +# - this makefile builds an optimized static and dynamic version of the +# library +# - it is able to build both optimized and debug versions of the library +# without any reconfiguring +# - this makefile builds an backward compatible DLL. When building with +# configure you will get a DLL which is compatible only with the 0.10.40 +# and later DLLs of gettext; this makefile builds a DLL which is binary +# compatible with gettext 0.10.35 (exports by ordinal matter). +# - it is able to generate a complete OS/2 binary distribution (make distr) +# - besides its simply alot faster than configure generated makefiles +# +# The makefile is designed to be more or less gettext version independent, +# so it is likely to work with future versions of gettext as well. +# +# If you get unresolved dependencies (e.g. "don't know how to make somefile.h +# which is required for zzz.o) remove (or rebuild, if you have the makedep tool) +# the depend.mak file which contains all the dependencies. +# + +# Use CMD.EXE as shell since its way faster +SHELL = $(COMSPEC) +# An Unix-like shell (needed for running config.charset) +UNIXSHELL = sh.exe + +# Debug mode (1) or optimize mode (0) +DEBUG = 0 + +# The version of INTL.DLL (the name suffix) +INTLDLLVER = + +# Pack the DLL and executables with lxlite +LXLITE = 1 + +# Output directory +OUT = out/$(OUT.SUFFIX)/ +# Root package directory +ROOT = ../ +# The base directory for distribution archive (emx/ or usr/) +INST = emx/ + +# Tools +CC = gcc -c +CFLAGS = -Wall -Zmt $(INCLUDE) $(DEFS) +INCLUDE = -I. -I$(ROOT) -I$(ROOT)intl -I$(ROOT)src -I$(ROOT)lib +DEFS = -DHAVE_CONFIG_H -DLIBDIR=\"/usr/lib\" \ + -DLOCALEDIR=\"/usr/share/locale\" -DLOCALE_ALIAS_PATH=\"/usr/share/locale\" \ + -DPROJECTSDIR=\"/usr/share/gettext/projects\" \ + -DGETTEXTJAR=\"/usr/share/gettext/gettext.jar\" + +LD = gcc +LDFLAGS = -Zmt -Zcrtdll +LDFLAGS.SHARED = -Zmt -Zcrtdll -Zdll +LIBS = -liconv -liberty -lgcc + +AR = ar +ARFLAGS = crs + +MKDIR = mkdir.exe -p +COPY = cp -p + +LINKINTL = $(OUT)intl.a + +ifeq ($(DEBUG),0) + CFLAGS += -s -O2 + LDFLAGS += -s -Zexe + LDFLAGS.SHARED += -s + OUT.SUFFIX = release +else + CFLAGS += -g + LDFLAGS += -g -Zexe + LDFLAGS.SHARED += -g + OUT.SUFFIX = debug + LXLITE := 0 + LINKINTL = $(OUT)intl_s.a +endif + +# Languages with encodings unsupported by OS/2 API (BIG5) +BAD.LINGUAS=zh + +# The list of languages to be included in binary distribution +LINGUAS = $(filter-out $(BAD.LINGUAS),$(shell sed -e "/^\#/d" $(ROOT)po/LINGUAS)) + +# Fetch version number from configure.in +VERSION = $(shell sed ../configure.in -ne "/AM_INIT_AUTOMAKE/{" -e "s/.*(gettext, *\\(.*\\))/\\1/" -e "p" -e "}") + +# Fetch the list of source files for libintl from intl/Makefile.in +INTL.SOURCES = $(addprefix $(ROOT)intl/,\ + $(subst $$lo,c,\ + $(subst @INTLOBJS@,intl-compat.c,\ + $(subst OBJECTS = ,,\ + $(subst \,,\ + $(shell sed $(ROOT)intl/Makefile.in -ne "/^OBJECTS =/,/[^\]$$/p")))))) +INTL.OBJECTS = $(addprefix $(OUT),$(subst $(ROOT),,$(INTL.SOURCES:.c=.o))) + +PROGRAMS = $(addsuffix .exe,$(subst bin_PROGRAMS = ,,\ + $(subst \,,\ + $(shell sed $(ROOT)src/Makefile.am -ne "/^bin_PROGRAMS =/,/[^\]$$/p")))) +PROGRAMS.EXE = $(addprefix $(OUT),$(PROGRAMS)) +SRC.SOURCES = $(filter-out $(addprefix $(ROOT)src/,$(PROGRAMS:.exe=.c)),\ + $(wildcard $(ROOT)src/*.c)) +SRC.OBJECTS = $(addprefix $(OUT),$(subst $(ROOT),,$(SRC.SOURCES:.c=.o))) +LIB.SOURCES = $(addprefix $(ROOT)lib/, error.c stpcpy.c stpncpy.c mkdtemp.c getline.c \ + $(subst libgettextlib_la_SOURCES = ,,\ + $(subst \,,\ + $(patsubst %.h,,\ + $(patsubst getopt%.c,,\ + $(shell sed $(ROOT)lib/Makefile.am -ne "/^libgettextlib_la_SOURCES =/,/[^\]$$/p")))))) +LIB.OBJECTS = $(addprefix $(OUT),$(subst $(ROOT),,$(LIB.SOURCES:.c=.o))) + +OUTDIRS = $(OUT) $(sort $(dir $(INTL.OBJECTS) $(SRC.OBJECTS) $(LIB.OBJECTS) $(INSTALL.FILES))) + +INSTALL.FILES = $(addprefix $(INST)bin/,$(PROGRAMS)) \ + $(INST)lib/intl.a $(INST)lib/intl_s.a $(INST)include/libintl.h \ + $(INST)dll/intl.dll $(INST)share/locale/charset.alias \ + $(INST)share/locale/locale.alias $(INST)doc/gettext-$(VERSION)/README.OS2 \ + $(INST)doc/gettext-$(VERSION)/COPYING $(INST)doc/gettext-$(VERSION)/README \ + $(addsuffix /LC_MESSAGES/gettext.mo,$(addprefix $(INST)share/locale/,$(LINGUAS))) \ + $(INSTALL.DIFF) + +.SUFFIXES: +.SUFFIXES: .o .a .def .exe .dll .po .mo +.PRECIOUS: $(OUT)%.o $(OUT)%.a + +.PHONY: all depend clean distr rmzip + +$(OUT)%.o: $(ROOT)%.c + $(CC) $(CFLAGS) -o $@ $< + +# To avoid playing with object file lists for every program we will build +# instead a library containing all the object files from src directory, and +# then link the library against the main program module, so that linker can +# pull all the required functions from there +$(OUT)%.exe: $(OUT)src/%.o $(OUT)util.a $(LINKINTL) + $(LD) $(LDFLAGS) -o $@ $^ $(LIBS) +ifeq ($(LXLITE),1) + lxlite /b- $@ +endif + +all: config.h $(OUTDIRS) $(ROOT)src/po-gram-gen2.h $(ROOT)lib/stdbool.h \ + $(ROOT)intl/libintl.h $(OUT)intl.a $(OUT)intl_s.a $(OUT)intl$(INTLDLLVER).dll \ + $(PROGRAMS.EXE) + +define MAKEDEP + echo $(OUT)PATH = FILENAME + makedep $(INCLUDE) $(DEFS) -p $$(OUT)PATH -r -a FILENAME -c -f depend.mak + +endef + +depend: $(INTL.SOURCES) $(SRC.SOURCES) +# Remove all dependencies + rm -f depend.mak +# Build dependencies, by one file (to avoid 1024 chars command line length limit) + @$(foreach fn,$^,$(subst PATH,$(subst ../,,$(dir $(fn))),$(subst FILENAME,$(fn),$(MAKEDEP)))) + +clean: + rm -rf out emx config.h + +distr: all rmzip gettext-os2-$(VERSION)-bin.zip + +rmzip: + rm -f gettext-os2-$(VERSION)-bin.zip + +# How to configure without configure... +config.h: ../config.h.in ./configure.awk + gawk -f configure.awk -v PACKAGE=gettext -v VERSION=$(VERSION) $< >config.h + +$(OUTDIRS): + $(MKDIR) $(@:/=) + +$(OUT)intl_s.a: $(INTL.OBJECTS) + $(AR) $(ARFLAGS) $@ $^ + +$(OUT)intl.def: $(INTL.OBJECTS) + @echo LIBRARY INTL$(INTLDLLVER) INITINSTANCE TERMINSTANCE>$@ + @echo DESCRIPTION "GNU gettext internationalization library version $(VERSION)">>$@ + @echo DATA MULTIPLE NONSHARED>>$@ + @echo EXPORTS>>$@ + type backward.def>>$@ + emxexp $^ >>$@ + +$(OUT)intl$(INTLDLLVER).dll: $(INTL.OBJECTS) $(OUT)intl.def + @echo ********************************************************* + @echo *** YOU CAN SAFELY IGNORE WARNINGS FROM EMXBIND BELOW *** + @echo ********************************************************* + $(LD) $(LDFLAGS.SHARED) -o $@ $^ $(LIBS) +ifeq ($(LXLITE),1) + lxlite $@ +endif + +# How to build an import library from a .DEF file +$(OUT)%.a: $(OUT)%.def + emximp -o $@ $< + +$(OUT)util.a: $(SRC.OBJECTS) $(LIB.OBJECTS) + $(AR) $(ARFLAGS) $@ $^ + +$(ROOT)src/po-gram-gen2.h: $(ROOT)src/po-gram-gen.h + sed -e "s/[yY][yY]/po_gram_/g" $< > $@ + +$(ROOT)intl/libintl.h: $(ROOT)intl/libgnuintl.h + $(COPY) $< $@ + +$(ROOT)lib/stdbool.h: $(ROOT)lib/stdbool.h.in + $(COPY) $< $@ + +gettext-os2-$(VERSION)-bin.zip: $(INSTALL.FILES) + @rm -f $@ + zip -9XD $@ $^ + +# The following rules are for `make distr' target only + +$(INST)share/locale/charset.alias: $(ROOT)lib/config.charset + $(UNIXSHELL) $< i386-pc-os2-emx >$@ +$(INST)share/locale/locale.alias: $(ROOT)intl/locale.alias + $(COPY) $< $@ +$(INST)bin/% $(INST)lib/% $(INST)dll/%: $(OUT)% + $(COPY) $< $@ +$(INST)include/%: $(ROOT)intl/% + $(COPY) $< $@ +$(INST)doc/gettext-$(VERSION)/%: $(ROOT)% + $(COPY) $< $@ +$(INST)doc/gettext-$(VERSION)/% $(INST)include/%: % + $(COPY) $< $@ +$(INST)share/locale/%/LC_MESSAGES/gettext.mo: $(ROOT)po/%.po + $(MKDIR) $(dir $@) + $(COMSPEC) /c "$(subst /,\\,set BEGINLIBPATH=$(OUT:/=) && \ + $(OUT)msgfmt.exe) --statistics --verbose -o $@ $<" + +-include depend.mak diff --git a/os2/README.OS2 b/os2/README.OS2 index 1b2cb0fb4..2ba274bd6 100644 --- a/os2/README.OS2 +++ b/os2/README.OS2 @@ -2,7 +2,7 @@ Welcome! ======== -This is the OS/2 port of GNU gettext 0.10.40 and possibly later versions. +This is the OS/2 port of GNU gettext internationalization library. Compatibility @@ -64,8 +64,10 @@ or (same effect): set LANG=ru_RU.IBM-878 If the output character set is ommited from the LANG variable, the default -codepage is queried by using the OS/2 API; you may want to set it just if you -want to override the OS/2 active codepage. +codepage is ALWAYS taken from the operating system (e.g. the codepage setting +from locale.alias is always ignored, so "russian" stays just for "ru_RU" and +not for "ru_RU.ISO-8859-5"); you may want to set it just if you want to +override the active OS/2 codepage. XFree86 setup