set(op_DEPS tensor op op_params scope memory)

lite_cc_library(op_params SRCS op_params.cc DEPS tensor any)

add_operator(conv_op basic SRCS conv_op.cc DEPS ${op_DEPS})
add_operator(pool_op basic SRCS pool_op.cc DEPS ${op_DEPS})
add_operator(fc_op basic SRCS fc_op.cc DEPS ${op_DEPS})
add_operator(assign_op basic SRCS assign_op.cc DEPS ${op_DEPS})
add_operator(relu_op basic SRCS relu_op.cc DEPS ${op_DEPS})
add_operator(mul_op basic SRCS mul_op.cc DEPS ${op_DEPS})
add_operator(matmul_op basic SRCS matmul_op.cc DEPS ${op_DEPS})
add_operator(scale_op basic SRCS scale_op.cc DEPS ${op_DEPS})
add_operator(softmax_op basic SRCS softmax_op.cc DEPS ${op_DEPS})
add_operator(reshape_op basic SRCS reshape_op.cc DEPS ${op_DEPS} )
add_operator(batch_norm_op basic SRCS batch_norm_op.cc DEPS ${op_DEPS})
add_operator(feed_op basic SRCS feed_op.cc DEPS ${op_DEPS})
add_operator(fetch_op basic SRCS fetch_op.cc DEPS ${op_DEPS})
add_operator(io_copy_op basic SRCS io_copy_op.cc DEPS ${op_DEPS})
add_operator(io_copy_once_op basic SRCS io_copy_once_op.cc DEPS io_copy_op ${op_DEPS})
add_operator(activation_ops basic SRCS activation_ops.cc DEPS ${op_DEPS})
add_operator(elementwise_ops basic SRCS elementwise_ops.cc DEPS ${op_DEPS})
add_operator(lrn_op_lite basic SRCS lrn_op.cc DEPS ${op_DEPS})
add_operator(decode_bboxes_op_lite basic SRCS decode_bboxes_op.cc DEPS ${op_DEPS})
add_operator(box_coder_op_lite basic SRCS box_coder_op.cc DEPS ${op_DEPS})
add_operator(multiclass_nms_op_lite basic SRCS multiclass_nms_op.cc DEPS ${op_DEPS})
add_operator(fusion_elementwise_activation_ops basic SRCS fusion_elementwise_activation_ops.cc DEPS elementwise_ops ${op_DEPS})
add_operator(mean_op basic SRCS mean_op.cc DEPS ${op_DEPS})
add_operator(fill_constant_op basic SRCS fill_constant_op.cc DEPS ${op_DEPS})
#add_operator(sgd_op basic SRCS sgd_op.cc DEPS ${op_DEPS})
add_operator(uniform_random_op basic SRCS uniform_random_op.cc DEPS ${op_DEPS})
add_operator(power_op basic SRCS power_op.cc DEPS ${op_DEPS})
add_operator(shuffle_channel_op basic SRCS shuffle_channel_op.cc DEPS ${op_DEPS})
add_operator(yolo_box_op basic SRCS yolo_box_op.cc DEPS ${op_DEPS})
add_operator(interpolate_op basic SRCS interpolate_op.cc DEPS ${op_DEPS})
add_operator(argmax_op basic SRCS argmax_op.cc DEPS ${op_DEPS})
add_operator(axpy_op basic SRCS axpy_op.cc DEPS ${op_DEPS})
add_operator(gru_unit_op basic SRCS gru_unit_op.cc DEPS ${op_DEPS})
add_operator(gru_op basic SRCS gru_op.cc DEPS ${op_DEPS})
add_operator(layout_op basic SRCS layout_op.cc DEPS ${op_DEPS})
add_operator(layout_once_op basic SRCS layout_once_op.cc DEPS ${op_DEPS})
add_operator(prior_box_op basic SRCS prior_box_op.cc DEPS ${op_DEPS})
add_operator(density_prior_box_op basic SRCS density_prior_box_op.cc DEPS ${op_DEPS})
add_operator(dropout_op basic SRCS dropout_op.cc DEPS ${op_DEPS})
add_operator(concat_op basic SRCS concat_op.cc DEPS ${op_DEPS})
add_operator(pad2d_op basic SRCS pad2d_op.cc DEPS ${op_DEPS})
add_operator(negative_op basic SRCS negative_op.cc DEPS ${op_DEPS})
add_operator(crop_op basic SRCS crop_op.cc DEPS ${op_DEPS})
add_operator(calib_op basic SRCS calib_op.cc DEPS ${op_DEPS})
add_operator(calib_once_op basic SRCS calib_once_op.cc DEPS ${op_DEPS})
add_operator(split_op basic SRCS split_op.cc DEPS ${op_DEPS})
add_operator(transpose_op basic SRCS transpose_op.cc DEPS ${op_DEPS})
add_operator(fake_quant basic SRCS fake_quantize_moving_avg_max_abs.cc DEPS ${op_DEPS})
add_operator(fake_dequant basic SRCS fake_dequantize_max_abs.cc DEPS ${op_DEPS})
add_operator(conv_transpose_op basic SRCS conv_transpose_op.cc DEPS ${op_DEPS})
add_operator(graph_op basic SRCS graph_op.cc DEPS ${op_DEPS})
add_operator(expand_op_lite basic SRCS expand_op.cc DEPS ${op_DEPS})
add_operator(reduce_max_op_lite basic SRCS reduce_max_op.cc DEPS ${op_DEPS})
add_operator(norm_op basic SRCS norm_op.cc DEPS ${op_DEPS})
add_operator(shape_op_lite basic SRCS shape_op.cc DEPS ${op_DEPS})
add_operator(sequence_expand_op_lite basic SRCS sequence_expand_op.cc DEPS ${op_DEPS})
add_operator(squeeze_op_lite basic SRCS squeeze_op.cc DEPS ${op_DEPS})
add_operator(unsqueeze_op_lite basic SRCS unsqueeze_op.cc DEPS ${op_DEPS})
add_operator(im2sequence_op basic SRCS im2sequence_op.cc DEPS ${op_DEPS})
add_operator(gather_op basic SRCS gather_op.cc DEPS ${op_DEPS})
add_operator(reduce_mean_op basic SRCS reduce_mean_op.cc DEPS ${op_DEPS})
add_operator(stack_op basic SRCS stack_op.cc DEPS ${op_DEPS})
add_operator(cast_op_lite basic SRCS cast_op.cc DEPS ${op_DEPS})
add_operator(affine_channel_op basic SRCS affine_channel_op.cc DEPS ${op_DEPS})
add_operator(anchor_generator_op basic SRCS anchor_generator_op.cc DEPS ${op_DEPS})
add_operator(generate_proposals_op basic SRCS generate_proposals_op.cc DEPS ${op_DEPS})
add_operator(roi_align_op basic SRCS roi_align_op.cc DEPS ${op_DEPS})
add_operator(box_clip_op basic SRCS box_clip_op.cc DEPS ${op_DEPS})
add_operator(flatten_op basic SRCS flatten_op.cc DEPS ${op_DEPS})
add_operator(fake_quantize_range_abs_max_op basic SRCS fake_quantize_range_abs_max.cc DEPS ${op_DEPS})
add_operator(sequence_expand_as_op_lite basic SRCS sequence_expand_as_op.cc DEPS ${op_DEPS})
add_operator(range_op basic SRCS range_op.cc DEPS ${op_DEPS})
add_operator(assign_value_op basic SRCS assign_value_op.cc DEPS ${op_DEPS})
add_operator(fake_quantize_dequantize_moving_avg_abs_max_op basic SRCS fake_quantize_dequantize_moving_avg_max_abs.cc DEPS ${op_DEPS})

