github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/Makefile (about) 1 .EXPORT_ALL_VARIABLES: 2 VERSION := $(shell head -n 1 VERSION) 3 PROJECT := zd 4 QINIU_DIR := "${HOME}/work/zentao/qiniu/" 5 QINIU_DIST_DIR := ${QINIU_DIR}${PROJECT}/${VERSION}/ 6 PACKAGE := ${PROJECT}-${VERSION} 7 BIN_DIR := bin 8 BIN_ZIP_DIR := ${BIN_DIR}/zip/${PROJECT}/${VERSION}/ 9 BIN_OUT := ${BIN_DIR}/${PROJECT}/${VERSION}/ 10 CLIENT_OUT_DIR := client/out/ 11 CLIENT_BIN_DIR := client/bin/ 12 CLIENT_OUT_DIR := client/out/ 13 CLIENT_OUT_DIR_EXECUTABLE := ${CLIENT_OUT_DIR}executable/ 14 CLIENT_OUT_DIR_UPGRADE := ${CLIENT_OUT_DIR}upgrade/ 15 CLIENT_UI_DIR := client/ui/ 16 COMMAND_MAIN_DIR := cmd/command/ 17 COMMAND_MAIN_FILE := ${COMMAND_MAIN_DIR}main.go 18 SERVER_MAIN_FILE := cmd/server/main.go 19 BUILD_TIME := $(shell git show -s --format=%cd) 20 GO_VERSION := $(go version) 21 GIT_HASH := $(git show -s --format=%H) 22 BUILD_CMD_UNIX := go build -ldflags "-X 'main.AppVersion=${VERSION}' -X 'main.BuildTime=${BUILD_TIME}' -X 'main.GoVersion=${GO_VERSION}' -X 'main.GitHash=${GIT_HASH}'" 23 BUILD_CMD_WIN := go build -ldflags "-s -w -X 'main.AppVersion=${VERSION}' -X 'main.BuildTime=${BUILD_TIME}' -X 'main.GoVersion=${GO_VERSION}' -X 'main.GitHash=${GIT_HASH}'" 24 25 default: clear build_ui prepare_build compile_all copy_files package package_upgrade 26 clear: 27 @rm -rf ${BIN_DIR} 28 @rm -rf ${CLIENT_OUT_DIR} 29 30 prepare_build: clear update_version_in_config gen_version_file prepare_res 31 32 win64: prepare_build compile_launcher_win64 compile_server_win64 package_gui_win64_client compile_command_win64 copy_files package package_upgrade 33 # win32: prepare_build compile_launcher_win32 compile_server_win32 package_gui_win32_client compile_command_win32 copy_files package package_upgrade 34 linux: prepare_build compile_server_linux package_gui_linux_client compile_command_linux copy_files package package_upgrade 35 linux_arm64: prepare_build compile_server_linux_arm64 package_gui_linux_client_arm64 compile_command_linux_arm64 copy_files package package_upgrade 36 mac: prepare_build compile_server_mac package_gui_mac_client compile_command_mac copy_files package package_upgrade 37 38 compile_all: compile_win64 compile_linux compile_mac 39 40 compile_win64: compile_launcher_win64 compile_server_win64 package_gui_win64_client compile_command_win64 41 # compile_win32: compile_launcher_win32 compile_server_win32 package_gui_win32_client compile_command_win32 42 compile_linux: compile_server_linux package_gui_linux_client compile_command_linux 43 compile_linux_arm64: compile_server_linux_arm64 package_gui_linux_client_arm64 compile_command_linux_arm64 44 compile_mac: compile_server_mac package_gui_mac_client compile_command_mac 45 46 upload: upload_to 47 48 prepare_res: 49 @echo 'start prepare res' 50 @cp res/zh/sample.yaml demo/default.yaml 51 @rm -rf ${BIN_DIR} 52 53 54 build_ui: 55 @echo 'compile ui' 56 @cd ui && yarn install && yarn build --dest ../client/ui && cd .. 57 58 compile_server_win64: 59 @echo 'start compile win64' 60 @GOOS=windows GOARCH=amd64 \ 61 ${BUILD_CMD_WIN} -x -v \ 62 -o ${BIN_DIR}/win64/server.exe ${SERVER_MAIN_FILE} 63 64 @rm -rf "${CLIENT_OUT_DIR_UPGRADE}win64" && mkdir -p "${CLIENT_OUT_DIR_UPGRADE}win64" && \ 65 cp ${BIN_DIR}/win64/server.exe "${CLIENT_OUT_DIR_UPGRADE}win64/" 66 67 compile_server_win32: 68 @echo 'start compile server win32' 69 @rm -rf ${BIN_DIR}/win32/server.exe 70 @GOOS=windows GOARCH=386 \ 71 ${BUILD_CMD_WIN} -x -v \ 72 -o ${BIN_DIR}/win32/server.exe ${SERVER_MAIN_FILE} 73 74 @rm -rf "${CLIENT_OUT_DIR_UPGRADE}win32" && mkdir -p "${CLIENT_OUT_DIR_UPGRADE}win32" && \ 75 cp ${BIN_DIR}/win32/server.exe "${CLIENT_OUT_DIR_UPGRADE}win32/" 76 77 compile_server_linux: 78 @echo 'start compile server linux' 79 @rm -rf ${BIN_DIR}/linux/server 80 @GOOS=linux GOARCH=amd64 \ 81 ${BUILD_CMD_UNIX} \ 82 -o ${BIN_DIR}/linux/server ${SERVER_MAIN_FILE} 83 84 @rm -rf "${CLIENT_OUT_DIR_UPGRADE}linux" && mkdir -p "${CLIENT_OUT_DIR_UPGRADE}linux" && \ 85 cp ${BIN_DIR}/linux/server "${CLIENT_OUT_DIR_UPGRADE}linux/" 86 87 compile_server_linux_arm64: 88 @echo 'start compile server linux for arm64' 89 @rm -rf ${BIN_DIR}/linux_arm64/server 90 @GOOS=linux GOARCH=arm64 GOARM=7 \ 91 ${BUILD_CMD_UNIX} \ 92 -o ${BIN_DIR}/linux_arm64/server ${SERVER_MAIN_FILE} 93 94 @rm -rf "${CLIENT_OUT_DIR_UPGRADE}linux_arm64" && mkdir -p "${CLIENT_OUT_DIR_UPGRADE}linux_arm64" && \ 95 cp ${BIN_DIR}/linux_arm64/server "${CLIENT_OUT_DIR_UPGRADE}linux_arm64/" 96 97 compile_server_mac: 98 @echo 'start compile server mac' 99 @GOOS=darwin GOARCH=amd64 \ 100 ${BUILD_CMD_UNIX} \ 101 -o ${BIN_DIR}/darwin/server ${SERVER_MAIN_FILE} 102 103 @rm -rf "${CLIENT_OUT_DIR_UPGRADE}darwin" && mkdir -p "${CLIENT_OUT_DIR_UPGRADE}darwin" && \ 104 cp ${BIN_DIR}/darwin/server "${CLIENT_OUT_DIR_UPGRADE}darwin/" 105 106 # gui 107 package_gui_win64_client: 108 @echo 'start package gui win64' 109 @rm -rf ${CLIENT_BIN_DIR}/* && mkdir -p ${CLIENT_BIN_DIR}win32 110 @cp -rf ${BIN_DIR}/win64/server.exe ${CLIENT_BIN_DIR}win32/server.exe 111 112 @cd client && npm install && npm run package-win64 && cd .. 113 @rm -rf ${CLIENT_OUT_DIR_EXECUTABLE}win64 && mkdir -p ${CLIENT_OUT_DIR_EXECUTABLE}win64 && \ 114 mv ${CLIENT_OUT_DIR}${PROJECT}-win32-x64 ${CLIENT_OUT_DIR_EXECUTABLE}win64/gui 115 116 package_gui_win32_client: 117 @echo 'start package gui win32' 118 @rm -rf ${CLIENT_BIN_DIR}/* && mkdir -p ${CLIENT_BIN_DIR}win32 119 @cp -rf ${BIN_DIR}/win32/server.exe ${CLIENT_BIN_DIR}win32/server.exe 120 121 @cd client && npm install && npm run package-win32 && cd .. 122 @rm -rf ${CLIENT_OUT_DIR_EXECUTABLE}win32 && mkdir -p ${CLIENT_OUT_DIR_EXECUTABLE}win32 && \ 123 mv ${CLIENT_OUT_DIR}${PROJECT}-win32-ia32 ${CLIENT_OUT_DIR_EXECUTABLE}win32/gui 124 125 package_gui_linux_client: 126 @echo 'start package gui linux' 127 @rm -rf ${CLIENT_BIN_DIR}/* && mkdir -p ${CLIENT_BIN_DIR}linux 128 @cp -rf ${BIN_DIR}/linux/server ${CLIENT_BIN_DIR}linux/server 129 130 @cd client && npm install && npm run package-linux && cp -r icon out/${PROJECT}-linux-x64 && cd .. 131 @rm -rf ${CLIENT_OUT_DIR_EXECUTABLE}linux && mkdir -p ${CLIENT_OUT_DIR_EXECUTABLE}linux && \ 132 mv ${CLIENT_OUT_DIR}${PROJECT}-linux-x64 ${CLIENT_OUT_DIR_EXECUTABLE}linux/gui 133 134 package_gui_linux_client_arm64: 135 @echo 'start package gui linux for arm64' 136 @rm -rf ${CLIENT_BIN_DIR}/* && mkdir -p ${CLIENT_BIN_DIR}linux 137 @cp -rf ${BIN_DIR}/linux_arm64/server ${CLIENT_BIN_DIR}linux/server 138 139 @cd client && npm install && npm run package-linux-arm64 && cp -r icon out/${PROJECT}-linux-arm64 && cd .. 140 @rm -rf ${CLIENT_OUT_DIR_EXECUTABLE}linux_arm64 && mkdir -p ${CLIENT_OUT_DIR_EXECUTABLE}linux_arm64 && \ 141 mv ${CLIENT_OUT_DIR}${PROJECT}-linux-arm64 ${CLIENT_OUT_DIR_EXECUTABLE}linux_arm64/gui 142 143 package_gui_mac_client: 144 @echo 'start package gui mac' 145 @rm -rf ${CLIENT_BIN_DIR}/* && mkdir -p ${CLIENT_BIN_DIR}darwin 146 @cp -rf ${BIN_DIR}/darwin/server ${CLIENT_BIN_DIR}darwin/server 147 148 @cd client && npm install && npm run package-mac && cd .. 149 @rm -rf ${CLIENT_OUT_DIR_EXECUTABLE}darwin && mkdir -p ${CLIENT_OUT_DIR_EXECUTABLE}darwin && \ 150 mv ${CLIENT_OUT_DIR}${PROJECT}-darwin-x64 ${CLIENT_OUT_DIR_EXECUTABLE}darwin/gui && \ 151 mv ${CLIENT_OUT_DIR_EXECUTABLE}darwin/gui/zd.app ${CLIENT_OUT_DIR_EXECUTABLE}darwin/zd.app && rm -rf ${CLIENT_OUT_DIR_EXECUTABLE}darwin/gui 152 153 154 # launcher 155 compile_launcher_win64: 156 @echo 'start compile win64 launcher' 157 @rsrc -arch amd64 -manifest xdoc/main.manifest -ico xdoc/favicon.ico -o cmd/launcher/main.syso 158 @cd cmd/launcher && \ 159 GOOS=windows GOARCH=amd64 \ 160 ${BUILD_CMD_WIN} -x -v \ 161 -o ../../${BIN_DIR}/win64/${PROJECT}-gui.exe && \ 162 cd .. 163 164 compile_launcher_win32: 165 @echo 'start compile win32 launcher' 166 @rsrc -arch 386 -manifest xdoc/main.manifest -ico xdoc/favicon.ico -o cmd/launcher/main.syso 167 @cd cmd/launcher && \ 168 GOOS=windows GOARCH=386 \ 169 ${BUILD_CMD_WIN} -x -v \ 170 -o ../../${BIN_DIR}/win32/${PROJECT}-gui.exe && \ 171 cd .. 172 173 # command line 174 compile_command_win64: 175 @echo 'start compile win64' 176 @GOOS=windows GOARCH=amd64 \ 177 ${BUILD_CMD_WIN} -x -v \ 178 -o ${BIN_DIR}/win64/${PROJECT}.exe ${COMMAND_MAIN_FILE} 179 180 compile_command_win32: 181 @echo 'start compile win32' 182 @GOOS=windows GOARCH=386 \ 183 ${BUILD_CMD_WIN} -x -v \ 184 -o ${BIN_DIR}/win32/${PROJECT}.exe ${COMMAND_MAIN_FILE} 185 186 compile_command_linux: 187 @echo 'start compile linux' 188 @rm -rf ${BIN_DIR}/linux/${PROJECT} 189 @GOOS=linux GOARCH=amd64 \ 190 ${BUILD_CMD_UNIX} \ 191 -o ${BIN_DIR}/linux/${PROJECT} ${COMMAND_MAIN_FILE} 192 193 194 compile_command_linux_arm64: 195 @echo 'start compile linux for arm64' 196 @rm -rf ${BIN_DIR}/linux_arm64/${PROJECT} 197 @GOOS=linux GOARCH=arm64 GOARM=7 \ 198 ${BUILD_CMD_UNIX} \ 199 -o ${BIN_DIR}/linux_arm64/${PROJECT} ${COMMAND_MAIN_FILE} 200 201 compile_command_mac: 202 @echo 'start compile mac' 203 @GOOS=darwin GOARCH=amd64 \ 204 ${BUILD_CMD_UNIX} \ 205 -o ${BIN_DIR}/darwin/${PROJECT} ${COMMAND_MAIN_FILE} 206 207 208 copy_files: 209 @echo 'start copy files to ${BIN_DIR}' 210 @cp -r .zd.conf ${BIN_DIR} 211 @cp -r data ${BIN_DIR} 212 @cp -r yaml ${BIN_DIR} 213 @cp -r users ${BIN_DIR} 214 @cp -r demo ${BIN_DIR} 215 @cp -r runtime ${BIN_DIR} 216 @rm -rf ${BIN_DIR}/demo/out ${BIN_DIR}/yaml/article/chinese/slang/out ${BIN_DIR}/runtime/protobuf/out 217 218 @rm -rf ${BIN_DIR}/tmp 219 @mkdir -p ${BIN_DIR}/tmp/cache && sqlite3 tmp/cache/.data.db ".backup '${BIN_DIR}/tmp/cache/.data.db'" 220 @sqlite3 '${BIN_DIR}/tmp/cache/.data.db' ".read 'xdoc/clear-data.txt'" 221 222 @for platform in `ls ${CLIENT_OUT_DIR_EXECUTABLE}`;do \ 223 cp -r .zd.conf "${CLIENT_OUT_DIR_EXECUTABLE}$${platform}"; \ 224 cp -r bin/data "${CLIENT_OUT_DIR_EXECUTABLE}$${platform}"; \ 225 cp -r bin/runtime "${CLIENT_OUT_DIR_EXECUTABLE}$${platform}"; \ 226 cp -r bin/yaml "${CLIENT_OUT_DIR_EXECUTABLE}$${platform}"; \ 227 cp -r bin/users "${CLIENT_OUT_DIR_EXECUTABLE}$${platform}"; \ 228 cp -r bin/demo "${CLIENT_OUT_DIR_EXECUTABLE}$${platform}"; \ 229 cp -r bin/tmp "${CLIENT_OUT_DIR_EXECUTABLE}$${platform}"; \ 230 cp ${BIN_DIR}/$${platform}/${PROJECT}.exe "${CLIENT_OUT_DIR_EXECUTABLE}$${platform}" || true; \ 231 cp ${BIN_DIR}/$${platform}/${PROJECT} "${CLIENT_OUT_DIR_EXECUTABLE}$${platform}" || true; \ 232 cp ${BIN_DIR}/$${platform}/${PROJECT}-gui.exe "${CLIENT_OUT_DIR_EXECUTABLE}$${platform}" || true; \ 233 done 234 235 @rm -rf ${BIN_OUT}linux/runtime/php \ 236 ${BIN_OUT}linux/runtime/protobuf/bin/mac \ 237 ${BIN_OUT}linux/runtime/protobuf/bin/win* 238 @rm -rf ${BIN_OUT}darwin/runtime/php \ 239 ${BIN_OUT}darwin/runtime/protobuf/bin/linux \ 240 ${BIN_OUT}darwin/runtime/protobuf/bin/win* 241 # @rm -rf ${BIN_OUT}win32/runtime/protobuf/bin/mac \ 242 # ${BIN_OUT}win32/runtime/protobuf/bin/linux \ 243 # ${BIN_OUT}win32/runtime/protobuf/bin/win64 244 @rm -rf ${BIN_OUT}win64/runtime/protobuf/bin/mac \ 245 ${BIN_OUT}win64/runtime/protobuf/bin/linux \ 246 ${BIN_OUT}win64/runtime/protobuf/bin/win32 247 248 package: 249 @echo 'start package' 250 @find . -name .DS_Store -print0 | xargs -0 rm -f 251 @for platform in `ls ${CLIENT_OUT_DIR_EXECUTABLE}`; do mkdir -p ${QINIU_DIST_DIR}$${platform}; done 252 253 @cd ${CLIENT_OUT_DIR_EXECUTABLE} && \ 254 for platform in `ls ./`; \ 255 do cd $${platform} && \ 256 pwd; \ 257 zip -ry ${QINIU_DIST_DIR}$${platform}/${PROJECT}.zip ./* && \ 258 md5sum ${QINIU_DIST_DIR}$${platform}/${PROJECT}.zip | awk '{print $$1}' | \ 259 xargs echo > ${QINIU_DIST_DIR}$${platform}/${PROJECT}.zip.md5 && \ 260 cd ../; \ 261 done 262 263 package_upgrade: 264 @echo 'start package upgrade' 265 @find . -name .DS_Store -print0 | xargs -0 rm -f 266 @for platform in `ls ${CLIENT_OUT_DIR_UPGRADE}`; do mkdir -p ${QINIU_DIST_DIR}$${platform}; done 267 268 @cd ${CLIENT_OUT_DIR_UPGRADE} && \ 269 for platform in `ls ./`; \ 270 do cd $${platform} && \ 271 cp -r ../../../ui ./; \ 272 zip -ry ${QINIU_DIST_DIR}$${platform}/${PROJECT}-upgrade.zip ./* && \ 273 md5sum ${QINIU_DIST_DIR}$${platform}/${PROJECT}-upgrade.zip | awk '{print $$1}' | \ 274 xargs echo > ${QINIU_DIST_DIR}$${platform}/${PROJECT}-upgrade.zip.md5 && \ 275 cd ../; \ 276 done 277 278 update_version_in_config: 279 @echo 'update version in config ${VERSION}' 280 @echo 'gen version' 281 @sed -i "s/Version.*/Version = ${VERSION}/" .zd.conf 282 283 gen_version_file: 284 @echo 'gen version' 285 @mkdir -p ${QINIU_DIR}/${PROJECT}/ 286 @echo '{"version": "${VERSION}"}' > ${QINIU_DIR}/${PROJECT}/version.json 287 288 upload_to: 289 @echo 'upload...' 290 @find ${QINIU_DIR} -name ".DS_Store" -type f -delete 291 @qshell qupload2 --src-dir=${QINIU_DIR} --bucket=download --thread-count=10 --log-file=qshell.log \ 292 --skip-path-prefixes=ztf,zv,zmanager,driver,deeptest --rescan-local --overwrite --check-hash 293 294 help: ## this help 295 @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)