Home | History | Annotate | Download | only in make
      1 # This makefile will generate versioning files based on information from the
      2 # source control system, if it's available.  If it's not, then it will use a
      3 # timestamp
      4 #
      5 # The following variables are specific to the SDK and should be defined locally:
      6 # sdkinfo_target
      7 # sdkinfo_header_filename 
      8 # sdkinfo_header_macro
      9 # sdkinfo_label_macro
     10 # sdkinfo_date_macro
     11 # sdkinfo_version_file
     12 # sdkinfo_version_type
     13 
     14 # Skip all the rules if the target is clean
     15 ifneq "$(MAKECMDGOALS)" "clean"
     16 
     17 # Check if variables are set, if not set to default
     18 ifeq ($(strip $(GREP)),)
     19     GREP := grep
     20 endif
     21 
     22 ifeq ($(strip $(CUT)),)
     23     CUT := cut
     24 endif
     25 
     26 ifeq ($(strip $(ACCUREV)),)
     27     ACCUREV := accurev
     28 endif
     29 
     30 ifneq ($(strip $(OFFICIAL_RELEASE)),)
     31 sdkinfo_official_string := // *** OFFICIAL RELEASE INFO -- Will not auto update
     32 else
     33 sdkinfo_official_string := 
     34 endif
     35 
     36 sdkinfo_official_grep := "*** OFFICIAL RELEASE"
     37 
     38 
     39 # Initialize values to empty
     40 file_official:=
     41 file_data:=
     42 
     43 # Read data from current file (if any)
     44 # First check if file is there
     45 file_exists := $(wildcard $(sdkinfo_header_filename))
     46 ifneq ($(strip $(file_exists)),) 
     47    file_sdkinfo:= $(shell $(GREP) $(sdkinfo_label_macro) $(sdkinfo_header_filename) | $(CUT) -f2 -d\")
     48    file_header_time:= $(shell $(GREP) $(sdkinfo_date_macro) $(sdkinfo_header_filename) | $(CUT) -f3 -d" ")
     49 
     50 ifeq ($(strip $(OFFICIAL_RELEASE)),)
     51   # only set file_official and file_data if the OFFICIAL_RELEASE is NOT set.
     52   # otherwise leave these empty so the file will be regenerated.
     53 
     54 # check if file is marked as an official release internally
     55    file_official:= $(shell $(GREP) $(sdkinfo_official_grep) $(sdkinfo_header_filename))
     56 
     57   # Concat the strings for comparison.  We only want to generate the new file
     58   # if something has changed
     59   file_data:=$(join $(file_sdkinfo), $(file_header_time))
     60 endif
     61 
     62 endif
     63 
     64 
     65 
     66 ifeq ($(strip $(file_official)),)
     67 
     68 
     69 ifeq ($(HOST_ARCH),win32)
     70     DATE := gnu_date
     71     ECHO := gnu_echo
     72     header_date_format := 0x%%Y%%m%%d
     73 else
     74     DATE := date
     75     ECHO := echo
     76     header_date_format := 0x%Y%m%d
     77 endif
     78 
     79 # Check if date_format strings are good.
     80 # On some PCs, this needs to change - not sure why.
     81 time_okay := $(shell $(DATE) -u +"$(header_date_format)")
     82 ifneq (,$(findstring %, $(time_okay)))
     83     # swap settings
     84     ifeq ($(HOST_ARCH),win32)
     85         header_date_format := 0x%Y%m%d
     86     else
     87         header_date_format := 0x%%Y%%m%%d
     88     endif
     89 endif
     90 
     91 
     92 # Set prerequisites since depending what is passed in, we may build multiple
     93 # files
     94 sdkinfo_target_prereq := FORCE
     95 
     96 header_time:= $(shell $(DATE) -u +"$(header_date_format)")
     97 
     98 # Get basis of current accurev workspace
     99 basis_stream := $(strip $(shell $(ACCUREV) info 2>&1 | $(GREP) "Basis:" | $(CUT) -f2 -d":"))
    100 
    101 ifneq ($(strip $(basis_stream)),)
    102     basis_stream_type := $(shell $(ACCUREV) show -fx -s $(basis_stream) streams | $(GREP) "type=" | $(CUT) -f2 -d"\"")
    103     ifeq ($(strip $(basis_stream_type)),passthrough)
    104         parent_basis_stream := $(shell $(ACCUREV) show -fx -s $(basis_stream) streams | $(GREP) "basis=" | $(CUT) -f2 -d"\"")
    105         stream_name := $(parent_basis_stream)
    106         transaction_id := $(shell $(ACCUREV) hist -ft -t "now".1 -s $(parent_basis_stream) | $(GREP) "transaction" | $(CUT) -f1 -d";" | $(CUT) -f2 -d" " )
    107     else 
    108         ifeq ($(strip $(basis_stream_type)),snapshot)
    109             transaction_id := $(shell $(ACCUREV) show -fx -s $(basis_stream) streams | $(GREP) "name=" | $(CUT) -f2 -d"\"")
    110         else # basis is normal stream type
    111             stream_name := $(basis_stream)
    112             transaction_id := $(shell $(ACCUREV) hist -ft -t "now".1 -s $(basis_stream) | $(GREP) "transaction" | $(CUT) -f1 -d";" | $(CUT) -f2 -d" " )
    113         endif
    114     endif
    115 endif
    116 
    117 ifeq ($(strip $(transaction_id)),)
    118     sdkinfo := null
    119 else
    120     sdkinfo := $(transaction_id)
    121 endif
    122 
    123 ifneq ($(strip $(stream_name)),)
    124    sdkinfo := $(stream_name).$(sdkinfo)
    125 endif
    126 
    127 ifneq ($(strip $(sdkinfo_version_file)),)
    128    sdkinfo_target_prereq := $(sdkinfo_version_file) FORCE
    129 endif
    130 
    131 data:=$(join $(sdkinfo), $(header_time))
    132 
    133 # $(info header file $(sdkinfo_header_filename), file data = $(file_data), data = $(data))
    134 
    135 ifneq ($(strip $(file_data)),$(data))
    136 
    137 $(sdkinfo_target): $(sdkinfo_header_filename)
    138 
    139 $(sdkinfo_header_filename): sdkinfo_rule_hdr_macro := $(sdkinfo_header_macro)
    140 $(sdkinfo_header_filename): sdkinfo_rule_label_macro := $(sdkinfo_label_macro)
    141 $(sdkinfo_header_filename): sdkinfo_rule_date_macro := $(sdkinfo_date_macro)
    142 $(sdkinfo_header_filename): sdkinfo_rule_sdkinfo := $(sdkinfo)
    143 $(sdkinfo_header_filename): sdkinfo_rule_official_string := $(sdkinfo_official_string)
    144 $(sdkinfo_header_filename): sdkinfo_rule_time := $(header_time)
    145 $(sdkinfo_header_filename): sdkinfo_rule_file_data := $(file_data)
    146 $(sdkinfo_header_filename): sdkinfo_rule_data := $(data)
    147 
    148 $(sdkinfo_header_filename): $(sdkinfo_target_prereq)
    149 	@$(ECHO) "Writing $@..."
    150 	@$(ECHO) "#ifndef $(sdkinfo_rule_hdr_macro)_H_INCLUDED" > $@
    151 	@$(ECHO) "#define $(sdkinfo_rule_hdr_macro)_H_INCLUDED" >> $@
    152 	@$(ECHO) "" >> $@
    153 	@$(ECHO) "// This header file is automatically generated at build-time" >> $@
    154 	@$(ECHO) "$(sdkinfo_rule_official_string)" >> $@
    155 	@$(ECHO) "" >> $@
    156 	@$(ECHO) "#define $(sdkinfo_rule_label_macro) \"$(sdkinfo_rule_sdkinfo)\"" >> $@
    157 	@$(ECHO) "#define $(sdkinfo_rule_date_macro) $(sdkinfo_rule_time)" >> $@
    158 	@$(ECHO) "" >> $@
    159 	@$(ECHO) "#endif //$(sdkinfo_rule_hdr_macro)_H_INCLUDED" >> $@
    160 endif
    161 
    162 # endif for official release file check
    163 endif
    164 
    165 
    166 
    167 
    168 $(sdkinfo_version_file): sdkinfo_rule_sdkinfo := $(sdkinfo)
    169 $(sdkinfo_version_file): sdkinfo_rule_header_time := $(header_time)
    170 
    171 ifeq ($(strip $(sdkinfo_version_type)),win32)
    172 $(sdkinfo_version_file): FORCE
    173 	@$(ECHO) "Writing $@..."
    174 	@$(ECHO) "STRINGTABLE DISCARDABLE" > $@
    175 	@$(ECHO) "BEGIN" >> $@
    176 	@$(ECHO) "   IDS_PV_VERSION          \"$(sdkinfo_rule_sdkinfo)\"" >> $@
    177 	@$(ECHO) "END" >> $@
    178 	@$(ECHO) "" >> $@
    179 	@$(ECHO) "STRINGTABLE DISCARDABLE" >> $@
    180 	@$(ECHO) "BEGIN" >> $@
    181 	@$(ECHO) "   IDS_PV_BUILD          \"$(sdkinfo_rule_header_time)\"" >> $@
    182 	@$(ECHO) "END" >> $@
    183 endif
    184 
    185 ifeq ($(strip $(sdkinfo_version_type)),winmobile)
    186 $(sdkinfo_version_file): FORCE
    187 	@$(ECHO) "Writing $@..."
    188 	@$(ECHO) "STRINGTABLE" > $@
    189 	@$(ECHO) "BEGIN" >> $@
    190 	@$(ECHO) "   IDS_PV_VERSION          \"$(sdkinfo_rule_sdkinfo)\"" >> $@
    191 	@$(ECHO) "END" >> $@
    192 	@$(ECHO) "" >> $@
    193 endif
    194 
    195 
    196 ifeq ($(strip $(sdkinfo_version_type)),s60v3)
    197 $(sdkinfo_version_file): FORCE
    198 	@$(ECHO) "Writing $@..."
    199 	@$(ECHO) "_LIT(KPVVersionNumber, \"$(sdkinfo_rule_sdkinfo)\");" > $@
    200 	@$(ECHO) "_LIT(KPVBuildNumber, \"$(sdkinfo_rule_header_time)\");" >> $@
    201 	@$(ECHO) "" >> $@
    202 endif
    203 
    204 
    205 # endif for this not being for the clean target
    206 endif 
    207