Files
umbrix-libcore/Makefile

93 lines
4.8 KiB
Makefile
Raw Normal View History

PRODUCT_NAME=libcore
2024-02-02 15:44:33 +01:00
BASENAME=$(PRODUCT_NAME)
2023-08-16 15:16:02 +03:30
BINDIR=bin
2024-02-02 15:44:33 +01:00
LIBNAME=$(PRODUCT_NAME)
SRVNAME=HiddifyService
2023-08-16 15:16:02 +03:30
2023-09-11 15:20:19 +03:30
BRANCH=$(shell git branch --show-current)
VERSION=$(shell git describe --tags || echo "unknown version")
2024-02-02 15:44:33 +01:00
2023-09-11 15:20:19 +03:30
2023-10-27 17:44:18 +03:30
TAGS=with_gvisor,with_quic,with_wireguard,with_ech,with_utls,with_clash_api,with_grpc
2023-09-11 21:09:34 +03:30
IOS_TAGS=with_dhcp,with_low_memory,with_conntrack
2024-02-02 15:44:33 +01:00
GOBUILDLIB=CGO_ENABLED=1 go build -trimpath -tags $(TAGS) -ldflags="-w -s" -buildmode=c-shared
GOBUILDSRV=CGO_ENABLED=1 go build -trimpath
2023-08-16 15:16:02 +03:30
lib_install:
2023-12-21 11:10:14 +03:30
go install -v github.com/sagernet/gomobile/cmd/gomobile@v0.1.1
go install -v github.com/sagernet/gomobile/cmd/gobind@v0.1.1
2023-08-16 15:16:02 +03:30
2023-08-19 14:10:13 +03:30
headers:
2024-02-02 15:44:33 +01:00
go build -buildmode=c-archive -o $(BINDIR)/$(LIBNAME).h ./custom
2023-08-19 14:10:13 +03:30
2023-08-22 20:06:38 +00:00
android: lib_install
2024-02-02 15:44:33 +01:00
gomobile bind -v -androidapi=21 -javapkg=io.nekohasekai -libname=box -tags=$(TAGS) -trimpath -target=android -o $(BINDIR)/$(LIBNAME).aar github.com/sagernet/sing-box/experimental/libbox ./mobile
2023-08-16 15:16:02 +03:30
2023-08-22 20:06:38 +00:00
ios-full: lib_install
2024-02-02 16:15:21 +01:00
gomobile bind -v -target ios,iossimulator,tvos,tvossimulator,macos -libname=box -tags=$(TAGS),with_dhcp,with_low_memory,with_conntrack -trimpath -ldflags="-w -s" -o $(BINDIR)/$(PRODUCT_NAME).xcframework github.com/sagernet/sing-box/experimental/libbox ./mobile
mv $(BINDIR)/$(PRODUCT_NAME).xcframework $(BINDIR)/$(LIBNAME).xcframework
2024-02-02 15:44:33 +01:00
cp Libcore.podspec $(BINDIR)/$(LIBNAME).xcframework/
2024-01-03 16:23:11 +00:00
2023-08-22 20:06:38 +00:00
ios: lib_install
2024-02-02 16:15:21 +01:00
gomobile bind -v -target ios -libname=box -tags=$(TAGS),with_dhcp,with_low_memory,with_conntrack -trimpath -ldflags="-w -s" -o $(BINDIR)/Libcore.xcframework github.com/sagernet/sing-box/experimental/libbox ./mobile
cp Info.plist $(BINDIR)/Libcore.xcframework/
2024-01-10 16:42:14 +00:00
2023-10-24 06:47:32 +00:00
2023-08-20 12:39:55 +00:00
2023-08-16 15:16:02 +03:30
windows-amd64:
curl http://localhost:18020/exit || echo "exited"
2024-02-02 15:44:33 +01:00
env GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc $(GOBUILDLIB) -o $(BINDIR)/$(LIBNAME).dll ./custom
go get github.com/akavel/rsrc
go install github.com/akavel/rsrc
cp $(BINDIR)/$(LIBNAME).dll ./$(LIBNAME).dll
ls ./
2024-02-02 15:59:03 +01:00
$$(go env GOPATH)/bin/rsrc -manifest admin_service/cmd/admin_service.manifest -ico ./assets/hiddify-service.ico -o admin_service/cmd/admin_service.syso
env GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc CGO_LDFLAGS="$(LIBNAME).dll" $(GOBUILDSRV) -o $(BINDIR)/$(SRVNAME).exe ./admin_service/cmd
rm ./$(LIBNAME).dll
2023-08-16 15:16:02 +03:30
2023-08-19 14:10:13 +03:30
linux-amd64:
2024-02-02 15:44:33 +01:00
env GOOS=linux GOARCH=amd64 $(GOBUILDLIB) -o $(BINDIR)/$(LIBNAME).so ./custom
cp $(BINDIR)/$(LIBNAME).so ./$(LIBNAME).so
env GOOS=linux GOARCH=amd64 CGO_LDFLAGS="$(LIBNAME).so" LD_LIBRARY_PATH="./bin/" $(GOBUILDSRV) -o $(BINDIR)/$(SRVNAME) ./admin_service/cmd
rm ./$(LIBNAME).so
2024-02-02 15:44:33 +01:00
chmod +x $(BINDIR)/$(SRVNAME)
2023-08-19 14:10:13 +03:30
2023-08-20 08:21:08 +00:00
macos-amd64:
2024-02-02 15:59:03 +01:00
env GOOS=darwin GOARCH=amd64 CGO_CFLAGS="-mmacosx-version-min=10.11" CGO_LDFLAGS="-mmacosx-version-min=10.11" CGO_ENABLED=1 go build -trimpath -tags $(TAGS),$(IOS_TAGS) -buildmode=c-shared -o $(BINDIR)/$(LIBNAME)-amd64.dylib ./custom
2023-08-20 08:21:08 +00:00
macos-arm64:
2024-02-02 15:59:03 +01:00
env GOOS=darwin GOARCH=arm64 CGO_CFLAGS="-mmacosx-version-min=10.11" CGO_LDFLAGS="-mmacosx-version-min=10.11" CGO_ENABLED=1 go build -trimpath -tags $(TAGS),$(IOS_TAGS) -buildmode=c-shared -o $(BINDIR)/$(LIBNAME)-arm64.dylib ./custom
2024-02-02 13:47:41 +01:00
2023-08-20 08:28:11 +00:00
macos-universal: macos-amd64 macos-arm64
2024-02-02 15:59:03 +01:00
lipo -create $(BINDIR)/$(LIBNAME)-amd64.dylib $(BINDIR)/$(LIBNAME)-arm64.dylib -output $(BINDIR)/$(LIBNAME).dylib
cp $(BINDIR)/$(LIBNAME).dylib ./$(LIBNAME).dylib
2024-02-02 15:44:33 +01:00
env GOOS=darwin GOARCH=amd64 CGO_CFLAGS="-mmacosx-version-min=10.11" CGO_LDFLAGS="-mmacosx-version-min=10.11" CGO_LDFLAGS="bin/$(LIBNAME).dylib" CGO_ENABLED=1 $(GOBUILDSRV) -o $(BINDIR)/$(SRVNAME) ./admin_service/cmd
rm ./$(LIBNAME).dylib
2024-02-02 15:44:33 +01:00
chmod +x $(BINDIR)/$(SRVNAME)
2023-08-20 08:21:08 +00:00
2023-08-16 15:16:02 +03:30
clean:
rm $(BINDIR)/*
2024-01-03 16:23:11 +00:00
release: # Create a new tag for release.
@echo "previous version was $$(git describe --tags $$(git rev-list --tags --max-count=1))"
@echo "WARNING: This operation will creates version tag and push to github"
@bash -c '\
read -p "Version? (provide the next x.y.z semver) : " TAG && \
echo $$TAG &&\
[[ "$$TAG" =~ ^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}(\.dev)?$$ ]] || { echo "Incorrect tag. e.g., 1.2.3 or 1.2.3.dev"; exit 1; } && \
IFS="." read -r -a VERSION_ARRAY <<< "$$TAG" && \
VERSION_STR="$${VERSION_ARRAY[0]}.$${VERSION_ARRAY[1]}.$${VERSION_ARRAY[2]}" && \
BUILD_NUMBER=$$(( $${VERSION_ARRAY[0]} * 10000 + $${VERSION_ARRAY[1]} * 100 + $${VERSION_ARRAY[2]} )) && \
echo "version: $${VERSION_STR}+$${BUILD_NUMBER}" && \
2024-01-10 16:42:14 +00:00
sed -i -e "s|<key>CFBundleVersion</key>\s*<string>[^<]*</string>|<key>CFBundleVersion</key><string>$${VERSION_STR}</string>|" Info.plist &&\
sed -i -e "s|<key>CFBundleShortVersionString</key>\s*<string>[^<]*</string>|<key>CFBundleShortVersionString</key><string>$${VERSION_STR}</string>|" Info.plist &&\
2024-01-17 12:56:18 +00:00
git add Info.plist && \
2024-01-03 16:23:11 +00:00
git commit -m "release: version $${TAG}" && \
echo "creating git tag : v$${TAG}" && \
2024-01-26 14:13:58 +01:00
git push && \
git tag v$${TAG} && \
2024-01-03 16:23:11 +00:00
git push -u origin HEAD --tags && \
echo "Github Actions will detect the new tag and release the new version."'
2024-02-02 13:47:41 +01:00