43
43
# Define EXPATDIR=/foo/bar if your expat header and library files are in
44
44
# /foo/bar/include and /foo/bar/lib directories.
45
45
#
46
+ # Define NO_GETTEXT if you don't want Git output to be translated.
47
+ # A translated Git requires GNU libintl or another gettext implementation,
48
+ # plus libintl-perl at runtime.
49
+ #
50
+ # Define HAVE_LIBCHARSET_H if you haven't set NO_GETTEXT and you can't
51
+ # trust the langinfo.h's nl_langinfo(CODESET) function to return the
52
+ # current character set. GNU and Solaris have a nl_langinfo(CODESET),
53
+ # FreeBSD can use either, but MinGW and some others need to use
54
+ # libcharset.h's locale_charset() instead.
55
+ #
56
+ # Define LIBC_CONTAINS_LIBINTL if your gettext implementation doesn't
57
+ # need -lintl when linking.
58
+ #
59
+ # Define NO_MSGFMT_EXTENDED_OPTIONS if your implementation of msgfmt
60
+ # doesn't support GNU extensions like --check and --statistics
61
+ #
46
62
# Define HAVE_PATHS_H if you have paths.h and want to use the default PATH
47
63
# it specifies.
48
64
#
@@ -309,6 +325,7 @@ gitexecdir = libexec/git-core
309
325
mergetoolsdir = $(gitexecdir ) /mergetools
310
326
sharedir = $(prefix ) /share
311
327
gitwebdir = $(sharedir ) /gitweb
328
+ localedir = $(sharedir ) /locale
312
329
template_dir = share/git-core/templates
313
330
htmldir = share/doc/git-doc
314
331
ETC_GITCONFIG = $(sysconfdir ) /gitconfig
@@ -317,7 +334,7 @@ lib = lib
317
334
# DESTDIR=
318
335
pathsep = :
319
336
320
- export prefix bindir sharedir sysconfdir gitwebdir
337
+ export prefix bindir sharedir sysconfdir gitwebdir localedir
321
338
322
339
CC = gcc
323
340
AR = ar
@@ -330,6 +347,7 @@ RPMBUILD = rpmbuild
330
347
TCL_PATH = tclsh
331
348
TCLTK_PATH = wish
332
349
XGETTEXT = xgettext
350
+ MSGFMT = msgfmt
333
351
PTHREAD_LIBS = -lpthread
334
352
PTHREAD_CFLAGS =
335
353
GCOV = gcov
@@ -640,6 +658,7 @@ LIB_OBJS += environment.o
640
658
LIB_OBJS += exec_cmd.o
641
659
LIB_OBJS += fsck.o
642
660
LIB_OBJS += gpg-interface.o
661
+ LIB_OBJS += gettext.o
643
662
LIB_OBJS += graph.o
644
663
LIB_OBJS += grep.o
645
664
LIB_OBJS += hash.o
@@ -836,12 +855,14 @@ ifeq ($(uname_S),Linux)
836
855
NO_STRLCPY = YesPlease
837
856
NO_MKSTEMPS = YesPlease
838
857
HAVE_PATHS_H = YesPlease
858
+ LIBC_CONTAINS_LIBINTL = YesPlease
839
859
endif
840
860
ifeq ($(uname_S ) ,GNU/kFreeBSD)
841
861
NO_STRLCPY = YesPlease
842
862
NO_MKSTEMPS = YesPlease
843
863
HAVE_PATHS_H = YesPlease
844
864
DIR_HAS_BSD_GROUP_SEMANTICS = YesPlease
865
+ LIBC_CONTAINS_LIBINTL = YesPlease
845
866
endif
846
867
ifeq ($(uname_S ) ,UnixWare)
847
868
CC = cc
@@ -908,6 +929,7 @@ ifeq ($(uname_S),SunOS)
908
929
NO_MKSTEMPS = YesPlease
909
930
NO_REGEX = YesPlease
910
931
NO_FNMATCH_CASEFOLD = YesPlease
932
+ NO_MSGFMT_EXTENDED_OPTIONS = YesPlease
911
933
ifeq ($(uname_R),5.6)
912
934
SOCKLEN_T = int
913
935
NO_HSTRERROR = YesPlease
@@ -1031,6 +1053,7 @@ ifeq ($(uname_S),GNU)
1031
1053
NO_STRLCPY=YesPlease
1032
1054
NO_MKSTEMPS = YesPlease
1033
1055
HAVE_PATHS_H = YesPlease
1056
+ LIBC_CONTAINS_LIBINTL = YesPlease
1034
1057
endif
1035
1058
ifeq ($(uname_S ) ,IRIX)
1036
1059
NO_SETENV = YesPlease
@@ -1249,6 +1272,7 @@ ifneq (,$(wildcard ../THIS_IS_MSYSGIT))
1249
1272
EXTLIBS += /mingw/lib/libz.a
1250
1273
NO_R_TO_GCC_LINKER = YesPlease
1251
1274
INTERNAL_QSORT = YesPlease
1275
+ HAVE_LIBCHARSET_H = YesPlease
1252
1276
else
1253
1277
NO_CURL = YesPlease
1254
1278
endif
@@ -1437,6 +1461,11 @@ endif
1437
1461
ifdef NEEDS_LIBGEN
1438
1462
EXTLIBS += -lgen
1439
1463
endif
1464
+ ifndef NO_GETTEXT
1465
+ ifndef LIBC_CONTAINS_LIBINTL
1466
+ EXTLIBS += -lintl
1467
+ endif
1468
+ endif
1440
1469
ifdef NEEDS_SOCKET
1441
1470
EXTLIBS += -lsocket
1442
1471
endif
@@ -1479,9 +1508,11 @@ ifdef NO_SYMLINK_HEAD
1479
1508
BASIC_CFLAGS += -DNO_SYMLINK_HEAD
1480
1509
endif
1481
1510
ifdef GETTEXT_POISON
1482
- LIB_OBJS += gettext.o
1483
1511
BASIC_CFLAGS += -DGETTEXT_POISON
1484
1512
endif
1513
+ ifdef NO_GETTEXT
1514
+ BASIC_CFLAGS += -DNO_GETTEXT
1515
+ endif
1485
1516
ifdef NO_STRCASESTR
1486
1517
COMPAT_CFLAGS += -DNO_STRCASESTR
1487
1518
COMPAT_OBJS += compat/strcasestr.o
@@ -1650,6 +1681,10 @@ ifdef HAVE_PATHS_H
1650
1681
BASIC_CFLAGS += -DHAVE_PATHS_H
1651
1682
endif
1652
1683
1684
+ ifdef HAVE_LIBCHARSET_H
1685
+ BASIC_CFLAGS += -DHAVE_LIBCHARSET_H
1686
+ endif
1687
+
1653
1688
ifdef DIR_HAS_BSD_GROUP_SEMANTICS
1654
1689
COMPAT_CFLAGS += -DDIR_HAS_BSD_GROUP_SEMANTICS
1655
1690
endif
@@ -1670,6 +1705,10 @@ ifdef GIT_TEST_CMP_USE_COPIED_CONTEXT
1670
1705
export GIT_TEST_CMP_USE_COPIED_CONTEXT
1671
1706
endif
1672
1707
1708
+ ifndef NO_MSGFMT_EXTENDED_OPTIONS
1709
+ MSGFMT += --check --statistics
1710
+ endif
1711
+
1673
1712
ifeq ($(TCLTK_PATH ) ,)
1674
1713
NO_TCLTK =NoThanks
1675
1714
endif
@@ -1700,6 +1739,7 @@ ifndef V
1700
1739
QUIET_GEN = @echo ' ' GEN $@;
1701
1740
QUIET_LNCP = @echo ' ' LN/CP $@;
1702
1741
QUIET_XGETTEXT = @echo ' ' XGETTEXT $@;
1742
+ QUIET_MSGFMT = @echo ' ' MSGFMT $@;
1703
1743
QUIET_GCOV = @echo ' ' GCOV $@;
1704
1744
QUIET_SP = @echo ' ' SP $<;
1705
1745
QUIET_SUBDIR0 = +@subdir=
@@ -1726,6 +1766,7 @@ bindir_SQ = $(subst ','\'',$(bindir))
1726
1766
bindir_relative_SQ = $(subst ','\'',$(bindir_relative ) )
1727
1767
mandir_SQ = $(subst ','\'',$(mandir ) )
1728
1768
infodir_SQ = $(subst ','\'',$(infodir ) )
1769
+ localedir_SQ = $(subst ','\'',$(localedir ) )
1729
1770
gitexecdir_SQ = $(subst ','\'',$(gitexecdir ) )
1730
1771
template_dir_SQ = $(subst ','\'',$(template_dir ) )
1731
1772
htmldir_SQ = $(subst ','\'',$(htmldir ) )
@@ -1781,7 +1822,7 @@ ifndef NO_TCLTK
1781
1822
$(QUIET_SUBDIR0)gitk-git $(QUIET_SUBDIR1) all
1782
1823
endif
1783
1824
ifndef NO_PERL
1784
- $(QUIET_SUBDIR0)perl $(QUIET_SUBDIR1) PERL_PATH='$(PERL_PATH_SQ)' prefix='$(prefix_SQ)' all
1825
+ $(QUIET_SUBDIR0)perl $(QUIET_SUBDIR1) PERL_PATH='$(PERL_PATH_SQ)' prefix='$(prefix_SQ)' localedir='$(localedir_SQ)' all
1785
1826
endif
1786
1827
ifndef NO_PYTHON
1787
1828
$(QUIET_SUBDIR0)git_remote_helpers $(QUIET_SUBDIR1) PYTHON_PATH='$(PYTHON_PATH_SQ)' prefix='$(prefix_SQ)' all
@@ -1831,6 +1872,7 @@ sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
1831
1872
-e 's|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \
1832
1873
-e 's|@@DIFF@@|$(DIFF_SQ)|' \
1833
1874
-e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
1875
+ -e 's|@@LOCALEDIR@@|$(localedir_SQ)|g' \
1834
1876
-e 's/@@NO_CURL@@/$(NO_CURL)/g' \
1835
1877
-e $(BROKEN_PATH_FIX) \
1836
1878
@@ -2083,6 +2125,9 @@ config.sp config.s config.o: EXTRA_CPPFLAGS = \
2083
2125
attr.sp attr.s attr.o : EXTRA_CPPFLAGS = \
2084
2126
-DETC_GITATTRIBUTES=' "$(ETC_GITATTRIBUTES_SQ)"'
2085
2127
2128
+ gettext.sp gettext.s gettext.o : EXTRA_CPPFLAGS = \
2129
+ -DGIT_LOCALE_PATH=' "$(localedir_SQ)"'
2130
+
2086
2131
http.sp http.s http.o : EXTRA_CPPFLAGS = \
2087
2132
-DGIT_HTTP_USER_AGENT=' "git/$(GIT_VERSION)"'
2088
2133
@@ -2156,17 +2201,37 @@ XGETTEXT_FLAGS = \
2156
2201
XGETTEXT_FLAGS_C = $(XGETTEXT_FLAGS ) --language=C \
2157
2202
--keyword=_ --keyword=N_ --keyword="Q_:1,2"
2158
2203
XGETTEXT_FLAGS_SH = $(XGETTEXT_FLAGS ) --language=Shell
2204
+ XGETTEXT_FLAGS_PERL = $(XGETTEXT_FLAGS ) --keyword=__ --language=Perl
2159
2205
LOCALIZED_C := $(C_OBJ:o=c )
2160
2206
LOCALIZED_SH := $(SCRIPT_SH )
2207
+ LOCALIZED_PERL := $(SCRIPT_PERL )
2208
+
2209
+ ifdef XGETTEXT_INCLUDE_TESTS
2210
+ LOCALIZED_C += t/t0200/test.c
2211
+ LOCALIZED_SH += t/t0200/test.sh
2212
+ LOCALIZED_PERL += t/t0200/test.perl
2213
+ endif
2161
2214
2162
2215
po/git.pot : $(LOCALIZED_C )
2163
2216
$(QUIET_XGETTEXT )$(XGETTEXT ) -o$@ + $(XGETTEXT_FLAGS_C ) $(LOCALIZED_C )
2164
2217
$(QUIET_XGETTEXT )$(XGETTEXT ) -o$@ + --join-existing $(XGETTEXT_FLAGS_SH ) \
2165
2218
$(LOCALIZED_SH )
2219
+ $(QUIET_XGETTEXT )$(XGETTEXT ) -o$@ + --join-existing $(XGETTEXT_FLAGS_PERL ) \
2220
+ $(LOCALIZED_PERL )
2166
2221
mv $@ + $@
2167
2222
2168
2223
pot : po/git.pot
2169
2224
2225
+ POFILES := $(wildcard po/* .po)
2226
+ MOFILES := $(patsubst po/% .po,po/build/locale/% /LC_MESSAGES/git.mo,$(POFILES ) )
2227
+
2228
+ ifndef NO_GETTEXT
2229
+ all :: $(MOFILES )
2230
+ endif
2231
+
2232
+ po/build/locale/% /LC_MESSAGES/git.mo : po/% .po
2233
+ $(QUIET_MSGFMT ) mkdir -p $(dir $@ ) && $(MSGFMT ) -o $@ $<
2234
+
2170
2235
FIND_SOURCE_FILES = ( git ls-files '*.[hcS]' 2>/dev/null || \
2171
2236
$(FIND ) . \( -name .git -type d -prune \) \
2172
2237
-o \( -name '*.[hcS]' -type f -print \) )
@@ -2185,7 +2250,8 @@ cscope:
2185
2250
2186
2251
# ## Detect prefix changes
2187
2252
TRACK_CFLAGS = $(CC ) :$(subst ','\'',$(ALL_CFLAGS ) ) :\
2188
- $(bindir_SQ ) :$(gitexecdir_SQ ) :$(template_dir_SQ ) :$(prefix_SQ )
2253
+ $(bindir_SQ ) :$(gitexecdir_SQ ) :$(template_dir_SQ ) :$(prefix_SQ ) :\
2254
+ $(localedir_SQ )
2189
2255
2190
2256
GIT-CFLAGS : FORCE
2191
2257
@FLAGS=' $(TRACK_CFLAGS)' ; \
@@ -2222,6 +2288,7 @@ endif
2222
2288
ifdef GIT_TEST_CMP_USE_COPIED_CONTEXT
2223
2289
@echo GIT_TEST_CMP_USE_COPIED_CONTEXT=YesPlease >>$@
2224
2290
endif
2291
+ @echo NO_GETTEXT=\''$(subst ','\'',$(subst ','\'',$(NO_GETTEXT)))'\' >>$@
2225
2292
@echo GETTEXT_POISON=\''$(subst ','\'',$(subst ','\'',$(GETTEXT_POISON)))'\' >>$@
2226
2293
@echo NO_UNIX_SOCKETS=\''$(subst ','\'',$(subst ','\'',$(NO_UNIX_SOCKETS)))'\' >>$@
2227
2294
@@ -2338,6 +2405,11 @@ install: all
2338
2405
$(MAKE ) -C templates DESTDIR=' $(DESTDIR_SQ)' install
2339
2406
$(INSTALL ) -d -m 755 ' $(DESTDIR_SQ)$(mergetools_instdir_SQ)'
2340
2407
$(INSTALL ) -m 644 mergetools/* ' $(DESTDIR_SQ)$(mergetools_instdir_SQ)'
2408
+ ifndef NO_GETTEXT
2409
+ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(localedir_SQ)'
2410
+ (cd po/build/locale && $(TAR) cf - .) | \
2411
+ (cd '$(DESTDIR_SQ)$(localedir_SQ)' && umask 022 && $(TAR) xof -)
2412
+ endif
2341
2413
ifndef NO_PERL
2342
2414
$(MAKE) -C perl prefix='$(prefix_SQ)' DESTDIR='$(DESTDIR_SQ)' install
2343
2415
$(MAKE) -C gitweb install
@@ -2474,6 +2546,7 @@ clean:
2474
2546
$(RM ) $(TEST_PROGRAMS )
2475
2547
$(RM ) -r bin-wrappers
2476
2548
$(RM ) -r $(dep_dirs )
2549
+ $(RM ) -r po/build/
2477
2550
$(RM ) * .spec * .pyc * .pyo * /* .pyc * /* .pyo common-cmds.h $(ETAGS_TARGET ) tags cscope*
2478
2551
$(RM ) -r autom4te.cache
2479
2552
$(RM ) config.log config.mak.autogen config.mak.append config.status config.cache
0 commit comments