[Ttssh2-commit] [8933] svnrev_perl/svnrev.pl にビルド用情報出力をまとめた

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2020年 9月 5日 (土) 00:54:26 JST


Revision: 8933
          https://osdn.net/projects/ttssh2/scm/svn/commits/8933
Author:   zmatsuo
Date:     2020-09-05 00:54:26 +0900 (Sat, 05 Sep 2020)
Log Message:
-----------
svnrev_perl/svnrev.pl にビルド用情報出力をまとめた

- Tera Term のバージョン情報
  - teraterm/common/tt-version.h と svnrev.pl
- svnリビジョン番号の取得は svnrev_perl に一本化
  - cmake時、従来は CMakeLists.txt 内でもリビジョン番号を取得していた
- cmake 用のファイルも出力できるようにした
  - ${CMAKE_BINARY_DIR}/build_config.cmake を出力
- setup.exe,zipファイル名修正
  - version追加
  - teraterm-5.0.exe(zip) (release時)
  - teraterm-5.0-r9999-YYMMDD_hhmmss-user
- cmake ビルドで svnrev_perl/ から CMakeLists.txt を削除
  - svnversion_h ターゲット削除
    - 依存関係を修正
  - execute_process() で perl を呼び出すようにした

Revision Links:
--------------
    https://osdn.net/projects/ttssh2/scm/svn/commits/9999

Modified Paths:
--------------
    trunk/CMakeLists.txt
    trunk/TTXSamples/TTXCheckUpdate/CMakeLists.txt
    trunk/ci_scripts/build_appveyor.bat
    trunk/installer/CMakeLists.txt
    trunk/installer/teraterm_cmake.iss.in
    trunk/svnrev_perl/svnrev.pl
    trunk/teraterm/teraterm/CMakeLists.txt

Removed Paths:
-------------
    trunk/svnrev_perl/CMakeLists.txt

-------------- next part --------------
Modified: trunk/CMakeLists.txt
===================================================================
--- trunk/CMakeLists.txt	2020-09-04 15:54:17 UTC (rev 8932)
+++ trunk/CMakeLists.txt	2020-09-04 15:54:26 UTC (rev 8933)
@@ -3,7 +3,6 @@
 
 project(teraterm_all)
 
-option(SETUP_RELEASE "build setup.exe for release" OFF)
 option(ENABLE_TTXSAMPLES "TTXSamples" ON)
 option(MORE_WARNING "stronger warning" OFF)
 
@@ -69,42 +68,6 @@
   set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -s -Wl,--gc-sections")
 endif()
 
-if(EXISTS "${CMAKE_SOURCE_DIR}/.git/svn")
-  # git-svn
-  find_package(Git)
-  if(Git_FOUND)
-    message("git=${GIT_EXECUTABLE}")
-    execute_process(
-      COMMAND ${GIT_EXECUTABLE} svn log --oneline -1
-      RESULT_VARIABLE rv
-      OUTPUT_VARIABLE ov
-      ERROR_QUIET)
-    if(${rv})
-      message("git svn error? please check git svn")
-    else()
-      string(REGEX MATCH "[0-9]+" SVNVERSION "${ov}")
-    endif()
-  endif()
-elseif(EXISTS "${CMAKE_SOURCE_DIR}/.svn")
-  # svn
-  find_package(Subversion)
-  if(SUBVERSION_FOUND)
-    if("CMAKE_COMMAND=${CMAKE_COMMAND}" MATCHES "msys")
-      # svn on msys
-      file(TO_NATIVE_PATH ${CMAKE_SOURCE_DIR} MSYS_CMAKE_SOURCE_DIR)
-      string(REGEX REPLACE "^([a-zA-Z]):/" "/\\1/" MSYS_CMAKE_SOURCE_DIR ${CMAKE_SOURCE_DIR})
-      Subversion_WC_INFO(${MSYS_CMAKE_SOURCE_DIR} TT)
-    else()
-      Subversion_WC_INFO(${CMAKE_SOURCE_DIR} TT)
-    endif()
-    set(SVNVERSION "${TT_WC_REVISION}")
-  endif()
-else()
-  # build without svn,git?
-  #set(SVNVERSION "0000")
-endif()
-message("revision=\"${SVNVERSION}\"")
-
 ### tool
 # perl
 if (MSVC OR (MINGW AND (EXISTS "c:/windows")))
@@ -123,6 +86,16 @@
     )
 endif()
 message("perl=${PERL}")
+# svn / git-svn
+if(EXISTS "${CMAKE_SOURCE_DIR}/.git/svn")
+  # git-svn
+  find_package(Git)
+  message("git=${GIT_EXECUTABLE}")
+elseif(EXISTS "${CMAKE_SOURCE_DIR}/.svn")
+  # svn
+  find_package(Subversion)
+  message("svn=${Subversion_SVN_EXECUTABLE}")
+endif()
 
 if(NOT $ENV{USER})
   set(USER $ENV{USER})
