43
# Define EXPATDIR=/foo/bar if your expat header and library files are in
44
# /foo/bar/include and /foo/bar/lib directories.
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
+#
62
# Define HAVE_PATHS_H if you have paths.h and want to use the default PATH
63
# it specifies.
64
#
317
mergetoolsdir = $(gitexecdir)/mergetools
318
sharedir = $(prefix)/share
319
gitwebdir = $(sharedir)/gitweb
320
+localedir = $(sharedir)/locale
321
template_dir = share/git-core/templates
322
htmldir = share/doc/git-doc
323
ETC_GITCONFIG = $(sysconfdir)/gitconfig
326
# DESTDIR=
327
pathsep = :
328
312
-export prefix bindir sharedir sysconfdir gitwebdir
329
+export prefix bindir sharedir sysconfdir gitwebdir localedir
330
331
CC = gcc
332
AR = ar
339
TCL_PATH = tclsh
340
TCLTK_PATH = wish
341
XGETTEXT = xgettext
342
+MSGFMT = msgfmt
343
PTHREAD_LIBS = -lpthread
344
PTHREAD_CFLAGS =
345
GCOV = gcov
639
LIB_OBJS += environment.o
640
LIB_OBJS += exec_cmd.o
641
LIB_OBJS += fsck.o
642
+LIB_OBJS += gettext.o
643
LIB_OBJS += graph.o
644
LIB_OBJS += grep.o
645
LIB_OBJS += hash.o
836
NO_STRLCPY = YesPlease
837
NO_MKSTEMPS = YesPlease
838
HAVE_PATHS_H = YesPlease
839
+ LIBC_CONTAINS_LIBINTL = YesPlease
840
endif
841
ifeq ($(uname_S),GNU/kFreeBSD)
842
NO_STRLCPY = YesPlease
843
NO_MKSTEMPS = YesPlease
844
HAVE_PATHS_H = YesPlease
845
DIR_HAS_BSD_GROUP_SEMANTICS = YesPlease
846
+ LIBC_CONTAINS_LIBINTL = YesPlease
847
endif
848
ifeq ($(uname_S),UnixWare)
849
CC = cc
910
NO_MKSTEMPS = YesPlease
911
NO_REGEX = YesPlease
912
NO_FNMATCH_CASEFOLD = YesPlease
913
+ NO_MSGFMT_EXTENDED_OPTIONS = YesPlease
914
ifeq ($(uname_R),5.6)
915
SOCKLEN_T = int
916
NO_HSTRERROR = YesPlease
1034
NO_STRLCPY=YesPlease
1035
NO_MKSTEMPS = YesPlease
1036
HAVE_PATHS_H = YesPlease
1037
+ LIBC_CONTAINS_LIBINTL = YesPlease
1038
endif
1039
ifeq ($(uname_S),IRIX)
1040
NO_SETENV = YesPlease
1251
EXTLIBS += /mingw/lib/libz.a
1252
NO_R_TO_GCC_LINKER = YesPlease
1253
INTERNAL_QSORT = YesPlease
1254
+ HAVE_LIBCHARSET_H = YesPlease
1255
else
1256
NO_CURL = YesPlease
1257
endif
1429
ifdef NEEDS_LIBGEN
1430
EXTLIBS += -lgen
1431
endif
1432
+ifndef NO_GETTEXT
1433
+ifndef LIBC_CONTAINS_LIBINTL
1434
+ EXTLIBS += -lintl
1435
+endif
1436
+endif
1437
ifdef NEEDS_SOCKET
1438
EXTLIBS += -lsocket
1439
endif
1476
BASIC_CFLAGS += -DNO_SYMLINK_HEAD
1477
endif
1478
ifdef GETTEXT_POISON
1450
- LIB_OBJS += gettext.o
1479
BASIC_CFLAGS += -DGETTEXT_POISON
1480
endif
1481
+ifdef NO_GETTEXT
1482
+ BASIC_CFLAGS += -DNO_GETTEXT
1483
+endif
1484
ifdef NO_STRCASESTR
1485
COMPAT_CFLAGS += -DNO_STRCASESTR
1486
COMPAT_OBJS += compat/strcasestr.o
1643
BASIC_CFLAGS += -DHAVE_PATHS_H
1644
endif
1645
1646
+ifdef HAVE_LIBCHARSET_H
1647
+ BASIC_CFLAGS += -DHAVE_LIBCHARSET_H
1648
+endif
1649
+
1650
ifdef DIR_HAS_BSD_GROUP_SEMANTICS
1651
COMPAT_CFLAGS += -DDIR_HAS_BSD_GROUP_SEMANTICS
1652
endif
1667
export GIT_TEST_CMP_USE_COPIED_CONTEXT
1668
endif
1669
1670
+ifndef NO_MSGFMT_EXTENDED_OPTIONS
1671
+ MSGFMT += --check --statistics
1672
+endif
1673
+
1674
ifeq ($(TCLTK_PATH),)
1675
NO_TCLTK=NoThanks
1676
endif
1701
QUIET_GEN = @echo ' ' GEN $@;
1702
QUIET_LNCP = @echo ' ' LN/CP $@;
1703
QUIET_XGETTEXT = @echo ' ' XGETTEXT $@;
1704
+ QUIET_MSGFMT = @echo ' ' MSGFMT $@;
1705
QUIET_GCOV = @echo ' ' GCOV $@;
1706
QUIET_SP = @echo ' ' SP $<;
1707
QUIET_SUBDIR0 = +@subdir=
1728
bindir_relative_SQ = $(subst ','\'',$(bindir_relative))
1729
mandir_SQ = $(subst ','\'',$(mandir))
1730
infodir_SQ = $(subst ','\'',$(infodir))
1731
+localedir_SQ = $(subst ','\'',$(localedir))
1732
gitexecdir_SQ = $(subst ','\'',$(gitexecdir))
1733
template_dir_SQ = $(subst ','\'',$(template_dir))
1734
htmldir_SQ = $(subst ','\'',$(htmldir))
1784
$(QUIET_SUBDIR0)gitk-git $(QUIET_SUBDIR1) all
1785
endif
1786
ifndef NO_PERL
1746
- $(QUIET_SUBDIR0)perl $(QUIET_SUBDIR1) PERL_PATH='$(PERL_PATH_SQ)' prefix='$(prefix_SQ)' all
1787
+ $(QUIET_SUBDIR0)perl $(QUIET_SUBDIR1) PERL_PATH='$(PERL_PATH_SQ)' prefix='$(prefix_SQ)' localedir='$(localedir_SQ)' all
1788
endif
1789
ifndef NO_PYTHON
1790
$(QUIET_SUBDIR0)git_remote_helpers $(QUIET_SUBDIR1) PYTHON_PATH='$(PYTHON_PATH_SQ)' prefix='$(prefix_SQ)' all
1834
-e 's|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \
1835
-e 's|@@DIFF@@|$(DIFF_SQ)|' \
1836
-e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \
1837
+ -e 's|@@LOCALEDIR@@|$(localedir_SQ)|g' \
1838
-e 's/@@NO_CURL@@/$(NO_CURL)/g' \
1839
-e $(BROKEN_PATH_FIX) \
1840
$@.sh >$@+
2087
attr.sp attr.s attr.o: EXTRA_CPPFLAGS = \
2088
-DETC_GITATTRIBUTES='"$(ETC_GITATTRIBUTES_SQ)"'
2089
2090
+gettext.sp gettext.s gettext.o: EXTRA_CPPFLAGS = \
2091
+ -DGIT_LOCALE_PATH='"$(localedir_SQ)"'
2092
+
2093
http.sp http.s http.o: EXTRA_CPPFLAGS = \
2094
-DGIT_HTTP_USER_AGENT='"git/$(GIT_VERSION)"'
2095
2163
XGETTEXT_FLAGS_C = $(XGETTEXT_FLAGS) --language=C \
2164
--keyword=_ --keyword=N_ --keyword="Q_:1,2"
2165
XGETTEXT_FLAGS_SH = $(XGETTEXT_FLAGS) --language=Shell
2166
+XGETTEXT_FLAGS_PERL = $(XGETTEXT_FLAGS) --keyword=__ --language=Perl
2167
LOCALIZED_C := $(C_OBJ:o=c)
2168
LOCALIZED_SH := $(SCRIPT_SH)
2169
+LOCALIZED_PERL := $(SCRIPT_PERL)
2170
+
2171
+ifdef XGETTEXT_INCLUDE_TESTS
2172
+LOCALIZED_C += t/t0200/test.c
2173
+LOCALIZED_SH += t/t0200/test.sh
2174
+LOCALIZED_PERL += t/t0200/test.perl
2175
+endif
2176
2177
po/git.pot: $(LOCALIZED_C)
2178
$(QUIET_XGETTEXT)$(XGETTEXT) -o$@+ $(XGETTEXT_FLAGS_C) $(LOCALIZED_C)
2179
$(QUIET_XGETTEXT)$(XGETTEXT) -o$@+ --join-existing $(XGETTEXT_FLAGS_SH) \
2180
$(LOCALIZED_SH)
2181
+ $(QUIET_XGETTEXT)$(XGETTEXT) -o$@+ --join-existing $(XGETTEXT_FLAGS_PERL) \
2182
+ $(LOCALIZED_PERL)
2183
mv $@+ $@
2184
2185
pot: po/git.pot
2186
2187
+POFILES := $(wildcard po/*.po)
2188
+MOFILES := $(patsubst po/%.po,po/build/locale/%/LC_MESSAGES/git.mo,$(POFILES))
2189
+
2190
+ifndef NO_GETTEXT
2191
+all:: $(MOFILES)
2192
+endif
2193
+
2194
+po/build/locale/%/LC_MESSAGES/git.mo: po/%.po
2195
+ $(QUIET_MSGFMT)mkdir -p $(dir $@) && $(MSGFMT) -o $@ $<
2196
+
2197
FIND_SOURCE_FILES = ( git ls-files '*.[hcS]' 2>/dev/null || \
2198
$(FIND) . \( -name .git -type d -prune \) \
2199
-o \( -name '*.[hcS]' -type f -print \) )
2212
2213
### Detect prefix changes
2214
TRACK_CFLAGS = $(CC):$(subst ','\'',$(ALL_CFLAGS)):\
2150
- $(bindir_SQ):$(gitexecdir_SQ):$(template_dir_SQ):$(prefix_SQ)
2215
+ $(bindir_SQ):$(gitexecdir_SQ):$(template_dir_SQ):$(prefix_SQ):\
2216
+ $(localedir_SQ)
2217
2218
GIT-CFLAGS: FORCE
2219
@FLAGS='$(TRACK_CFLAGS)'; \
2250
ifdef GIT_TEST_CMP_USE_COPIED_CONTEXT
2251
@echo GIT_TEST_CMP_USE_COPIED_CONTEXT=YesPlease >>$@
2252
endif
2253
+ @echo NO_GETTEXT=\''$(subst ','\'',$(subst ','\'',$(NO_GETTEXT)))'\' >>$@
2254
@echo GETTEXT_POISON=\''$(subst ','\'',$(subst ','\'',$(GETTEXT_POISON)))'\' >>$@
2255
2256
### Detect Tck/Tk interpreter path changes
2366
$(MAKE) -C templates DESTDIR='$(DESTDIR_SQ)' install
2367
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(mergetools_instdir_SQ)'
2368
$(INSTALL) -m 644 mergetools/* '$(DESTDIR_SQ)$(mergetools_instdir_SQ)'
2369
+ifndef NO_GETTEXT
2370
+ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(localedir_SQ)'
2371
+ (cd po/build/locale && $(TAR) cf - .) | \
2372
+ (cd '$(DESTDIR_SQ)$(localedir_SQ)' && umask 022 && $(TAR) xof -)
2373
+endif
2374
ifndef NO_PERL
2375
$(MAKE) -C perl prefix='$(prefix_SQ)' DESTDIR='$(DESTDIR_SQ)' install
2376
$(MAKE) -C gitweb install
2507
$(RM) $(TEST_PROGRAMS)
2508
$(RM) -r bin-wrappers
2509
$(RM) -r $(dep_dirs)
2510
+ $(RM) -r po/build/
2511
$(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo common-cmds.h $(ETAGS_TARGET) tags cscope*
2512
$(RM) -r autom4te.cache
2513
$(RM) config.log config.mak.autogen config.mak.append config.status config.cache