1
1
cmake_minimum_required (VERSION 3.0)
2
2
3
- project (wsl-ssh-agent NONE)
4
-
5
3
message (STATUS "Running cmake version ${CMAKE_VERSION} " )
4
+ if (NOT CMAKE_TOOLCHAIN_FILE)
5
+ set (CMAKE_TOOLCHAIN_FILE "../cmake/win64.toolchain" CACHE STRING "default toolchain" FORCE)
6
+ endif ()
6
7
if (NOT CMAKE_BUILD_TYPE )
7
8
set (CMAKE_BUILD_TYPE "Release" CACHE STRING "default to release build type" FORCE)
8
9
endif ()
9
- set_property (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" )
10
- message (STATUS "Build type: ${CMAKE_BUILD_TYPE} " )
11
- message (STATUS "Generator: ${CMAKE_GENERATOR} " )
12
-
13
- if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
14
- message (STATUS "********************************************************************************" )
15
- message (STATUS "*** Do not forget to do \" make deps_vendor\" before switching to Release mode! ***" )
16
- message (STATUS "********************************************************************************" )
17
- endif ()
18
10
11
+ project (wsl-ssh-agent NONE)
19
12
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR} /cmake)
20
13
14
+ message (STATUS "Build type: ${CMAKE_BUILD_TYPE} " )
15
+ message (STATUS "Generator: ${CMAKE_GENERATOR} " )
16
+
21
17
# Release installation directory
22
18
if (NOT CMAKE_CROSSCOMPILING )
23
19
message (FATAL_ERROR "Currently unsuppored environment. CMake willl exit now." )
20
+ else ()
21
+ set (HOST_GOOS linux)
22
+ set (HOST_GOARCH amd64)
24
23
endif ()
25
24
26
25
if (MSYSTEM_NAME STREQUAL "win32" )
@@ -38,7 +37,7 @@ endif()
38
37
set (DEST_DIR "${PROJECT_SOURCE_DIR} /bin" )
39
38
message (STATUS "Installation directory: ${DEST_DIR} " )
40
39
41
- find_package (Go 1.13 REQUIRED)
40
+ find_package (Go 1.15 REQUIRED)
42
41
find_package (Git REQUIRED)
43
42
44
43
# Make sure we setup go properly
@@ -58,8 +57,9 @@ endif()
58
57
########################################################################################################
59
58
60
59
# Project version number
61
- set (PRJ_VERSION_MAJOR 1)
62
- set (PRJ_VERSION_MINOR 4.2)
60
+ set (PRJ_VERSION_Major "1" )
61
+ set (PRJ_VERSION_Minor "5" )
62
+ set (PRJ_VERSION_Patch "0" )
63
63
64
64
if (EXISTS "${PROJECT_SOURCE_DIR} /.git" AND IS_DIRECTORY "${PROJECT_SOURCE_DIR} /.git" )
65
65
execute_process (COMMAND ${CMAKE_SOURCE_DIR} /cmake/githash.sh ${GIT_EXECUTABLE}
@@ -74,22 +74,21 @@ else()
74
74
set (GIT_HASH "no-git" )
75
75
endif ()
76
76
configure_file ("${PROJECT_SOURCE_DIR} /cmake/version.go.in" "${PROJECT_SOURCE_DIR} /misc/version.go" )
77
+ configure_file ("${PROJECT_SOURCE_DIR} /cmake/agent.rc.in" "${PROJECT_SOURCE_DIR} /resources.rc" )
78
+ configure_file ("${PROJECT_SOURCE_DIR} /cmake/agent.xml.in" "${PROJECT_SOURCE_DIR} /manifest.xml" )
77
79
78
80
# distribute history
79
- execute_process (COMMAND ${CMAKE_COMMAND} -E env ${GIT_EXECUTABLE} changelog --all --tag "${PRJ_VERSION_MAJOR } .${PRJ_VERSION_MINOR } " --stdout OUTPUT_FILE ${PROJECT_BINARY_DIR} /changelog.txt ERROR_QUIET)
81
+ execute_process (COMMAND ${CMAKE_COMMAND} -E env ${GIT_EXECUTABLE} changelog --all --tag "v ${PRJ_VERSION_Major } .${PRJ_VERSION_Minor} . ${PRJ_VERSION_Patch } " --stdout OUTPUT_FILE ${PROJECT_BINARY_DIR} /changelog.txt ERROR_QUIET)
80
82
install (FILES ${PROJECT_BINARY_DIR} /changelog.txt DESTINATION ${DEST_DIR} CONFIGURATIONS Release)
81
83
82
- message (STATUS "Building version \" ${PRJ_VERSION_MAJOR } .${PRJ_VERSION_MINOR } \" git \" ${GIT_HASH} \" " )
84
+ message (STATUS "Building version \" ${PRJ_VERSION_Major } .${PRJ_VERSION_Minor} . ${PRJ_VERSION_Patch }\" git \" ${GIT_HASH} \" " )
83
85
84
86
if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
85
87
# Create git pre-commit hook to check formatting before commit
86
88
if (EXISTS "${PROJECT_SOURCE_DIR} /.git" AND IS_DIRECTORY "${PROJECT_SOURCE_DIR} /.git" )
87
89
execute_process (COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR} /cmake/pre-commit ${PROJECT_SOURCE_DIR} /.git/hooks/. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} )
88
90
endif ()
89
91
endif ()
90
- if (EXISTS "${PROJECT_SOURCE_DIR} /${KINDLEGEN} " )
91
- execute_process (COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR} /${KINDLEGEN} ${PROJECT_BINARY_DIR} /.)
92
- endif ()
93
92
94
93
########################################################################################################
95
94
# Some contexts dependent settings
@@ -106,64 +105,46 @@ endif()
106
105
########################################################################################################
107
106
108
107
add_custom_target (bin_agent ALL
109
- DEPENDS ${PROJECT_SOURCE_DIR} /static / files .go
108
+ DEPENDS ${PROJECT_SOURCE_DIR} /resources.syso
110
109
COMMAND GOPATH=${GO_PATH} GO111MODULE=on GOOS=${CROSS_GOOS} GOARCH=${CROSS_GOARCH}
111
110
${GO_EXECUTABLE} build -trimpath -o ${PROJECT_BINARY_DIR} /wsl-ssh-agent-gui${CMAKE_EXECUTABLE_SUFFIX}
112
- -ldflags='-X main.LastGitCommit= ${GIT_HASH} - H=windowsgui'
111
+ -ldflags='-H=windowsgui'
113
112
${GO_MOD_ARGS}
114
113
COMMENT "Building wsl-ssh-agent-gui..."
115
114
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR} " )
116
115
install (PROGRAMS ${PROJECT_BINARY_DIR} /wsl-ssh-agent-gui${CMAKE_EXECUTABLE_SUFFIX} DESTINATION ${DEST_DIR} CONFIGURATIONS Release)
117
116
117
+ add_custom_command (OUTPUT ${PROJECT_SOURCE_DIR} /resources.syso
118
+ DEPENDS ${PROJECT_SOURCE_DIR} /resources.rc
119
+ ${PROJECT_SOURCE_DIR} /manifest.xml
120
+ ${PROJECT_SOURCE_DIR} /icon.ico
121
+ COMMAND ${CMAKE_RC_COMPILER} -O coff
122
+ -o ${PROJECT_SOURCE_DIR} /resources.syso
123
+ -i ${PROJECT_SOURCE_DIR} /resources.rc
124
+ WORKING_DIRECTORY "${PROJECT_SOURCE_DIR} "
125
+ COMMENT "Building wsl-ssh-agent-gui resources..." )
126
+
118
127
########################################################################################################
119
128
# Development
120
129
########################################################################################################
121
130
122
131
if (CMAKE_BUILD_TYPE STREQUAL "Debug" )
123
132
124
- ########################################################################################################
125
- # Code generation - on host platform only
126
- ########################################################################################################
127
-
128
- add_custom_command (OUTPUT ${PROJECT_BINARY_DIR} /go-bindata
129
- COMMAND GOPATH=${GO_PATH} GO111MODULE=on
130
- ${GO_EXECUTABLE} build -o ${PROJECT_BINARY_DIR} /go-bindata
131
- github.com/shuLhan/go-bindata/cmd/go-bindata
132
- WORKING_DIRECTORY "${PROJECT_SOURCE_DIR} "
133
- COMMENT "Building go-bindata executable..." )
134
- add_custom_target (bin_go-bindata
135
- DEPENDS ${PROJECT_BINARY_DIR} /go-bindata)
136
-
137
- file (GLOB_RECURSE SRCS_STATIC LIST_DIRECTORIES false ${PROJECT_SOURCE_DIR} /static /*)
138
- list (REMOVE_ITEM SRCS_STATIC ${PROJECT_SOURCE_DIR} /static /files .go ${PROJECT_SOURCE_DIR} /static /doc .go)
139
- add_custom_command (OUTPUT ${PROJECT_SOURCE_DIR} /static /files .go
140
- DEPENDS ${PROJECT_BINARY_DIR} /go-bindata ${SRCS_STATIC}
141
- # -nocompress
142
- COMMAND GOPATH=${GO_PATH}
143
- ${PROJECT_BINARY_DIR} /go-bindata
144
- -prefix ${PROJECT_SOURCE_DIR} /static /
145
- -ignore static /files .go
146
- -ignore static /doc .go
147
- -pkg static
148
- -o static /files .go
149
- ${PROJECT_SOURCE_DIR} /static /...
150
- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
151
- COMMENT "Generating Go resources for static assets" )
152
-
153
133
########################################################################################################
154
134
# Go linter
155
135
########################################################################################################
156
136
137
+
157
138
# Running linters on main target
158
139
find_program (GO_LINTER golangci-lint PATHS ${PROJECT_BINARY_DIR} NO_DEFAULT_PATH)
159
140
if (NOT GO_LINTER)
160
- set (golangci-lint-ver "1.22.2 " )
141
+ set (golangci-lint-ver "1.33.0 " )
161
142
message (STATUS "Preparing golangci-lint ${golangci-lint-ver}" )
162
143
file (DOWNLOAD "https://github.com/golangci/golangci-lint/releases/download/v${golangci-lint-ver}/golangci-lint-${golangci-lint-ver}-linux-amd64.tar.gz" ${PROJECT_BINARY_DIR} /golangci-lint.tar.gz
163
144
INACTIVITY_TIMEOUT 60
164
145
TIMEOUT 300
165
146
STATUS DOWNLOAD_RES
166
- EXPECTED_HASH SHA256=109d38cdc89f271392f5a138d6782657157f9f496fd4801956efa2d0428e0cbe )
147
+ EXPECTED_HASH SHA256=e2d6082f1df53c5d2c280765000f9e82783ea909ba419c6c4e172936b076031e )
167
148
list (GET DOWNLOAD_RES 0 RES)
168
149
list (GET DOWNLOAD_RES 1 MSG)
169
150
if (RES)
@@ -178,7 +159,6 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
178
159
179
160
add_custom_target (lint
180
161
COMMAND GOPATH=${GO_PATH} GO111MODULE=on GOOS=${CROSS_GOOS} GOARCH=${CROSS_GOARCH} ${GO_LINTER} run
181
- # COMMAND GOPATH=${GO_PATH} GO111MODULE=on ${GO_LINTER} run
182
162
COMMENT "Mega-linting project with ${GO_LINTER} ..."
183
163
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR} " )
184
164
@@ -193,17 +173,11 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
193
173
COMMENT "Cleaning dependencies (go mod tidy)"
194
174
VERBATIM )
195
175
196
- add_custom_target (deps_verify
197
- SOURCES ${PROJECT_SOURCE_DIR} /go.mod
198
- COMMAND GOPATH=${GO_PATH} GO111MODULE=on GOOS=${CROSS_GOOS} GOARCH=${CROSS_GOARCH} ${GO_EXECUTABLE} mod verify
199
- WORKING_DIRECTORY "${PROJECT_SOURCE_DIR} "
200
- COMMENT "Verifying dependencies (go mod verify)"
201
- VERBATIM )
202
-
203
176
add_custom_target (deps_vendor
204
177
SOURCES ${PROJECT_SOURCE_DIR} /go.mod
205
178
COMMAND GOPATH=${GO_PATH} GO111MODULE=on GOOS=${CROSS_GOOS} GOARCH=${CROSS_GOARCH} ${GO_EXECUTABLE} mod vendor
206
179
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR} "
207
180
COMMENT "Creating vendor directory (go mod vendor)"
208
181
VERBATIM )
182
+
209
183
endif ()
0 commit comments