@@ -138,8 +111,9 @@
 endif()
 
 if(NOT EXISTS "${CMAKE_BINARY_DIR}/build_config.cmake")
+  file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/teraterm/ttpdlg)
   execute_process(
-    COMMAND ${PERL} svnrev.pl --svn \"${Subversion_SVN_EXECUTABLE}\" --git \"${GIT_EXECUTABLE}\" --root ${CMAKE_SOURCE_DIR} --header ${CMAKE_CURRENT_BINARY_DIR}/../teraterm/ttpdlg/svnversion.h --cmake ${CMAKE_BINARY_DIR}/build_config.cmake
+    COMMAND ${PERL} svnrev.pl --svn \"${Subversion_SVN_EXECUTABLE}\" --git \"${GIT_EXECUTABLE}\" --root ${CMAKE_SOURCE_DIR} --header ${CMAKE_BINARY_DIR}/teraterm/ttpdlg/svnversion.h --cmake ${CMAKE_BINARY_DIR}/build_config.cmake
     WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/svnrev_perl
     )
 endif()
@@ -147,9 +121,9 @@
 message("revision=\"${SVNVERSION}\"")
 
 if(DEFINED SVNVERSION)
-  set(REVISION_TIME_USER "r${SVNVERSION}-${BUILD_TIME}-${USER}")
+  set(REVISION_TIME_USER "r${SVNVERSION}-${DATE}_${TIME}-${USER}")
 else()
-  set(REVISION_TIME_USER "unknown-${BUILD_TIME}-${USER}")
+  set(REVISION_TIME_USER "unknown-${DATE}_${TIME}-${USER}")
 endif()
 if(NOT DEFINED SNAPSHOT_DIR)
   set(SNAPSHOT_DIR "snapshot-${REVISION_TIME_USER}")
@@ -156,10 +130,19 @@
 endif()
 set(CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/${SNAPSHOT_DIR}")
 if(NOT DEFINED SETUP_EXE)
-  set(SETUP_EXE "teraterm-${REVISION_TIME_USER}")
+  # not need ".exe"
+  if(RELEASE)
+    set(SETUP_EXE "teraterm-${VERSION}")
+  else()
+    set(SETUP_EXE "teraterm-${VERSION}-${REVISION_TIME_USER}")
+  endif()
 endif()
 if(NOT DEFINED SETUP_ZIP)
-  set(SETUP_ZIP "teraterm-${REVISION_TIME_USER}.zip")
+  if(RELEASE)
+    set(SETUP_ZIP "teraterm-${VERSION}.zip")
+  else()
+    set(SETUP_ZIP "teraterm-${VERSION}-${REVISION_TIME_USER}.zip")
+  endif()
 endif()
 
 ### create buildinfo.txt
@@ -169,7 +152,6 @@
   @ONLY)
 
 ### subdirectories
-add_subdirectory(svnrev_perl)
 add_subdirectory(teraterm)
 add_subdirectory(ttpmenu)
 add_subdirectory(TTProxy)

Modified: trunk/TTXSamples/TTXCheckUpdate/CMakeLists.txt
===================================================================
--- trunk/TTXSamples/TTXCheckUpdate/CMakeLists.txt	2020-09-04 15:54:17 UTC (rev 8932)
+++ trunk/TTXSamples/TTXCheckUpdate/CMakeLists.txt	2020-09-04 15:54:26 UTC (rev 8933)
@@ -16,6 +16,7 @@
   ../../teraterm/common/codeconv.h
   ../../teraterm/common/dlglib.h
   ../../teraterm/common/getcontent.h
+  ${CMAKE_CURRENT_BINARY_DIR}/../../teraterm/ttpdlg/svnversion.h
   )
 
 source_group(
@@ -58,11 +59,6 @@
   wininet.lib
   )
 
