blob: 752fb9656f1e9d7c26a665580b9058726f0573b8 [file] [log] [blame]
Ricardo Cerqueira6ed03ff2011-11-28 16:37:47 +00001PRODUCT_BRAND ?= cyanogenmod
2
Koushik Dutta82d0fda2013-02-28 10:33:25 -08003SUPERUSER_EMBEDDED := true
Koushik Dutta9d15c7a2013-03-04 00:37:02 -08004SUPERUSER_PACKAGE_PREFIX := com.android.settings.cyanogenmod.superuser
Koushik Dutta82d0fda2013-02-28 10:33:25 -08005
Steve Kondikba1ca332012-08-21 02:18:40 -07006ifneq ($(TARGET_SCREEN_WIDTH) $(TARGET_SCREEN_HEIGHT),$(space))
Steve Kondikba1ca332012-08-21 02:18:40 -07007# determine the smaller dimension
8TARGET_BOOTANIMATION_SIZE := $(shell \
9 if [ $(TARGET_SCREEN_WIDTH) -lt $(TARGET_SCREEN_HEIGHT) ]; then \
10 echo $(TARGET_SCREEN_WIDTH); \
11 else \
12 echo $(TARGET_SCREEN_HEIGHT); \
13 fi )
14
15# get a sorted list of the sizes
16bootanimation_sizes := $(subst .zip,, $(shell ls vendor/cm/prebuilt/common/bootanimation))
17bootanimation_sizes := $(shell echo -e $(subst $(space),'\n',$(bootanimation_sizes)) | sort -rn)
18
19# find the appropriate size and set
20define check_and_set_bootanimation
21$(eval TARGET_BOOTANIMATION_NAME := $(shell \
22 if [ -z "$(TARGET_BOOTANIMATION_NAME)" ]; then
23 if [ $(1) -le $(TARGET_BOOTANIMATION_SIZE) ]; then \
24 echo $(1); \
25 exit 0; \
26 fi;
27 fi;
28 echo $(TARGET_BOOTANIMATION_NAME); ))
29endef
30$(foreach size,$(bootanimation_sizes), $(call check_and_set_bootanimation,$(size)))
31
Steven Luo367e6482014-01-30 12:51:04 -080032ifeq ($(TARGET_BOOTANIMATION_HALF_RES),true)
33PRODUCT_BOOTANIMATION := vendor/cm/prebuilt/common/bootanimation/halfres/$(TARGET_BOOTANIMATION_NAME).zip
34else
William Roberts4256e662013-08-21 13:43:54 -070035PRODUCT_BOOTANIMATION := vendor/cm/prebuilt/common/bootanimation/$(TARGET_BOOTANIMATION_NAME).zip
Steve Kondika8945752012-03-14 00:10:33 -070036endif
Steven Luo367e6482014-01-30 12:51:04 -080037endif
Steve Kondika8945752012-03-14 00:10:33 -070038
Ricardo Cerqueirae1f37382011-11-27 19:56:54 +000039ifdef CM_NIGHTLY
40PRODUCT_PROPERTY_OVERRIDES += \
41 ro.rommanager.developerid=cyanogenmodnightly
42else
43PRODUCT_PROPERTY_OVERRIDES += \
44 ro.rommanager.developerid=cyanogenmod
45endif
46
47PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=0
48
Steve Kondik5a27f632013-11-06 13:55:11 -080049ifeq ($(PRODUCT_GMS_CLIENTID_BASE),)
50PRODUCT_PROPERTY_OVERRIDES += \
51 ro.com.google.clientidbase=android-google
52else
53PRODUCT_PROPERTY_OVERRIDES += \
54 ro.com.google.clientidbase=$(PRODUCT_GMS_CLIENTID_BASE)
55endif
56
Ricardo Cerqueirae1f37382011-11-27 19:56:54 +000057PRODUCT_PROPERTY_OVERRIDES += \
58 keyguard.no_require_sim=true \
59 ro.url.legal=http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html \
60 ro.url.legal.android_privacy=http://www.google.com/intl/%s/mobile/android/basic/privacy.html \
Ricardo Cerqueirae1f37382011-11-27 19:56:54 +000061 ro.com.android.wifi-watchlist=GoogleGuest \
62 ro.setupwizard.enterprise_mode=1 \
63 ro.com.android.dateformat=MM-dd-yyyy \
64 ro.com.android.dataroaming=false
65
Ricardo Cerqueiraf3835632013-08-04 13:25:00 +010066PRODUCT_PROPERTY_OVERRIDES += \
Ricardo Cerqueiraa21887e2013-09-25 17:13:25 +010067 ro.build.selinux=1
Ricardo Cerqueiraf3835632013-08-04 13:25:00 +010068
Ethan Chen34ee56f2014-07-31 17:23:50 -070069# Disable multithreaded dexopt by default
70PRODUCT_PROPERTY_OVERRIDES += \
71 persist.sys.dalvik.multithread=false
72
Steve Kondike4f938c2014-02-04 22:59:01 -080073# Thank you, please drive thru!
74PRODUCT_PROPERTY_OVERRIDES += persist.sys.dun.override=0
75
Chirayu Desai88401db2013-03-20 16:17:17 +053076ifneq ($(TARGET_BUILD_VARIANT),eng)
Chirayu Desai59df3632013-02-15 21:16:39 +053077# Enable ADB authentication
78ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=1
Chirayu Desai88401db2013-03-20 16:17:17 +053079endif
Chirayu Desai59df3632013-02-15 21:16:39 +053080
Ricardo Cerqueirae1f37382011-11-27 19:56:54 +000081# Copy over the changelog to the device
82PRODUCT_COPY_FILES += \
83 vendor/cm/CHANGELOG.mkdn:system/etc/CHANGELOG-CM.txt
84
Warren Togamib1637c82012-03-03 22:37:42 -100085# Backup Tool
Steve Kondikbc68cf22013-10-06 22:41:52 -070086ifneq ($(WITH_GMS),true)
Ricardo Cerqueirae1f37382011-11-27 19:56:54 +000087PRODUCT_COPY_FILES += \
Warren Togamib1637c82012-03-03 22:37:42 -100088 vendor/cm/prebuilt/common/bin/backuptool.sh:system/bin/backuptool.sh \
89 vendor/cm/prebuilt/common/bin/backuptool.functions:system/bin/backuptool.functions \
Ricardo Cerqueira129989b2012-12-19 01:11:21 +000090 vendor/cm/prebuilt/common/bin/50-cm.sh:system/addon.d/50-cm.sh \
91 vendor/cm/prebuilt/common/bin/blacklist:system/addon.d/blacklist
Steve Kondikbc68cf22013-10-06 22:41:52 -070092endif
Ricardo Cerqueirae1f37382011-11-27 19:56:54 +000093
Ricardo Cerqueiraaff5e542014-05-09 22:24:12 +010094# Signature compatibility validation
95PRODUCT_COPY_FILES += \
96 vendor/cm/prebuilt/common/bin/otasigcheck.sh:system/bin/otasigcheck.sh
97
Steve Kondik485527d2011-12-20 12:14:24 -080098# init.d support
99PRODUCT_COPY_FILES += \
100 vendor/cm/prebuilt/common/etc/init.d/00banner:system/etc/init.d/00banner \
101 vendor/cm/prebuilt/common/bin/sysinit:system/bin/sysinit
102
James Sullinseb7799c2012-04-05 20:18:18 -0500103# userinit support
104PRODUCT_COPY_FILES += \
105 vendor/cm/prebuilt/common/etc/init.d/90userinit:system/etc/init.d/90userinit
106
Ricardo Cerqueira8f412cb2012-10-18 16:38:25 +0100107# CM-specific init file
108PRODUCT_COPY_FILES += \
109 vendor/cm/prebuilt/common/etc/init.local.rc:root/init.cm.rc
110
Adam Fardendb2438b2012-03-07 14:34:38 +0100111# Bring in camera effects
fitsnugly407b3992012-01-14 18:50:25 -0500112PRODUCT_COPY_FILES += \
fitsnuglyc1c6ce22012-01-12 01:10:39 -0500113 vendor/cm/prebuilt/common/media/LMprec_508.emd:system/media/LMprec_508.emd \
114 vendor/cm/prebuilt/common/media/PFFprec_600.emd:system/media/PFFprec_600.emd
Ricardo Cerqueirae1f37382011-11-27 19:56:54 +0000115
116# Enable SIP+VoIP on all targets
117PRODUCT_COPY_FILES += \
Ricardo Cerqueira3ff9b6f2012-07-11 11:21:50 +0100118 frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml
Ricardo Cerqueirae1f37382011-11-27 19:56:54 +0000119
sleeplessninja918a7ea2013-01-30 14:45:20 -0600120# Enable wireless Xbox 360 controller support
121PRODUCT_COPY_FILES += \
122 frameworks/base/data/keyboards/Vendor_045e_Product_028e.kl:system/usr/keylayout/Vendor_045e_Product_0719.kl
123
Steve Kondike0c12da2012-03-25 17:21:32 -0700124# This is CM!
125PRODUCT_COPY_FILES += \
126 vendor/cm/config/permissions/com.cyanogenmod.android.xml:system/etc/permissions/com.cyanogenmod.android.xml
127
Ricardo Cerqueira9f75d842012-05-04 10:15:56 +0100128# T-Mobile theme engine
129include vendor/cm/config/themes_common.mk
130
Ricardo Cerqueirae1f37382011-11-27 19:56:54 +0000131# Required CM packages
132PRODUCT_PACKAGES += \
Steve Kondike0c297d2011-12-20 16:16:01 -0800133 Development \
Ricardo Cerqueirae1f37382011-11-27 19:56:54 +0000134 LatinIME \
Ricardo Cerqueiraa21887e2013-09-25 17:13:25 +0100135 BluetoothExt
Ricardo Cerqueirae1f37382011-11-27 19:56:54 +0000136
137# Optional CM packages
138PRODUCT_PACKAGES += \
Koushik Dutta8475d722013-07-21 09:34:19 -0700139 VoicePlus \
David Fergusonf474b122013-11-10 19:39:36 -0500140 Basic \
141 libemoji
Koushik Dutta8387c322011-11-26 17:31:19 -0800142
Steve Kondik04a49412011-12-14 14:02:19 -0800143# Custom CM packages
144PRODUCT_PACKAGES += \
Ricardo Cerqueira50dda4c2013-11-05 15:26:20 +0000145 Launcher3 \
Michael Bestas8deec442013-12-13 04:54:49 +0200146 Trebuchet \
Steve Kondik04a49412011-12-14 14:02:19 -0800147 DSPManager \
Steve Kondika25e4e02011-12-14 22:27:07 -0800148 libcyanogen-dsp \
Steve Kondikfcc16102012-05-05 16:23:24 -0700149 audio_effects.conf \
Ricardo Cerqueira3dc43542012-05-25 04:31:26 +0400150 CMWallpapers \
Ricardo Cerqueira2526fef2012-09-29 17:17:45 +0100151 Apollo \
DvTonderf0074032012-12-30 13:37:40 -0500152 CMFileManager \
Giulio Cerverab6f18ff2013-08-20 12:53:56 +0200153 LockClock \
Ricardo Cerqueira178ca722013-11-13 21:16:33 +0000154 CMUpdater \
155 CMFota \
Matt Garnese7b6b8c2014-06-16 19:03:23 -0700156 CMAccount \
157 CMHome
Steve Kondik04a49412011-12-14 14:02:19 -0800158
Roman Birg5d521912014-08-12 18:23:48 -0700159# CM Bug Reporting
160PRODUCT_PACKAGES += \
161 CMBugReport
162
163PRODUCT_PROPERTY_OVERRIDES += \
164 ro.error.receiver.system.apps=org.cyanogenmod.bugreport
165
Ricardo Cerqueira17809562013-08-08 00:49:44 +0100166# CM Hardware Abstraction Framework
167PRODUCT_PACKAGES += \
168 org.cyanogenmod.hardware \
169 org.cyanogenmod.hardware.xml
170
Sebastian Schmidt7d5de0c2012-04-15 11:39:25 +0200171# Extra tools in CM
172PRODUCT_PACKAGES += \
Tanguy Pruvotac602b42013-11-24 13:05:59 +0100173 libsepol \
Steve Kondik08980282012-07-05 01:20:47 -0700174 openvpn \
175 e2fsck \
176 mke2fs \
Steve Kondik1949eb52012-09-20 17:09:07 -0700177 tune2fs \
178 bash \
Steve Kondik1949eb52012-09-20 17:09:07 -0700179 nano \
180 htop \
181 powertop \
Steve Kondik2978e202013-07-06 04:07:56 -0700182 lsof \
183 mount.exfat \
184 fsck.exfat \
185 mkfs.exfat \
186 ntfsfix \
Ricardo Cerqueiraa21887e2013-09-25 17:13:25 +0100187 ntfs-3g \
188 gdbserver \
189 micro_bench \
190 oprofiled \
Ricardo Cerqueiraa21887e2013-09-25 17:13:25 +0100191 sqlite3 \
192 strace
Sebastian Schmidt7d5de0c2012-04-15 11:39:25 +0200193
Chirayu Desai8636d672012-07-19 16:04:25 +0530194# Openssh
195PRODUCT_PACKAGES += \
196 scp \
197 sftp \
198 ssh \
199 sshd \
200 sshd_config \
201 ssh-keygen \
Chirayu Desai4bacf672012-08-19 17:30:04 +0530202 start-ssh
203
204# rsync
205PRODUCT_PACKAGES += \
206 rsync
Chirayu Desai8636d672012-07-19 16:04:25 +0530207
Michael Bestas7d5d16d2014-06-10 20:06:48 +0300208# Stagefright FFMPEG plugin
209PRODUCT_PACKAGES += \
210 libstagefright_soft_ffmpegadec \
211 libstagefright_soft_ffmpegvdec \
212 libFFmpegExtractor \
213 libnamparser
214
Ricardo Cerqueiraa21887e2013-09-25 17:13:25 +0100215# These packages are excluded from user builds
216ifneq ($(TARGET_BUILD_VARIANT),user)
217
218PRODUCT_PACKAGES += \
Steve Kondik275701b2013-11-06 12:41:34 -0800219 procmem \
220 procrank \
Ricardo Cerqueiraa21887e2013-09-25 17:13:25 +0100221 Superuser \
222 su
223
224# Terminal Emulator
225PRODUCT_COPY_FILES += \
226 vendor/cm/proprietary/Term.apk:system/app/Term.apk \
227 vendor/cm/proprietary/lib/armeabi/libjackpal-androidterm4.so:system/lib/libjackpal-androidterm4.so
228
229PRODUCT_PROPERTY_OVERRIDES += \
230 persist.sys.root_access=1
231else
232
Ricardo Cerqueiraa21887e2013-09-25 17:13:25 +0100233PRODUCT_PROPERTY_OVERRIDES += \
234 persist.sys.root_access=0
235
236endif
237
Koushik Dutta45e65982013-08-12 15:41:14 -0700238# easy way to extend to add more packages
239-include vendor/extra/product.mk
240
Steve Kondik254db262011-12-20 15:02:07 -0800241PRODUCT_PACKAGE_OVERLAYS += vendor/cm/overlay/common
Koushik Duttac6f7a492011-11-28 07:44:23 -0800242
Ricardo Cerqueira50dda4c2013-11-05 15:26:20 +0000243PRODUCT_VERSION_MAJOR = 11
244PRODUCT_VERSION_MINOR = 0
Ricardo Cerqueira154d0292013-07-25 01:12:16 +0100245PRODUCT_VERSION_MAINTENANCE = 0-RC0
Koushik Duttac6f7a492011-11-28 07:44:23 -0800246
Ricardo Cerqueira554f3702013-09-24 17:58:56 +0100247# Set CM_BUILDTYPE from the env RELEASE_TYPE, for jenkins compat
248
249ifndef CM_BUILDTYPE
250 ifdef RELEASE_TYPE
251 # Starting with "CM_" is optional
252 RELEASE_TYPE := $(shell echo $(RELEASE_TYPE) | sed -e 's|^CM_||g')
253 CM_BUILDTYPE := $(RELEASE_TYPE)
254 endif
Warren Togami2128e2f2012-05-06 19:49:33 -1000255endif
Ricardo Cerqueira554f3702013-09-24 17:58:56 +0100256
257# Filter out random types, so it'll reset to UNOFFICIAL
258ifeq ($(filter RELEASE NIGHTLY SNAPSHOT EXPERIMENTAL,$(CM_BUILDTYPE)),)
259 CM_BUILDTYPE :=
Warren Togami2128e2f2012-05-06 19:49:33 -1000260endif
261
Ricardo Cerqueirad8e76662012-06-08 11:08:15 +0100262ifdef CM_BUILDTYPE
Ricardo Cerqueira554f3702013-09-24 17:58:56 +0100263 ifneq ($(CM_BUILDTYPE), SNAPSHOT)
264 ifdef CM_EXTRAVERSION
265 # Force build type to EXPERIMENTAL
266 CM_BUILDTYPE := EXPERIMENTAL
267 # Remove leading dash from CM_EXTRAVERSION
268 CM_EXTRAVERSION := $(shell echo $(CM_EXTRAVERSION) | sed 's/-//')
269 # Add leading dash to CM_EXTRAVERSION
270 CM_EXTRAVERSION := -$(CM_EXTRAVERSION)
271 endif
272 else
273 ifndef CM_EXTRAVERSION
274 # Force build type to EXPERIMENTAL, SNAPSHOT mandates a tag
275 CM_BUILDTYPE := EXPERIMENTAL
276 else
277 # Remove leading dash from CM_EXTRAVERSION
278 CM_EXTRAVERSION := $(shell echo $(CM_EXTRAVERSION) | sed 's/-//')
279 # Add leading dash to CM_EXTRAVERSION
280 CM_EXTRAVERSION := -$(CM_EXTRAVERSION)
281 endif
Ricardo Cerqueirad8e76662012-06-08 11:08:15 +0100282 endif
283else
284 # If CM_BUILDTYPE is not defined, set to UNOFFICIAL
Warren Togami2128e2f2012-05-06 19:49:33 -1000285 CM_BUILDTYPE := UNOFFICIAL
Ricardo Cerqueirad8e76662012-06-08 11:08:15 +0100286 CM_EXTRAVERSION :=
Warren Togami2128e2f2012-05-06 19:49:33 -1000287endif
288
Matt Mowerf4168392013-12-13 11:04:14 -0600289ifeq ($(CM_BUILDTYPE), UNOFFICIAL)
290 ifneq ($(TARGET_UNOFFICIAL_BUILD_ID),)
Michael Bestas3bf9ba82013-12-18 00:22:58 +0200291 CM_EXTRAVERSION := -$(TARGET_UNOFFICIAL_BUILD_ID)
Matt Mowerf4168392013-12-13 11:04:14 -0600292 endif
293endif
294
Ricardo Cerqueira554f3702013-09-24 17:58:56 +0100295ifeq ($(CM_BUILDTYPE), RELEASE)
Ricardo Cerqueiraae71f042013-11-11 00:55:51 +0000296 ifndef TARGET_VENDOR_RELEASE_BUILD_ID
297 CM_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(PRODUCT_VERSION_MAINTENANCE)$(PRODUCT_VERSION_DEVICE_SPECIFIC)-$(CM_BUILD)
298 else
299 ifeq ($(TARGET_BUILD_VARIANT),user)
300 CM_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(TARGET_VENDOR_RELEASE_BUILD_ID)-$(CM_BUILD)
301 else
302 CM_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(PRODUCT_VERSION_MAINTENANCE)$(PRODUCT_VERSION_DEVICE_SPECIFIC)-$(CM_BUILD)
303 endif
304 endif
Koushik Duttac6f7a492011-11-28 07:44:23 -0800305else
Chirayu Desaie6e61632012-12-04 19:16:48 +0530306 ifeq ($(PRODUCT_VERSION_MINOR),0)
Ricardo Cerqueira554f3702013-09-24 17:58:56 +0100307 CM_VERSION := $(PRODUCT_VERSION_MAJOR)-$(shell date -u +%Y%m%d)-$(CM_BUILDTYPE)$(CM_EXTRAVERSION)-$(CM_BUILD)
Chirayu Desaie6e61632012-12-04 19:16:48 +0530308 else
Ricardo Cerqueira554f3702013-09-24 17:58:56 +0100309 CM_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(shell date -u +%Y%m%d)-$(CM_BUILDTYPE)$(CM_EXTRAVERSION)-$(CM_BUILD)
Chirayu Desaie6e61632012-12-04 19:16:48 +0530310 endif
Koushik Duttac6f7a492011-11-28 07:44:23 -0800311endif
Koushik Duttad69b2922012-02-23 14:07:44 -0800312
313PRODUCT_PROPERTY_OVERRIDES += \
314 ro.cm.version=$(CM_VERSION) \
Brint E. Kriebelaf917582014-07-10 10:31:00 -0700315 ro.cm.releasetype=$(CM_BUILDTYPE) \
Abhisek Devkota381a3052013-12-10 04:35:08 -0800316 ro.modversion=$(CM_VERSION) \
317 ro.cmlegal.url=http://www.cyanogenmod.org/docs/privacy
Ricardo Cerqueirad5422742012-11-13 10:42:11 +0000318
Ricardo Cerqueira178dbd62013-10-23 20:56:56 +0100319-include vendor/cm-priv/keys/keys.mk
320
Ricardo Cerqueira46161372014-01-09 10:25:31 +0000321CM_DISPLAY_VERSION := $(CM_VERSION)
322
Brint E. Kriebelac948f52014-01-24 09:58:36 -0800323ifneq ($(PRODUCT_DEFAULT_DEV_CERTIFICATE),)
324ifneq ($(PRODUCT_DEFAULT_DEV_CERTIFICATE),build/target/product/security/testkey)
Ricardo Cerqueira46161372014-01-09 10:25:31 +0000325 ifneq ($(CM_BUILDTYPE), UNOFFICIAL)
326 ifndef TARGET_VENDOR_RELEASE_BUILD_ID
327 ifneq ($(CM_EXTRAVERSION),)
Ricardo Cerqueira17b25872014-02-16 17:15:07 +0000328 # Remove leading dash from CM_EXTRAVERSION
329 CM_EXTRAVERSION := $(shell echo $(CM_EXTRAVERSION) | sed 's/-//')
Ricardo Cerqueira46161372014-01-09 10:25:31 +0000330 TARGET_VENDOR_RELEASE_BUILD_ID := $(CM_EXTRAVERSION)
331 else
Ricardo Cerqueira17b25872014-02-16 17:15:07 +0000332 TARGET_VENDOR_RELEASE_BUILD_ID := $(shell date -u +%Y%m%d)
Ricardo Cerqueira46161372014-01-09 10:25:31 +0000333 endif
334 else
Ricardo Cerqueira17b25872014-02-16 17:15:07 +0000335 TARGET_VENDOR_RELEASE_BUILD_ID := $(TARGET_VENDOR_RELEASE_BUILD_ID)
Ricardo Cerqueira46161372014-01-09 10:25:31 +0000336 endif
Ricardo Cerqueira17b25872014-02-16 17:15:07 +0000337 CM_DISPLAY_VERSION=$(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(TARGET_VENDOR_RELEASE_BUILD_ID)
Ricardo Cerqueira46161372014-01-09 10:25:31 +0000338 endif
339endif
Ricardo Cerqueira74b4f9b2014-01-11 16:00:16 +0000340endif
Ricardo Cerqueira46161372014-01-09 10:25:31 +0000341
Brint E. Kriebele0e8c272014-05-21 23:37:52 -0700342# by default, do not update the recovery with system updates
343PRODUCT_PROPERTY_OVERRIDES += persist.sys.recovery_update=false
344
Ricardo Cerqueira46161372014-01-09 10:25:31 +0000345PRODUCT_PROPERTY_OVERRIDES += \
346 ro.cm.display.version=$(CM_DISPLAY_VERSION)
347
Brint E. Kriebela1e49122014-01-31 11:59:56 -0800348-include $(WORKSPACE)/build_env/image-auto-bits.mk
Koushik Dutta41fd0aa2013-12-07 22:04:17 -0800349
350-include vendor/cyngn/product.mk