#!/usr/bin/perl | |
# | |
# Copyright Statement: | |
# -------------------- | |
# This software is protected by Copyright and the information contained | |
# herein is confidential. The software may not be copied and the information | |
# contained herein may not be used or disclosed except with the written | |
# permission of MediaTek Inc. (C) 2012 | |
# | |
# BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES | |
# THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") | |
# RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON | |
# AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, | |
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF | |
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. | |
# NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE | |
# SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR | |
# SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH | |
# THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO | |
# NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S | |
# SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. | |
# | |
# BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE | |
# LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, | |
# AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, | |
# OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO | |
# MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. | |
# | |
# THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE | |
# WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF | |
# LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND | |
# RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER | |
# THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC). | |
# | |
#***************************************************************************** | |
#* | |
#* Filename: | |
#* --------- | |
#* genverno.pl | |
#* | |
#* Project: | |
#* -------- | |
#* | |
#* | |
#* Description: | |
#* ------------ | |
#* This script is to generate verno.c/verno.h | |
#* | |
#* Author: | |
#* ------- | |
#* Ray Lin-Wang (mtk04222) | |
#* | |
#*============================================================================ | |
#* HISTORY | |
#* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! | |
#*------------------------------------------------------------------------------ | |
#* $Revision$ | |
#* $Modtime$ | |
#* $Log$ | |
#* | |
#* 07 28 2020 chi-chun.lu | |
#* [MOLY00550711] update release_bb_chip() | |
#* . | |
#* | |
#* 10 30 2018 gerry.liao | |
#* [MOLY00356929] [Gen95/97][exception] refine DSP assert file name policy to fix findowner problem in co-branch | |
#* . | |
#* | |
#* 10 30 2018 gerry.liao | |
#* [MOLY00356929] [Gen95/97][exception] refine DSP assert file name policy to fix findowner problem in co-branch | |
#* | |
#* . | |
#* 10 04 2018 gerry.liao | |
#* [MOLY00356929] [Gen95/97][exception] refine DSP assert file name policy to fix findowner problem in co-branch | |
#* . | |
#* | |
#* | |
#* 10 04 2018 gerry.liao | |
#* [MOLY00356929] [Gen95/97][exception] refine DSP assert file name policy to fix findowner problem in co-branch | |
#* . | |
#* | |
#* 08 02 2018 chi-chun.lu | |
#* [MOLY00343751] [MakeFile] [UMOLYE] [Modify Makefile Rules] move cxif checksum flow | |
#* | |
#* . | |
#* | |
#* 08 02 2018 chi-chun.lu | |
#* [MOLY00343751] [MakeFile] [UMOLYE] [Modify Makefile Rules] move cxif checksum flow | |
#* | |
#* . | |
#* | |
#* 03 15 2018 yuri.huang | |
#* [MOLY00313719] [MakeFile] [UMOLY] [Modify Makefile Rules] Modify genverno.pl for verno.c info | |
#* (Qmei). | |
#* | |
#* 04 19 2017 gerry.liao | |
#* [MOLY00242320] [SM] dsp update label feature | |
#* | |
#* . | |
#* | |
#* 03 03 2017 gerry.liao | |
#* [MOLY00233116] add cxif checksum scripts | |
#* . | |
#* | |
#* 12 01 2015 chi-chun.lu | |
#* [MOLY00141748] [MakeFile][UMOLY] [Modify Makefile Rules] modify genverno scripts | |
#* | |
#* . | |
#* | |
#* 07 27 2015 gerry.liao | |
#* [MOLY00132584] [SM] add $(DSP_PROJECT) and $(DSP_FLAVOR) get function | |
#* . | |
#* | |
#* | |
#*------------------------------------------------------------------------------ | |
#* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! | |
#*============================================================================ | |
#****************************************************************************/ | |
#**************************************************************************** | |
# Included Modules | |
#**************************************************************************** | |
BEGIN { push @INC, './tools/CXIF/' } | |
use strict; | |
use CUIF_Structure_Check; | |
use CMIF_Structure_Check; | |
#**************************************************************************** | |
# Input Parameters & Global Variables | |
#**************************************************************************** | |
my $verno_dir = $ARGV[0]; # The output path of verno.c and verno.h | |
my $verno = $ARGV[1]; # The version number | |
my $build_date_time = $ARGV[2]; # The date of building | |
my $branch = $ARGV[3]; # The branch name | |
my $hal_verno = $ARGV[4]; | |
my $hw_verno = $ARGV[5]; | |
my $build = $ARGV[6]; | |
my $flavor = $ARGV[7]; | |
my $platform = $ARGV[8]; | |
my $dsp_proj = $ARGV[9]; | |
my $dsp_flavor = $ARGV[10]; | |
my $project_name = $ARGV[11]; | |
my $mtk_modem_arch = $ARGV[12]; | |
my $source_file = "verno.c"; | |
my $header_file = "verno.h"; | |
#**************************************************************************** | |
# subroutines | |
#**************************************************************************** | |
#**************************************************************************** | |
# Execute | |
#**************************************************************************** | |
open (SRCFILE, ">$verno_dir/$source_file") or &error_handler("$verno_dir/$source_file : file error!", __FILE__, __LINE__); | |
print SRCFILE &gen_verno_src_declare; | |
print SRCFILE &gen_verno_src_rel_verno; | |
print SRCFILE &gen_verno_src_hal_verno; | |
print SRCFILE &gen_verno_src_hw_ver; | |
print SRCFILE &gen_verno_src_proj_name; | |
print SRCFILE &gen_verno_src_build_date; | |
print SRCFILE &gen_verno_src_rel_build; | |
print SRCFILE &gen_verno_src_rel_branch; | |
print SRCFILE &gen_verno_src_rel_flavor; | |
print SRCFILE &gen_verno_src_rel_platform; | |
print SRCFILE &gen_verno_src_rel_dsp_proj; | |
print SRCFILE &gen_verno_src_rel_dsp_flavor; | |
print SRCFILE &gen_verno_src_rel_dsp_root; | |
close SRCFILE; | |
open (H_FILE, ">$verno_dir/$header_file") or &error_handler("$verno_dir/$header_file : file error!", __FILE__, __LINE__); | |
print H_FILE &gen_verno_header_file; | |
close H_FILE; | |
#**************************************************************************** | |
# subroutine: genverno_verno | |
#**************************************************************************** | |
sub genverno_verno | |
{ | |
return " v0.00 , initial version "; | |
} | |
#**************************************************************************** | |
# subroutine: gen_verno_header_file | |
#**************************************************************************** | |
sub gen_verno_header_file | |
{ | |
my $template = <<"__TEMPLATE"; | |
#define VERNO_STR "$verno" | |
#define HW_VER_STR "$hw_verno" | |
#define PROJECT_NAME_STR "$project_name" | |
#define BUILD_DATE_TIME_STR "$build_date_time" | |
#define BUILD_STR "$build" | |
#define BUILD_BRANCH_STR "$branch" | |
#define PLATFORM "$platform" | |
__TEMPLATE | |
} | |
#**************************************************************************** | |
# 1. subroutine: gen_verno_src_declare | |
#**************************************************************************** | |
sub gen_verno_src_declare | |
{ | |
my $template = <<"__TEMPLATE"; | |
#include "kal_public_api.h" | |
#define VERNO_LENGTH 128 | |
#if defined(__MTK_TARGET__) | |
__attribute__ ((section ("RELEASE_VERNO_RW"))) static kal_char verno_str[VERNO_LENGTH] = "$verno"; | |
__attribute__ ((section ("BUILD_TIME_RW"))) static kal_char build_date_time_str[] = "$build_date_time"; | |
__attribute__ ((section ("RELEASE_BRANCH_RW"))) static kal_char build_branch_str[] = "$branch"; | |
kal_char build_flavor_str[] = "$flavor"; | |
kal_char build_platform_str[] = "$platform"; | |
kal_char build_dsp_proj_str[] = "$dsp_proj"; | |
extern kal_uint32 RELEASE_VERNO_RW\$\$Base; | |
extern kal_uint32 BUILD_TIME_RW\$\$Base; | |
extern kal_uint32 RELEASE_BRANCH_RW\$\$Base; | |
#endif | |
__TEMPLATE | |
} | |
#**************************************************************************** | |
# 2. subroutine: gen_verno_src_rel_verno | |
#**************************************************************************** | |
sub gen_verno_src_rel_verno | |
{ | |
my $template = <<"__TEMPLATE"; | |
kal_char* release_verno(void) | |
{ | |
#if defined(__MTK_TARGET__) | |
#if defined(__GNUC__) | |
return verno_str; | |
#else | |
return (kal_char*)&RELEASE_VERNO_RW\$\$Base; | |
#endif | |
#else | |
static kal_char verno_str[VERNO_LENGTH] = "$verno"; | |
return verno_str; | |
#endif | |
} | |
__TEMPLATE | |
} | |
#**************************************************************************** | |
# 3. subroutine: gen_verno_src_hal_verno | |
#**************************************************************************** | |
sub gen_verno_src_hal_verno | |
{ | |
my $template = <<"__TEMPLATE"; | |
kal_char* release_hal_verno(void) | |
{ | |
static kal_char hal_verno_str[] = "$hal_verno"; | |
return hal_verno_str; | |
} | |
__TEMPLATE | |
} | |
#**************************************************************************** | |
# 4. subroutine: gen_verno_src_hw_ver | |
#**************************************************************************** | |
sub gen_verno_src_hw_ver | |
{ | |
my $template = <<"__TEMPLATE"; | |
kal_char* release_hw_ver(void) | |
{ | |
static kal_char hw_ver_str[] = "$hw_verno"; | |
return hw_ver_str; | |
} | |
__TEMPLATE | |
} | |
#**************************************************************************** | |
# 5. subroutine: gen_verno_src_build_date | |
#**************************************************************************** | |
sub gen_verno_src_build_date | |
{ | |
my $template = <<"__TEMPLATE"; | |
kal_char* build_date_time(void) | |
{ | |
#if defined(__MTK_TARGET__) | |
#if defined(__GNUC__) | |
return build_date_time_str; | |
#else | |
return (kal_char*)&BUILD_TIME_RW\$\$Base; | |
#endif | |
#else | |
static kal_char build_date_time_str[] = "$build_date_time"; | |
return build_date_time_str; | |
#endif | |
} | |
__TEMPLATE | |
} | |
#**************************************************************************** | |
# 6. subroutine: gen_verno_src_rel_build | |
#**************************************************************************** | |
sub gen_verno_src_rel_build | |
{ | |
my $template = <<"__TEMPLATE"; | |
kal_char* release_build(void) | |
{ | |
static kal_char build_str[] = "$build"; | |
return build_str; | |
} | |
__TEMPLATE | |
} | |
#**************************************************************************** | |
# 7. subroutine: gen_verno_src_rel_branch | |
#**************************************************************************** | |
sub gen_verno_src_rel_branch | |
{ | |
my $template = <<"__TEMPLATE"; | |
kal_char* release_branch(void) | |
{ | |
#if defined(__MTK_TARGET__) | |
#if defined(__GNUC__) | |
return build_branch_str; | |
#else | |
return (kal_char*)&RELEASE_BRANCH_RW\$\$Base; | |
#endif | |
#else | |
static kal_char build_branch_str[] = "$branch"; | |
return build_branch_str; | |
#endif | |
} | |
__TEMPLATE | |
} | |
#**************************************************************************** | |
# 8. subroutine: gen_verno_src_rel_flavor | |
#**************************************************************************** | |
sub gen_verno_src_rel_flavor | |
{ | |
my $template = <<"__TEMPLATE"; | |
kal_char* release_flavor(void) | |
{ | |
#if defined(__MTK_TARGET__) | |
return build_flavor_str; | |
#else | |
static kal_char build_flavor_str[] = "$flavor"; | |
return build_flavor_str; | |
#endif | |
} | |
__TEMPLATE | |
} | |
#**************************************************************************** | |
# 9. subroutine: gen_verno_src_rel_dsp_proj | |
#**************************************************************************** | |
sub gen_verno_src_rel_dsp_proj | |
{ | |
my $template = <<"__TEMPLATE"; | |
kal_char* release_dsp_proj(void) | |
{ | |
#if defined(__MTK_TARGET__) | |
return build_dsp_proj_str; | |
#else | |
static kal_char build_dsp_proj_str[] = "$dsp_proj"; | |
return build_dsp_proj_str; | |
#endif | |
} | |
__TEMPLATE | |
} | |
#**************************************************************************** | |
# 10. subroutine: gen_verno_src_rel_dsp_flavor | |
#**************************************************************************** | |
sub gen_verno_src_rel_dsp_flavor | |
{ | |
my $template = <<"__TEMPLATE"; | |
kal_char* release_dsp_flavor(void) | |
{ | |
static kal_char build_dsp_flavor_str[] = "$dsp_flavor"; | |
return build_dsp_flavor_str; | |
} | |
__TEMPLATE | |
} | |
#**************************************************************************** | |
# 11. subroutine: gen_verno_src_proj_name | |
#**************************************************************************** | |
sub gen_verno_src_proj_name | |
{ | |
my $template = <<"__TEMPLATE"; | |
kal_char* release_proj_name(void) | |
{ | |
static kal_char proj_name_str[] = "$project_name"; | |
return proj_name_str; | |
} | |
__TEMPLATE | |
} | |
#**************************************************************************** | |
# 12. subroutine: gen_verno_dsp_root | |
#**************************************************************************** | |
sub gen_verno_src_rel_dsp_root | |
{ | |
my $dsp_root = "dsp/"; | |
if ($mtk_modem_arch eq "mt6295") | |
{ | |
$dsp_root = "dsp2/"; | |
} | |
elsif ($mtk_modem_arch eq "mt6297") | |
{ | |
$dsp_root = "dsp3/"; | |
} | |
my $template = <<"__TEMPLATE"; | |
kal_char* release_dsp_root(void) | |
{ | |
static kal_char build_dsp_root_str[] = "$dsp_root"; | |
return build_dsp_root_str; | |
} | |
__TEMPLATE | |
} | |
#**************************************************************************** | |
# 13. subroutine: gen_verno_src_rel_platform | |
#**************************************************************************** | |
sub gen_verno_src_rel_platform { | |
my $template = <<"__TEMPLATE"; | |
kal_char* release_mcu_platform(void) | |
{ | |
#if defined(__MTK_TARGET__) | |
return build_platform_str; | |
#else | |
static kal_char build_platform_str[] = "$platform"; | |
return build_platform_str; | |
#endif | |
} | |
__TEMPLATE | |
} | |
#**************************************************************************** | |
# subroutine: error_handler | |
# input: $error_msg: error message | |
#**************************************************************************** | |
sub error_handler | |
{ | |
my ($error_msg, $file, $line_no) = @_; | |
my $final_error_msg = "GENVERNO ERROR: $error_msg at $file line $line_no\n"; | |
print $final_error_msg; | |
die $final_error_msg; | |
} | |