[ttssh2-commit] [9878] cmake,MinGWビルド時にmsys2termがビルドできるよう修正

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2022年 4月 21日 (木) 22:40:53 JST


Revision: 9878
          https://osdn.net/projects/ttssh2/scm/svn/commits/9878
Author:   zmatsuo
Date:     2022-04-21 22:40:53 +0900 (Thu, 21 Apr 2022)
Log Message:
-----------
cmake,MinGWビルド時にmsys2termがビルドできるよう修正

- cygterm/build_cygterm.cmake
  - cygtermをビルドするためのスクリプト
  - msys2からビルド時、msys2termをビルドしないようにしていた
  - windows用cmake または、 msys2/MinGW 32ibit/64bit から使用できるよう修正
- cygterm_build/CMakeLists.txt
  - ソースファイルを参照できるよう修正

Modified Paths:
--------------
    trunk/cygwin/cygterm/build_cygterm.cmake
    trunk/cygwin/cygterm_build/CMakeLists.txt

-------------- next part --------------
Modified: trunk/cygwin/cygterm/build_cygterm.cmake
===================================================================
--- trunk/cygwin/cygterm/build_cygterm.cmake	2022-04-21 13:40:43 UTC (rev 9877)
+++ trunk/cygwin/cygterm/build_cygterm.cmake	2022-04-21 13:40:53 UTC (rev 9878)
@@ -39,26 +39,22 @@
   if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "MSYS")
     # msys2のcmake
     set(PATH "/c/msys64/usr/bin")
-    if (EXISTS ${PATH})
+    if (EXISTS "c:/msys64/usr/bin/msys-2.0.dll")
       set(${path} ${PATH} PARENT_SCOPE)
     endif()
   elseif(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Windows")
-    if(${CMAKE_COMMAND} MATCHES "msys")
-      # msys2/mingw64(32) のcmake
-      set(PATH "c:/msys64/usr/bin")
-      if (EXISTS ${PATH})
-        #なぜかうまくいかない
-        #set(${path} ${PATH} PARENT_SCOPE)
-      endif()
-    else()
-      # windowsのcmake
-      set(PATH "c:\\msys64\\usr\\bin")
-      if (EXISTS ${PATH})
-        set(${path} ${PATH} PARENT_SCOPE)
-      endif()
+    # msys2/mingw64 or msys2/mingw32 or Windows のcmake
+    set(PATH "c:/msys64/usr/bin")   # msys2インストールフォルダ
+    if (EXISTS ${PATH})
+      set(${path} ${PATH} PARENT_SCOPE)
     endif()
+  elseif(${CMAKE_HOST_SYSTEM_NAME} MATCHES "CYGWIN")
+    # cygwin の cmake ,未実装
+    unset(${path} PARENT_SCOPE)
   else()
+    message("?")
   endif()
+  message("last")
 endfunction()
 
 function(build TARGET_CMAKE_COMMAND DIST_DIR GENERATE_OPTION)
@@ -68,7 +64,7 @@
     message("${TARGET_CMAKE_COMMAND} not found")
     return()
   endif()
-  if(${TARGET_CMAKE_COMMAND} MATCHES "msys")
+  if("${TARGET_CMAKE_COMMAND}" MATCHES "msys")
     # msys2のときは、c:/path -> /c/path に書き換える
     string(REGEX REPLACE "([A-z]):[/\\]" "/\\1/" CMAKE_CURRENT_LIST_DIR "${CMAKE_CURRENT_LIST_DIR}")
     string(REGEX REPLACE "([A-z]):[/\\]" "/\\1/" GENERATE_OPTION "${GENERATE_OPTION}")
@@ -121,10 +117,13 @@
 
 ## msys2
 GetMsys2Path(PATH)
-set(ENV{PATH} ${PATH})
-message("msys2 ENV{PATH}=$ENV{PATH}")
+if(DEFINED PATH)
+  set(ENV{PATH} "/usr/bin") # msys2 の cmake を使うので決め打ち
+  set(ENV{MSYSTEM} "MSYS")
+  message("PATH=${PATH}")
+  message("msys2 ENV{PATH}=$ENV{PATH}")
 
-if (EXISTS ${PATH}/g++.exe)
+  #if (EXISTS "${PATH}/g++.exe")
   unset(GENERATE_OPTIONS)
   if(DEFINED CMAKE_INSTALL_PREFIX)
     set(GENERATE_OPTIONS "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")

Modified: trunk/cygwin/cygterm_build/CMakeLists.txt
===================================================================
--- trunk/cygwin/cygterm_build/CMakeLists.txt	2022-04-21 13:40:43 UTC (rev 9877)
+++ trunk/cygwin/cygterm_build/CMakeLists.txt	2022-04-21 13:40:53 UTC (rev 9878)
@@ -1,10 +1,19 @@
-# cygwin,msys2を使って cygterm,msys2term をビルドする
+# cygterm,msys2term をビルドする
+#   - ${CMAKE_CURRENT_LIST_DIR}/../cygtool/build_cygterm.cmake を使ってビルド
+#   - ${CMAKE_BINARY_DIR}/$<CONFIG> にビルドしたファイルを出力
+#   - install で出力先にコピー
 
 cmake_minimum_required(VERSION 3.13) # for Generator-Expression
 
+set(CYGTERM_DIR "${CMAKE_CURRENT_LIST_DIR}/../cygterm")
+
+file(GLOB SRC "${CYGTERM_DIR}/*.cpp" "${CYGTERM_DIR}/*.h")
+
 add_custom_target(
   cygterm_build ALL
   DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/build_mark.txt
+  DEPENDS ${SRC}
+  SOURCES ${SRC}
   )
 
 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/cygterm_build)
@@ -18,7 +27,7 @@
 add_custom_command(
   OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/build_mark.txt
   COMMAND ${CMAKE_COMMAND} -E echo ${BINARY_DIR}
-  COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${BINARY_DIR} -P ${CMAKE_CURRENT_LIST_DIR}/../cygterm/build_cygterm.cmake
+  COMMAND ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${BINARY_DIR} -P ${CYGTERM_DIR}/build_cygterm.cmake
   COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/build_mark.txt
   WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/cygterm_build
   )


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