-add_dependencies(
-  TTXCheckUpdate
-  svnversion_h
-  )
-
 install(
   TARGETS TTXCheckUpdate
   RUNTIME

Modified: trunk/ci_scripts/build_appveyor.bat
===================================================================
--- trunk/ci_scripts/build_appveyor.bat	2020-09-04 15:54:17 UTC (rev 8932)
+++ trunk/ci_scripts/build_appveyor.bat	2020-09-04 15:54:26 UTC (rev 8933)
@@ -40,8 +40,8 @@
 if not exist %BUILD_DIR% mkdir %BUILD_DIR%
 cd %BUILD_DIR%
 if exist cmakecache.txt del cmakecache.txt
-set ZIP_FILE=snapshot-r%SVNVERSION%-%DATE%_%TIME%-appveyor-%COMPILER_FRIENDLY%.zip
-set SETUP_FILE=snapshot-r%SVNVERSION%-%DATE%_%TIME%-appveyor-%COMPILER_FRIENDLY%
+set ZIP_FILE=snapshot-%VERSION%-r%SVNVERSION%-%DATE%_%TIME%-appveyor-%COMPILER_FRIENDLY%.zip
+set SETUP_FILE=snapshot-%VERSION%-r%SVNVERSION%-%DATE%_%TIME%-appveyor-%COMPILER_FRIENDLY%
 set SNAPSHOT_DIR=snapshot-r%SVNVERSION%-%DATE%_%TIME%-appveyor-%COMPILER_FRIENDLY%
 "%CMAKE_COMMAND%" .. -G "%GENERATOR%" %CMAKE_OPTION_GENERATE% -DSNAPSHOT_DIR=%SNAPSHOT_DIR% -DSETUP_ZIP=%ZIP_FILE% -DSETUP_EXE=%SETUP_FILE% -DSETUP_RELEASE=%RELEASE%
 "%CMAKE_COMMAND%" --build . --target install %CMAKE_OPTION_BUILD%

Modified: trunk/installer/CMakeLists.txt
===================================================================
--- trunk/installer/CMakeLists.txt	2020-09-04 15:54:17 UTC (rev 8932)
+++ trunk/installer/CMakeLists.txt	2020-09-04 15:54:26 UTC (rev 8933)
@@ -322,9 +322,8 @@
     NEWLINE_STYLE CRLF
     )
 
