Revision: 10041 https://osdn.net/projects/ttssh2/scm/svn/commits/10041 Author: zmatsuo Date: 2022-07-06 00:18:35 +0900 (Wed, 06 Jul 2022) Log Message: ----------- cmake時、ヘルプファイル(chm)の生成を改良した - ターゲットを分解してパラレルにビルド可能にした - ファイルの依存関係をチェックして最小のビルドを行うようにした Modified Paths: -------------- trunk/doc/.gitignore trunk/doc/CMakeLists.txt trunk/doc/README.md Added Paths: ----------- trunk/doc/chm.cmake trunk/doc/en/CMakeLists.txt trunk/doc/ja/CMakeLists.txt Removed Paths: ------------- trunk/doc/makechm.cmake -------------- next part -------------- Modified: trunk/doc/.gitignore =================================================================== --- trunk/doc/.gitignore 2022-07-05 15:18:24 UTC (rev 10040) +++ trunk/doc/.gitignore 2022-07-05 15:18:35 UTC (rev 10041) @@ -1,9 +1,7 @@ en/Index.hhk en/teraterm.chm -en/teraterm.chm.rule ja/Index.hhk ja/teratermj.chm -ja/teratermj.chm.rule *.txt *.md *.html Modified: trunk/doc/CMakeLists.txt =================================================================== --- trunk/doc/CMakeLists.txt 2022-07-05 15:18:24 UTC (rev 10040) +++ trunk/doc/CMakeLists.txt 2022-07-05 15:18:35 UTC (rev 10041) @@ -1,4 +1,18 @@ -if (MSVC OR MINGW) +if(CMAKE_HOST_WIN32) + if("${CMAKE_COMMAND}" MATCHES "msys") + # msys + find_program(PERL perl.exe) + else() + find_program( + PERL perl.exe + HINTS ${CMAKE_CURRENT_LIST_DIR}/../buildtools/perl/perl/bin + HINTS c:/Strawberry/perl/bin + HINTS c:/Perl64/bin + HINTS c:/Perl/bin + HINTS c:/cygwin/usr/bin + HINTS c:/cygwin64/usr/bin + ) + endif() find_program( HHC hhc.exe HINTS "C:/Program Files (x86)/HTML Help Workshop" @@ -8,78 +22,23 @@ ) find_program( CHMCMD chmcmd - HINTS ${CMAKE_CURRENT_LIST_DIR}/../buildtools/chmcmd/ + HINTS ${CMAKE_CURRENT_LIST_DIR}/../../buildtools/chmcmd/ ) -else() +else(CMAKE_HOST_WIN32) + find_program( + PERL perl + ) set(HHC "HHC-NOTFOUND") find_program( CHMCMD chmcmd ) +endif(CMAKE_HOST_WIN32) + +if ("${PERL}" STREQUAL "PERL-NOTFOUND") + return() endif() -message("hhc=${HHC}") -if (NOT("${PERL}" STREQUAL "PERL-NOTFOUND") - AND (NOT(("${HHC}" STREQUAL "HHC-NOTFOUND") AND "${CHMCMD}" STREQUAL "CHMCMD-NOTFOUND"))) - file( - GLOB_RECURSE - SRC_EN - LIST_DIRECTORIES false - en/*.html en/*.md en/*.png en/*.hhc en/*.hhp - ) - - file( - GLOB_RECURSE - SRC_JP - LIST_DIRECTORIES false - ja/*.html ja/*.md ja/*.png ja/*.hhc ja/*.hhp - ) - - add_custom_target( - chm ALL - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/en/teraterm.chm - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ja/teratermj.chm - SOURCES ${SRC_EN} - SOURCES ${SRC_JP} - SOURCES htmlhelp_index_make.pl - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - ) - - source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${SRC_EN}) - source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${SRC_JP}) - - add_custom_command( - OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/en/teraterm.chm - OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/ja/teratermj.chm - COMMAND ${CMAKE_COMMAND} -P makechm.cmake - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - COMMENT Generate "${CMAKE_CURRENT_BINARY_DIR}/teraterm.chm" - ) - - set_target_properties( - chm - PROPERTIES FOLDER doc) - - install( - FILES - ${CMAKE_CURRENT_SOURCE_DIR}/ja/teratermj.chm - ${CMAKE_CURRENT_SOURCE_DIR}/en/teraterm.chm - DESTINATION . - ) - -else() - - # chmが存在したらコピーする - if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/en/teraterm.chm) - install( - FILES ${CMAKE_CURRENT_SOURCE_DIR}/en/teraterm.chm - DESTINATION . - ) - endif() - if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/ja/teratermj.chm) - install( - FILES ${CMAKE_CURRENT_SOURCE_DIR}/ja/teratermj.chm - DESTINATION . - ) - endif() - -endif() +add_subdirectory(en) +set_target_properties(chm_en PROPERTIES FOLDER doc) +add_subdirectory(ja) +set_target_properties(chm_ja PROPERTIES FOLDER doc) Modified: trunk/doc/README.md =================================================================== --- trunk/doc/README.md 2022-07-05 15:18:24 UTC (rev 10040) +++ trunk/doc/README.md 2022-07-05 15:18:35 UTC (rev 10041) @@ -18,9 +18,6 @@ - convert_web.sh - txt,md を txt,html へ変換、webサーバー用 - [プロジェクトページの更新手順](https://osdn.net/projects/ttssh2/wiki/%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E6%9B%B4%E6%96%B0%E6%89%8B%E9%A0%86) -- makechm.cmake - - chm作成スクリプト - - cmake版 - perlスクリプト - 2sjis.pl - txt, html変換スクリプト Added: trunk/doc/chm.cmake =================================================================== --- trunk/doc/chm.cmake (rev 0) +++ trunk/doc/chm.cmake 2022-07-05 15:18:35 UTC (rev 10041) @@ -0,0 +1,10 @@ +# - hhc.exe の exit code を無視する +# -https://cmake.org/pipermail/cmake/2007-October/017111.html + +set(HHP "teraterm.hhp") + +message("${HHC} ${HHP}") + +execute_process( + COMMAND ${HHC} ${HHP} +) Added: trunk/doc/en/CMakeLists.txt =================================================================== --- trunk/doc/en/CMakeLists.txt (rev 0) +++ trunk/doc/en/CMakeLists.txt 2022-07-05 15:18:35 UTC (rev 10041) @@ -0,0 +1,91 @@ + +set(PACKAGE_NAME "chm_en") +project(${PACKAGE_NAME}) + +if("${CMAKE_GENERATOR}" MATCHES "Visual Studio") + set(BINARY_DIR "${CMAKE_BINARY_DIR}/$<CONFIG>") +else() + set(BINARY_DIR "${CMAKE_BINARY_DIR}") +endif() + +set(CONVERTED_FILES "") + +function(ConvertHTML output depend options) + list(APPEND CONVERTED_FILES ${CMAKE_CURRENT_LIST_DIR}/${output}) + set(SCRIPT ${CMAKE_CURRENT_LIST_DIR}/../2sjis.pl) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_LIST_DIR}/${output} + DEPENDS ${CMAKE_CURRENT_LIST_DIR}/${depend} + DEPENDS ${SCRIPT} + COMMAND ${PERL} ${SCRIPT} + -i ${CMAKE_CURRENT_LIST_DIR}/${depend} + -o ${CMAKE_CURRENT_LIST_DIR}/${output} + ${options} --no_utime + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + ) + set(CONVERTED_FILES ${CONVERTED_FILES} PARENT_SCOPE) +endfunction() + +set(REF "html/reference") +ConvertHTML(${REF}/Oniguruma-LICENSE.txt ../../libs/doc_help/Oniguruma-LICENSE.txt "-l;unix") +ConvertHTML(${REF}/RE.txt ../../libs/doc_help/en/RE "-l;unix;-c;utf8") +ConvertHTML(${REF}/LibreSSL-LICENSE.txt ../../libs/doc_help/LibreSSL-LICENSE.txt "-l;unix") +ConvertHTML(${REF}/PuTTY-LICENSE.txt ../../libs/doc_help/PuTTY-LICENSE.txt "-l;crlf") +ConvertHTML(${REF}/SFMT-LICENSE.txt ../../libs/doc_help/SFMT-LICENSE.txt "-l;unix") +ConvertHTML(${REF}/argon2-LICENSE.txt ../../libs/doc_help/argon2-LICENSE.txt "-l;unix") +ConvertHTML(${REF}/zlib-LICENSE.txt ../../libs/doc_help/zlib-LICENSE.txt "-l;unix;--zlib_special") +ConvertHTML(${REF}/cJSON-LICENSE.txt ../../libs/doc_help/cJSON-LICENSE.txt "-l;crlf") +ConvertHTML(${REF}/CygTerm+-LICENSE.txt ../../cygwin/cygterm/COPYING "-l;unix") +ConvertHTML(${REF}/build_with_cmake.html ${REF}/build_with_cmake.md "") +ConvertHTML(${REF}/build_library_with_cmake.html ${REF}/build_library_with_cmake.md "") +ConvertHTML(${REF}/menu_id.html ${REF}/menu_id.md "") +ConvertHTML(html/setup/folder.html html/setup/folder.md "") + +file( + GLOB_RECURSE + SRC + LIST_DIRECTORIES false + CONFIGURE_DEPENDS + *.html *.md *.png +) + +source_group(TREE ${CMAKE_CURRENT_LIST_DIR} FILES ${SRC}) + +add_custom_target( + ${PACKAGE_NAME} ALL + DEPENDS ${BINARY_DIR}/teraterm.chm + SOURCES ${SRC} + SOURCES ../htmlhelp_index_make.pl + SOURCES ../2sjis.pl + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} +) + +if(NOT("${HHC}" STREQUAL "HHC-NOTFOUND")) + set(HHC_COMMAND ${HHC}) +else() + set(HHC_COMMAND ${CHMCMD}) +endif() + +add_custom_command( + OUTPUT ${BINARY_DIR}/teraterm.chm + DEPENDS ${CMAKE_CURRENT_LIST_DIR}/Index.hhk + DEPENDS ${CONVERTED_FILES} + DEPENDS ${SRC} + COMMAND ${CMAKE_COMMAND} -E rm -f ${BINARY_DIR}/teraterm.chm + COMMAND ${CMAKE_COMMAND} -DHHC=${HHC_COMMAND} -P ../chm.cmake + COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_LIST_DIR}/teraterm.chm ${BINARY_DIR}/teraterm.chm + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} +) + +add_custom_command( + OUTPUT ${CMAKE_CURRENT_LIST_DIR}/Index.hhk + DEPENDS ${SRC} + DEPENDS ${CMAKE_CURRENT_LIST_DIR}/../htmlhelp_index_make.pl + COMMAND ${PERL} ${CMAKE_CURRENT_LIST_DIR}/../htmlhelp_index_make.pl . html -o Index.hhk + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} +) + +install( + FILES ${BINARY_DIR}/teraterm.chm + DESTINATION . +) Added: trunk/doc/ja/CMakeLists.txt =================================================================== --- trunk/doc/ja/CMakeLists.txt (rev 0) +++ trunk/doc/ja/CMakeLists.txt 2022-07-05 15:18:35 UTC (rev 10041) @@ -0,0 +1,91 @@ + +set(PACKAGE_NAME "chm_ja") +project(${PACKAGE_NAME}) + +if("${CMAKE_GENERATOR}" MATCHES "Visual Studio") + set(BINARY_DIR "${CMAKE_BINARY_DIR}/$<CONFIG>") +else() + set(BINARY_DIR "${CMAKE_BINARY_DIR}") +endif() + +set(CONVERTED_FILES "") + +function(ConvertHTML output depend options) + list(APPEND CONVERTED_FILES ${CMAKE_CURRENT_LIST_DIR}/${output}) + set(SCRIPT ${CMAKE_CURRENT_LIST_DIR}/../2sjis.pl) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_LIST_DIR}/${output} + DEPENDS ${CMAKE_CURRENT_LIST_DIR}/${depend} + DEPENDS ${SCRIPT} + COMMAND ${PERL} ${SCRIPT} + -i ${CMAKE_CURRENT_LIST_DIR}/${depend} + -o ${CMAKE_CURRENT_LIST_DIR}/${output} + ${options} --no_utime + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + ) + set(CONVERTED_FILES ${CONVERTED_FILES} PARENT_SCOPE) +endfunction() + +set(REF "html/reference") +ConvertHTML(${REF}/Oniguruma-LICENSE.txt ../../libs/doc_help/Oniguruma-LICENSE.txt "-l;unix") +ConvertHTML(${REF}/RE.txt ../../libs/doc_help/ja/RE "-l;unix;-c;utf8") +ConvertHTML(${REF}/LibreSSL-LICENSE.txt ../../libs/doc_help/LibreSSL-LICENSE.txt "-l;unix") +ConvertHTML(${REF}/PuTTY-LICENSE.txt ../../libs/doc_help/PuTTY-LICENSE.txt "-l;crlf") +ConvertHTML(${REF}/SFMT-LICENSE.txt ../../libs/doc_help/SFMT-LICENSE.txt "-l;unix") +ConvertHTML(${REF}/argon2-LICENSE.txt ../../libs/doc_help/argon2-LICENSE.txt "-l;unix") +ConvertHTML(${REF}/zlib-LICENSE.txt ../../libs/doc_help/zlib-LICENSE.txt "-l;unix;--zlib_special") +ConvertHTML(${REF}/cJSON-LICENSE.txt ../../libs/doc_help/cJSON-LICENSE.txt "-l;crlf") +ConvertHTML(${REF}/CygTerm+-LICENSE.txt ../../cygwin/cygterm/COPYING "-l;unix") +ConvertHTML(${REF}/build_with_cmake.html ${REF}/build_with_cmake.md "") +ConvertHTML(${REF}/build_library_with_cmake.html ${REF}/build_library_with_cmake.md "") +ConvertHTML(${REF}/menu_id.html ${REF}/menu_id.md "") +ConvertHTML(html/setup/folder.html html/setup/folder.md "") + +file( + GLOB_RECURSE + SRC + LIST_DIRECTORIES false + CONFIGURE_DEPENDS + *.html *.md *.png +) + +source_group(TREE ${CMAKE_CURRENT_LIST_DIR} FILES ${SRC}) + +add_custom_target( + ${PACKAGE_NAME} ALL + DEPENDS ${BINARY_DIR}/teratermj.chm + SOURCES ${SRC} + SOURCES ../htmlhelp_index_make.pl + SOURCES ../2sjis.pl + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} +) + +if(NOT("${HHC}" STREQUAL "HHC-NOTFOUND")) + set(HHC_COMMAND ${HHC}) +else() + set(HHC_COMMAND ${CHMCMD}) +endif() + +add_custom_command( + OUTPUT ${BINARY_DIR}/teratermj.chm + DEPENDS ${CMAKE_CURRENT_LIST_DIR}/Index.hhk + DEPENDS ${CONVERTED_FILES} + DEPENDS ${SRC} + COMMAND ${CMAKE_COMMAND} -E rm -f ${BINARY_DIR}/teratermj.chm + COMMAND ${CMAKE_COMMAND} -DHHC=${HHC_COMMAND} -P ../chm.cmake + COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_LIST_DIR}/teratermj.chm ${BINARY_DIR}/teratermj.chm + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} +) + +add_custom_command( + OUTPUT ${CMAKE_CURRENT_LIST_DIR}/Index.hhk + DEPENDS ${SRC} + DEPENDS ${CMAKE_CURRENT_LIST_DIR}/../htmlhelp_index_make.pl + COMMAND ${PERL} ${CMAKE_CURRENT_LIST_DIR}/../htmlhelp_index_make.pl . html -o Index.hhk + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} +) + +install( + FILES ${BINARY_DIR}/teratermj.chm + DESTINATION . +) Deleted: trunk/doc/makechm.cmake =================================================================== --- trunk/doc/makechm.cmake 2022-07-05 15:18:24 UTC (rev 10040) +++ trunk/doc/makechm.cmake 2022-07-05 15:18:35 UTC (rev 10041) @@ -1,121 +0,0 @@ -# cmake -P makechm.cmake - -if(CMAKE_HOST_WIN32) - if("${CMAKE_COMMAND}" MATCHES "msys") - # msys - find_program(PERL perl.exe) - else() - find_program( - PERL perl.exe - HINTS ${CMAKE_CURRENT_LIST_DIR}/../buildtools/perl/perl/bin - HINTS c:/Strawberry/perl/bin - HINTS c:/Perl64/bin - HINTS c:/Perl/bin - HINTS c:/cygwin/usr/bin - HINTS c:/cygwin64/usr/bin - ) - endif() - find_program( - HHC hhc.exe - HINTS "C:/Program Files (x86)/HTML Help Workshop" - HINTS "C:/Program Files/HTML Help Workshop" - HINTS "$ENV{ProgramFiles}/HTML Help Workshop" -# HINTS "$ENV{ProgramFiles\(x86\)}/HTML Help Workshop" - ) - find_program( - CHMCMD chmcmd - HINTS ${CMAKE_CURRENT_LIST_DIR}/../buildtools/chmcmd/ - ) -else(CMAKE_HOST_WIN32) - find_program( - PERL perl - ) - set(HHC "HHC-NOTFOUND") - find_program( - CHMCMD chmcmd - ) -endif(CMAKE_HOST_WIN32) - -message("perl=${PERL}") -message("hhc=${HHC}") -message("chmcmd=${CHMCMD}") - - -function(ConvertHTML CMD_OPTION) - set(CONV_CMD ${PERL} "2sjis.pl") - set(CONV_CMD_OPTION ${CMD_OPTION}) - separate_arguments(CONV_CMD_OPTION) - set(CMD ${CONV_CMD} ${CONV_CMD_OPTION}) - - if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12.0") - string(JOIN " " CMD_PRINT ${CMD}) - else() - string(REPLACE ";" " " CMD_PRINT "${CMD}") - endif() - #message(STATUS ${CMD_PRINT}) - - execute_process( - COMMAND ${CMD} - RESULT_VARIABLE rv - ) - if(NOT "${rv}" STREQUAL "0") - message(${CMD_PRINT}) - message(FATAL_ERROR "rv=${rv}") - endif() -endfunction() - - -if (NOT("${PERL}" STREQUAL "PERL-NOTFOUND")) - set(REF_E "en/html/reference") - set(REF_J "ja/html/reference") - ConvertHTML("-i ../libs/doc_help/Oniguruma-LICENSE.txt -o ${REF_E}/Oniguruma-LICENSE.txt -l unix") - ConvertHTML("-i ../libs/doc_help/Oniguruma-LICENSE.txt -o ${REF_J}/Oniguruma-LICENSE.txt -l unix") - ConvertHTML("-i ../libs/doc_help/en/RE -o ${REF_E}/RE.txt -l unix -c utf8") - ConvertHTML("-i ../libs/doc_help/ja/RE -o ${REF_J}/RE.txt -l unix -c utf8") - ConvertHTML("-i ../libs/doc_help/LibreSSL-LICENSE.txt -o ${REF_E}/LibreSSL-LICENSE.txt -l unix") - ConvertHTML("-i ../libs/doc_help/LibreSSL-LICENSE.txt -o ${REF_J}/LibreSSL-LICENSE.txt -l unix") - ConvertHTML("-i ../libs/doc_help/PuTTY-LICENSE.txt -o ${REF_E}/PuTTY-LICENSE.txt -l crlf") - ConvertHTML("-i ../libs/doc_help/PuTTY-LICENSE.txt -o ${REF_J}/PuTTY-LICENSE.txt -l crlf") - ConvertHTML("-i ../libs/doc_help/SFMT-LICENSE.txt -o ${REF_E}/SFMT-LICENSE.txt -l unix") - ConvertHTML("-i ../libs/doc_help/SFMT-LICENSE.txt -o ${REF_J}/SFMT-LICENSE.txt -l unix") - ConvertHTML("-i ../libs/doc_help/argon2-LICENSE.txt -o ${REF_E}/argon2-LICENSE.txt -l unix") - ConvertHTML("-i ../libs/doc_help/argon2-LICENSE.txt -o ${REF_J}/argon2-LICENSE.txt -l unix") - ConvertHTML("-i ../libs/doc_help/zlib-LICENSE.txt -o ${REF_E}/zlib-LICENSE.txt -l unix --zlib_special") - ConvertHTML("-i ../libs/doc_help/zlib-LICENSE.txt -o ${REF_J}/zlib-LICENSE.txt -l unix --zlib_special") - ConvertHTML("-i ../libs/doc_help/cJSON-LICENSE.txt -o ${REF_E}/cJSON-LICENSE.txt -l unix") - ConvertHTML("-i ../libs/doc_help/cJSON-LICENSE.txt -o ${REF_J}/cJSON-LICENSE.txt -l unix") - ConvertHTML("-i ../cygwin/cygterm/COPYING -o ${REF_E}/CygTerm+-LICENSE.txt -l unix") - ConvertHTML("-i ../cygwin/cygterm/COPYING -o ${REF_J}/CygTerm+-LICENSE.txt -l unix") - ConvertHTML("-i ${REF_E}/build_with_cmake.md -o ${REF_E}/build_with_cmake.html") - ConvertHTML("-i ${REF_J}/build_with_cmake.md -o ${REF_J}/build_with_cmake.html") - ConvertHTML("-i ${REF_E}/build_library_with_cmake.md -o ${REF_E}/build_library_with_cmake.html") - ConvertHTML("-i ${REF_J}/build_library_with_cmake.md -o ${REF_J}/build_library_with_cmake.html") - ConvertHTML("-i ${REF_E}/menu_id.md -o ${REF_E}/menu_id.html") - ConvertHTML("-i ${REF_J}/menu_id.md -o ${REF_J}/menu_id.html") - - ConvertHTML("-i en/html/setup/folder.md -o en/html/setup/folder.html") - ConvertHTML("-i ja/html/setup/folder.md -o ja/html/setup/folder.html") - - execute_process( - COMMAND ${PERL} htmlhelp_index_make.pl en html -o en/Index.hhk - COMMAND ${PERL} htmlhelp_index_make.pl ja html -o ja/Index.hhk - ) -endif() - -if(NOT("${HHC}" STREQUAL "HHC-NOTFOUND")) - execute_process( - COMMAND ${HHC} en/teraterm.hhp - ) - execute_process( - COMMAND ${HHC} ja/teraterm.hhp - ) -elseif(NOT("${CHMCMD}" STREQUAL "CHMCMD-NOTFOUND")) - execute_process( - COMMAND ${CHMCMD} teraterm.hhp - WORKING_DIRECTORY en - ) - execute_process( - COMMAND ${CHMCMD} teraterm.hhp - WORKING_DIRECTORY ja - ) -endif()