# for OCR specific
add_operator(while_op extra SRCS while_op.cc DEPS ${op_DEPS})
add_operator(lookup_table_op extra SRCS lookup_table_op.cc DEPS ${op_DEPS})
add_operator(beam_search_decode_op extra SRCS beam_search_decode_op.cc DEPS ${op_DEPS})
add_operator(graph_op_lite extra SRCS graph_op.cc DEPS ${op_DEPS})
add_operator(logical_xor  extra SRCS logical_op.cc DEPS ${op_DEPS})
add_operator(logical_and  extra SRCS logical_op.cc DEPS ${op_DEPS})
add_operator(logical_or  extra SRCS logical_op.cc DEPS ${op_DEPS})
add_operator(logical_not  extra SRCS logical_op.cc DEPS ${op_DEPS})
add_operator(less_than  extra SRCS compare_op.cc DEPS ${op_DEPS})
add_operator(equal  extra SRCS compare_op.cc DEPS ${op_DEPS})
add_operator(not_equal  extra SRCS compare_op.cc DEPS ${op_DEPS})
add_operator(less_equal  extra SRCS compare_op.cc DEPS ${op_DEPS})
add_operator(greater_than  extra SRCS compare_op.cc DEPS ${op_DEPS})
add_operator(greater_equal  extra SRCS compare_op.cc DEPS ${op_DEPS})
add_operator(read_from_array_op extra SRCS read_from_array_op.cc DEPS ${op_DEPS})
add_operator(beam_search_op extra SRCS beam_search_op.cc DEPS ${op_DEPS})
add_operator(sequence_pool extra SRCS sequence_pool_op.cc DEPS ${op_DEPS})
add_operator(lod_reset_op extra SRCS lod_reset_op.cc DEPS ${op_DEPS})
add_operator(is_empty extra SRCS is_empty_op.cc DEPS ${op_DEPS})
add_operator(slice_op_lite basic SRCS slice_op.cc DEPS ${op_DEPS})
add_operator(write_to_array_op extra SRCS write_to_array_op.cc DEPS ${op_DEPS})
add_operator(topk_op extra SRCS topk_op.cc DEPS ${op_DEPS})
add_operator(increment_op extra SRCS increment_op.cc DEPS ${op_DEPS})
add_operator(layer_norm_op extra SRCS layer_norm_op.cc DEPS ${op_DEPS})
add_operator(sequence_softmax_op extra SRCS sequence_softmax_op.cc DEPS ${op_DEPS})


