github.com/m3db/m3@v1.5.1-0.20231129193456-75a402aa583b/src/m3ninx/generated-source-files.mk (about) 1 SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST))) 2 include $(SELF_DIR)/../../.ci/common.mk 3 4 gopath_prefix := $(GOPATH)/src 5 m3ninx_package := github.com/m3db/m3/src/m3ninx 6 m3ninx_package_path := $(gopath_prefix)/$(m3ninx_package) 7 m3x_package := github.com/m3db/m3/src/x 8 m3x_package_path := $(gopath_prefix)/$(m3x_package) 9 10 # Generation rule for all generated types 11 .PHONY: genny-all 12 genny-all: genny-map-all genny-arraypool-all 13 14 # Map generation rule for all generated maps 15 .PHONY: genny-map-all 16 genny-map-all: \ 17 genny-map-segment-builder-postingsmap \ 18 genny-map-segment-builder-fieldsmap \ 19 genny-map-segment-builder-idsmap \ 20 genny-map-segment-mem-fieldsmap \ 21 22 # NB: We use (genny)[1] to combat the lack of generics in Go. It allows us 23 # to declare templat-ized versions of code, and specialize using code 24 # generation. We have a generic HashMap<K,V> implementation in `m3x`, 25 # with two template variables (KeyType and ValueType), along with required 26 # functors (HashFn, EqualsFn, ...). Below, we generate a few specialized 27 # versions required in m3ninx today. 28 # 29 # If we need to generate other specialized map implementations, or other 30 # specialized datastructures, we should add targets similar to the ones below. 31 # 32 # [1]: https://github.com/cheekybits/genny 33 34 # Map generation rule for index/segment/builder.PostingsMap 35 .PHONY: genny-map-segment-builder-postingsmap 36 genny-map-segment-builder-postingsmap: 37 cd $(m3x_package_path) && make byteshashmap-gen \ 38 pkg=builder \ 39 value_type=postings.MutableList \ 40 target_package=$(m3ninx_package)/index/segment/builder \ 41 rename_nogen_key=true \ 42 rename_nogen_value=true \ 43 rename_type_prefix=Postings \ 44 rename_constructor=NewPostingsMap \ 45 rename_constructor_options=PostingsMapOptions 46 # Rename generated map file 47 mv -f $(m3ninx_package_path)/index/segment/builder/map_gen.go $(m3ninx_package_path)/index/segment/builder/postings_map_gen.go 48 mv -f $(m3ninx_package_path)/index/segment/builder/new_map_gen.go $(m3ninx_package_path)/index/segment/builder/postings_map_new.go 49 50 # Map generation rule for index/segment/builder.IDsMap 51 .PHONY: genny-map-segment-builder-idsmap 52 genny-map-segment-builder-idsmap: 53 cd $(m3x_package_path) && make byteshashmap-gen \ 54 pkg=builder \ 55 value_type=struct{} \ 56 target_package=$(m3ninx_package)/index/segment/builder \ 57 rename_nogen_key=true \ 58 rename_nogen_value=true \ 59 rename_type_prefix=IDs \ 60 rename_constructor=NewIDsMap \ 61 rename_constructor_options=IDsMapOptions 62 # Rename generated map file 63 mv -f $(m3ninx_package_path)/index/segment/builder/map_gen.go $(m3ninx_package_path)/index/segment/builder/ids_map_gen.go 64 mv -f $(m3ninx_package_path)/index/segment/builder/new_map_gen.go $(m3ninx_package_path)/index/segment/builder/ids_map_new.go 65 66 67 # Map generation rule for index/segment/builder.fieldsMap 68 .PHONY: genny-map-segment-builder-fieldsmap 69 genny-map-segment-builder-fieldsmap: 70 cd $(m3x_package_path) && make byteshashmap-gen \ 71 pkg=builder \ 72 value_type=*terms \ 73 value_type_alias=terms \ 74 target_package=$(m3ninx_package)/index/segment/builder \ 75 rename_nogen_key=true \ 76 rename_type_prefix=fields \ 77 rename_constructor=newFieldsMap \ 78 rename_constructor_options=fieldsMapOptions 79 # Rename generated map file 80 mv -f $(m3ninx_package_path)/index/segment/builder/map_gen.go $(m3ninx_package_path)/index/segment/builder/fields_map_gen.go 81 mv -f $(m3ninx_package_path)/index/segment/builder/new_map_gen.go $(m3ninx_package_path)/index/segment/builder/fields_map_new.go 82 83 # Map generation rule for index/segment/mem.fieldsMap 84 .PHONY: genny-map-segment-mem-fieldsmap 85 genny-map-segment-mem-fieldsmap: 86 cd $(m3x_package_path) && make byteshashmap-gen \ 87 pkg=mem \ 88 value_type=*concurrentPostingsMap \ 89 value_type_alias=concurrentPostingsMap \ 90 target_package=$(m3ninx_package)/index/segment/mem \ 91 rename_nogen_key=true \ 92 rename_type_prefix=fields \ 93 rename_constructor=newFieldsMap \ 94 rename_constructor_options=fieldsMapOptions 95 # Rename generated map file 96 mv -f $(m3ninx_package_path)/index/segment/mem/map_gen.go $(m3ninx_package_path)/index/segment/mem/fields_map_gen.go 97 mv -f $(m3ninx_package_path)/index/segment/mem/new_map_gen.go $(m3ninx_package_path)/index/segment/mem/fields_map_new.go 98 99 # generation rule for all generated arraypools 100 .PHONY: genny-arraypool-all 101 genny-arraypool-all: \ 102 genny-arraypool-bytes-slice-array-pool \ 103 genny-arraypool-document-array-pool \ 104 genny-arraypool-metadata-array-pool \ 105 106 # arraypool generation rule for ./x/bytes.SliceArrayPool 107 .PHONY: genny-arraypool-bytes-slice-array-pool 108 genny-arraypool-bytes-slice-array-pool: 109 cd $(m3x_package_path) && make genny-arraypool \ 110 pkg=bytes \ 111 elem_type=[]byte \ 112 target_package=$(m3ninx_package)/x/bytes \ 113 out_file=slice_arraypool_gen.go \ 114 rename_type_prefix=Slice \ 115 rename_type_middle=Slice \ 116 rename_constructor=NewSliceArrayPool \ 117 118 # arraypool generation rule for ./doc.DocumentArrayPool 119 .PHONY: genny-arraypool-document-array-pool 120 genny-arraypool-document-array-pool: 121 cd $(m3x_package_path) && make genny-arraypool \ 122 pkg=doc \ 123 elem_type=Document \ 124 target_package=$(m3ninx_package)/doc \ 125 out_file=doc_arraypool_gen.go \ 126 rename_type_prefix=Document \ 127 rename_type_middle=Document \ 128 rename_constructor=NewDocumentArrayPool \ 129 rename_gen_types=true \ 130 131 # arraypool generation rule for ./doc.MetadataArrayPool 132 .PHONY: genny-arraypool-metadata-array-pool 133 genny-arraypool-metadata-array-pool: 134 cd $(m3x_package_path) && make genny-arraypool \ 135 pkg=doc \ 136 elem_type=Metadata \ 137 target_package=$(m3ninx_package)/doc \ 138 out_file=metadata_arraypool_gen.go \ 139 rename_type_prefix=Metadata \ 140 rename_type_middle=Metadata \ 141 rename_constructor=NewMetadataArrayPool \ 142 rename_gen_types=true \