Develop and Download Open Source Software

Browse Subversion Repository

Contents of /branches/libressl_3_7_1/CMakeLists.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10667 - (show annotations) (download)
Fri Apr 7 14:57:14 2023 UTC (12 months ago) by zmatsuo
File MIME type: text/plain
File size: 8640 byte(s)
libressl 3.7.1
1
2 cmake_minimum_required(VERSION 3.11)
3
4 project(teraterm_all)
5
6 set(SUPPORT_OLD_WINDOWS_DEFAULT OFF)
7 set(BMP_ICO_DEFAULT OFF)
8 if(MSVC AND (MSVC_VERSION LESS_EQUAL 1400))
9 # Visual Studio 2005 (1400=VS2005)
10 set(SUPPORT_OLD_WINDOWS_DEFAULT ON)
11 set(BMP_ICO_DEFAULT ON)
12 endif()
13
14 option(SUPPORT_OLD_WINDOWS "windows 95 support" ${SUPPORT_OLD_WINDOWS_DEFAULT})
15 option(BMP_ICO "icon(*.ico) file include only bmp(not png)" ${BMP_ICO_DEFAULT})
16 option(ENABLE_TTXSAMPLES "TTXSamples" ON)
17 option(MORE_WARNING "stronger warning" OFF)
18 option(TTXSSH "ttxssh" ON)
19 option(DYNAMIC_CODE_ANALYSIS "Dynamic code analysis" OFF)
20
21 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
22 get_property(IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
23
24 set(CMAKE_CONFIGURATION_TYPES "Debug;Release")
25 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
26 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
27
28 # 出力フォルダ
29 if("${CMAKE_GENERATOR}" MATCHES "Visual Studio")
30 if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.12.0")
31 set(BINARY_DIR "${CMAKE_BINARY_DIR}/$<CONFIG>")
32 else()
33 # 3.11のときはとりあえず debug ビルドと仮定する
34 set(BINARY_DIR "${CMAKE_BINARY_DIR}/debug")
35 endif()
36 else()
37 set(BINARY_DIR "${CMAKE_BINARY_DIR}")
38 endif()
39
40 #set(_WIN32_WINNT "0x0a00") # 0x0a00=_WIN32_WINNT_WIN10
41 #set(_WIN32_WINNT "0x0501") # Tera Term がビルドできる最小値
42 if(MSVC AND (MSVC_VERSION LESS_EQUAL 1500))
43 # Visual Studio 2005, 2008 (1500=VS2008)
44 set(_WIN32_WINNT "0x0501")
45 if(1)
46 set(TTXSSH OFF)
47 else()
48 # この組み合わせはlibputtyがビルドできないので今のところ実現しない
49 set(TTXSSH ON)
50 set(TTXSSH_LIBRESSL OFF)
51 set(TTXSSH_OPENSSL3 ON)
52 endif()
53 endif()
54 if(${BMP_ICO})
55 set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} /DBMP_ICO")
56 endif()
57
58 if(MSVC)
59 # https://www.leeholmes.com/blog/2017/02/27/differences-between-visual-studio-2012-2013-and-2015/
60 if(_WIN32_WINNT)
61 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D_WIN32_WINNT=${_WIN32_WINNT}")
62 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_WIN32_WINNT=${_WIN32_WINNT}")
63 endif()
64 string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG})
65 string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE})
66 string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
67 string(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
68 if (MORE_WARNING)
69 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4")
70 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
71 if(${MSVC_VERSION} GREATER_EQUAL 1910) # Visual Studio 2017以上の時
72 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /analyze")
73 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /analyze")
74 endif()
75 else()
76 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /D_CRT_SECURE_NO_DEPRECATE")
77 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_CRT_SECURE_NO_DEPRECATE")
78 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W3")
79 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3")
80 endif()
81 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /GF /Gy")
82 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /GF /Gy")
83 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP")
84 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
85 if(${MSVC_VERSION} GREATER_EQUAL 1910)
86 # Visual Studio 2017以上の時
87 set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /ZI")
88 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /ZI")
89 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
90 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
91 endif()
92 if(DYNAMIC_CODE_ANALYSIS)
93 if(${MSVC_VERSION} GREATER_EQUAL 1920)
94 # Visual Studio 2019以上の時
95 set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /fsanitize=address")
96 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /fsanitize=address")
97 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /fsanitize=address")
98 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /fsanitize=address")
99 endif()
100 endif()
101 elseif(MINGW)
102 if(_WIN32_WINNT)
103 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_WIN32_WINNT=${_WIN32_WINNT}")
104 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WIN32_WINNT=${_WIN32_WINNT}")
105 endif()
106 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__USE_MINGW_ANSI_STDIO=0")
107 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__USE_MINGW_ANSI_STDIO=0")
108 if (NOT MORE_WARNING)
109 set(CMAKE_C_CXX_WARNING_FLAGS "-Wall -Wextra -Wno-unused-parameter -Wno-sign-compare")
110 set(CMAKE_C_WARNING_FLAGS "${CMAKE_C_CXX_WARNING_FLAGS} -Wno-pointer-sign")
111 endif()
112 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_WARNING_FLAGS} -static -ffunction-sections -fdata-sections ${C_ONLY_FLAGS}")
113 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_CXX_WARNING_FLAGS} -static -ffunction-sections -fdata-sections")
114 set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
115 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
116 if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
117 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc -static-libstdc++")
118 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++")
119 endif()
120 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc")
121 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc")
122 set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s -Wl,--gc-sections")
123 set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -s -Wl,--gc-sections")
124 endif()
125
126 if(SUPPORT_OLD_WINDOWS)
127 message("SUPPORT_OLD_WINDOWS=ON")
128 endif()
129
130 ### tool
131 # perl
132 include(${CMAKE_CURRENT_LIST_DIR}/buildtools/checkperl.cmake)
133 message("perl=${PERL}")
134
135 # svn / git-svn
136 if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
137 # git (git-svn)
138 find_package(Git)
139 message("git=${GIT_EXECUTABLE}")
140 elseif(EXISTS "${CMAKE_SOURCE_DIR}/.svn")
141 # svn
142 find_package(Subversion)
143 message("svn=${Subversion_SVN_EXECUTABLE}")
144 endif()
145
146 if(NOT $ENV{USER})
147 set(USER $ENV{USER})
148 elseif(NOT $ENV{USERNAME})
149 set(USER $ENV{USERNAME})
150 else()
151 set(USER "NONAME")
152 endif()
153
154 # ソースツリー内に生成ファイルが存在していたら削除する
155 if(EXISTS "${CMAKE_SOURCE_DIR}/teraterm/ttpdlg/svnversion.h")
156 file(REMOVE "${CMAKE_SOURCE_DIR}/teraterm/ttpdlg/svnversion.h")
157 endif()
158 if(EXISTS "${CMAKE_SOURCE_DIR}/teraterm/common/svnversion.h")
159 file(REMOVE "${CMAKE_SOURCE_DIR}/teraterm/common/svnversion.h")
160 endif()
161
162 if((NOT EXISTS "${CMAKE_BINARY_DIR}/build_config.cmake") OR
163 (NOT EXISTS "${CMAKE_BINARY_DIR}/teraterm/common/svnversion.h") OR
164 (NOT EXISTS "${CMAKE_SOURCE_DIR}/buildtools/svnrev/sourcetreeinfo.bat"))
165 file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/teraterm/common)
166 execute_process(
167 COMMAND ${CMAKE_COMMAND} -DPERL=${PERL} -DSOURCE_DIR=${CMAKE_SOURCE_DIR} -DBINARY_DIR=${CMAKE_BINARY_DIR} -DGIT_EXECUTABLE=${GIT_EXECUTABLE} -DSVN_EXECUTABLE=${Subversion_SVN_EXECUTABLE} -P svnrev.cmake
168 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/buildtools/svnrev
169 RESULT_VARIABLE rv
170 )
171 if(NOT rv STREQUAL "0")
172 message(FATAL_ERROR "execute error ${PERL}")
173 endif()
174 endif()
175 include(${CMAKE_BINARY_DIR}/build_config.cmake)
176 message("revision=\"${SVNVERSION}\"")
177
178 if(DEFINED SVNVERSION)
179 set(REVISION_TIME_USER "r${SVNVERSION}-${DATE}_${TIME}-${USER}")
180 else()
181 set(REVISION_TIME_USER "unknown-${DATE}_${TIME}-${USER}")
182 endif()
183 if(NOT DEFINED SNAPSHOT_DIR)
184 set(SNAPSHOT_DIR "snapshot-${REVISION_TIME_USER}")
185 endif()
186 set(CMAKE_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/${SNAPSHOT_DIR}")
187 if(NOT DEFINED SETUP_EXE)
188 # not need ".exe"
189 if(RELEASE)
190 set(SETUP_EXE "teraterm-${VERSION}")
191 else()
192 set(SETUP_EXE "teraterm-${VERSION}-${REVISION_TIME_USER}")
193 endif()
194 endif()
195 if(NOT DEFINED SETUP_ZIP)
196 if(RELEASE)
197 set(SETUP_ZIP "teraterm-${VERSION}.zip")
198 else()
199 set(SETUP_ZIP "teraterm-${VERSION}-${REVISION_TIME_USER}.zip")
200 endif()
201 endif()
202
203 ### subdirectories
204 add_subdirectory(teraterm)
205 add_subdirectory(ttpmenu)
206 add_subdirectory(TTProxy)
207 if(TTXSSH)
208 add_subdirectory(ttssh2)
209 endif(TTXSSH)
210 add_subdirectory(TTXKanjiMenu)
211 if(${ENABLE_TTXSAMPLES})
212 add_subdirectory(TTXSamples)
213 endif()
214 add_subdirectory(installer)
215 add_subdirectory(doc)
216 add_subdirectory(doc_internal)
217 add_subdirectory(tools)
218 if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/TTXAdditional/CMakeLists.txt)
219 add_subdirectory(TTXAdditional)
220 endif()
221 add_subdirectory(cygwin)
222
223 ### create buildinfo.txt
224 configure_file(
225 buildinfo.txt.in
226 buildinfo.txt
227 @ONLY)

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26