if (NOT LITE_WITH_X86)
    lite_cc_test(test_fc_op SRCS fc_op_test.cc
                DEPS fc_op memory
                X86_DEPS fc_compute_x86
                ARM_DEPS fc_compute_arm)
    lite_cc_test(test_pool_op SRCS pool_op_test.cc
                DEPS pool_op memory
                ARM_DEPS pool_compute_arm)
    lite_cc_test(test_scale_op SRCS scale_op_test.cc DEPS scale_op memory)
    lite_cc_test(test_softmax_op SRCS softmax_op_test.cc DEPS softmax_op memory)
    #lite_cc_test(test_reshape_op SRCS reshape_op_test.cc DEPS reshape_op memory)
    lite_cc_test(test_batch_norm_op SRCS batch_norm_op_test.cc DEPS batch_norm_op memory)
    lite_cc_test(test_concat_op SRCS concat_op_test.cc DEPS concat_op memory scope)
    lite_cc_test(test_calib_op SRCS calib_op_test.cc DEPS calib_op memory ARM_DEPS calib_compute_arm)
    lite_cc_test(test_fusion_elementwise_activation_ops
                SRCS fusion_elementwise_activation_ops_test.cc
                DEPS fusion_elementwise_activation_ops memory)
    lite_cc_test(test_transpose_op SRCS transpose_op_test.cc DEPS transpose_op memory)
endif()