-  set(ISCC_OPTION "/DOUTPUT_FILENAME=${SETUP_EXE}")
-  if (SETUP_RELEASE)
-    list(APPEND ISCC_OPTION "/DSETUP_RELEASE=1")
+  if (RELEASE)
+    set(ISCC_OPTION "/DSETUP_RELEASE=1")
   endif()
   add_custom_target(
     inno_setup

Modified: trunk/installer/teraterm_cmake.iss.in
===================================================================
--- trunk/installer/teraterm_cmake.iss.in	2020-09-04 15:54:17 UTC (rev 8932)
+++ trunk/installer/teraterm_cmake.iss.in	2020-09-04 15:54:26 UTC (rev 8933)
@@ -1,9 +1,4 @@
 #define AppName "Tera Term"
-#define AppVer "5.0"
-#ifdef SETUP_RELEASE
-#else
-#define snapshot GetDateTimeString('yyyymmdd_hhnnss', '', '');
-#endif
 
 [InnoIDE_PreCompile]
 Name: makechm.bat
@@ -36,11 +31,11 @@
 AppSupportURL=https://ttssh2.osdn.jp/
 AppName={#AppName}
 #ifdef SETUP_RELEASE
-AppVersion={#AppVer}
-AppVerName={#AppName} {#AppVer}
+AppVersion=@VERSION@
+AppVerName={#AppName} @VERSION@
 #else
-AppVersion={#AppVer}+ snapshot-{#snapshot}
-AppVerName={#AppName} {#AppVer}+
+AppVersion=@VERSION @ + snapshot-r @ SVNVERSION@- @ DATE@
+AppVerName={#AppName} @VERSION @ +
 #endif
 LicenseFile=@PROJECT_SOURCE_DIR@/installer\release\license.txt
 DefaultDirName={pf}\teraterm
@@ -48,11 +43,7 @@
 ShowLanguageDialog=yes
 AllowNoIcons=true
 UninstallDisplayIcon={app}\ttermpro.exe
-#ifdef SETUP_RELEASE
-OutputBaseFilename=teraterm-{#AppVer}
-#else
-OutputBaseFilename={#OUTPUT_FILENAME}
-#endif
+OutputBaseFilename=@SETUP_EXE@
 PrivilegesRequired=none
 SolidCompression=yes
 Compression=lzma2/ultra64

Deleted: trunk/svnrev_perl/CMakeLists.txt
===================================================================
--- trunk/svnrev_perl/CMakeLists.txt	2020-09-04 15:54:17 UTC (rev 8932)
+++ trunk/svnrev_perl/CMakeLists.txt	2020-09-04 15:54:26 UTC (rev 8933)
@@ -1,20 +0,0 @@
-
-add_custom_target(
-  svnversion_h ALL
-  DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/../teraterm/ttpdlg/svnversion.h
-  SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/svnrev.pl
-  COMMENT Generate "${CMAKE_CURRENT_BINARY_DIR}/../teraterm/ttpdlg/svnversion.h"
-  )
-
-add_custom_command(
-  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/../teraterm/ttpdlg/svnversion.h
-  COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/../teraterm/ttpdlg/
-  COMMAND ${PERL} svnrev.pl --svn \"${Subversion_SVN_EXECUTABLE}\" --git \"${GIT_EXECUTABLE}\" --root ${CMAKE_SOURCE_DIR} --header ${CMAKE_CURRENT_BINARY_DIR}/../teraterm/ttpdlg/svnversion.h
-  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-  )
-
-####
-# ソースツリー内に生成ファイルが存在していたら削除する
-if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/../teraterm/ttpdlg/svnversion.h")
-  file(REMOVE "${CMAKE_CURRENT_SOURCE_DIR}/../teraterm/ttpdlg/svnversion.h")
-endif()

Modified: trunk/svnrev_perl/svnrev.pl
===================================================================
--- trunk/svnrev_perl/svnrev.pl	2020-09-04 15:54:17 UTC (rev 8932)
+++ trunk/svnrev_perl/svnrev.pl	2020-09-04 15:54:26 UTC (rev 8933)
@@ -2,13 +2,16 @@
 use Getopt::Long 'GetOptions';
 use POSIX 'strftime';
 
+$version = "5.0";
 $svn = "svn";
 $git = "git";
 $out_header = "svnversion.h";
 $out_bat = "sourcetree_info.bat";
+$out_cmake = "";
 $source_root = "..";
 $date = strftime "%Y%m%d", localtime;
 $time = strftime "%H%M%S", localtime;
+$verbose = 0;
 
 GetOptions(
 	'root=s' => \$source_root,
@@ -15,9 +18,24 @@
 	'svn=s' => \$svn,
 	'git=s' => \$git,
 	'header=s' => \$out_header,
-	'bat=s' => \$out_bat
+	'bat=s' => \$out_bat,
+	'cmake=s' => \$out_cmake
 );
 
+$git =~ s/"//g;
+$svn =~ s/"//g;
+
+if ($verbose != 0) {
+	print "root=$source_root\n";
+	print "svn=\"$svn\"\n";
+	print "git=\"$git\"\n";
+	print "header=$out_header\n";
+	print "bat=$out_bat\n";
+	print "cmake=$out_cmak\n";
+}
+
+$header = "This file was generated by svnrev_perl/svnrev.pl";
+
 if (-d "$source_root/.svn") {
 	# svn infoを実行、出力をすべて取り込む
 	if (!open(my $FD, "-|", "\"$svn\" info $source_root 2>&1")) {
@@ -93,7 +111,8 @@
 
 # output for source(C,C++) header
 open(my $FD, ">$out_header") || die "error $out_header";
-print $FD "/* This file was generated by svnrev_perl/svnrev.pl */\n";
+print $FD "/* $header */\n";
+print $FD "/* #define TT_VERSION_STR \"$version\" check teraterm/common/tt-version.h */\n";
 if ($revision == undef) {
 	print $FD "#undef SVNVERSION\n";
 } else {
@@ -109,7 +128,8 @@
 
 # output for bat file
 open(my $FD, ">$out_bat") || die "error $out_bat";
-print $FD "\@rem This file was generated by svnrev_perl/svnrev.pl\n";
+print $FD "\@rem $header\n";
+print $FD "set VERSION=$version\n";
 if ($revision == undef) {
 	print $FD "set SVNVERSION=unknown\n";
 } else {
@@ -119,3 +139,19 @@
 print $FD "set DATE=$date\n";
 print $FD "set TIME=$time\n";
 close($FD);
+
+# output for cmake
+if ($out_cmake ne "") {
+	open(my $FD, ">$out_cmake") || die "error $out_cmake";
+	print $FD "# $header\n";
+	print $FD "set(VERSION \"$version\")\n";
+	if ($revision == undef) {
+		print $FD "#set(SVNVERSION \"0000\")\n";
+	} else {
+		print $FD "set(SVNVERSION \"$revision\")\n";
+	}
+	print $FD "set(RELEASE $svninfo{'release'})\n";
+	print $FD "set(DATE \"$date\")\n";
+	print $FD "set(TIME \"$time\")\n";
+	close($FD);
+}

Modified: trunk/teraterm/teraterm/CMakeLists.txt
===================================================================
--- trunk/teraterm/teraterm/CMakeLists.txt	2020-09-04 15:54:17 UTC (rev 8932)
+++ trunk/teraterm/teraterm/CMakeLists.txt	2020-09-04 15:54:26 UTC (rev 8933)
@@ -91,7 +91,7 @@
   tt-version.rc
   teraterm_manifest.rc
   #
-#  ${CMAKE_CURRENT_BINARY_DIR}/../ttpdlg/svnversion.h
+  ${CMAKE_CURRENT_BINARY_DIR}/../ttpdlg/svnversion.h
   #
   unicode_test.h
   unicode.h
@@ -245,11 +245,6 @@
   uuid
   )
 
-add_dependencies(
-  teraterm
-  svnversion_h
-  )
-
 install(
   TARGETS teraterm
   DESTINATION .


Ttssh2-commit メーリングリストの案内
Back to archive index