- VC2010 とかは入っているものとする
- curl, 7za にパスを通しておく
- Memo/ソースの変更・修正情報
- だいたいの情報がまとまっている
- Memo/ソースからビルドしてみる
- よくわからない
- Memo/ソースからビルドしてみる2
- Visual C++ Toolkit 2003 でのビルド方法(?)
- Memo/ソースからビルドしてみる3
- Visual C++ 2008 EE でのビルド方法
- 答えを知りたい - xyzzyをソースからビルドの方法をまとめてみた
- Visual C++ 2008 EE でビルド可能な構成一式
- software:xyzzy:独自ビルド:ソースからビルドする手順
- Visual C++ 2010 EE でのビルド方法
mkdir C:\my_xyzzy
cd /d C:\my_xyzzy
curl -L http://www.jsdlab.co.jp/~kamei/(T%5eT)/src-0.2.2.235.tar.bz2 -o src-0.2.2.235.tar.bz2
7za x -y src-0.2.2.235.tar.bz2
7za x -y src-0.2.2.235.tar
pushd xyzzy\src\unicode
curl http://unicode.org/Public/MAPPINGS/ISO8859/8859-1.TXT -o 8859-1.TXT
curl http://unicode.org/Public/MAPPINGS/ISO8859/8859-2.TXT -o 8859-2.TXT
curl http://unicode.org/Public/MAPPINGS/ISO8859/8859-3.TXT -o 8859-3.TXT
curl http://unicode.org/Public/MAPPINGS/ISO8859/8859-4.TXT -o 8859-4.TXT
curl http://unicode.org/Public/MAPPINGS/ISO8859/8859-5.TXT -o 8859-5.TXT
curl http://unicode.org/Public/MAPPINGS/ISO8859/8859-7.TXT -o 8859-7.TXT
curl http://unicode.org/Public/MAPPINGS/ISO8859/8859-9.TXT -o 8859-9.TXT
curl http://unicode.org/Public/MAPPINGS/ISO8859/8859-10.TXT -o 8859-10.TXT
curl http://unicode.org/Public/MAPPINGS/ISO8859/8859-13.TXT -o 8859-13.TXT
curl http://unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT -o BIG5.TXT
curl http://unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/CNS11643.TXT -o CNS11643.TXT
curl http://unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0212.TXT -o JIS0212.TXT
curl http://unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/KSC/KSC5601.TXT -o KSC5601.TXT
curl -L http://oto.cvs.sourceforge.net/*checkout*/oto/oto/src/GB2312.TXT?revision=1.1.1.1 -o GB2312.TXT
curl http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1250.TXT -o CP1250.TXT
curl http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT -o CP1251.TXT
curl http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1252.TXT -o CP1252.TXT
curl http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1253.TXT -o CP1253.TXT
curl http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1254.TXT -o CP1254.TXT
curl http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1257.TXT -o CP1257.TXT
popd
curl --insecure -L https://github.com/t-mat/sandbox/raw/master/xyzzy-src-0.2.2.235-patch.7z -o xyzzy-src-0.2.2.235-patch.7z
7za x -y xyzzy-src-0.2.2.235-patch.7z
cd /d C:\my_xyzzy\xyzzy\src
call "%VS100COMNTOOLS%..\..\VC\vcvarsall.bat"
set VCVER=10
nmake /nologo
LIBCMT.lib(cpu_disp.obj) : warning LNK4210: .CRT セクションが存在します。静的初期化子、または終末記号がハンドルされていない可能性があります。
LIBCMT.lib(cpu_disp.obj) : warning LNK4210: .CRT セクションが存在します。静的初期化子、または終末記号がハンドルされていない可能性があります。
両方とも、エントリポイントを独自指定しているにも関わらず、libcの初期化が中途半端なせいで出ている。
解消方法は
- エントリポイント指定をやめて、フツーのmain(), WinMain() 始まりにする
- コンパイラに /GS-、リンカに /nodefaultlib を指定し、memset, alloca を独自定義する
Microsoft Visual C++ 2005 Express Edition で xyzzy をビルドする を参照
Makefile
- # define VC++ version (4, 6, or 7)
- VCVER=4
+ # define VC++ version (4, 6, 7, 8, 9 or 10)
+ !IF "$(VCVER)" == ""
+ VCVER=4
+ !ENDIF
DEFS=-DSTRICT -DWIN32 -D_WIN32 -D_MT -D__XYZZY__ -DPRIVCTRL_NODLL -DHAVE_DIMM_H -DDEBUG_GC
- CXX=cl -nologo
+ !IF "$(VCVER)" == "10"
+ CXX=@cl -nologo -Zc:wchar_t- -Zc:forScope- -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS
+ !ELSEIF "$(VCVER)" == "9"
+ CXX=cl -nologo -Zc:wchar_t- -Zc:forScope- -D_CRT_SECURE_NO_DEPRECATE
+ !ELSEIF "$(VCVER)" == "8"
+ CXX=cl -nologo -Zc:wchar_t- -Zc:forScope- -D_CRT_SECURE_NO_DEPRECATE
+ !ELSE
+ CXX=cl -nologo
+ !ENDIF
CPP=cl -nologo -E
OBJS=$(OBJS: = r/)
+ !IF "$(VCVER)" == "10"
+ CXXFLAGS=-Ob1 -O2 -Oi -Ot -Oy -Gs -Gy -Gz $(CXXOPT) -W3 -MT -vmb $(INC) $(DEFS) -Fo$(OUTDIR)/
+ LDFLAGS=-stack:0x2000000 -map:$(OUTDIR)/xyzzy.map -incremental:no -fixed -opt:ref
+ !ELSE
CXXFLAGS=-Ob1 -Og -Oi -Ot -Oy -G5 -Gs -Gy -Gz $(CXXOPT) -W3 -MT -vmb $(INC) $(DEFS) -Fo$(OUTDIR)/
LDFLAGS=-stack:0x2000000 -map:$(OUTDIR)/xyzzy.map -incremental:no -fixed -opt:ref
+ !ENDIF
FINAL_TARGET=../$(BUILD)
src/archiver.cc
static char *
copy_path (char *b, const char *o, const char *d, int dirp = 0)
{
- char *spc = strchr (d, ' ');
+ const char *spc = strchr (d, ' ');
src/environ.h
- inline
+ inline int
Registry::fail () const
src/xdde.h
- inline
+ inline int
DdeDataP::length () const
src/encoding.cc
utf_to_internal_stream::putw_t
utf_to_internal_stream::per_lang_putw (int lang)
{
switch (lang)
{
default:
case ENCODING_LANG_JP:
case ENCODING_LANG_JP2:
- return putw_jp;
+ return &putw_jp;
case ENCODING_LANG_KR:
case ENCODING_LANG_CN_GB:
case ENCODING_LANG_CN_BIG5:
- return putw_gen;
+ return &putw_gen;
case ENCODING_LANG_CN:
- return putw_cn;
+ return &putw_cn;
}
}
src/insdel.cc
static void
- adjust (const Chunk *&chunk, int &offset)
+ adjust (Chunk *&chunk, int &offset)
{
- const Chunk *cp = chunk;
+ Chunk *cp = chunk;
static void
- adjust_dst (const Chunk *&chunk, int &offset)
+ adjust_dst (Chunk *&chunk, int &offset)
{
- const Chunk *cp = chunk;
+ Chunk *cp = chunk;
src/package.h
void parse (const Char *&b, int &l);
+ void parse (Char *&b, int &l) { const Char* p = b; parse(p, l); b = const_cast<Char*>(p); }
const Char *pkg_end () const {return pkge;}
src/dyn-handle.h
- operator = (const dyn_handle &);
+ void operator = (const dyn_handle &);
src/syntax.cc
- void (syntax_state::*syntax_state::update)(Char);
+ void (syntax_state::*syntax_state::update)(const Char *);
src/random.cc
- xrandom_state_object (p).srandom (time (0));
+ xrandom_state_object (p).srandom (long (time (0)));
src/package.cc
static void
- export (lisp symbol, lisp package)
+ export_symbol (lisp symbol, lisp package)
if (symbols != Qnil && !consp (symbols))
- export (symbols, package);
+ export_symbol (symbols, package);
for (; consp (symbols); symbols = xcdr (symbols))
- export (xcar (symbols), package);
+ export_symbol (xcar (symbols), package);