-
Notifications
You must be signed in to change notification settings - Fork 40
/
Copy pathMakefile
152 lines (125 loc) · 7.13 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
ANDROID_TOOLCHAIN_FILE ?= temp/android-ndk-r25b/build/cmake/android.toolchain.cmake
setup-mac:
@brew install ninja cmake
setup-android-mac:
@mkdir -p temp
@curl https://dl.google.com/android/repository/android-ndk-r25b-darwin.zip -o temp/android-ndk-r25b.zip
@unzip -qo temp/android-ndk-r25b.zip -d temp/
setup-android-linux:
@mkdir -p temp
@curl https://dl.google.com/android/repository/android-ndk-r25b-linux.zip -o temp/android-ndk-r25b.zip
@unzip -qo temp/android-ndk-r25b.zip -d temp/
build-android:
@rm -rf _builds/android
@cmake -GNinja -H. -B_builds/android -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN_FILE} \
-DANDROID_PLATFORM=android-23 \
-DANDROID_ABI=armeabi-v7a
@cmake --build _builds/android
build-android-64:
@rm -rf _builds/android64
@cmake -GNinja -H. -B_builds/android64 -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=${ANDROID_TOOLCHAIN_FILE} \
-DANDROID_PLATFORM=android-23 \
-DANDROID_ABI=arm64-v8a
@cmake --build _builds/android64
build-windows:
@echo "Attention: This should be run from Developer PowerShell for VS, else it will fail"
@rm -rf _builds/windows
@cmake -H. -B_builds/windows -G "Visual Studio 17 2022" -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release
@cmake --build _builds/windows --config Release -j
build-mac-universal:
@rm -rf _builds/mac
@cmake -H. -B_builds/mac -GNinja -DPLATFORM=MAC -DCMAKE_BUILD_TYPE=Release -DBUILD_MACOS_BUNDLE=ON
@cmake --build _builds/mac -j
build-mac-xcode:
@rm -rf _builds/mac-xcode
@cmake -H. -B_builds/mac-xcode -GXcode -DBUILD_MACOS_BUNDLE=ON
@cmake --build _builds/mac-xcode --config Release -j
build-linux:
@rm -rf _builds/linux
@cmake -H. -B_builds/linux -GNinja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON
@cmake --build _builds/linux
build-linux-debug:
@rm -rf _builds/linux-debug
@cmake -H. -B_builds/linux-debug -GNinja -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON
@cmake --build _builds/linux-debug
check-devteam-env:
ifndef APPLE_DEVELOPMENT_TEAM
$(error APPLE_DEVELOPMENT_TEAM is undefined)
endif
## Needs development team for building iOS fat
build-ios-fat: check-devteam-env
@rm -rf _builds/ios_combined
@cmake -H. -GXcode -B_builds/ios_combined -DCMAKE_INSTALL_PREFIX=./_builds/ios_combined -DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=$(APPLE_DEVELOPMENT_TEAM) -DCMAKE_BUILD_TYPE=Release -DPLATFORM=OS64COMBINED -DCMAKE_TOOLCHAIN_FILE=../../cmake/ios.toolchain.cmake
@cmake --build _builds/ios_combined --config Release -j
build-openssl-ios-simulator64:
@rm -rf _builds/openssl/simulator
@rm -rf _builds/tmp _builds/ios-xcframework-openssl/
@echo "Building simulator lib"
@./build-openssl.py --prefix _builds/openssl/simulator --force --openssl-tar ./deps/openssl-1.1.1q.tar.gz ios-sim-universal
@echo "Done"
build-openssl-ios-xcframework:
@rm -rf _builds/openssl/simulator
@rm -rf _builds/openssl/device
@rm -rf _builds/tmp _builds/ios-xcframework-openssl/
@echo "Building simulator lib"
@./build-openssl.py --prefix _builds/openssl/simulator --force --openssl-tar ./deps/openssl-1.1.1q.tar.gz ios-sim-universal
@echo "Building arm device lib"
@./build-openssl.py --prefix _builds/openssl/device --force --openssl-tar ./deps/openssl-1.1.1q.tar.gz ios-universal
@echo "Building xcframework at _builds/ios-xcframework-openssl"
@mkdir -p _builds/tmp _builds/ios-xcframework-openssl/
@xcodebuild -create-xcframework -library _builds/openssl/device/lib/libcrypto.a -headers ./deps/openssl/ios/include -library _builds/openssl/simulator/lib/libcrypto.a -headers ./deps/openssl/ios/include -output _builds/ios-xcframework-openssl/libcrypto.xcframework
@xcodebuild -create-xcframework -library _builds/openssl/device/lib/libssl.a -headers ./deps/openssl/ios/include -library _builds/openssl/simulator/lib/libssl.a -headers ./deps/openssl/ios/include -output _builds/ios-xcframework-openssl/libssl.xcframework
@echo "Done"
build-ios-xcframework: build-ios build-ios-simulator-64 build-ios-simulator-applesilicon
@echo "Lipo simulator64 and arm64 together"
@rm -rf _builds/ios-xcframework-libpitaya
@mkdir -p _builds/tmp _builds/ios-xcframework-libpitaya/
@lipo -create _builds/ios-simulator/libpitaya-ios.a _builds/ios-simulator-applesilicon/libpitaya-ios.a -output _builds/tmp/libpitaya-ios.a
@lipo -create _builds/ios-simulator/deps/libuv-1.44.2/libuv_a.a _builds/ios-simulator-applesilicon/deps/libuv-1.44.2/libuv_a.a -output _builds/tmp/libuv_a.a
@rm -rf _builds/ios-xcframework-libpitaya
@echo "Building xcframework at _builds/ios-xcframework-libpitaya"
@xcodebuild -create-xcframework -library _builds/tmp/libpitaya-ios.a -headers ./include -library _builds/ios/libpitaya-ios.a -headers ./include -output _builds/ios-xcframework-libpitaya/libpitaya.xcframework
@xcodebuild -create-xcframework -library _builds/tmp/libuv_a.a -library _builds/ios/deps/libuv-1.44.2/libuv_a.a -output _builds/ios-xcframework-libpitaya/libuv.xcframework
@rm -rf _builds/tmp
@echo "Done"
build-ios:
@rm -rf _builds/ios
@cmake -H. -B_builds/ios -DCMAKE_BUILD_TYPE=Release -DPLATFORM=OS -DDEPLOYMENT_TARGET="10.0" -DCMAKE_TOOLCHAIN_FILE=../../cmake/ios.toolchain.cmake
@cmake --build _builds/ios --config Release -j
build-ios-simulator-64:
@rm -rf _builds/ios-simulator
@cmake -H. -B_builds/ios-simulator -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../../cmake/ios.toolchain.cmake -DPLATFORM=SIMULATOR64 -DSIMULATOR=true
@cmake --build _builds/ios-simulator --config Release -j
build-ios-simulator-applesilicon:
@rm -rf _builds/ios-simulator-applesilicon
@cmake -H. -B_builds/ios-simulator-applesilicon -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../../cmake/ios.toolchain.cmake -DPLATFORM=SIMULATORARM64 -DSIMULATOR=true
@cmake --build _builds/ios-simulator-applesilicon --config Release -j
build-mac-tests:
@rm -rf _builds/mac-tests
@cmake -GNinja -H. -B_builds/mac-tests -DCMAKE_BUILD_TYPE=Release
@cmake --build _builds/mac-tests
clean-docker-container:
@if [[ `docker ps -aqf "name=libpitaya"` != "" ]]; then \
docker rm `docker ps -aqf "name=libpitaya"` ; \
fi
build-linux-docker: clean-docker-container
@docker build -t libpitaya .
@mkdir -p _builds
@docker run -v $(shell pwd):/app/ --name libpitaya libpitaya:latest
@$(MAKE) clean-docker-container
.PHONY: build
create-out-folder:
@rm -rf out
@mkdir -p out
build-servers-linux: create-out-folder
@cd pitaya-servers/json-server && GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o ../../out/json_server_linux
@cd pitaya-servers/protobuf-server && GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o ../../out/protobuf_server_linux
docker-build: build-servers-linux
@docker build -t libpitaya-test-servers .
generate-xcode:
@cmake -H. -B_builds/xcode -GXcode -DBUILD_TESTING=ON
update-test-protos:
@python3 ./deps/nanopb-0.4.8/generator/nanopb_generator.py -I ./pitaya-servers/protobuf-server/protos/ -D ./test ./pitaya-servers/protobuf-server/protos/big-message.proto ./pitaya-servers/protobuf-server/protos/response.proto ./pitaya-servers/protobuf-server/protos/session-data.proto
@python3 ./deps/nanopb-0.4.8/generator/nanopb_generator.py -I ./unity/PitayaExample/Assets/Pitaya/Protos/ -D ./test ./unity/PitayaExample/Assets/Pitaya/Protos/error.proto