1 # This has various targets to assist in developing 2 # and testing the mock ril. The default "all" target 3 # invokes protoc to generate the appropriate protobuf 4 # code. The other targest are used for testing. 5 6 # Assume this Makefile is run in place then top 7 # point to the top of the android source tree 8 top=../../../ 9 10 PROTOC=$(wildcard $(top)out/host/*/bin/aprotoc) 11 #if ((($(words $(PROTO)) != 1))) 12 ifneq ($(words $(PROTOC)),1) 13 $(error expecting 1 protoc we have $(words $(PROTOC)), PROTOC='$(PROTOC)') 14 endif 15 16 ifeq ("$(ANDROID_DEVICE)","") 17 $(warning Default to ANDROID_DEVICE=passion") 18 ANDROID_DEVICE=passion 19 endif 20 21 # Directories of source files 22 device=$(ANDROID_DEVICE) 23 src_js=src/js 24 src_proto=src/proto 25 src_generated=$(top)out/target/product/$(device)/obj/SHARED_LIBRARIES/libmock_ril_intermediates/proto/hardware/ril/mock-ril/src/proto 26 27 # Directories of generated source files 28 gen_src_py=$(src_generated)/python 29 gen_src_desc=$(src_generated)/desc 30 31 # Generated files 32 generated=$(gen_src_desc)/msgheader.desc $(gen_src_py)/msgheader_pb2.py \ 33 $(gen_src_desc)/ril.desc $(gen_src_py)/ril_pb2.py \ 34 $(gen_src_desc)/ctrl.desc $(gen_src_py)/ctrl_pb2.py 35 36 # A Makefile to run protoc and simplify testing. 37 .PHONY : all 38 all : $(generated) 39 40 # TODO: Document/cleanup these testing targets as we learn whats needed. 41 42 # Make the unit tests 43 .PHONY : ut 44 ut : 45 source $(top)build/envsetup.sh ; mmm $(top)frameworks/base/telephony/tests/telephonytests 46 adb install -r $(top)out/target/product/$(device)/data/app/FrameworksTelephonyTests.apk 47 48 t : $(gen_src_desc)/msgheader.desc $(gen_src_py)/msgheader_pb2.py 49 50 # Run protoc to create the descriptor files for msgheader 51 $(gen_src_desc)/msgheader.desc : $(src_proto)/msgheader.proto 52 mkdir -p $(gen_src_desc) 53 $(PROTOC) --descriptor_set_out=$@ --proto_path=$(src_proto) --include_imports $< 54 55 # Run protoc to create the python files for msgheader 56 $(gen_src_py)/msgheader_pb2.py : $(src_proto)/msgheader.proto 57 mkdir -p $(gen_src_py) 58 $(PROTOC) --python_out=$(gen_src_py) --proto_path=$(src_proto) $< 59 60 # Run protoc to create the ril descriptor file for ril 61 $(gen_src_desc)/ril.desc : $(src_proto)/ril.proto 62 mkdir -p $(gen_src_desc) 63 $(PROTOC) --descriptor_set_out=$@ --proto_path=$(src_proto) --include_imports $< 64 65 # Run protoc to create the python files for ril 66 $(gen_src_py)/ril_pb2.py : $(src_proto)/ril.proto 67 mkdir -p $(gen_src_py) 68 $(PROTOC) --python_out=$(gen_src_py) --proto_path=$(src_proto) $< 69 70 # Run protoc to create the python files for control 71 $(gen_src_py)/ctrl_pb2.py : $(src_proto)/ctrl.proto 72 mkdir -p $(gen_src_py) 73 $(PROTOC) --python_out=$(gen_src_py) --proto_path=$(top) --proto_path=$(src_proto) $< 74 75 # Run protoc to create the ctrl descriptor file for control 76 $(gen_src_desc)/ctrl.desc : $(src_proto)/ctrl.proto 77 mkdir -p $(gen_src_desc) 78 $(PROTOC) --descriptor_set_out=$@ --proto_path=$(top) --proto_path=$(src_proto) --include_imports $< 79 80 # After starting phone do this first to get lastest ril.desc/proto and setup rild 81 .PHONY : first 82 first : root_remount copy_all forward 83 84 # copy js and descriptors, restart rild and run mockril_tests 85 .PHONY : tmr 86 tmr : copy_js_desc restart_rild mockril_tests 87 88 # Copy all files, restart rild and run mockril_tests 89 .PHONY : test 90 test : copy_all restart_rild install_mockril_tests mockril_tests 91 92 # Restart rild 93 .PHONY : restart_rild 94 restart_rild : 95 adb shell setprop ctl.restart ril-daemon 96 97 # Update only the js/copy and restart rild 98 .PHONY : tjs 99 tjs : copy_js_desc restart_rild 100 101 # Run test control server python script 102 .PHONY : tcs 103 tcs : 104 ./tcs.py 127.0.0.1 11111 105 106 # Run the mock ril tests (use adb shell pm list instrumentation to see the Runner) 107 .PHONY : mockril_tests 108 mockril_tests : 109 adb shell am instrument -e class 'com.android.internal.telephony.mockril.MockRilTest' -w com.android.frameworks.telephonytests/.TelephonyMockRilTestRunner 110 111 # forward the control server tcp port (54312) to a port on the PC side (11111) 112 .PHONY : forward 113 forward : 114 adb forward tcp:11111 tcp:54312 115 116 # change to root and remount device 117 .PHONY : root_remount 118 root_remount : 119 adb root ; sleep 3 ; adb remount ; adb shell setprop rild.libpath /data/lib/libmock_ril.so 120 121 # Copy all files 122 .PHONY : copy_all 123 copy_all : copy_js_desc copy_mockril 124 125 # Copy js and the protobuf descriptor files 126 .PHONY : copy_js_desc 127 copy_js_desc : 128 adb push $(src_js)/mock_ril.js /sdcard/data/ 129 adb push $(src_js)/mock_ril_tests.js /sdcard/data/ 130 adb push $(src_js)/simulated_radio.js /sdcard/data/ 131 adb push $(src_js)/simulated_radio_tests.js /sdcard/data/ 132 adb push $(src_js)/simulated_icc.js /sdcard/data/ 133 adb push $(src_js)/simulated_icc_tests.js /sdcard/data/ 134 adb push $(src_js)/ctrl_server.js /sdcard/data/ 135 adb push $(src_js)/ctrl_server_tests.js /sdcard/data/ 136 adb push $(src_js)/ril_vars.js /sdcard/data/ 137 adb push $(gen_src_desc)/ril.desc /sdcard/data/ 138 adb push $(gen_src_desc)/ctrl.desc /sdcard/data/ 139 adb forward tcp:11111 tcp:54312 140 141 142 # Copy the mock ril library 143 .PHONY : copy_mockril 144 copy_mockril : 145 adb push $(top)out/target/product/$(device)/system/lib/libmock_ril.so /data/lib/ 146 147 .PHONY : install_mockril_tests 148 install_mockril_tests : 149 adb install -r $(top)out/target/product/$(device)/data/app/FrameworksTelephonyTests.apk 150 151 # Remove generated files 152 .PHONY : clean 153 clean : 154 rm -f $(generated) 155