summaryrefslogtreecommitdiff
path: root/Build/source/texk/cjkutils/bat
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-17 21:41:51 +0000
committerKarl Berry <karl@freefriends.org>2006-01-17 21:41:51 +0000
commit487ca4806cc046076293cf6cc5fbba0db282bac7 (patch)
tree847b412ab5158dd7bdd7ed7e5a4cc3fbca94be32 /Build/source/texk/cjkutils/bat
parenta3d3111bfe26b8e5f5bc6049dfb2a4ca2edc7881 (diff)
texk 1
git-svn-id: svn://tug.org/texlive/trunk@1485 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/cjkutils/bat')
-rw-r--r--Build/source/texk/cjkutils/bat/bg5latex.bat3
-rw-r--r--Build/source/texk/cjkutils/bat/bg5pltx.bat3
-rw-r--r--Build/source/texk/cjkutils/bat/cef5ltx.bat3
-rw-r--r--Build/source/texk/cjkutils/bat/ceflatex.bat3
-rw-r--r--Build/source/texk/cjkutils/bat/cefsltx.bat3
-rw-r--r--Build/source/texk/cjkutils/bat/cjklatex.c271
-rw-r--r--Build/source/texk/cjkutils/bat/depend.mak18
-rw-r--r--Build/source/texk/cjkutils/bat/f_name.bat205
-rw-r--r--Build/source/texk/cjkutils/bat/gbklatex.bat3
-rw-r--r--Build/source/texk/cjkutils/bat/sjisltx.bat3
-rw-r--r--Build/source/texk/cjkutils/bat/win32.mak61
11 files changed, 576 insertions, 0 deletions
diff --git a/Build/source/texk/cjkutils/bat/bg5latex.bat b/Build/source/texk/cjkutils/bat/bg5latex.bat
new file mode 100644
index 00000000000..91e7dfd8575
--- /dev/null
+++ b/Build/source/texk/cjkutils/bat/bg5latex.bat
@@ -0,0 +1,3 @@
+call f_name %1
+bg5conv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/Build/source/texk/cjkutils/bat/bg5pltx.bat b/Build/source/texk/cjkutils/bat/bg5pltx.bat
new file mode 100644
index 00000000000..ccc6c76acd5
--- /dev/null
+++ b/Build/source/texk/cjkutils/bat/bg5pltx.bat
@@ -0,0 +1,3 @@
+call f_name %1
+extconv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/Build/source/texk/cjkutils/bat/cef5ltx.bat b/Build/source/texk/cjkutils/bat/cef5ltx.bat
new file mode 100644
index 00000000000..187485301f9
--- /dev/null
+++ b/Build/source/texk/cjkutils/bat/cef5ltx.bat
@@ -0,0 +1,3 @@
+call f_name %1
+cef5conv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/Build/source/texk/cjkutils/bat/ceflatex.bat b/Build/source/texk/cjkutils/bat/ceflatex.bat
new file mode 100644
index 00000000000..ba5925a6df3
--- /dev/null
+++ b/Build/source/texk/cjkutils/bat/ceflatex.bat
@@ -0,0 +1,3 @@
+call f_name %1
+cefconv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/Build/source/texk/cjkutils/bat/cefsltx.bat b/Build/source/texk/cjkutils/bat/cefsltx.bat
new file mode 100644
index 00000000000..662ef9e3af4
--- /dev/null
+++ b/Build/source/texk/cjkutils/bat/cefsltx.bat
@@ -0,0 +1,3 @@
+call f_name %1
+cefsconv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/Build/source/texk/cjkutils/bat/cjklatex.c b/Build/source/texk/cjkutils/bat/cjklatex.c
new file mode 100644
index 00000000000..7263e1e86c6
--- /dev/null
+++ b/Build/source/texk/cjkutils/bat/cjklatex.c
@@ -0,0 +1,271 @@
+/*
+ Purpose: call latex after preprocessing of the .tex file by
+ the cjk conversion tool. The old f_name.bat script
+ is not working anymore.
+ Author : F. Popineau <Fabrice.Popineau@supelec.fr>
+ Date : <29/06/2001>
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <win32lib.h>
+
+#include <kpathsea/config.h>
+#include <kpathsea/lib.h>
+#include <kpathsea/getopt.h>
+
+static char *cjklatex_version_string = "1.0";
+
+static const char *usage_str[] = {
+ "Usage: %s OPTIONS FILE\n",
+ "Calls `latex' on FILE after conversion by the filter\n",
+ "specified by OPTIONS.\n",
+ "--conv=bg5\tfor traditional Chinese, encoding Big 5,\n",
+ "--conv=bg5p\tfor Chinese, encoding Big 5+,\n",
+ "--conv=cef\tfor Chinese Encoding Framework, encoding CEF,\n",
+ "--conv=cef5\tidem CEF, also converts Big5 characters,\n",
+ "--conv=cefs\tidem CEF, also converts SJIS characters,\n",
+ "--conv=sjis\tfor Japanese, SJIS encoding,\n",
+ "--conv=gbk\tfor Chinese, encoding GBK.",
+ "\nAlternatively, for compatibility with the previous DOS batch files,\n",
+ "you can also copy this program to any of the following names:\n",
+ "bg5latex.exe,bg5pltx.exe,cef5ltx.exe,ceflatex.exe,cefsltx.exe,\n",
+ "gbklatex.exe and sjisltx.exe .\n",
+ "Then running one of these programs will be identical to specify\n",
+ "the corresponding option.\n",
+ "\nAdditional options:\n",
+ "--verbose\tbe a bit more verbose about what is happening,\n",
+ "--nocleanup\tdo not remove intermediate files,\n",
+ "--latex=engine\tuse `engine' instead of `latex' to process the file.\n",
+ NULL
+};
+
+static char *progname = NULL;
+
+static struct _conv_table {
+ char *progname;
+ char *processor;
+} CJKtable[] = {
+ { "cjklatex", "" },
+ { "bg5latex", "bg5conv" },
+ { "bg5pltx", "extconv" },
+ { "cef5ltx", "cef5conv" },
+ { "ceflatex", "cefconv" },
+ { "cefsltx", "cefsconv" },
+ { "gbklatex", "extconv" },
+ { "sjisltx", "sjisconv" }
+};
+
+#define PROGRAM_IS(p) FILESTRCASEEQ (p, progname)
+#define ARGUMENT_IS(a) STREQ (long_options[option_index].name, a)
+
+static int program_number = -1;
+static int opt_verbose = 0;
+static int opt_nocleanup = 0;
+static char *texname, *cjkname, *texengine;
+
+static struct option long_options [] = {
+ { "debug", 1, 0, 0},
+ { "help", 0, 0, 0},
+ { "version", 0, 0, 0},
+ { "verbose", 0, 0, 0},
+ { "nocleanup", 0, 0, 0},
+ { "latex", 1, 0, 0},
+ { "conv", 1, 0, 0},
+ {0, 0, 0, 0}
+};
+
+BOOL sigint_handler(DWORD dwCtrlType)
+{
+ /* Fix me : there is a problem if a system() command is running.
+ We should wait for the son process to be interrupted.
+ Only way I can think of to do that : rewrite system() based on
+ spawn() with parsing of the command line and set a global pid
+ Next cwait(pid) in the HandlerRoutine.
+ */
+
+ /* This is not that good, but else we would need to wait for
+ the child processes to finish ! */
+ Sleep(250);
+
+ fprintf(stderr, "Sending Ctrl+Break!\n");
+ GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT, 0);
+
+ if (! opt_nocleanup)
+ unlink(cjkname);
+
+ exit(1);
+
+ return FALSE; /* return value obligatory */
+}
+
+void usage()
+{
+ int i;
+ fprintf(stderr, "CJKlatex version %s\n", cjklatex_version_string);
+ fprintf(stderr,usage_str[0], progname );
+ fputs("\n", stderr);
+ for(i = 1; usage_str[i]; ++i)
+ fputs(usage_str[i], stderr);
+}
+
+int do_process(char *processor, char *filename)
+{
+ char *ext, *p;
+ char cmd[_MAX_PATH*3];
+ DWORD dwFA;
+ int ret;
+
+ if (strlen(filename) > 4 && _strnicmp(filename + strlen(filename) - 4, ".tex", 4) == 0) {
+ texname = xstrdup(filename);
+ }
+ else {
+ texname = concat(filename, ".tex");
+ }
+ for (p = texname; p && *p; p++)
+ *p = (*p == '\\' ? '/' : *p);
+
+ dwFA = GetFileAttributes(texname);
+ if (dwFA == 0xFFFFFFFF || (dwFA & FILE_ATTRIBUTE_DIRECTORY)) {
+ fprintf(stderr, "%s: %s is an invalid input file.\n",
+ progname, texname);
+ ret = 1;
+ }
+ else {
+ cjkname = xstrdup(texname);
+ ext = strrchr(cjkname, '.');
+ assert(ext != NULL);
+ strcpy(cjkname + (ext - cjkname), ".cjk");
+
+ sprintf(cmd, "%s < %s > %s", processor, texname, cjkname);
+ if (opt_verbose)
+ fprintf(stderr, "%s: running command `%s'.\n", progname, cmd);
+ ret = system(cmd);
+ if (ret == 0) {
+ sprintf(cmd, "%s %s", texengine, cjkname);
+ if (opt_verbose)
+ fprintf(stderr, "%s: running command `%s'.\n", progname, cmd);
+ ret = system(cmd);
+ if (! opt_nocleanup)
+ unlink(cjkname);
+ }
+ }
+
+ free(texname);
+ free(cjkname);
+
+ return ret;
+}
+
+void main(int argc, char *argv[])
+{
+ int g; /* getopt return code */
+ int i;
+ int option_index;
+ char *filename;
+
+ if (!progname)
+ progname = argv[0];
+
+ kpse_set_program_name (progname, NULL);
+ progname = kpse_program_name;
+
+ for (i = 0; i < sizeof(CJKtable)/sizeof(CJKtable[0]) && program_number < 0; i++) {
+ if (STREQ(progname, CJKtable[i].progname)
+#if 0
+ || (STREQ(progname, CJKtable[i].progname)
+ && STREQ(progname+strlen(CJKtable[i].progname), ".exe"))
+#endif
+ ) {
+ program_number = i;
+ }
+ }
+
+ if (program_number == -1) {
+ fprintf(stderr, "%s: this program has been incorrecty copied to the name %s.\n", progname, progname);
+ usage();
+ exit(1);
+ }
+
+ for(;;) {
+ g = getopt_long_only (argc, argv, "", long_options, &option_index);
+
+ if (g == EOF)
+ break;
+
+ if (g == '?') {
+ usage(); /* Unknown option. */
+ exit(1);
+ }
+
+ /* assert (g == 0); */ /* We have no short option names. */
+ /*
+ FIXME : try 'mktexpk --mfmode --bdpi 600 ...'
+ */
+ if (ARGUMENT_IS ("debug")) {
+ kpathsea_debug |= atoi (optarg);
+ }
+ else if (ARGUMENT_IS ("help")) {
+ usage();
+ exit(0);
+ }
+ else if (ARGUMENT_IS ("verbose")) {
+ opt_verbose = 1;
+ }
+ else if (ARGUMENT_IS ("nocleanup")) {
+ opt_nocleanup = 1;
+ }
+ else if (ARGUMENT_IS ("latex")) {
+ texengine = xstrdup(optarg);
+ }
+ else if (ARGUMENT_IS ("version")) {
+ fprintf(stderr, "%s of %s.\n", progname, cjklatex_version_string);
+ exit(0);
+ }
+ else if (PROGRAM_IS("cjklatex")) {
+ if (ARGUMENT_IS("conv")) {
+ for (i = 1; i < sizeof(CJKtable)/sizeof(CJKtable[0]) && program_number <= 0; i++) {
+ if (STRNEQ(optarg, CJKtable[i].progname, strlen(optarg))) {
+ program_number = i;
+ }
+ }
+ }
+ }
+ }
+
+ /* shifting options from argv[] list */
+ for (i = 1; optind < argc; i++, optind++)
+ argv[i] = argv[optind];
+ argv[i] = NULL;
+
+ argc = i;
+
+ if (argc < 2) {
+ fprintf (stderr, "%s: Missing argument(s).\nTry `%s --help' for more information.\n", progname, kpse_program_name);
+ exit(1);
+ }
+
+ if (argc > 2) {
+ fprintf(stderr, "%s: Extra arguments", progname);
+ for (i = 2; i < argc; i++)
+ fprintf (stderr, " \"%s\"", argv[i]);
+ fprintf (stderr, "\nTry `%s --help' for more information.\n",
+ kpse_program_name);
+ exit(1);
+ }
+
+ SetConsoleCtrlHandler((PHANDLER_ROUTINE)sigint_handler, TRUE);
+
+ filename = xstrdup(argv[1]);
+
+ assert(program_number > 0);
+
+ if (! texengine) {
+ texengine = xstrdup("latex");
+ }
+
+ do_process(CJKtable[program_number].processor, filename);
+
+ free(filename);
+ free(texengine);
+}
diff --git a/Build/source/texk/cjkutils/bat/depend.mak b/Build/source/texk/cjkutils/bat/depend.mak
new file mode 100644
index 00000000000..f23a8d0a9e5
--- /dev/null
+++ b/Build/source/texk/cjkutils/bat/depend.mak
@@ -0,0 +1,18 @@
+$(objdir)/cjklatex.obj: \
+ $(gnuw32dir)/win32lib.h \
+ $(kpathseadir)/config.h \
+ $(kpathseadir)/c-auto.h \
+ $(kpathseadir)/c-std.h \
+ $(kpathseadir)/c-unistd.h \
+ $(kpathseadir)/systypes.h \
+ $(kpathseadir)/c-memstr.h \
+ $(kpathseadir)/c-errno.h \
+ $(kpathseadir)/c-minmax.h \
+ $(kpathseadir)/c-limits.h \
+ $(kpathseadir)/c-proto.h \
+ $(kpathseadir)/debug.h \
+ $(kpathseadir)/types.h \
+ $(kpathseadir)/lib.h \
+ $(kpathseadir)/progname.h \
+ $(kpathseadir)/getopt.h
+
diff --git a/Build/source/texk/cjkutils/bat/f_name.bat b/Build/source/texk/cjkutils/bat/f_name.bat
new file mode 100644
index 00000000000..70e6e69ce9a
--- /dev/null
+++ b/Build/source/texk/cjkutils/bat/f_name.bat
@@ -0,0 +1,205 @@
+@echo off
+:4dosCheck
+ if "%@eval[2+2]"=="4" loadbtm on
+:Start
+ if [%1]==[] goto Usage
+ if [%1]==[/?] goto Help
+ if [%2]==[] goto InputCheck
+REM
+REM This file is called F_NAME.BAT per default. Call it whatever you like.
+REM
+REM You need enough free environment space for this batch file.
+REM If there's not enough free space, f_name.bat will give you a warning.
+REM
+REM While f_name.bat tries to test your free environment space, you'll
+REM probably need to check your config.sys for the following line:
+REM
+REM SHELL=C:\DOS\COMMAND.COM C:\DOS\ /E:1024 /p
+REM
+REM The '/E:1024' sets your environment space - it will probably need to
+REM be 1024 or higher (unless you're really economical with env-space).
+REM
+REM If you are not sure about free space, set fp and fn with long dummy
+REM strings in autoexec.bat to get enough free space, eg.:
+REM
+REM set fp=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+REM set fu=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+REM set fn=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+REM set fd=xx
+REM set fe=xxxx
+REM
+REM Using dummy strings is necessary if you're going to execute
+REM f_name.bat from a second command shell, eg. from Norton Commander.
+REM In this case the total length reserved for f_name.bat should be up
+REM to 192 bytes. My suggestion is, let the strings for fp, fu, and fn count
+REM up to 186 bytes (eg. 62 each).
+REM
+REM Some releases of DOS (eg. some beta-releases/pre-releases of DOS 6.0
+REM and some older DOS releases) does not support the batchcommand 'NOT'.
+REM If you're still using such a release you cannot use this batchfile
+REM since it uses this batchcommand.
+REM
+REM Please also note that f_name.bat cannot work properly if filespec is
+REM longer than around 38 (? I don't know the exact length) characters. If
+REM filespec is long, f_name.bat will fail at 'for %%x in ... do if ...'
+REM lines. The result of error is fairly unpredictable as DOS will try to
+REM execute with a truncated batch command line. So, please use the
+REM batch file for short filespecs (< 38??). (On my DOS 6.22 using
+REM strings above 38 chars gives me an endless loop, Claus Futtrup).
+REM
+REM For large batchfiles it is usually an advantage to use a
+REM 'batch-compiler', which will convert the .bat file into a .com or
+REM .exe file. With f_name.bat this could probably speed it up many
+REM times, but it has not been possible to find a batch-compiler, which
+REM will compile this batchfile. The compilers PWR14G.ZIP and
+REM BAT2EX15.ZIP have been tested without success.
+REM
+REM This modified release is more solid when it comes to garbage input, it
+REM is provided with help option, additional documentation and additional
+REM checking for sufficient environment space and now remove the temporary
+REM environment settings (P, Q, R, S, T) at the bottom of the batchfile. The
+REM structure is changed a bit, but the basic still is made by Wonkoo Kim.
+REM
+REM Please do not distribute this file without the above documentation
+REM included in the batch-file. If you change the file please add your
+REM name as a "modifier" as done below + document your changes. We do
+REM not intend to hold a copyright, though. You may use, misuse or abuse
+REM this batchfile as you see fit.
+REM
+REM This file is provided to you on a free basis. The author/modifiers
+REM do not want to be hold responsible to whatever this batchfile is
+REM doing. Use of this batchfile is entirely at your own risk.
+REM
+REM Wonkoo Kim (wkim+@pitt.edu), August 11, 1995
+REM Modified by Claus Futtrup (odie@csek.iprod.auc.dk), August 23. 1995
+REM Modified by Werner Lemberg (wl@gnu.org), Jan. 10. 1996
+REM to run this batch file under 4DOS too (replacing all %%f with %%x
+REM and doubling the speed with the LOADBTM ON command)
+REM Modified by Werner Lemberg (wl@gnu.org), Aug. 31. 1996
+REM to return unix-like paths additionally in the variable %fu%;
+REM the batch file will now parse e.g. \a.b\ correctly as a directory.
+REM
+:Usage
+ echo.
+ echo Usage: %0 filespec
+ echo.
+ echo Returns: fd (drive), fp (path), fu (unix path), fn (name), fe (extension)
+ echo.
+ echo Type %0 /? for additional help
+ echo %0 is made by Wonkoo Kim, modified by C. Futtrup and W. Lemberg.
+ echo.
+ goto END
+:Help
+ cls
+ echo %0 -- extracts the drive, path, name, and ext from file-path-name.
+ echo.
+ echo Return envs: FD (drive), FP (path), FU (unix path), FN (name), FE (ext)
+ echo Temp envs: P, Q, R, S, T
+ echo.
+ echo INPUT FILE fd fp fn fe
+ echo ------------------ --------- --------- --------- ---------
+ echo abc abc
+ echo abc.tex abc .tex
+ echo c:\abc.tex c: \ abc .tex
+ echo c:tmp\abc.tex c: tmp\ abc .tex
+ echo c:\tmp\abc.tex c: \tmp\ abc .tex
+ echo c:tmp\tex\abc.tex c: tmp\tex\ abc .tex
+ echo c:\tmp\tex\abc.tex c: \tmp\tex\ abc .tex
+ echo.
+ echo Please note this file isn't blazing fast + it needs a lot
+ echo of environment space. See comments in %0 for more info.
+ echo.
+ echo Wonkoo Kim (wkim+@pitt.edu), August 11, 1995
+ echo Modified by Claus Futtrup (odie@csek.iprod.auc.dk), August 23. 1995
+ echo Modified by Werner Lemberg (wl@gnu.org), Aug 31. 1996
+ goto END
+:InputCheck
+ for %%x in (%1) do if "%%x"=="%1" goto Okay
+ echo *** ERROR: Please do not use wildcards in input file name.
+ goto END
+:Okay
+ set p=
+ set r=
+ set fp=
+ set fu=
+ set fe=
+ set fn=%1
+ set s=XXXXXXXX%fn%
+ set t=%fn%
+ set s=
+ if [%t%]==[%1] goto GetDrive
+:EnvErr
+ echo *** ERROR: Not enough environment space!
+ echo *** See documentation at top of file '%0'
+ goto END
+:GetDrive
+ for %%x in (/%t%) do set fn=%%x
+ for %%x in (/%t%) do if not [%%x]==[%fn%] set fd=%%x
+ if [%fn%]==[:] goto DriveOnly
+ set t=%fn%
+ for %%x in (/%t%) do set fn=%%x
+ if [:%fn%]==[%t%] goto DriveFound
+ set fd=
+ set fn=%1
+ goto GetPath
+:DriveOnly
+ set fn=
+:DriveFound
+ set fd=%fd%:
+:GetPath
+ set s=%fn%
+:PathLoop
+ set t=%s%
+ for %%x in (/%t%) do set s=%%x
+ set q=
+ for %%x in (/%t%) do if not [%%x]==[%s%] set q=%%x
+ if "\%s%"=="%t%" goto Separator
+ set p=%p%%q%
+ set r=%r%%q%
+ if [%s%]==[%t%] goto PathCheck
+ goto PathLoop
+:Separator
+ set fn=%s%
+ set p=%p%\
+ set r=%r%/
+ set fp=%p%
+ set fu=%r%
+ goto PathLoop
+:PathCheck
+ if [%s%]==[\] goto NoFilename
+ if not [%fn%]==[\] goto GetExt
+ set fp=\
+ set fu=/
+ set fn=
+ goto Done
+:NoFilename
+ set fp=%p%\
+ set fu=%r%/
+ set fn=
+ goto Done
+:GetExt
+ set s=%fn%
+ set fe=%fn%
+ set fn=
+:ExtLoop
+ set t=%fe%
+ for %%x in (/%t%) do set fe=%%x
+ if ".%fe%"=="%t%" goto ExtFound
+ if [%fe%]==[%t%] goto NoExt
+ for %%x in (/%t%) do if not [%%x]==[%fe%] set fn=%fn%%%x
+ goto ExtLoop
+:ExtFound
+ set fe=.%fe%
+ goto Done
+:NoExt
+ if not [%fe%]==[.] set fn=%s%
+ set fe=
+:Done
+ echo DRIVE=%fd% PATH=%fp% UNIX_PATH=%fu% NAME=%fn% EXT=%fe%
+:END
+ set p=
+ set q=
+ set r=
+ set s=
+ set t=
+
diff --git a/Build/source/texk/cjkutils/bat/gbklatex.bat b/Build/source/texk/cjkutils/bat/gbklatex.bat
new file mode 100644
index 00000000000..ccc6c76acd5
--- /dev/null
+++ b/Build/source/texk/cjkutils/bat/gbklatex.bat
@@ -0,0 +1,3 @@
+call f_name %1
+extconv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/Build/source/texk/cjkutils/bat/sjisltx.bat b/Build/source/texk/cjkutils/bat/sjisltx.bat
new file mode 100644
index 00000000000..5702c113bdf
--- /dev/null
+++ b/Build/source/texk/cjkutils/bat/sjisltx.bat
@@ -0,0 +1,3 @@
+call f_name %1
+sjisconv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/Build/source/texk/cjkutils/bat/win32.mak b/Build/source/texk/cjkutils/bat/win32.mak
new file mode 100644
index 00000000000..f133d87041e
--- /dev/null
+++ b/Build/source/texk/cjkutils/bat/win32.mak
@@ -0,0 +1,61 @@
+################################################################################
+#
+# Makefile : TeXk / CJKutils / wrappers
+# Author : Fabrice Popineau <Fabrice.Popineau@supelec.fr>
+# Platform : Win32, Microsoft VC++ 6.0, depends upon fpTeX 0.5 sources
+# Time-stamp: <02/01/21 11:49:32 popineau>
+#
+################################################################################
+root_srcdir = ..\..\..
+!ifdef DEVELOPMENT
+INCLUDE=$(INCLUDE);$(root_srcdir)\texk.development
+!else
+INCLUDE=$(INCLUDE);$(root_srcdir)\texk
+!endif
+
+# This is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License, see the file COPYING.
+
+USE_KPATHSEA = 1
+USE_GNUW32 = 1
+
+!include <msvc/common.mak>
+
+programs = $(objdir)\cjklatex.exe
+linked_programs = $(objdir)\bg5latex.exe $(objdir)\bg5pltx.exe $(objdir)\cef5ltx.exe \
+ $(objdir)\ceflatex.exe $(objdir)\cefsltx.exe $(objdir)\gbklatex.exe \
+ $(objdir)\sjisltx.exe
+
+#
+# Main target
+#
+default: all
+
+all: $(objdir) $(programs)
+
+$(objdir)\cjklatex.exe: $(kpathsealib) $(objdir)\cjklatex.obj
+ $(link) $(objdir)\cjklatex.obj $(kpathsealib) $(conlibs)
+
+!include <msvc/config.mak>
+#
+# Link target. setargv.obj is provided in the compiler library directory.
+#
+
+!include <msvc/install.mak>
+
+install:: install-exec
+
+install-exec::
+ -@echo $(verbose) & ( \
+ for %%i in ($(linked_programs)) do \
+ $(copy) $(objdir)\cjklatex.exe $(bindir)\%%~nxi \
+ )
+
+!include <msvc/clean.mak>
+!include <msvc/rdepend.mak>
+!include "./depend.mak"
+
+#
+# Local Variables:
+# mode: makefile
+# End: