Skip to content

Latest commit

 

History

History
207 lines (160 loc) · 10.8 KB

HowToBuild.txt

File metadata and controls

207 lines (160 loc) · 10.8 KB

ビルド(VisualStudio)

  1. Visual Studio Express 2015/2017 for Desktop または2022までのVisual Studio Communityのどれかをインストールする

  2. "Document/EDCB_ALL.VS2015.sln"を開き、ツールバーを"Release/Win32"(x64ビルド時は"Release/x64")にしてビルド→ソリューションのビルド

  3. (EpgTimerNWが必要な場合のみ)生成された"EpgTimer.exe"を"EpgTimerNW.exe"というファイル名でコピー

  4. (lua52.dllが必要な場合のみ) https://github.com/xtne6f/lua/tree/v5.2-luabinaries をzipでダウンロード→展開して"lua52.sln"をビルド

  5. (zlib52.dllが必要な場合のみ) https://github.com/xtne6f/lua-zlib/tree/v0.5-lua52 をzipでダウンロード→展開して"zlib52.sln"をビルド

(注意)

  • ツールバーのソリューション構成を"Debug"(デバッグモード)にしてビルドすると 非常にパフォーマンスの悪い(高負荷な)バイナリができるので注意する
  • Windows SDKのエラーが出る場合は、プロジェクト→ソリューションの再ターゲット で切り替える。ビルド可能なバージョンなら何でもいい
  • WindowsXPで実行可能なファイルを作りたいときは、EpgTimerを除く全プロジェクトの 構成プロパティ→プラットフォームツールセットを"v140_xp"などに切り替える必要がある (ソリューションエクスプローラ―上でCtrl+マウス選択を駆使すればまとめて切り替えられる)
  • SSE2非対応CPUで実行可能なファイルを作りたいときは、拡張命令セットを"拡張命令なし(/arch:IA32)"に切り替える

ビルド(MSYS2/Mingw-w64)

※VisualStudioのインストールが面倒な場合お勧め

  1. MSYS2msys2-x86_64-日付.exe(64bitOS用) をインストール
    上記サイトに従ってpacman -Syupacman -Suでパッケージをアップデート
    スタートメニューの"MSYS2 MINGW64"(32bitビルド時はMINGW32)を開き、起動した黒窓で以下を実行してmakeとgccをインストール

    pacman -S make mingw-w64-x86_64-gcc
    pacman -S make mingw-w64-i686-gcc # 32bitビルド時
  2. つづけて以下を実行(この文書が"C:/EDCB/Document"にあると仮定)

    cd /c/EDCB/Document/MinGW
    make
  3. (lua52.dllが必要な場合のみ) https://github.com/xtne6f/lua/tree/v5.2-luabinaries をzipでダウンロード→展開して("C:/lua-5.2-luabinaries"と仮定)

    cd /c/lua-5.2-luabinaries
    make lua52.dll
  4. (zlib52.dllが必要な場合のみ) https://github.com/xtne6f/lua-zlib/tree/v0.5-lua52 をzipでダウンロード→展開して("C:/lua-zlib-0.5-lua52"と仮定)

    cd /c/lua-zlib-0.5-lua52
    make zlib52.dll

(注意)

  • lua52.dllは https://sourceforge.net/projects/luabinaries/ からダウンロードしたものでもよい
    • EpgTimerSrv/liblua52-mingw-lazy-{i686|x86_64}.a は lua-5.2.4_Win{32|64}_dllw6_lib.zip から以下を実行して作成したインポートライブラリ
      dlltool -t zz -D lua52.dll -d lua52.def -y liblua52.a
  • EpgTimerAdminProxy.exe、asyncbuf.exe、relayread.exeを除く実行時はlibwinpthread-1.dllも必要(おそらくlibwinpthreadの仕様で スタティックリンクだとハンドルリークするため)。EDCBではEpgTimerSrv.exeのフォルダ、TVTestではTVTest.exeのフォルダに置く
  • EpgDataCap_Bon.exeについては、使用するBonDriverに特別な対応がされていない限り、VC++でビルドされたIBonCast.dllが必要
  • EpgTimer.exeについてはその他を参照

ビルド(Mingw-w64)

※ビルド環境が最もコンパクト

  1. https://github.com/niXman/mingw-builds-binaries/releases の「Release of 13.1.0-rt_v11-rev1」(上位バージョンがあればそれでもOK) のリストから i686-13.1.0-release-win32-dwarf-msvcrt-rt_v11-rev1.7z(x86ビルド用) または x86_64-13.1.0-release-win32-seh-msvcrt-rt_v11-rev1.7z(x64ビルド用) の7z圧縮ファイルをダウンロードしてどこかに展開
    (以下、"C:/mingw32"または"C:/mingw64"に展開したと仮定)

  2. RunMake.batを実行、"Specify make options :"のプロンプトで何も入力せずEnterキーを押す(クリーンしたいときはcleanと入力)

  3. (lua52.dllが必要な場合のみ) https://github.com/xtne6f/lua/tree/v5.2-luabinaries をzipでダウンロード→展開してRunMake.batを実行
    "Specify make options :"のプロンプトでlua52.dllと入力してEnterキーを押す

  4. (zlib52.dllが必要な場合のみ) https://github.com/xtne6f/lua-zlib/tree/v0.5-lua52 をzipでダウンロード→展開してRunMake.batを実行
    "Specify make options :"のプロンプトでzlib52.dllと入力してEnterキーを押す

(注意)

  • libwinpthread-1.dllは不要。ほかの注意事項は「ビルド(MSYS2/Mingw-w64)」と同様
  • 使用するMingw-w64は https://sourceforge.net/projects/mingw-w64/files/ でも可だが、更新が止まってバージョンが古いのでお勧めしない
  • "Specify make options :"のプロンプトでプロジェクト名に.allを付けたもの(EpgTimerSrv.allなど)を入力すれば個別にビルドが可能

ビルド(VisualStudio2010)

※VisualStudio2010の延長サポートが終了したため、内容を削除した。必要なら2020年以前のコミットを参照

ビルド(Linux)

※動作確認環境はDebian(bookworm)

  1. makeとgccをインストール。Debian系ディストリビューションはLua5.2のパッケージも用意されている

    sudo apt install make gcc g++
    sudo apt install liblua5.2-dev lua-zlib
    sudo apt install openssl  # 必須でない。WebUIでSSL/TLSを利用する場合

    gccのバージョンは11以上を想定。RedHat系やあえて自ビルドする場合は後述「Luaモジュールのビルド」もやっておく

  2. つづけて以下を実行(この文書が"~/EDCB/Document"にあると仮定)

    cd ~/EDCB/Document/Unix
    make
    sudo make install  # ARIB8CHAR_USE_UNICODEを定義しないEpgDataCap3.soをインストールする場合
    sudo make install_u  # ARIB8CHAR_USE_UNICODEを定義したEpgDataCap3.soをインストールする場合
    make extra && sudo make install_extra  # 必須でない。tsreadexなどの関連コマンドのビルド

    インストール先は/usr/local/binと/usr/local/lib/edcb

    RedHat系は伝統的に/etc/ld.so.confに/usr/local/libを含まないので、EpgTimerSrv実行時に"liblua5.2.so: cannot open ~"みたいなのが出る場合は 検索パスに/usr/local/libを加えるようにEpgTimerSrvをビルドし直す

    make EpgTimerSrv.clean
    LDFLAGS=-Wl,-rpath,/usr/local/lib make EpgTimerSrv.all
    sudo make EpgTimerSrv.install
  3. 設定ファイルなどを配置

    sudo mkdir /var/local/edcb
    sudo chown {ユーザー}:{グループ} /var/local/edcb  # EpgTimerSrvを実行するユーザーがアクセスできるようにする
    make setup_ini

    必要に応じて/var/local/edcbのパーミッションを0770などに調整すること

    以上でEpgTimerSrvを実行すれば http://localhost:5510/ から各種操作が可能。Legacy WebUIについてはlynxなどテキストベースのブラウザでもひと通り操作可能。
    ただし、既定ではlocalhostしかWebUIにアクセスできないので必要に応じて /var/local/edcb/EpgTimerSrv.ini のHttpAccessControlListを調整する。
    また、既定では設定メニューからの設定の変更が不許可なので必要に応じて /var/local/edcb/HttpPublic/legacy/util.lua のALLOW_SETTINGをtrueにする。

  4. サービス化
    たとえば以下のようなsystemdのユニットファイルを作成する。{ユーザー}にはサービスを実行するユーザー名を指定する。rootでの実行は推奨しないし想定もしていない

    sudo tee /etc/systemd/system/edcb.service << 'EOS'
    [Unit]
    Description=EpgTimerSrv
    After=network.target
    
    [Service]
    ExecStart=/usr/local/bin/EpgTimerSrv
    Restart=always
    StandardError=journal
    StandardOutput=null
    TimeoutStopSec=50
    Type=simple
    User={ユーザー}
    
    [Install]
    WantedBy=default.target
    EOS
    
    sudo systemctl enable edcb

Luaモジュールのビルド(Linux)

curl -L https://github.com/xtne6f/lua/archive/refs/heads/v5.2-luabinaries.tar.gz | tar xz
cd lua-5.2-luabinaries
make liblua5.2.so
sudo cp liblua5.2.so /usr/local/lib/
sudo ldconfig

curl -L https://github.com/xtne6f/lua-zlib/archive/refs/heads/v0.5-lua52.tar.gz | tar xz
cd lua-zlib-0.5-lua52
make libzlib52.so
sudo mkdir -p /usr/local/lib/lua/5.2
sudo cp libzlib52.so /usr/local/lib/lua/5.2/

その他

  • 一部のマクロを定義することでビルドをカスタマイズできる。以下主なもの

    • EDCB_RC_DIALOG_NO_FONT (Common/CommonResource.h)
    • ARIB8CHAR_USE_UNICODE (EpgDataCap3/ARIB8CharDecode.cpp)
    • EPGDB_STD_WREGEX (EpgTimerSrv/EpgDBManager.h)

    ソースコードを編集するかプロジェクトプロパティのプリプロセッサ定義に加える

  • EpgTimer.exeをビルドするだけならVisualStudioは不要(参考:2ch_EDCB/52/224)。 必要なら.NET Framework v4.0以降をインストールして、EpgTimerフォルダでコマンドプロンプトを開いて以下を実行(またはx86build.batを実行)

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe EpgTimer.sln /p:Configuration=Release /p:Platform=x86

    放置してもたぶん問題ないが、MSB3644の警告がでる場合は"EpgTimer/EpgTimer/EpgTimer.csproj"をメモ帳で開き

    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    

    となっている部分をインストールされている.NETのバージョンに変更するか、v4.5のTargeting Packをインストールする

  • gitコマンドのある環境では、versionhashgen.batを実行すればバージョン情報にコミットハッシュを埋め込むことができる。 versionhash.shはBashシェル環境用