| 1 |
|
| 2 |
cmake_minimum_required(VERSION 3.6) |
| 3 |
|
| 4 |
project(teraterm_all) |
| 5 |
|
| 6 |
option(ENABLE_TTXSAMPLES "TTXSamples" ON) |
| 7 |
option(MORE_WARNING "stronger warning" OFF) |
| 8 |
|
| 9 |
set_property(GLOBAL PROPERTY USE_FOLDERS ON) |
| 10 |
|
| 11 |
set(CMAKE_CONFIGURATION_TYPES "Debug;Release") |
| 12 |
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) |
| 13 |
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) |
| 14 |
|
| 15 |
string(TIMESTAMP SNAPSHOT_DIR "snapshot-%Y%m%d_%H%M%S") |
| 16 |
set(CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/${SNAPSHOT_DIR}") |
| 17 |
|
| 18 |
# _WIN32_WINNT_WIN10 0x0a00 |
| 19 |
set(_WIN32_WINNT "0x0a00") |
| 20 |
if(MSVC) |
| 21 |
# https://www.leeholmes.com/blog/2017/02/27/differences-between-visual-studio-2012-2013-and-2015/ |
| 22 |
if(${CMAKE_GENERATOR} MATCHES "Visual Studio 8 2005") |
| 23 |
set(_WIN32_WINNT "0x0501") |
| 24 |
endif() |
| 25 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_WIN32_WINNT=${_WIN32_WINNT}") |
| 26 |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D_WIN32_WINNT=${_WIN32_WINNT}") |
| 27 |
string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG}) |
| 28 |
string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE}) |
| 29 |
string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) |
| 30 |
string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}) |
| 31 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_CRT_SECURE_NO_DEPRECATE") |
| 32 |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D_CRT_SECURE_NO_DEPRECATE") |
| 33 |
if (MORE_WARNING) |
| 34 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") |
| 35 |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4") |
| 36 |
if(${MSVC_VERSION} GREATER_EQUAL 1910) # Visual Studio 2017以上の時 |
| 37 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /analyze") |
| 38 |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /analyze") |
| 39 |
endif() |
| 40 |
else() |
| 41 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3") |
| 42 |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W3") |
| 43 |
endif() |
| 44 |
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GF /Gy") |
| 45 |
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /GF /Gy") |
| 46 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") |
| 47 |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP") |
| 48 |
if(${MSVC_VERSION} GREATER_EQUAL 1910) |
| 49 |
# Visual Studio 2017以上の時 |
| 50 |
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /ZI") |
| 51 |
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /ZI") |
| 52 |
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO") |
| 53 |
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO") |
| 54 |
endif() |
| 55 |
elseif(MINGW) |
| 56 |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_WIN32_WINNT=${_WIN32_WINNT}") |
| 57 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WIN32_WINNT=${_WIN32_WINNT}") |
| 58 |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wno-unused-parameter -static -ffunction-sections -fdata-sections ${C_ONLY_FLAGS}") |
| 59 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-unused-parameter -static -ffunction-sections -fdata-sections") |
| 60 |
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG") |
| 61 |
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG") |
| 62 |
if (CMAKE_C_COMPILER_ID STREQUAL "GNU") |
| 63 |
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc -static-libstdc++") |
| 64 |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++") |
| 65 |
endif() |
| 66 |
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -s -Wl,--gc-sections") |
| 67 |
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc -s -Wl,--gc-sections") |
| 68 |
endif() |
| 69 |
|
| 70 |
### create version_info.h |
| 71 |
if(EXISTS "${CMAKE_SOURCE_DIR}/.git/svn") |
| 72 |
# git-svn |
| 73 |
find_package(Git) |
| 74 |
if(Git_FOUND) |
| 75 |
execute_process( |
| 76 |
COMMAND ${GIT_EXECUTABLE} svn log --oneline -1 |
| 77 |
RESULT_VARIABLE rv |
| 78 |
OUTPUT_VARIABLE ov |
| 79 |
ERROR_QUIET) |
| 80 |
if(${rv}) |
| 81 |
message("git svn error? please check git svn") |
| 82 |
else() |
| 83 |
string(REGEX MATCH "[0-9]+" SVNVERSION "${ov}") |
| 84 |
endif() |
| 85 |
endif() |
| 86 |
elseif(EXISTS "${CMAKE_SOURCE_DIR}/.svn") |
| 87 |
# svn |
| 88 |
find_package(Subversion) |
| 89 |
if(SUBVERSION_FOUND) |
| 90 |
Subversion_WC_INFO(${CMAKE_SOURCE_DIR} TT) |
| 91 |
set(SVNVERSION "${TT_WC_LAST_CHANGED_REV}") |
| 92 |
endif() |
| 93 |
else() |
| 94 |
# build without svn,git? |
| 95 |
#set(SVNVERSION "0000") |
| 96 |
endif() |
| 97 |
configure_file( |
| 98 |
version_info.h.in |
| 99 |
version_info.h |
| 100 |
@ONLY) |
| 101 |
message("revision=\"${SVNVERSION}\"") |
| 102 |
|
| 103 |
#### |
| 104 |
add_subdirectory(teraterm) |
| 105 |
add_subdirectory(ttpmenu) |
| 106 |
add_subdirectory(TTProxy) |
| 107 |
add_subdirectory(ttssh2) |
| 108 |
add_subdirectory(TTXKanjiMenu) |
| 109 |
if(${ENABLE_TTXSAMPLES}) |
| 110 |
add_subdirectory(TTXSamples) |
| 111 |
endif() |
| 112 |
add_subdirectory(installer) |
| 113 |
add_subdirectory(doc) |
| 114 |
|
| 115 |
#### |
| 116 |
# ソースツリー内に生成ファイルが存在していたら削除する |
| 117 |
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/teraterm/ttpdlg/svnversion.h") |
| 118 |
file(REMOVE "${CMAKE_CURRENT_SOURCE_DIR}/teraterm/ttpdlg/svnversion.h") |
| 119 |
endif() |
| 120 |
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ttssh2/ttxssh/puttyversion.h") |
| 121 |
file(REMOVE "${CMAKE_CURRENT_SOURCE_DIR}/ttssh2/ttxssh/puttyversion.h") |
| 122 |
endif() |