Files
umbrix/Makefile

178 lines
6.1 KiB
Makefile
Raw Normal View History

2023-09-11 19:40:37 +03:30
include dependencies.properties
2023-08-19 22:27:23 +03:30
BINDIR=./libcore/bin
ANDROID_OUT=./android/app/libs
2023-12-25 20:08:04 +03:30
IOS_OUT=./ios/Frameworks
2023-08-19 22:27:23 +03:30
DESKTOP_OUT=./libcore/bin
GEO_ASSETS_DIR=./assets/core
2023-09-11 19:40:37 +03:30
CORE_PRODUCT_NAME=hiddify-core
CORE_NAME=$(CORE_PRODUCT_NAME)
SRV_NAME=hiddify-service
2023-09-22 14:16:21 +03:30
ifeq ($(CHANNEL),prod)
2023-09-11 21:19:55 +03:30
CORE_URL=https://github.com/hiddify/hiddify-next-core/releases/download/v$(core.version)
2023-09-12 10:10:14 +02:00
else
CORE_URL=https://github.com/hiddify/hiddify-next-core/releases/download/draft
2023-09-12 10:04:07 +02:00
endif
2023-09-12 10:10:14 +02:00
2023-09-22 14:16:21 +03:30
ifeq ($(CHANNEL),prod)
2023-12-04 17:50:09 +03:30
TARGET=lib/main_prod.dart
2023-09-12 15:22:58 +03:30
else
2023-12-04 17:50:09 +03:30
TARGET=lib/main.dart
2023-09-12 15:22:58 +03:30
endif
2023-09-22 14:16:21 +03:30
2023-09-17 01:13:01 +03:30
BUILD_ARGS=--dart-define sentry_dsn=$(SENTRY_DSN)
DISTRIBUTOR_ARGS=--skip-clean --build-target $(TARGET) --build-dart-define sentry_dsn=$(SENTRY_DSN)
2023-09-12 15:22:58 +03:30
2023-07-06 17:18:41 +03:30
get:
2023-07-18 01:38:39 +03:30
flutter pub get
2023-07-19 15:37:37 +02:00
2023-07-06 17:18:41 +03:30
gen:
dart run build_runner build --delete-conflicting-outputs
2023-07-19 15:37:37 +02:00
2023-07-06 17:18:41 +03:30
translate:
dart run slang
2023-11-12 20:30:12 +03:30
prepare: get-geo-assets get gen translate
2023-12-06 01:06:33 +03:30
@echo "Available platforms:"
@echo "android"
@echo "windows"
@echo "linux"
@echo "macos"
@echo "ios"
if [ -z "$$platform" ]; then \
read -p "run make prepare platform=ios or Enter platform name: " choice; \
else \
choice=$$platform; \
fi; \
make $$choice-libs
2023-11-07 17:22:30 +01:00
2023-10-02 16:29:51 +02:00
sync_translate:
2023-10-05 15:22:48 +02:00
cd .github && bash sync_translate.sh
make translate
2023-10-02 16:29:51 +02:00
android-release: android-apk-release
2023-09-12 15:22:58 +03:30
android-apk-release:
2023-09-17 01:13:01 +03:30
flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi --target $(TARGET) $(BUILD_ARGS)
2023-10-15 15:56:26 +03:30
ls -R build/app/outputs
2023-08-20 12:05:11 +00:00
android-aab-release:
2023-09-17 01:13:01 +03:30
flutter build appbundle --target $(TARGET) $(BUILD_ARGS) --dart-define release=google-play
2023-10-15 15:56:26 +03:30
ls -R build/app/outputs
2023-08-20 12:05:11 +00:00
windows-release:
2023-09-16 00:56:03 +03:30
flutter_distributor package --platform windows --targets exe $(DISTRIBUTOR_ARGS)
2024-01-17 02:17:25 +01:00
linux-release: linux-appimage-release linux-deb-release linux-rpm-release
linux-appimage-release:
2023-09-16 00:56:03 +03:30
flutter_distributor package --platform linux --targets appimage $(DISTRIBUTOR_ARGS)
2024-01-17 02:17:25 +01:00
linux-deb-release:
flutter_distributor package --platform linux --targets deb $(DISTRIBUTOR_ARGS)
linux-rpm-release:
flutter_distributor package --platform linux --targets rpm $(DISTRIBUTOR_ARGS)
2023-08-19 22:27:23 +03:30
macos-release:
2023-09-16 00:56:03 +03:30
flutter_distributor package --platform macos --targets dmg $(DISTRIBUTOR_ARGS)
2023-08-19 22:27:23 +03:30
ios-release: #not tested
2023-09-16 01:02:20 +03:30
flutter_distributor package --platform ios --targets ipa --build-export-options-plist ios/exportOptions.plist $(DISTRIBUTOR_ARGS)
2023-09-11 21:19:55 +03:30
android-libs:
2023-08-19 22:27:23 +03:30
mkdir -p $(ANDROID_OUT)
curl -L $(CORE_URL)/$(CORE_NAME)-android.tar.gz | tar xz -C $(ANDROID_OUT)/
2023-07-06 17:18:41 +03:30
2023-09-15 09:32:29 +02:00
android-apk-libs: android-libs
android-aab-libs: android-libs
windows-libs:
2023-08-19 22:27:23 +03:30
mkdir -p $(DESKTOP_OUT)
curl -L $(CORE_URL)/$(CORE_NAME)-windows-amd64.tar.gz | tar xz -C $(DESKTOP_OUT)/
2023-07-19 13:12:18 +02:00
linux-libs:
2023-08-19 22:27:23 +03:30
mkdir -p $(DESKTOP_OUT)
curl -L $(CORE_URL)/$(CORE_NAME)-linux-amd64.tar.gz | tar xz -C $(DESKTOP_OUT)/
2023-07-22 00:16:46 +02:00
2024-01-17 03:00:32 +01:00
linux-deb-libs:linux-libs
linux-rpm-libs:linux-libs
linux-appimage-libs:linux-libs
2023-08-20 10:47:40 +00:00
macos-libs:
2023-07-22 10:45:10 +02:00
mkdir -p $(DESKTOP_OUT)/ &&\
curl -L $(CORE_URL)/$(CORE_NAME)-macos-universal.tar.gz | tar xz -C $(DESKTOP_OUT)/
2023-07-22 00:16:46 +02:00
ios-libs: #not tested
2024-01-08 17:30:45 +03:30
mkdir -p $(DESKTOP_OUT)/ && \
rm -rf $(IOS_OUT)/Libcore.xcframework && \
curl -L $(CORE_URL)/$(CORE_NAME)-ios.tar.gz | tar xz -C "$(IOS_OUT)"
2023-08-19 22:27:23 +03:30
get-geo-assets:
curl -L https://github.com/SagerNet/sing-geoip/releases/latest/download/geoip.db -o $(GEO_ASSETS_DIR)/geoip.db
2023-08-22 01:01:55 +03:30
curl -L https://github.com/SagerNet/sing-geosite/releases/latest/download/geosite.db -o $(GEO_ASSETS_DIR)/geosite.db
2023-08-19 22:27:23 +03:30
build-headers:
2023-09-11 21:19:55 +03:30
make -C libcore -f Makefile headers && mv $(BINDIR)/$(CORE_NAME)-headers.h $(BINDIR)/libcore.h
2023-08-19 22:27:23 +03:30
2023-07-21 22:16:43 +03:30
build-android-libs:
make -C libcore -f Makefile android
mv $(BINDIR)/$(CORE_NAME).aar $(ANDROID_OUT)/
2023-07-21 22:16:43 +03:30
build-windows-libs:
make -C libcore -f Makefile windows-amd64
mv $(BINDIR)/$(CORE_NAME).dll $(DESKTOP_OUT)/
mv $(BINDIR)/$(SRV_NAME) $(DESKTOP_OUT)/
2023-07-21 22:16:43 +03:30
2023-07-22 00:16:46 +02:00
build-linux-libs:
make -C libcore -f Makefile linux-amd64
mv $(BINDIR)/$(CORE_NAME).so $(DESKTOP_OUT)/
mv $(BINDIR)/$(SRV_NAME) $(DESKTOP_OUT)/
2023-08-20 09:17:10 +00:00
build-macos-libs:
make -C libcore -f Makefile macos-universal
mv $(BINDIR)/$(CORE_NAME).dylib $(DESKTOP_OUT)/
mv $(BINDIR)/$(SRV_NAME) $(DESKTOP_OUT)/
build-ios-libs:
2024-01-08 17:30:45 +03:30
rm -rf $(IOS_OUT)/Libcore.xcframework && \
make -C libcore -f Makefile ios && \
mv $(BINDIR)/$(CORE_NAME)-ios.xcframework $(IOS_OUT)/Libcore.xcframework
2023-09-15 10:44:41 +02:00
2023-09-22 14:16:21 +03:30
release: # Create a new tag for release.
2024-01-26 19:07:38 +01:00
2023-09-15 10:44:41 +02:00
@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 '\
2024-01-26 19:07:38 +01:00
[ "404" == $$(curl -I -s -w "%{http_code}" https://github.com/hiddify/hiddify-next-core/releases/download/v$(core.version)/hiddify-libcore-windows-amd64.h.gz -o /dev/null) ]&&{ echo "Core Not Found"; exit 1 ; };\
cversion_string=`grep -e "^version:" pubspec.yaml | cut -d: -f2-`; \
cstr_version=`echo "$${cversion_string}" | sed -n "s/[ ]*\\([0-9]\\+\\.[0-9]\\+\\.[0-9]\\+\\)+.*/\\1/p"`; \
cbuild_number=`echo "$${cversion_string}" | sed -n "s/.*+\\([0-9]\\+\\)/\\1/p"`; \
echo "Current Version Name:$${cstr_version} Build Number:$${cbuild_number}";\
read -p "new Version? (provide the next x.y.z semver) : " TAG && \
2023-09-15 10:44:41 +02:00
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" && \
2023-09-15 11:08:21 +02:00
VERSION_STR="$${VERSION_ARRAY[0]}.$${VERSION_ARRAY[1]}.$${VERSION_ARRAY[2]}" && \
2023-09-22 21:46:32 +02:00
BUILD_NUMBER=$$(( $${VERSION_ARRAY[0]} * 10000 + $${VERSION_ARRAY[1]} * 100 + $${VERSION_ARRAY[2]} )) && \
echo "version: $${VERSION_STR}+$${BUILD_NUMBER}" && \
2023-11-13 19:08:26 +03:30
sed -i "s/^version: .*/version: $${VERSION_STR}\+$${BUILD_NUMBER}/g" pubspec.yaml && \
sed -i "s/CURRENT_PROJECT_VERSION = $${cbuild_number}/CURRENT_PROJECT_VERSION = $${BUILD_NUMBER}/g" ios/Runner.xcodeproj/project.pbxproj && \
sed -i "s/MARKETING_VERSION = $${cstr_version}/MARKETING_VERSION = $${VERSION_STR}/g" ios/Runner.xcodeproj/project.pbxproj && \
git add ios/Runner.xcodeproj/project.pbxproj pubspec.yaml&& \
2023-09-22 14:16:21 +03:30
git commit -m "release: version $${TAG}" && \
2023-09-15 11:23:45 +02:00
echo "creating git tag : v$${TAG}" && \
2024-01-26 14:30:36 +01:00
git push && \
2023-09-15 11:23:45 +02:00
git tag v$${TAG} && \
2023-09-15 11:08:21 +02:00
git push -u origin HEAD --tags && \
2023-10-17 03:15:15 +03:30
echo "Github Actions will detect the new tag and release the new version."'
2023-12-06 01:06:33 +03:30
2023-12-25 22:12:25 +03:30
ios-temp-prepare:
2024-01-08 17:40:18 +03:30
make prepare platform=ios
2023-12-06 01:06:33 +03:30
flutter build ios-framework
cd ios
2024-01-08 17:40:18 +03:30
pod install
2024-01-26 14:30:36 +01:00