first
parent
d617a3fb16
commit
c806ec7b98
Binary file not shown.
|
@ -1,550 +0,0 @@
|
|||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2017 - 2018 by Rockchip Corp. All rights reserved.
|
||||
*
|
||||
* The material in this file is confidential and contains trade secrets
|
||||
* of Rockchip Corporation. This is proprietary information owned by
|
||||
* Rockchip Corporation. No part of this work may be disclosed,
|
||||
* reproduced, copied, transmitted, or used in any way for any purpose,
|
||||
* without the express written permission of Rockchip Corporation.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
#ifndef _RKNN_RUNTIME_H
|
||||
#define _RKNN_RUNTIME_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/*
|
||||
Definition of extended flag for rknn_init.
|
||||
*/
|
||||
/* set high priority context. */
|
||||
#define RKNN_FLAG_PRIOR_HIGH 0x00000000
|
||||
|
||||
/* set medium priority context */
|
||||
#define RKNN_FLAG_PRIOR_MEDIUM 0x00000001
|
||||
|
||||
/* set low priority context. */
|
||||
#define RKNN_FLAG_PRIOR_LOW 0x00000002
|
||||
|
||||
/* asynchronous mode.
|
||||
when enable, rknn_outputs_get will not block for too long because it directly retrieves the result of
|
||||
the previous frame which can increase the frame rate on single-threaded mode, but at the cost of
|
||||
rknn_outputs_get not retrieves the result of the current frame.
|
||||
in multi-threaded mode you do not need to turn this mode on. */
|
||||
#define RKNN_FLAG_ASYNC_MASK 0x00000004
|
||||
|
||||
/* collect performance mode.
|
||||
when enable, you can get detailed performance reports via rknn_query(ctx, RKNN_QUERY_PERF_DETAIL, ...),
|
||||
but it will reduce the frame rate. */
|
||||
#define RKNN_FLAG_COLLECT_PERF_MASK 0x00000008
|
||||
|
||||
/*
|
||||
save pre-compile model.
|
||||
*/
|
||||
#define RKNN_FLAG_PRECOMPILE_MASK 0x00000020
|
||||
|
||||
/*
|
||||
Error code returned by the RKNN API.
|
||||
*/
|
||||
#define RKNN_SUCC 0 /* execute succeed. */
|
||||
#define RKNN_ERR_FAIL -1 /* execute failed. */
|
||||
#define RKNN_ERR_TIMEOUT -2 /* execute timeout. */
|
||||
#define RKNN_ERR_DEVICE_UNAVAILABLE -3 /* device is unavailable. */
|
||||
#define RKNN_ERR_MALLOC_FAIL -4 /* memory malloc fail. */
|
||||
#define RKNN_ERR_PARAM_INVALID -5 /* parameter is invalid. */
|
||||
#define RKNN_ERR_MODEL_INVALID -6 /* model is invalid. */
|
||||
#define RKNN_ERR_CTX_INVALID -7 /* context is invalid. */
|
||||
#define RKNN_ERR_INPUT_INVALID -8 /* input is invalid. */
|
||||
#define RKNN_ERR_OUTPUT_INVALID -9 /* output is invalid. */
|
||||
#define RKNN_ERR_DEVICE_UNMATCH -10 /* the device is unmatch, please update rknn sdk
|
||||
and npu driver/firmware. */
|
||||
#define RKNN_ERR_INCOMPATILE_PRE_COMPILE_MODEL -11 /* This RKNN model use pre_compile mode, but not compatible with current driver. */
|
||||
//add by chifred: for reporting optimization version bug info
|
||||
#define RKNN_ERR_INCOMPATILE_OPTIMIZATION_LEVEL_VERSION -12 /* This RKNN model set optimization level, but not compatible with current driver. */
|
||||
#define RKNN_ERR_TARGET_PLATFORM_UNMATCH -13 /* This RKNN model set target platform, but not compatible with current platform. */
|
||||
//chifred add end
|
||||
#define RKNN_ERR_NON_PRE_COMPILED_MODEL_ON_MINI_DRIVER -14 /* This RKNN model is not a pre-compiled model, but the npu driver is mini driver. */
|
||||
|
||||
/*
|
||||
Definition for tensor
|
||||
*/
|
||||
#define RKNN_MAX_DIMS 16 /* maximum dimension of tensor. */
|
||||
#define RKNN_MAX_NAME_LEN 256 /* maximum name lenth of tensor. */
|
||||
|
||||
|
||||
|
||||
#ifdef __arm__
|
||||
typedef uint32_t rknn_context;
|
||||
#else
|
||||
typedef uint64_t rknn_context;
|
||||
#endif
|
||||
|
||||
/*
|
||||
The query command for rknn_query
|
||||
*/
|
||||
typedef enum _rknn_query_cmd {
|
||||
RKNN_QUERY_IN_OUT_NUM = 0, /* query the number of input & output tensor. */
|
||||
RKNN_QUERY_INPUT_ATTR, /* query the attribute of input tensor. */
|
||||
RKNN_QUERY_OUTPUT_ATTR, /* query the attribute of output tensor. */
|
||||
RKNN_QUERY_PERF_DETAIL, /* query the detail performance, need set
|
||||
RKNN_FLAG_COLLECT_PERF_MASK when call rknn_init. */
|
||||
RKNN_QUERY_PERF_RUN, /* query the time of run. */
|
||||
RKNN_QUERY_SDK_VERSION, /* query the sdk & driver version */
|
||||
RKNN_QUERY_PRE_COMPILE, /* query the pre compile model */
|
||||
|
||||
RKNN_QUERY_CMD_MAX
|
||||
} rknn_query_cmd;
|
||||
|
||||
/*
|
||||
the tensor data type.
|
||||
*/
|
||||
typedef enum _rknn_tensor_type {
|
||||
RKNN_TENSOR_FLOAT32 = 0, /* data type is float32. */
|
||||
RKNN_TENSOR_FLOAT16, /* data type is float16. */
|
||||
RKNN_TENSOR_INT8, /* data type is int8. */
|
||||
RKNN_TENSOR_UINT8, /* data type is uint8. */
|
||||
RKNN_TENSOR_INT16, /* data type is int16. */
|
||||
|
||||
RKNN_TENSOR_TYPE_MAX
|
||||
} rknn_tensor_type;
|
||||
|
||||
inline static const char *get_type_string(rknn_tensor_type type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case RKNN_TENSOR_FLOAT32:
|
||||
return "FP32";
|
||||
case RKNN_TENSOR_FLOAT16:
|
||||
return "FP16";
|
||||
case RKNN_TENSOR_INT8:
|
||||
return "INT8";
|
||||
case RKNN_TENSOR_UINT8:
|
||||
return "UINT8";
|
||||
case RKNN_TENSOR_INT16:
|
||||
return "INT16";
|
||||
default:
|
||||
return "UNKNOW";
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
the quantitative type.
|
||||
*/
|
||||
typedef enum _rknn_tensor_qnt_type {
|
||||
RKNN_TENSOR_QNT_NONE = 0, /* none. */
|
||||
RKNN_TENSOR_QNT_DFP, /* dynamic fixed point. */
|
||||
RKNN_TENSOR_QNT_AFFINE_ASYMMETRIC, /* asymmetric affine. */
|
||||
|
||||
RKNN_TENSOR_QNT_MAX
|
||||
} rknn_tensor_qnt_type;
|
||||
|
||||
inline static const char *get_qnt_type_string(rknn_tensor_qnt_type type)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case RKNN_TENSOR_QNT_NONE:
|
||||
return "NONE";
|
||||
case RKNN_TENSOR_QNT_DFP:
|
||||
return "DFP";
|
||||
case RKNN_TENSOR_QNT_AFFINE_ASYMMETRIC:
|
||||
return "AFFINE";
|
||||
default:
|
||||
return "UNKNOW";
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
the tensor data format.
|
||||
*/
|
||||
typedef enum _rknn_tensor_format {
|
||||
RKNN_TENSOR_NCHW = 0, /* data format is NCHW. */
|
||||
RKNN_TENSOR_NHWC, /* data format is NHWC. */
|
||||
|
||||
RKNN_TENSOR_FORMAT_MAX
|
||||
} rknn_tensor_format;
|
||||
|
||||
inline static const char *get_format_string(rknn_tensor_format fmt)
|
||||
{
|
||||
switch (fmt)
|
||||
{
|
||||
case RKNN_TENSOR_NCHW:
|
||||
return "NCHW";
|
||||
case RKNN_TENSOR_NHWC:
|
||||
return "NHWC";
|
||||
default:
|
||||
return "UNKNOW";
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
the information for RKNN_QUERY_IN_OUT_NUM.
|
||||
*/
|
||||
typedef struct _rknn_input_output_num {
|
||||
uint32_t n_input; /* the number of input. */
|
||||
uint32_t n_output; /* the number of output. */
|
||||
} rknn_input_output_num;
|
||||
|
||||
/*
|
||||
the information for RKNN_QUERY_INPUT_ATTR / RKNN_QUERY_OUTPUT_ATTR.
|
||||
*/
|
||||
typedef struct _rknn_tensor_attr {
|
||||
uint32_t index; /* input parameter, the index of input/output tensor,
|
||||
need set before call rknn_query. */
|
||||
|
||||
uint32_t n_dims; /* the number of dimensions. */
|
||||
uint32_t dims[RKNN_MAX_DIMS]; /* the dimensions array. */
|
||||
char name[RKNN_MAX_NAME_LEN]; /* the name of tensor. */
|
||||
|
||||
uint32_t n_elems; /* the number of elements. */
|
||||
uint32_t size; /* the bytes size of tensor. */
|
||||
|
||||
rknn_tensor_format fmt; /* the data format of tensor. */
|
||||
rknn_tensor_type type; /* the data type of tensor. */
|
||||
rknn_tensor_qnt_type qnt_type; /* the quantitative type of tensor. */
|
||||
int8_t fl; /* fractional length for RKNN_TENSOR_QNT_DFP. */
|
||||
uint32_t zp; /* zero point for RKNN_TENSOR_QNT_AFFINE_ASYMMETRIC. */
|
||||
float scale; /* scale for RKNN_TENSOR_QNT_AFFINE_ASYMMETRIC. */
|
||||
} rknn_tensor_attr;
|
||||
|
||||
/*
|
||||
the information for RKNN_QUERY_PERF_DETAIL.
|
||||
*/
|
||||
typedef struct _rknn_perf_detail {
|
||||
char* perf_data; /* the string pointer of perf detail. don't need free it by user. */
|
||||
uint64_t data_len; /* the string length. */
|
||||
} rknn_perf_detail;
|
||||
|
||||
/*
|
||||
the information for RKNN_QUERY_PERF_RUN.
|
||||
*/
|
||||
typedef struct _rknn_perf_run {
|
||||
int64_t run_duration; /* real inference time (us) */
|
||||
} rknn_perf_run;
|
||||
|
||||
/*
|
||||
the information for RKNN_QUERY_SDK_VERSION.
|
||||
*/
|
||||
typedef struct _rknn_sdk_version {
|
||||
char api_version[256]; /* the version of rknn api. */
|
||||
char drv_version[256]; /* the version of rknn driver. */
|
||||
} rknn_sdk_version;
|
||||
|
||||
/*
|
||||
The flags of rknn_tensor_mem.
|
||||
*/
|
||||
typedef enum _rknn_tensor_mem_flags {
|
||||
RKNN_TENSOR_MEMORY_FLAGS_UNKNOWN = 0,
|
||||
RKNN_TENSOR_MEMORY_FLAGS_ALLOC_INSIDE = 1, /*Used to mark in rknn_destroy_mem() whether it is necessary to release the "mem" pointer itself.
|
||||
If the flag RKNN_TENSOR_MEMORY_FLAGS_ALLOC_INSIDE is set, rknn_destroy_mem() will call free(mem).*/
|
||||
|
||||
} rknn_tensor_mem_flags;
|
||||
|
||||
|
||||
/*
|
||||
the memory information of tensor.
|
||||
*/
|
||||
typedef struct _rknn_tensor_memory {
|
||||
void* logical_addr; /* the virtual address of tensor buffer. */
|
||||
uint64_t physical_addr; /* the physical address of tensor buffer. */
|
||||
int32_t fd; /* the fd of tensor buffer. */
|
||||
uint32_t size; /* the size of tensor buffer. */
|
||||
uint32_t handle; /* the handle tensor buffer. */
|
||||
void * priv_data; /* the data which is reserved. */
|
||||
uint64_t reserved_flag; /* the flag which is reserved. */
|
||||
} rknn_tensor_mem;
|
||||
|
||||
/*
|
||||
the input information for rknn_input_set.
|
||||
*/
|
||||
typedef struct _rknn_input {
|
||||
uint32_t index; /* the input index. */
|
||||
void* buf; /* the input buf for index. */
|
||||
uint32_t size; /* the size of input buf. */
|
||||
uint8_t pass_through; /* pass through mode.
|
||||
if TRUE, the buf data is passed directly to the input node of the rknn model
|
||||
without any conversion. the following variables do not need to be set.
|
||||
if FALSE, the buf data is converted into an input consistent with the model
|
||||
according to the following type and fmt. so the following variables
|
||||
need to be set.*/
|
||||
rknn_tensor_type type; /* the data type of input buf. */
|
||||
rknn_tensor_format fmt; /* the data format of input buf.
|
||||
currently the internal input format of NPU is NCHW by default.
|
||||
so entering NCHW data can avoid the format conversion in the driver. */
|
||||
} rknn_input;
|
||||
|
||||
/*
|
||||
the output information for rknn_outputs_get.
|
||||
*/
|
||||
typedef struct _rknn_output {
|
||||
uint8_t want_float; /* want transfer output data to float */
|
||||
uint8_t is_prealloc; /* whether buf is pre-allocated.
|
||||
if true, the following variables need to be set.
|
||||
if false, The following variables do not need to be set. */
|
||||
uint32_t index; /* the output index. */
|
||||
void* buf; /* the output buf for index.
|
||||
when is_prealloc = FALSE and rknn_outputs_release called,
|
||||
this buf pointer will be free and don't use it anymore. */
|
||||
uint32_t size; /* the size of output buf. */
|
||||
} rknn_output;
|
||||
|
||||
/*
|
||||
the extend information for rknn_run.
|
||||
*/
|
||||
typedef struct _rknn_run_extend {
|
||||
uint64_t frame_id; /* output parameter, indicate current frame id of run. */
|
||||
} rknn_run_extend;
|
||||
|
||||
/*
|
||||
the extend information for rknn_outputs_get.
|
||||
*/
|
||||
typedef struct _rknn_output_extend {
|
||||
uint64_t frame_id; /* output parameter, indicate the frame id of outputs, corresponds to
|
||||
struct rknn_run_extend.frame_id.*/
|
||||
} rknn_output_extend;
|
||||
|
||||
/*
|
||||
the information for RKNN_QUERY_RKNN_PRECOMPILE.
|
||||
*/
|
||||
typedef struct _rknn_precompile {
|
||||
void* model_data; /* the pointer of precompile model. don't need free it by user. */
|
||||
uint32_t data_len; /* the model length. */
|
||||
} rknn_precompile;
|
||||
|
||||
/* rknn_init
|
||||
|
||||
initial the context and load the rknn model.
|
||||
|
||||
input:
|
||||
rknn_context* context the pointer of context handle.
|
||||
void* model pointer to the rknn model.
|
||||
uint32_t size the size of rknn model.
|
||||
uint32_t flag extend flag, see the define of RKNN_FLAG_XXX_XXX.
|
||||
return:
|
||||
int error code.
|
||||
*/
|
||||
int rknn_init(rknn_context* context, void* model, uint32_t size, uint32_t flag);
|
||||
|
||||
|
||||
/* rknn_destroy
|
||||
|
||||
unload the rknn model and destroy the context.
|
||||
|
||||
input:
|
||||
rknn_context context the handle of context.
|
||||
return:
|
||||
int error code.
|
||||
*/
|
||||
int rknn_destroy(rknn_context context);
|
||||
|
||||
|
||||
/* rknn_query
|
||||
|
||||
query the information about model or others. see rknn_query_cmd.
|
||||
|
||||
input:
|
||||
rknn_context context the handle of context.
|
||||
rknn_query_cmd cmd the command of query.
|
||||
void* info the buffer point of information.
|
||||
uint32_t size the size of information.
|
||||
return:
|
||||
int error code.
|
||||
*/
|
||||
int rknn_query(rknn_context context, rknn_query_cmd cmd, void* info, uint32_t size);
|
||||
|
||||
|
||||
/* rknn_inputs_set
|
||||
|
||||
set inputs information by input index of rknn model.
|
||||
inputs information see rknn_input.
|
||||
|
||||
input:
|
||||
rknn_context context the handle of context.
|
||||
uint32_t n_inputs the number of inputs.
|
||||
rknn_input inputs[] the arrays of inputs information, see rknn_input.
|
||||
return:
|
||||
int error code
|
||||
*/
|
||||
int rknn_inputs_set(rknn_context context, uint32_t n_inputs, rknn_input inputs[]);
|
||||
|
||||
|
||||
/* rknn_inputs_map
|
||||
|
||||
map inputs tensor memory information by input index of rknn model.
|
||||
inputs information see rknn_input.
|
||||
|
||||
input:
|
||||
rknn_context context the handle of context.
|
||||
uint32_t n_inputs the number of inputs.
|
||||
rknn_tensor_mem mem[] the array of tensor memory information
|
||||
return:
|
||||
int error code
|
||||
*/
|
||||
int rknn_inputs_map(rknn_context context, uint32_t n_inputs, rknn_tensor_mem mem[]);
|
||||
|
||||
|
||||
/* rknn_inputs_sync
|
||||
|
||||
synchronize inputs tensor buffer by input index of rknn model.
|
||||
|
||||
input:
|
||||
rknn_context context the handle of context.
|
||||
uint32_t n_inputs the number of inputs.
|
||||
rknn_tensor_mem mem[] the array of tensor memory information
|
||||
return:
|
||||
int error code
|
||||
*/
|
||||
int rknn_inputs_sync(rknn_context context, uint32_t n_inputs, rknn_tensor_mem mem[]);
|
||||
|
||||
|
||||
/* rknn_inputs_unmap
|
||||
|
||||
unmap inputs tensor memory information by input index of rknn model.
|
||||
inputs information see rknn_input.
|
||||
|
||||
input:
|
||||
rknn_context context the handle of context.
|
||||
uint32_t n_inputs the number of inputs.
|
||||
rknn_tensor_mem mem[] the array of tensor memory information
|
||||
return:
|
||||
int error code
|
||||
*/
|
||||
int rknn_inputs_unmap(rknn_context context, uint32_t n_inputs, rknn_tensor_mem mem[]);
|
||||
|
||||
|
||||
/* rknn_run
|
||||
|
||||
run the model to execute inference.
|
||||
|
||||
input:
|
||||
rknn_context context the handle of context.
|
||||
rknn_run_extend* extend the extend information of run.
|
||||
return:
|
||||
int error code.
|
||||
*/
|
||||
int rknn_run(rknn_context context, rknn_run_extend* extend);
|
||||
|
||||
|
||||
/* rknn_outputs_get
|
||||
|
||||
wait the inference to finish and get the outputs.
|
||||
this function will block until inference finish.
|
||||
the results will set to outputs[].
|
||||
|
||||
input:
|
||||
rknn_context context the handle of context.
|
||||
uint32_t n_outputs the number of outputs.
|
||||
rknn_output outputs[] the arrays of output, see rknn_output.
|
||||
rknn_output_extend* the extend information of output.
|
||||
return:
|
||||
int error code.
|
||||
*/
|
||||
int rknn_outputs_get(rknn_context context, uint32_t n_outputs, rknn_output outputs[], rknn_output_extend* extend);
|
||||
|
||||
|
||||
/* rknn_outputs_release
|
||||
|
||||
release the outputs that get by rknn_outputs_get.
|
||||
after called, the rknn_output[x].buf get from rknn_outputs_get will
|
||||
also be free when rknn_output[x].is_prealloc = FALSE.
|
||||
|
||||
input:
|
||||
rknn_context context the handle of context.
|
||||
uint32_t n_ouputs the number of outputs.
|
||||
rknn_output outputs[] the arrays of output.
|
||||
return:
|
||||
int error code
|
||||
*/
|
||||
int rknn_outputs_release(rknn_context context, uint32_t n_ouputs, rknn_output outputs[]);
|
||||
|
||||
|
||||
/* rknn_outputs_map
|
||||
|
||||
map the model output tensors memory information.
|
||||
The difference between this function and "rknn_outputs_get" is
|
||||
that it directly maps the model output tensor memory location to the user.
|
||||
|
||||
input:
|
||||
rknn_context context the handle of context.
|
||||
uint32_t n_outputs the number of outputs.
|
||||
rknn_tensor_mem mem[] the array of tensor memory information
|
||||
return:
|
||||
int error code.
|
||||
*/
|
||||
int rknn_outputs_map(rknn_context context, uint32_t n_outputs, rknn_tensor_mem mem[]);
|
||||
|
||||
/* rknn_outputs_sync
|
||||
|
||||
synchronize the output tensors buffer to ensure cache cohenrency, wait the inference to finish.
|
||||
|
||||
input:
|
||||
rknn_context context the handle of context.
|
||||
uint32_t n_outputs the number of outputs.
|
||||
rknn_tensor_mem mem[] the array of tensor memory information
|
||||
return:
|
||||
int error code.
|
||||
*/
|
||||
int rknn_outputs_sync(rknn_context context, uint32_t n_outputs, rknn_tensor_mem mem[]);
|
||||
|
||||
/* rknn_outputs_unmap
|
||||
|
||||
unmap the outputs memory information that get by rknn_outputs_map.
|
||||
|
||||
input:
|
||||
rknn_context context the handle of context.
|
||||
uint32_t n_ouputs the number of outputs.
|
||||
rknn_tensor_mem mem[] the array of tensor memory information
|
||||
return:
|
||||
int error code
|
||||
*/
|
||||
int rknn_outputs_unmap(rknn_context context, uint32_t n_ouputs, rknn_tensor_mem mem[]);
|
||||
|
||||
/* rknn_create_mem (memory allocated inside)
|
||||
|
||||
Create tensor memory. This API require libdrm support!
|
||||
|
||||
input:
|
||||
rknn_context ctx the handle of context.
|
||||
uint64_t size the size of tensor buffer.
|
||||
return:
|
||||
rknn_tensor_mem the pointer of tensor memory information.
|
||||
*/
|
||||
rknn_tensor_mem* rknn_create_mem(rknn_context ctx, uint64_t size);
|
||||
|
||||
/* rknn_destroy_mem (support allocate inside and outside)
|
||||
|
||||
destroy tensor memory.
|
||||
|
||||
input:
|
||||
rknn_context ctx the handle of context.
|
||||
rknn_tensor_mem *mem the pointer of tensor memory information.
|
||||
return:
|
||||
int error code
|
||||
*/
|
||||
int rknn_destroy_mem(rknn_context ctx, rknn_tensor_mem *mem);
|
||||
|
||||
|
||||
|
||||
/* rknn_set_io_mem
|
||||
|
||||
set the input and output tensors buffer.
|
||||
|
||||
input:
|
||||
rknn_context ctx the handle of context.
|
||||
rknn_tensor_mem *mem the array of tensor memory information.
|
||||
rknn_tensor_attr *attr the attribute of input or output tensor buffer.
|
||||
return:
|
||||
int error code.
|
||||
*/
|
||||
int rknn_set_io_mem(rknn_context ctx, rknn_tensor_mem *mem, rknn_tensor_attr *attr);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} //extern "C"
|
||||
#endif
|
||||
|
||||
#endif //_RKNN_RUNTIME_H
|
|
@ -1,30 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2016 Rockchip Electronics Co., Ltd.
|
||||
* Authors:
|
||||
* Zhiqin Wei <wzq@rock-chips.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef _rga_utils_h_
|
||||
#define _rga_utils_h_
|
||||
|
||||
// -------------------------------------------------------------------------------
|
||||
float get_bpp_from_format(int format);
|
||||
int get_buf_from_file(void *buf, int f, int sw, int sh, int index);
|
||||
int output_buf_data_to_file(void *buf, int f, int sw, int sh, int index);
|
||||
const char *translate_format_str(int format);
|
||||
int get_buf_from_file_AFBC(void *buf, int f, int sw, int sh, int index);
|
||||
int output_buf_data_to_file_AFBC(void *buf, int f, int sw, int sh, int index);
|
||||
#endif
|
||||
|
|
@ -1,963 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2020 Rockchip Electronics Co., Ltd.
|
||||
* Authors:
|
||||
* PutinLee <putin.lee@rock-chips.com>
|
||||
* Cerf Yu <cerf.yu@rock-chips.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef _im2d_h_
|
||||
#define _im2d_h_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifndef IM_API
|
||||
#define IM_API /* define API export as needed */
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
/* Rotation */
|
||||
IM_HAL_TRANSFORM_ROT_90 = 1 << 0,
|
||||
IM_HAL_TRANSFORM_ROT_180 = 1 << 1,
|
||||
IM_HAL_TRANSFORM_ROT_270 = 1 << 2,
|
||||
IM_HAL_TRANSFORM_FLIP_H = 1 << 3,
|
||||
IM_HAL_TRANSFORM_FLIP_V = 1 << 4,
|
||||
IM_HAL_TRANSFORM_FLIP_H_V = 1 << 5,
|
||||
IM_HAL_TRANSFORM_MASK = 0x3f,
|
||||
|
||||
/*
|
||||
* Blend
|
||||
* Additional blend usage, can be used with both source and target configs.
|
||||
* If none of the below is set, the default "SRC over DST" is applied.
|
||||
*/
|
||||
IM_ALPHA_BLEND_SRC_OVER = 1 << 6, /* Default, Porter-Duff "SRC over DST" */
|
||||
IM_ALPHA_BLEND_SRC = 1 << 7, /* Porter-Duff "SRC" */
|
||||
IM_ALPHA_BLEND_DST = 1 << 8, /* Porter-Duff "DST" */
|
||||
IM_ALPHA_BLEND_SRC_IN = 1 << 9, /* Porter-Duff "SRC in DST" */
|
||||
IM_ALPHA_BLEND_DST_IN = 1 << 10, /* Porter-Duff "DST in SRC" */
|
||||
IM_ALPHA_BLEND_SRC_OUT = 1 << 11, /* Porter-Duff "SRC out DST" */
|
||||
IM_ALPHA_BLEND_DST_OUT = 1 << 12, /* Porter-Duff "DST out SRC" */
|
||||
IM_ALPHA_BLEND_DST_OVER = 1 << 13, /* Porter-Duff "DST over SRC" */
|
||||
IM_ALPHA_BLEND_SRC_ATOP = 1 << 14, /* Porter-Duff "SRC ATOP" */
|
||||
IM_ALPHA_BLEND_DST_ATOP = 1 << 15, /* Porter-Duff "DST ATOP" */
|
||||
IM_ALPHA_BLEND_XOR = 1 << 16, /* Xor */
|
||||
IM_ALPHA_BLEND_MASK = 0x1ffc0,
|
||||
|
||||
IM_ALPHA_COLORKEY_NORMAL = 1 << 17,
|
||||
IM_ALPHA_COLORKEY_INVERTED = 1 << 18,
|
||||
IM_ALPHA_COLORKEY_MASK = 0x60000,
|
||||
|
||||
IM_SYNC = 1 << 19,
|
||||
IM_ASYNC = 1 << 26,
|
||||
IM_CROP = 1 << 20, /* Unused */
|
||||
IM_COLOR_FILL = 1 << 21,
|
||||
IM_COLOR_PALETTE = 1 << 22,
|
||||
IM_NN_QUANTIZE = 1 << 23,
|
||||
IM_ROP = 1 << 24,
|
||||
IM_ALPHA_BLEND_PRE_MUL = 1 << 25,
|
||||
|
||||
} IM_USAGE;
|
||||
|
||||
typedef enum {
|
||||
IM_RASTER_MODE = 1 << 0,
|
||||
IM_AFBC_MODE = 1 << 1,
|
||||
IM_TILE_MODE = 1 << 2,
|
||||
} IM_RD_MODE;
|
||||
|
||||
typedef enum {
|
||||
IM_SCHEDULER_RGA3_CORE0 = 1 << 0,
|
||||
IM_SCHEDULER_RGA3_CORE1 = 1 << 1,
|
||||
IM_SCHEDULER_RGA2_CORE0 = 1 << 2,
|
||||
IM_SCHEDULER_RGA3_DEFAULT = IM_SCHEDULER_RGA3_CORE0,
|
||||
IM_SCHEDULER_RGA2_DEFAULT = IM_SCHEDULER_RGA2_CORE0,
|
||||
IM_SCHEDULER_MASK = 0x7,
|
||||
IM_SCHEDULER_DEFAULT = 0,
|
||||
} IM_SCHEDULER_CORE;
|
||||
|
||||
typedef enum {
|
||||
IM_ROP_AND = 0x88,
|
||||
IM_ROP_OR = 0xee,
|
||||
IM_ROP_NOT_DST = 0x55,
|
||||
IM_ROP_NOT_SRC = 0x33,
|
||||
IM_ROP_XOR = 0xf6,
|
||||
IM_ROP_NOT_XOR = 0xf9,
|
||||
} IM_ROP_CODE;
|
||||
|
||||
typedef enum {
|
||||
IM_RGA_SUPPORT_FORMAT_ERROR_INDEX = 0,
|
||||
IM_RGA_SUPPORT_FORMAT_RGB_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_RGB_OTHER_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_BPP_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_YUV_8_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_YUV_10_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_YUYV_420_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_YUYV_422_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_YUV_400_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_Y4_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_MASK_INDEX,
|
||||
} IM_RGA_SUPPORT_FORMAT_INDEX;
|
||||
|
||||
typedef enum {
|
||||
IM_RGA_SUPPORT_FORMAT_ERROR = 1 << IM_RGA_SUPPORT_FORMAT_ERROR_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_RGB = 1 << IM_RGA_SUPPORT_FORMAT_RGB_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_RGB_OTHER = 1 << IM_RGA_SUPPORT_FORMAT_RGB_OTHER_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_BPP = 1 << IM_RGA_SUPPORT_FORMAT_BPP_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_YUV_8 = 1 << IM_RGA_SUPPORT_FORMAT_YUV_8_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_YUV_10 = 1 << IM_RGA_SUPPORT_FORMAT_YUV_10_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_YUYV_420 = 1 << IM_RGA_SUPPORT_FORMAT_YUYV_420_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_YUYV_422 = 1 << IM_RGA_SUPPORT_FORMAT_YUYV_422_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_YUV_400 = 1 << IM_RGA_SUPPORT_FORMAT_YUV_400_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_Y4 = 1 << IM_RGA_SUPPORT_FORMAT_Y4_INDEX,
|
||||
IM_RGA_SUPPORT_FORMAT_MASK = ~((~(unsigned int)0x0 << IM_RGA_SUPPORT_FORMAT_MASK_INDEX) | 1),
|
||||
} IM_RGA_SUPPORT_FORMAT;
|
||||
|
||||
typedef enum {
|
||||
IM_RGA_SUPPORT_FEATURE_ERROR_INDEX = 0,
|
||||
IM_RGA_SUPPORT_FEATURE_COLOR_FILL_INDEX,
|
||||
IM_RGA_SUPPORT_FEATURE_COLOR_PALETTE_INDEX,
|
||||
IM_RGA_SUPPORT_FEATURE_ROP_INDEX,
|
||||
IM_RGA_SUPPORT_FEATURE_QUANTIZE_INDEX,
|
||||
IM_RGA_SUPPORT_FEATURE_SRC1_R2Y_CSC_INDEX,
|
||||
IM_RGA_SUPPORT_FEATURE_DST_FULL_CSC_INDEX,
|
||||
IM_RGA_SUPPORT_FEATURE_MASK_INDEX,
|
||||
} IM_RGA_SUPPORT_FEATURE_INDEX;
|
||||
|
||||
typedef enum {
|
||||
IM_RGA_SUPPORT_FEATURE_ERROR = 1 << IM_RGA_SUPPORT_FEATURE_ERROR_INDEX,
|
||||
IM_RGA_SUPPORT_FEATURE_COLOR_FILL = 1 << IM_RGA_SUPPORT_FEATURE_COLOR_FILL_INDEX,
|
||||
IM_RGA_SUPPORT_FEATURE_COLOR_PALETTE = 1 << IM_RGA_SUPPORT_FEATURE_COLOR_PALETTE_INDEX,
|
||||
IM_RGA_SUPPORT_FEATURE_ROP = 1 << IM_RGA_SUPPORT_FEATURE_ROP_INDEX,
|
||||
IM_RGA_SUPPORT_FEATURE_QUANTIZE = 1 << IM_RGA_SUPPORT_FEATURE_QUANTIZE_INDEX,
|
||||
IM_RGA_SUPPORT_FEATURE_SRC1_R2Y_CSC = 1 << IM_RGA_SUPPORT_FEATURE_SRC1_R2Y_CSC_INDEX,
|
||||
IM_RGA_SUPPORT_FEATURE_DST_FULL_CSC = 1 << IM_RGA_SUPPORT_FEATURE_DST_FULL_CSC_INDEX,
|
||||
IM_RGA_SUPPORT_FEATURE_MASK = ~((~(unsigned int)0x0 << IM_RGA_SUPPORT_FEATURE_MASK_INDEX) | 1),
|
||||
} IM_RGA_SUPPORT_FEATURE;
|
||||
|
||||
/* Status codes, returned by any blit function */
|
||||
typedef enum {
|
||||
IM_STATUS_NOERROR = 2,
|
||||
IM_STATUS_SUCCESS = 1,
|
||||
IM_STATUS_NOT_SUPPORTED = -1,
|
||||
IM_STATUS_OUT_OF_MEMORY = -2,
|
||||
IM_STATUS_INVALID_PARAM = -3,
|
||||
IM_STATUS_ILLEGAL_PARAM = -4,
|
||||
IM_STATUS_FAILED = 0,
|
||||
} IM_STATUS;
|
||||
|
||||
/* Status codes, returned by any blit function */
|
||||
typedef enum {
|
||||
IM_YUV_TO_RGB_BT601_LIMIT = 1 << 0,
|
||||
IM_YUV_TO_RGB_BT601_FULL = 2 << 0,
|
||||
IM_YUV_TO_RGB_BT709_LIMIT = 3 << 0,
|
||||
IM_YUV_TO_RGB_MASK = 3 << 0,
|
||||
IM_RGB_TO_YUV_BT601_FULL = 1 << 2,
|
||||
IM_RGB_TO_YUV_BT601_LIMIT = 2 << 2,
|
||||
IM_RGB_TO_YUV_BT709_LIMIT = 3 << 2,
|
||||
IM_RGB_TO_YUV_MASK = 3 << 2,
|
||||
IM_RGB_TO_Y4 = 1 << 4,
|
||||
IM_RGB_TO_Y4_DITHER = 2 << 4,
|
||||
IM_RGB_TO_Y1_DITHER = 3 << 4,
|
||||
IM_Y4_MASK = 3 << 4,
|
||||
IM_RGB_FULL = 1 << 8,
|
||||
IM_RGB_CLIP = 2 << 8,
|
||||
IM_YUV_BT601_LIMIT_RANGE = 3 << 8,
|
||||
IM_YUV_BT601_FULL_RANGE = 4 << 8,
|
||||
IM_YUV_BT709_LIMIT_RANGE = 5 << 8,
|
||||
IM_YUV_BT709_FULL_RANGE = 6 << 8,
|
||||
IM_FULL_CSC_MASK = 0xf << 8,
|
||||
IM_COLOR_SPACE_DEFAULT = 0,
|
||||
} IM_COLOR_SPACE_MODE;
|
||||
|
||||
typedef enum {
|
||||
IM_UP_SCALE,
|
||||
IM_DOWN_SCALE,
|
||||
} IM_SCALE;
|
||||
|
||||
typedef enum {
|
||||
INTER_NEAREST,
|
||||
INTER_LINEAR,
|
||||
INTER_CUBIC,
|
||||
} IM_SCALE_MODE;
|
||||
|
||||
/* Get RGA basic information index */
|
||||
typedef enum {
|
||||
RGA_VENDOR = 0,
|
||||
RGA_VERSION,
|
||||
RGA_MAX_INPUT,
|
||||
RGA_MAX_OUTPUT,
|
||||
RGA_SCALE_LIMIT,
|
||||
RGA_INPUT_FORMAT,
|
||||
RGA_OUTPUT_FORMAT,
|
||||
RGA_FEATURE,
|
||||
RGA_EXPECTED,
|
||||
RGA_ALL,
|
||||
} IM_INFORMATION;
|
||||
|
||||
/*rga version index*/
|
||||
typedef enum {
|
||||
RGA_V_ERR = 0x0,
|
||||
RGA_1 = 0x1,
|
||||
RGA_1_PLUS = 0x2,
|
||||
RGA_2 = 0x3,
|
||||
RGA_2_LITE0 = 0x4,
|
||||
RGA_2_LITE1 = 0x5,
|
||||
RGA_2_ENHANCE = 0x6,
|
||||
} RGA_VERSION_NUM;
|
||||
|
||||
typedef enum {
|
||||
IM_CONFIG_SCHEDULER_CORE,
|
||||
IM_CONFIG_PRIORITY,
|
||||
IM_CHECK_CONFIG,
|
||||
} IM_CONFIG_NAME;
|
||||
|
||||
//struct AHardwareBuffer AHardwareBuffer;
|
||||
|
||||
typedef struct {
|
||||
RGA_VERSION_NUM version;
|
||||
unsigned int input_resolution;
|
||||
unsigned int output_resolution;
|
||||
unsigned int scale_limit;
|
||||
unsigned int performance;
|
||||
unsigned int input_format;
|
||||
unsigned int output_format;
|
||||
unsigned int feature;
|
||||
char reserved[28];
|
||||
} rga_info_table_entry;
|
||||
|
||||
/* Rectangle definition */
|
||||
typedef struct {
|
||||
int x; /* upper-left x */
|
||||
int y; /* upper-left y */
|
||||
int width; /* width */
|
||||
int height; /* height */
|
||||
} im_rect;
|
||||
|
||||
typedef struct {
|
||||
int max; /* The Maximum value of the color key */
|
||||
int min; /* The minimum value of the color key */
|
||||
} im_colorkey_range;
|
||||
|
||||
|
||||
typedef struct im_nn {
|
||||
int scale_r; /* scaling factor on R channal */
|
||||
int scale_g; /* scaling factor on G channal */
|
||||
int scale_b; /* scaling factor on B channal */
|
||||
int offset_r; /* offset on R channal */
|
||||
int offset_g; /* offset on G channal */
|
||||
int offset_b; /* offset on B channal */
|
||||
} im_nn_t;
|
||||
|
||||
/* im_info definition */
|
||||
typedef struct {
|
||||
void* vir_addr; /* virtual address */
|
||||
void* phy_addr; /* physical address */
|
||||
int fd; /* shared fd */
|
||||
|
||||
int width; /* width */
|
||||
int height; /* height */
|
||||
int wstride; /* wstride */
|
||||
int hstride; /* hstride */
|
||||
int format; /* format */
|
||||
|
||||
int color_space_mode; /* color_space_mode */
|
||||
int global_alpha; /* global_alpha */
|
||||
int rd_mode;
|
||||
|
||||
/* legarcy */
|
||||
int color; /* color, used by color fill */
|
||||
im_colorkey_range colorkey_range; /* range value of color key */
|
||||
im_nn_t nn;
|
||||
int rop_code;
|
||||
} rga_buffer_t;
|
||||
|
||||
typedef struct im_opt {
|
||||
int color; /* color, used by color fill */
|
||||
im_colorkey_range colorkey_range; /* range value of color key */
|
||||
im_nn_t nn;
|
||||
int rop_code;
|
||||
|
||||
int priority;
|
||||
int core;
|
||||
} im_opt_t;
|
||||
|
||||
typedef struct im_context {
|
||||
int priority;
|
||||
IM_SCHEDULER_CORE core;
|
||||
bool check_mode;
|
||||
} im_context_t;
|
||||
|
||||
/*
|
||||
* @return error message string
|
||||
*/
|
||||
#define imStrError(...) \
|
||||
({ \
|
||||
const char* im2d_api_err; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_err = imStrError_t(IM_STATUS_INVALID_PARAM); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_err = imStrError_t((IM_STATUS)im2d_api_args[0]); \
|
||||
} else { \
|
||||
im2d_api_err = ("Fatal error, imStrError() too many parameters\n"); \
|
||||
printf("Fatal error, imStrError() too many parameters\n"); \
|
||||
} \
|
||||
im2d_api_err; \
|
||||
})
|
||||
IM_API const char* imStrError_t(IM_STATUS status);
|
||||
|
||||
/*
|
||||
* @return rga_buffer_t
|
||||
*/
|
||||
#define wrapbuffer_virtualaddr(vir_addr, width, height, format, ...) \
|
||||
({ \
|
||||
rga_buffer_t im2d_api_buffer; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_buffer = wrapbuffer_virtualaddr_t(vir_addr, width, height, width, height, format); \
|
||||
} else if (im2d_api_argc == 2){ \
|
||||
im2d_api_buffer = wrapbuffer_virtualaddr_t(vir_addr, width, height, im2d_api_args[0], im2d_api_args[1], format); \
|
||||
} else { \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_buffer; \
|
||||
})
|
||||
|
||||
#define wrapbuffer_physicaladdr(phy_addr, width, height, format, ...) \
|
||||
({ \
|
||||
rga_buffer_t im2d_api_buffer; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_buffer = wrapbuffer_physicaladdr_t(phy_addr, width, height, width, height, format); \
|
||||
} else if (im2d_api_argc == 2){ \
|
||||
im2d_api_buffer = wrapbuffer_physicaladdr_t(phy_addr, width, height, im2d_api_args[0], im2d_api_args[1], format); \
|
||||
} else { \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_buffer; \
|
||||
})
|
||||
|
||||
#define wrapbuffer_fd(fd, width, height, format, ...) \
|
||||
({ \
|
||||
rga_buffer_t im2d_api_buffer; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_buffer = wrapbuffer_fd_t(fd, width, height, width, height, format); \
|
||||
} else if (im2d_api_argc == 2){ \
|
||||
im2d_api_buffer = wrapbuffer_fd_t(fd, width, height, im2d_api_args[0], im2d_api_args[1], format); \
|
||||
} else { \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_buffer; \
|
||||
})
|
||||
|
||||
IM_API rga_buffer_t wrapbuffer_virtualaddr_t(void* vir_addr, int width, int height, int wstride, int hstride, int format);
|
||||
IM_API rga_buffer_t wrapbuffer_physicaladdr_t(void* phy_addr, int width, int height, int wstride, int hstride, int format);
|
||||
IM_API rga_buffer_t wrapbuffer_fd_t(int fd, int width, int height, int wstride, int hstride, int format);
|
||||
|
||||
/*
|
||||
* Get RGA basic information, supported resolution, supported format, etc.
|
||||
*
|
||||
* @param name
|
||||
* RGA_VENDOR
|
||||
* RGA_VERSION
|
||||
* RGA_MAX_INPUT
|
||||
* RGA_MAX_OUTPUT
|
||||
* RGA_INPUT_FORMAT
|
||||
* RGA_OUTPUT_FORMAT
|
||||
* RGA_EXPECTED
|
||||
* RGA_ALL
|
||||
*
|
||||
* @returns a usage describing properties of RGA.
|
||||
*/
|
||||
//IM_API int rga_get_info(rga_info_table_entry *);
|
||||
IM_API IM_STATUS rga_get_info(rga_info_table_entry *return_table);
|
||||
|
||||
/*
|
||||
* Query RGA basic information, supported resolution, supported format, etc.
|
||||
*
|
||||
* @param name
|
||||
* RGA_VENDOR
|
||||
* RGA_VERSION
|
||||
* RGA_MAX_INPUT
|
||||
* RGA_MAX_OUTPUT
|
||||
* RGA_INPUT_FORMAT
|
||||
* RGA_OUTPUT_FORMAT
|
||||
* RGA_EXPECTED
|
||||
* RGA_ALL
|
||||
*
|
||||
* @returns a string describing properties of RGA.
|
||||
*/
|
||||
IM_API const char* querystring(int name);
|
||||
|
||||
/*
|
||||
* check RGA basic information, supported resolution, supported format, etc.
|
||||
*
|
||||
* @param src
|
||||
* @param dst
|
||||
* @param src_rect
|
||||
* @param dst_rect
|
||||
* @param mode_usage
|
||||
*
|
||||
* @returns no error or else negative error code.
|
||||
*/
|
||||
#define imcheck(src, dst, src_rect, dst_rect, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_NOERROR; \
|
||||
rga_buffer_t im2d_api_pat; \
|
||||
im_rect im2d_api_pat_rect; \
|
||||
memset(&im2d_api_pat, 0, sizeof(rga_buffer_t)); \
|
||||
memset(&im2d_api_pat_rect, 0, sizeof(im_rect)); \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
rga_check_perpare((rga_buffer_t *)(&src), (rga_buffer_t *)(&dst), (rga_buffer_t *)(&im2d_api_pat), \
|
||||
(im_rect *)(&src_rect), (im_rect *)(&dst_rect), (im_rect *)(&im2d_api_pat_rect), 0); \
|
||||
im2d_api_ret = imcheck_t(src, dst, im2d_api_pat, src_rect, dst_rect, im2d_api_pat_rect, 0); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
rga_check_perpare((rga_buffer_t *)(&src), (rga_buffer_t *)(&dst), (rga_buffer_t *)(&im2d_api_pat), \
|
||||
(im_rect *)(&src_rect), (im_rect *)(&dst_rect), (im_rect *)(&im2d_api_pat_rect), im2d_api_args[0]); \
|
||||
im2d_api_ret = imcheck_t(src, dst, im2d_api_pat, src_rect, dst_rect, im2d_api_pat_rect, im2d_api_args[0]); \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_FAILED; \
|
||||
printf("check failed\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
#define imcheck_composite(src, dst, pat, src_rect, dst_rect, pat_rect, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_NOERROR; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
rga_check_perpare((rga_buffer_t *)(&src), (rga_buffer_t *)(&dst), (rga_buffer_t *)(&pat), \
|
||||
(im_rect *)(&src_rect), (im_rect *)(&dst_rect), (im_rect *)(&pat_rect), 0); \
|
||||
im2d_api_ret = imcheck_t(src, dst, pat, src_rect, dst_rect, pat_rect, 0); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
rga_check_perpare((rga_buffer_t *)(&src), (rga_buffer_t *)(&dst), (rga_buffer_t *)(&pat), \
|
||||
(im_rect *)(&src_rect), (im_rect *)(&dst_rect), (im_rect *)(&pat_rect), im2d_api_args[0]); \
|
||||
im2d_api_ret = imcheck_t(src, dst, pat, src_rect, dst_rect, pat_rect, im2d_api_args[0]); \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_FAILED; \
|
||||
printf("check failed\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
IM_API void rga_check_perpare(rga_buffer_t *src, rga_buffer_t *dst, rga_buffer_t *pat,
|
||||
im_rect *src_rect, im_rect *dst_rect, im_rect *pat_rect, int mode_usage);
|
||||
IM_API IM_STATUS imcheck_t(const rga_buffer_t src, const rga_buffer_t dst, const rga_buffer_t pat,
|
||||
const im_rect src_rect, const im_rect dst_rect, const im_rect pat_rect, const int mode_usage);
|
||||
|
||||
/*
|
||||
* Resize
|
||||
*
|
||||
* @param src
|
||||
* @param dst
|
||||
* @param fx
|
||||
* @param fy
|
||||
* @param interpolation
|
||||
* @param sync
|
||||
* wait until operation complete
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
#define imresize(src, dst, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
double im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(double); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = imresize_t(src, dst, 0, 0, IM_SCALE_MODE::INTER_LINEAR, 1); \
|
||||
} else if (im2d_api_argc == 2){ \
|
||||
im2d_api_ret = imresize_t(src, dst, im2d_api_args[0], im2d_api_args[1], IM_SCALE_MODE::INTER_LINEAR, 1); \
|
||||
} else if (im2d_api_argc == 3){ \
|
||||
im2d_api_ret = imresize_t(src, dst, im2d_api_args[0], im2d_api_args[1], (int)im2d_api_args[2], 1); \
|
||||
} else if (im2d_api_argc == 4){ \
|
||||
im2d_api_ret = imresize_t(src, dst, im2d_api_args[0], im2d_api_args[1], (int)im2d_api_args[2], (int)im2d_api_args[3]); \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
|
||||
#define impyramid(src, dst, direction) \
|
||||
imresize_t(src, \
|
||||
dst, \
|
||||
direction == IM_UP_SCALE ? 0.5 : 2, \
|
||||
direction == IM_UP_SCALE ? 0.5 : 2, \
|
||||
INTER_LINEAR, 1)
|
||||
|
||||
IM_API IM_STATUS imresize_t(const rga_buffer_t src, rga_buffer_t dst, double fx, double fy, int interpolation, int sync);
|
||||
|
||||
/*
|
||||
* Crop
|
||||
*
|
||||
* @param src
|
||||
* @param dst
|
||||
* @param rect
|
||||
* @param sync
|
||||
* wait until operation complete
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
#define imcrop(src, dst, rect, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = imcrop_t(src, dst, rect, 1); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_ret = imcrop_t(src, dst, rect, im2d_api_args[0]);; \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
|
||||
IM_API IM_STATUS imcrop_t(const rga_buffer_t src, rga_buffer_t dst, im_rect rect, int sync);
|
||||
|
||||
/*
|
||||
* rotation
|
||||
*
|
||||
* @param src
|
||||
* @param dst
|
||||
* @param rotation
|
||||
* IM_HAL_TRANSFORM_ROT_90
|
||||
* IM_HAL_TRANSFORM_ROT_180
|
||||
* IM_HAL_TRANSFORM_ROT_270
|
||||
* @param sync
|
||||
* wait until operation complete
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
#define imrotate(src, dst, rotation, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = imrotate_t(src, dst, rotation, 1); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_ret = imrotate_t(src, dst, rotation, im2d_api_args[0]);; \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
|
||||
IM_API IM_STATUS imrotate_t(const rga_buffer_t src, rga_buffer_t dst, int rotation, int sync);
|
||||
|
||||
/*
|
||||
* flip
|
||||
*
|
||||
* @param src
|
||||
* @param dst
|
||||
* @param mode
|
||||
* IM_HAL_TRANSFORM_FLIP_H
|
||||
* IM_HAL_TRANSFORM_FLIP_V
|
||||
* @param sync
|
||||
* wait until operation complete
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
#define imflip(src, dst, mode, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = imflip_t(src, dst, mode, 1); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_ret = imflip_t(src, dst, mode, im2d_api_args[0]);; \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
|
||||
IM_API IM_STATUS imflip_t (const rga_buffer_t src, rga_buffer_t dst, int mode, int sync);
|
||||
|
||||
/*
|
||||
* fill/reset/draw
|
||||
*
|
||||
* @param src
|
||||
* @param dst
|
||||
* @param rect
|
||||
* @param color
|
||||
* @param sync
|
||||
* wait until operation complete
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
#define imfill(buf, rect, color, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = imfill_t(buf, rect, color, 1); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_ret = imfill_t(buf, rect, color, im2d_api_args[0]);; \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
|
||||
#define imreset(buf, rect, color, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = imfill_t(buf, rect, color, 1); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_ret = imfill_t(buf, rect, color, im2d_api_args[0]);; \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
|
||||
#define imdraw(buf, rect, color, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = imfill_t(buf, rect, color, 1); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_ret = imfill_t(buf, rect, color, im2d_api_args[0]);; \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
IM_API IM_STATUS imfill_t(rga_buffer_t dst, im_rect rect, int color, int sync);
|
||||
|
||||
/*
|
||||
* palette
|
||||
*
|
||||
* @param src
|
||||
* @param dst
|
||||
* @param lut
|
||||
* @param sync
|
||||
* wait until operation complete
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
#define impalette(src, dst, lut, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = impalette_t(src, dst, lut, 1); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_ret = impalette_t(src, dst, lut, im2d_api_args[0]);; \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
IM_API IM_STATUS impalette_t(rga_buffer_t src, rga_buffer_t dst, rga_buffer_t lut, int sync);
|
||||
|
||||
/*
|
||||
* translate
|
||||
*
|
||||
* @param src
|
||||
* @param dst
|
||||
* @param x
|
||||
* @param y
|
||||
* @param sync
|
||||
* wait until operation complete
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
#define imtranslate(src, dst, x, y, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = imtranslate_t(src, dst, x, y, 1); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_ret = imtranslate_t(src, dst, x, y, im2d_api_args[0]);; \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
IM_API IM_STATUS imtranslate_t(const rga_buffer_t src, rga_buffer_t dst, int x, int y, int sync);
|
||||
|
||||
/*
|
||||
* copy
|
||||
*
|
||||
* @param src
|
||||
* @param dst
|
||||
* @param sync
|
||||
* wait until operation complete
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
#define imcopy(src, dst, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = imcopy_t(src, dst, 1); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_ret = imcopy_t(src, dst, im2d_api_args[0]);; \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
|
||||
IM_API IM_STATUS imcopy_t(const rga_buffer_t src, rga_buffer_t dst, int sync);
|
||||
|
||||
/*
|
||||
* blend (SRC + DST -> DST or SRCA + SRCB -> DST)
|
||||
*
|
||||
* @param srcA
|
||||
* @param srcB can be NULL.
|
||||
* @param dst
|
||||
* @param mode
|
||||
* IM_ALPHA_BLEND_MODE
|
||||
* @param sync
|
||||
* wait until operation complete
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
#define imblend(srcA, dst, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
rga_buffer_t srcB; \
|
||||
memset(&srcB, 0x00, sizeof(rga_buffer_t)); \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = imblend_t(srcA, srcB, dst, IM_ALPHA_BLEND_SRC_OVER, 1); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_ret = imblend_t(srcA, srcB, dst, im2d_api_args[0], 1); \
|
||||
} else if (im2d_api_argc == 2){ \
|
||||
im2d_api_ret = imblend_t(srcA, srcB, dst, im2d_api_args[0], im2d_api_args[1]); \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
#define imcomposite(srcA, srcB, dst, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = imblend_t(srcA, srcB, dst, IM_ALPHA_BLEND_SRC_OVER, 1); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_ret = imblend_t(srcA, srcB, dst, im2d_api_args[0], 1); \
|
||||
} else if (im2d_api_argc == 2){ \
|
||||
im2d_api_ret = imblend_t(srcA, srcB, dst, im2d_api_args[0], im2d_api_args[1]); \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
IM_API IM_STATUS imblend_t(const rga_buffer_t srcA, const rga_buffer_t srcB, rga_buffer_t dst, int mode, int sync);
|
||||
|
||||
/*
|
||||
* color key
|
||||
*
|
||||
* @param src
|
||||
* @param dst
|
||||
* @param colorkey_range
|
||||
* max color
|
||||
* min color
|
||||
* @param sync
|
||||
* wait until operation complete
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
#define imcolorkey(src, dst, range, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = imcolorkey_t(src, dst, range, IM_ALPHA_COLORKEY_NORMAL, 1); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_ret = imcolorkey_t(src, dst, range, im2d_api_args[0], 1); \
|
||||
} else if (im2d_api_argc == 2){ \
|
||||
im2d_api_ret = imcolorkey_t(src, dst, range, im2d_api_args[0], im2d_api_args[1]); \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
IM_API IM_STATUS imcolorkey_t(const rga_buffer_t src, rga_buffer_t dst, im_colorkey_range range, int mode, int sync);
|
||||
|
||||
/*
|
||||
* format convert
|
||||
*
|
||||
* @param src
|
||||
* @param dst
|
||||
* @param sfmt
|
||||
* @param dfmt
|
||||
* @param mode
|
||||
* color space mode: IM_COLOR_SPACE_MODE
|
||||
* @param sync
|
||||
* wait until operation complete
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
#define imcvtcolor(src, dst, sfmt, dfmt, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = imcvtcolor_t(src, dst, sfmt, dfmt, IM_COLOR_SPACE_DEFAULT, 1); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_ret = imcvtcolor_t(src, dst, sfmt, dfmt, im2d_api_args[0], 1); \
|
||||
} else if (im2d_api_argc == 2){ \
|
||||
im2d_api_ret = imcvtcolor_t(src, dst, sfmt, dfmt, im2d_api_args[0], im2d_api_args[1]); \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
|
||||
IM_API IM_STATUS imcvtcolor_t(rga_buffer_t src, rga_buffer_t dst, int sfmt, int dfmt, int mode, int sync);
|
||||
|
||||
/*
|
||||
* nn quantize
|
||||
*
|
||||
* @param src
|
||||
* @param dst
|
||||
* @param nninfo
|
||||
* @param sync
|
||||
* wait until operation complete
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
#define imquantize(src, dst, nn_info, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = imquantize_t(src, dst, nn_info, 1); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_ret = imquantize_t(src, dst, nn_info, im2d_api_args[0]);; \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
|
||||
IM_API IM_STATUS imquantize_t(const rga_buffer_t src, rga_buffer_t dst, im_nn_t nn_info, int sync);
|
||||
|
||||
/*
|
||||
* ROP
|
||||
*
|
||||
* @param src
|
||||
* @param dst
|
||||
* @param rop_code
|
||||
* @param sync
|
||||
* wait until operation complete
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
#define imrop(src, dst, rop_code, ...) \
|
||||
({ \
|
||||
IM_STATUS im2d_api_ret = IM_STATUS_SUCCESS; \
|
||||
int im2d_api_args[] = {__VA_ARGS__}; \
|
||||
int im2d_api_argc = sizeof(im2d_api_args)/sizeof(int); \
|
||||
if (im2d_api_argc == 0) { \
|
||||
im2d_api_ret = imrop_t(src, dst, rop_code, 1); \
|
||||
} else if (im2d_api_argc == 1){ \
|
||||
im2d_api_ret = imrop_t(src, dst, rop_code, im2d_api_args[0]);; \
|
||||
} else { \
|
||||
im2d_api_ret = IM_STATUS_INVALID_PARAM; \
|
||||
printf("invalid parameter\n"); \
|
||||
} \
|
||||
im2d_api_ret; \
|
||||
})
|
||||
IM_API IM_STATUS imrop_t(const rga_buffer_t src, rga_buffer_t dst, int rop_code, int sync);
|
||||
|
||||
/*
|
||||
* process
|
||||
*
|
||||
* @param src
|
||||
* @param dst
|
||||
* @param usage
|
||||
* @param ...
|
||||
* wait until operation complete
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
IM_API IM_STATUS improcess(rga_buffer_t src, rga_buffer_t dst, rga_buffer_t pat,
|
||||
im_rect srect, im_rect drect, im_rect prect, int usage);
|
||||
|
||||
IM_API IM_STATUS improcess_t(rga_buffer_t src, rga_buffer_t dst, rga_buffer_t pat,
|
||||
im_rect srect, im_rect drect, im_rect prect,
|
||||
int in_fence_fd, int *out_fence_fd, im_opt_t *opt, int usage);
|
||||
|
||||
/*
|
||||
* block until all execution is complete
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
IM_API IM_STATUS imsync(int out_fence_fd);
|
||||
|
||||
/*
|
||||
* config
|
||||
*
|
||||
* @param name
|
||||
* enum IM_CONFIG_NAME
|
||||
* @param value
|
||||
*
|
||||
* @returns success or else negative error code.
|
||||
*/
|
||||
IM_API IM_STATUS imconfig(IM_CONFIG_NAME name, uint64_t value);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* _im2d_h_ */
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2020 Rockchip Electronics Co., Ltd.
|
||||
* Authors:
|
||||
* PutinLee <putin.lee@rock-chips.com>
|
||||
* Cerf Yu <cerf.yu@rock-chips.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
#ifndef _im2d_hpp_
|
||||
#define _im2d_hpp_
|
||||
|
||||
#include "im2d.h"
|
||||
#include "RgaUtils.h"
|
||||
|
||||
#ifdef ANDROID
|
||||
|
||||
#include <ui/GraphicBuffer.h>
|
||||
|
||||
using namespace android;
|
||||
|
||||
IM_API rga_buffer_t wrapbuffer_handle(buffer_handle_t hnd);
|
||||
IM_API rga_buffer_t wrapbuffer_GraphicBuffer(sp<GraphicBuffer> buf);
|
||||
|
||||
#if USE_AHARDWAREBUFFER
|
||||
#include <android/hardware_buffer.h>
|
||||
IM_API rga_buffer_t wrapbuffer_AHardwareBuffer(AHardwareBuffer *buf);
|
||||
|
||||
#endif /* USE_AHARDWAREBUFFER */
|
||||
#endif /* ANDROID */
|
||||
#endif /* _im2d_hpp_ */
|
||||
|
|
@ -1,392 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2016 Rockchip Electronics Co., Ltd.
|
||||
* Authors:
|
||||
* Zhiqin Wei <wzq@rock-chips.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef _RGA_DRIVER_H_
|
||||
#define _RGA_DRIVER_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define RGA_BLIT_SYNC 0x5017
|
||||
#define RGA_BLIT_ASYNC 0x5018
|
||||
#define RGA_FLUSH 0x5019
|
||||
#define RGA_GET_RESULT 0x501a
|
||||
#define RGA_GET_VERSION 0x501b
|
||||
|
||||
#define RGA2_BLIT_SYNC 0x6017
|
||||
#define RGA2_BLIT_ASYNC 0x6018
|
||||
#define RGA2_FLUSH 0x6019
|
||||
#define RGA2_GET_RESULT 0x601a
|
||||
#define RGA2_GET_VERSION 0x601b
|
||||
#define RGA2_GET_VERSION 0x601b
|
||||
|
||||
#define RGA_REG_CTRL_LEN 0x8 /* 8 */
|
||||
#define RGA_REG_CMD_LEN 0x1c /* 28 */
|
||||
#define RGA_CMD_BUF_SIZE 0x700 /* 16*28*4 */
|
||||
|
||||
#ifndef ENABLE
|
||||
#define ENABLE 1
|
||||
#endif
|
||||
|
||||
#ifndef DISABLE
|
||||
#define DISABLE 0
|
||||
#endif
|
||||
|
||||
/* RGA process mode enum */
|
||||
enum {
|
||||
bitblt_mode = 0x0,
|
||||
color_palette_mode = 0x1,
|
||||
color_fill_mode = 0x2,
|
||||
line_point_drawing_mode = 0x3,
|
||||
blur_sharp_filter_mode = 0x4,
|
||||
pre_scaling_mode = 0x5,
|
||||
update_palette_table_mode = 0x6,
|
||||
update_patten_buff_mode = 0x7,
|
||||
};
|
||||
|
||||
|
||||
enum {
|
||||
rop_enable_mask = 0x2,
|
||||
dither_enable_mask = 0x8,
|
||||
fading_enable_mask = 0x10,
|
||||
PD_enbale_mask = 0x20,
|
||||
};
|
||||
|
||||
enum {
|
||||
yuv2rgb_mode0 = 0x0, /* BT.601 MPEG */
|
||||
yuv2rgb_mode1 = 0x1, /* BT.601 JPEG */
|
||||
yuv2rgb_mode2 = 0x2, /* BT.709 */
|
||||
|
||||
rgb2yuv_601_full = 0x1 << 8,
|
||||
rgb2yuv_709_full = 0x2 << 8,
|
||||
yuv2yuv_601_limit_2_709_limit = 0x3 << 8,
|
||||
yuv2yuv_601_limit_2_709_full = 0x4 << 8,
|
||||
yuv2yuv_709_limit_2_601_limit = 0x5 << 8,
|
||||
yuv2yuv_709_limit_2_601_full = 0x6 << 8, //not support
|
||||
yuv2yuv_601_full_2_709_limit = 0x7 << 8,
|
||||
yuv2yuv_601_full_2_709_full = 0x8 << 8, //not support
|
||||
yuv2yuv_709_full_2_601_limit = 0x9 << 8, //not support
|
||||
yuv2yuv_709_full_2_601_full = 0xa << 8, //not support
|
||||
full_csc_mask = 0xf00,
|
||||
};
|
||||
|
||||
/* RGA rotate mode */
|
||||
enum {
|
||||
rotate_mode0 = 0x0, /* no rotate */
|
||||
rotate_mode1 = 0x1, /* rotate */
|
||||
rotate_mode2 = 0x2, /* x_mirror */
|
||||
rotate_mode3 = 0x3, /* y_mirror */
|
||||
};
|
||||
|
||||
enum {
|
||||
color_palette_mode0 = 0x0, /* 1K */
|
||||
color_palette_mode1 = 0x1, /* 2K */
|
||||
color_palette_mode2 = 0x2, /* 4K */
|
||||
color_palette_mode3 = 0x3, /* 8K */
|
||||
};
|
||||
|
||||
enum {
|
||||
BB_BYPASS = 0x0, /* no rotate */
|
||||
BB_ROTATE = 0x1, /* rotate */
|
||||
BB_X_MIRROR = 0x2, /* x_mirror */
|
||||
BB_Y_MIRROR = 0x3 /* y_mirror */
|
||||
};
|
||||
|
||||
enum {
|
||||
nearby = 0x0, /* no rotate */
|
||||
bilinear = 0x1, /* rotate */
|
||||
bicubic = 0x2, /* x_mirror */
|
||||
};
|
||||
|
||||
#define RGA_SCHED_PRIORITY_DEFAULT 0
|
||||
#define RGA_SCHED_PRIORITY_MAX 6
|
||||
|
||||
enum {
|
||||
RGA3_SCHEDULER_CORE0 = 1 << 0,
|
||||
RGA3_SCHEDULER_CORE1 = 1 << 1,
|
||||
RGA2_SCHEDULER_CORE0 = 1 << 2,
|
||||
};
|
||||
|
||||
/*
|
||||
// Alpha Red Green Blue
|
||||
{ 4, 32, {{32,24, 8, 0, 16, 8, 24,16 }}, GGL_RGBA }, // RK_FORMAT_RGBA_8888
|
||||
{ 4, 24, {{ 0, 0, 8, 0, 16, 8, 24,16 }}, GGL_RGB }, // RK_FORMAT_RGBX_8888
|
||||
{ 3, 24, {{ 0, 0, 8, 0, 16, 8, 24,16 }}, GGL_RGB }, // RK_FORMAT_RGB_888
|
||||
{ 4, 32, {{32,24, 24,16, 16, 8, 8, 0 }}, GGL_BGRA }, // RK_FORMAT_BGRA_8888
|
||||
{ 2, 16, {{ 0, 0, 16,11, 11, 5, 5, 0 }}, GGL_RGB }, // RK_FORMAT_RGB_565
|
||||
{ 2, 16, {{ 1, 0, 16,11, 11, 6, 6, 1 }}, GGL_RGBA }, // RK_FORMAT_RGBA_5551
|
||||
{ 2, 16, {{ 4, 0, 16,12, 12, 8, 8, 4 }}, GGL_RGBA }, // RK_FORMAT_RGBA_4444
|
||||
{ 3, 24, {{ 0, 0, 24,16, 16, 8, 8, 0 }}, GGL_BGR }, // RK_FORMAT_BGB_888
|
||||
|
||||
*/
|
||||
/* In order to be compatible with RK_FORMAT_XX and HAL_PIXEL_FORMAT_XX,
|
||||
* RK_FORMAT_XX is shifted to the left by 8 bits to distinguish. */
|
||||
typedef enum _Rga_SURF_FORMAT {
|
||||
RK_FORMAT_RGBA_8888 = 0x0 << 8,
|
||||
RK_FORMAT_RGBX_8888 = 0x1 << 8,
|
||||
RK_FORMAT_RGB_888 = 0x2 << 8,
|
||||
RK_FORMAT_BGRA_8888 = 0x3 << 8,
|
||||
RK_FORMAT_RGB_565 = 0x4 << 8,
|
||||
RK_FORMAT_RGBA_5551 = 0x5 << 8,
|
||||
RK_FORMAT_RGBA_4444 = 0x6 << 8,
|
||||
RK_FORMAT_BGR_888 = 0x7 << 8,
|
||||
|
||||
RK_FORMAT_YCbCr_422_SP = 0x8 << 8,
|
||||
RK_FORMAT_YCbCr_422_P = 0x9 << 8,
|
||||
RK_FORMAT_YCbCr_420_SP = 0xa << 8,
|
||||
RK_FORMAT_YCbCr_420_P = 0xb << 8,
|
||||
|
||||
RK_FORMAT_YCrCb_422_SP = 0xc << 8,
|
||||
RK_FORMAT_YCrCb_422_P = 0xd << 8,
|
||||
RK_FORMAT_YCrCb_420_SP = 0xe << 8,
|
||||
RK_FORMAT_YCrCb_420_P = 0xf << 8,
|
||||
|
||||
RK_FORMAT_BPP1 = 0x10 << 8,
|
||||
RK_FORMAT_BPP2 = 0x11 << 8,
|
||||
RK_FORMAT_BPP4 = 0x12 << 8,
|
||||
RK_FORMAT_BPP8 = 0x13 << 8,
|
||||
|
||||
RK_FORMAT_Y4 = 0x14 << 8,
|
||||
RK_FORMAT_YCbCr_400 = 0x15 << 8,
|
||||
|
||||
RK_FORMAT_BGRX_8888 = 0x16 << 8,
|
||||
|
||||
RK_FORMAT_YVYU_422 = 0x18 << 8,
|
||||
RK_FORMAT_YVYU_420 = 0x19 << 8,
|
||||
RK_FORMAT_VYUY_422 = 0x1a << 8,
|
||||
RK_FORMAT_VYUY_420 = 0x1b << 8,
|
||||
RK_FORMAT_YUYV_422 = 0x1c << 8,
|
||||
RK_FORMAT_YUYV_420 = 0x1d << 8,
|
||||
RK_FORMAT_UYVY_422 = 0x1e << 8,
|
||||
RK_FORMAT_UYVY_420 = 0x1f << 8,
|
||||
|
||||
RK_FORMAT_YCbCr_420_SP_10B = 0x20 << 8,
|
||||
RK_FORMAT_YCrCb_420_SP_10B = 0x21 << 8,
|
||||
RK_FORMAT_YCbCr_422_10b_SP = 0x22 << 8,
|
||||
RK_FORMAT_YCrCb_422_10b_SP = 0x23 << 8,
|
||||
|
||||
RK_FORMAT_BGR_565 = 0x24 << 8,
|
||||
RK_FORMAT_BGRA_5551 = 0x25 << 8,
|
||||
RK_FORMAT_BGRA_4444 = 0x26 << 8,
|
||||
|
||||
RK_FORMAT_ARGB_8888 = 0x28 << 8,
|
||||
RK_FORMAT_XRGB_8888 = 0x29 << 8,
|
||||
RK_FORMAT_ARGB_5551 = 0x2a << 8,
|
||||
RK_FORMAT_ARGB_4444 = 0x2b << 8,
|
||||
RK_FORMAT_ABGR_8888 = 0x2c << 8,
|
||||
RK_FORMAT_XBGR_8888 = 0x2d << 8,
|
||||
RK_FORMAT_ABGR_5551 = 0x2e << 8,
|
||||
RK_FORMAT_ABGR_4444 = 0x2f << 8,
|
||||
|
||||
RK_FORMAT_UNKNOWN = 0x100 << 8,
|
||||
} RgaSURF_FORMAT;
|
||||
|
||||
/* RGA3 rd_mode */
|
||||
enum
|
||||
{
|
||||
raster_mode = 0x1 << 0,
|
||||
afbc_mode = 0x1 << 1,
|
||||
tile_mode = 0x1 << 2,
|
||||
};
|
||||
|
||||
typedef struct rga_img_info_t {
|
||||
uint64_t yrgb_addr; /* yrgb mem addr */
|
||||
uint64_t uv_addr; /* cb/cr mem addr */
|
||||
uint64_t v_addr; /* cr mem addr */
|
||||
|
||||
uint32_t format; //definition by RK_FORMAT
|
||||
uint16_t act_w;
|
||||
uint16_t act_h;
|
||||
uint16_t x_offset;
|
||||
uint16_t y_offset;
|
||||
|
||||
uint16_t vir_w;
|
||||
uint16_t vir_h;
|
||||
|
||||
uint16_t endian_mode; //for BPP
|
||||
uint16_t alpha_swap;
|
||||
|
||||
//used by RGA3
|
||||
uint16_t rotate_mode;
|
||||
uint16_t rd_mode;
|
||||
|
||||
uint16_t is_10b_compact;
|
||||
uint16_t is_10b_endian;
|
||||
|
||||
uint16_t enable;
|
||||
}
|
||||
rga_img_info_t;
|
||||
|
||||
typedef struct POINT {
|
||||
uint16_t x;
|
||||
uint16_t y;
|
||||
}
|
||||
POINT;
|
||||
|
||||
typedef struct RECT {
|
||||
uint16_t xmin;
|
||||
uint16_t xmax; // width - 1
|
||||
uint16_t ymin;
|
||||
uint16_t ymax; // height - 1
|
||||
} RECT;
|
||||
|
||||
typedef struct MMU {
|
||||
uint8_t mmu_en;
|
||||
uint64_t base_addr;
|
||||
uint32_t mmu_flag; /* [0] mmu enable [1] src_flush [2] dst_flush [3] CMD_flush [4~5] page size*/
|
||||
} MMU;
|
||||
|
||||
typedef struct COLOR_FILL {
|
||||
int16_t gr_x_a;
|
||||
int16_t gr_y_a;
|
||||
int16_t gr_x_b;
|
||||
int16_t gr_y_b;
|
||||
int16_t gr_x_g;
|
||||
int16_t gr_y_g;
|
||||
int16_t gr_x_r;
|
||||
int16_t gr_y_r;
|
||||
//u8 cp_gr_saturation;
|
||||
}
|
||||
COLOR_FILL;
|
||||
|
||||
typedef struct FADING {
|
||||
uint8_t b;
|
||||
uint8_t g;
|
||||
uint8_t r;
|
||||
uint8_t res;
|
||||
}
|
||||
FADING;
|
||||
|
||||
typedef struct line_draw_t {
|
||||
POINT start_point; /* LineDraw_start_point */
|
||||
POINT end_point; /* LineDraw_end_point */
|
||||
uint32_t color; /* LineDraw_color */
|
||||
uint32_t flag; /* (enum) LineDrawing mode sel */
|
||||
uint32_t line_width; /* range 1~16 */
|
||||
}
|
||||
line_draw_t;
|
||||
|
||||
/* color space convert coefficient. */
|
||||
typedef struct csc_coe_t {
|
||||
int16_t r_v;
|
||||
int16_t g_y;
|
||||
int16_t b_u;
|
||||
int32_t off;
|
||||
} csc_coe_t;
|
||||
|
||||
typedef struct full_csc_t {
|
||||
uint8_t flag;
|
||||
csc_coe_t coe_y;
|
||||
csc_coe_t coe_u;
|
||||
csc_coe_t coe_v;
|
||||
} full_csc_t;
|
||||
|
||||
struct rga_req {
|
||||
uint8_t render_mode; /* (enum) process mode sel */
|
||||
|
||||
rga_img_info_t src; /* src image info */
|
||||
rga_img_info_t dst; /* dst image info */
|
||||
rga_img_info_t pat; /* patten image info */
|
||||
|
||||
uint64_t rop_mask_addr; /* rop4 mask addr */
|
||||
uint64_t LUT_addr; /* LUT addr */
|
||||
|
||||
RECT clip; /* dst clip window default value is dst_vir */
|
||||
/* value from [0, w-1] / [0, h-1]*/
|
||||
|
||||
int32_t sina; /* dst angle default value 0 16.16 scan from table */
|
||||
int32_t cosa; /* dst angle default value 0 16.16 scan from table */
|
||||
|
||||
uint16_t alpha_rop_flag; /* alpha rop process flag */
|
||||
/* ([0] = 1 alpha_rop_enable) */
|
||||
/* ([1] = 1 rop enable) */
|
||||
/* ([2] = 1 fading_enable) */
|
||||
/* ([3] = 1 PD_enable) */
|
||||
/* ([4] = 1 alpha cal_mode_sel) */
|
||||
/* ([5] = 1 dither_enable) */
|
||||
/* ([6] = 1 gradient fill mode sel) */
|
||||
/* ([7] = 1 AA_enable) */
|
||||
/* ([8] = 1 nn_quantize) */
|
||||
/* ([9] = 1 Real color mode) */
|
||||
|
||||
uint8_t scale_mode; /* 0 nearst / 1 bilnear / 2 bicubic */
|
||||
|
||||
uint32_t color_key_max; /* color key max */
|
||||
uint32_t color_key_min; /* color key min */
|
||||
|
||||
uint32_t fg_color; /* foreground color */
|
||||
uint32_t bg_color; /* background color */
|
||||
|
||||
COLOR_FILL gr_color; /* color fill use gradient */
|
||||
|
||||
line_draw_t line_draw_info;
|
||||
|
||||
FADING fading;
|
||||
|
||||
uint8_t PD_mode; /* porter duff alpha mode sel */
|
||||
|
||||
uint8_t alpha_global_value; /* global alpha value */
|
||||
|
||||
uint16_t rop_code; /* rop2/3/4 code scan from rop code table*/
|
||||
|
||||
uint8_t bsfilter_flag; /* [2] 0 blur 1 sharp / [1:0] filter_type*/
|
||||
|
||||
uint8_t palette_mode; /* (enum) color palatte 0/1bpp, 1/2bpp 2/4bpp 3/8bpp*/
|
||||
|
||||
uint8_t yuv2rgb_mode; /* (enum) BT.601 MPEG / BT.601 JPEG / BT.709 */
|
||||
|
||||
uint8_t endian_mode; /* 0/big endian 1/little endian*/
|
||||
|
||||
uint8_t rotate_mode; /* (enum) rotate mode */
|
||||
/* 0x0, no rotate */
|
||||
/* 0x1, rotate */
|
||||
/* 0x2, x_mirror */
|
||||
/* 0x3, y_mirror */
|
||||
|
||||
uint8_t color_fill_mode; /* 0 solid color / 1 patten color */
|
||||
|
||||
MMU mmu_info; /* mmu information */
|
||||
|
||||
uint8_t alpha_rop_mode; /* ([0~1] alpha mode) */
|
||||
/* ([2~3] rop mode) */
|
||||
/* ([4] zero mode en) */
|
||||
/* ([5] dst alpha mode) (RGA1) */
|
||||
|
||||
uint8_t src_trans_mode;
|
||||
|
||||
uint8_t dither_mode;
|
||||
|
||||
full_csc_t full_csc; /* full color space convert */
|
||||
|
||||
int32_t in_fence_fd;
|
||||
uint8_t core;
|
||||
uint8_t priority;
|
||||
int32_t out_fence_fd;
|
||||
|
||||
uint8_t reservr[128];
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*_RK29_IPP_DRIVER_H_*/
|
Binary file not shown.
|
@ -1,59 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.16.3)
|
||||
|
||||
project(yolo_bytetrack)
|
||||
|
||||
#
|
||||
set(TOOLCHAIN_DIR /home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf)
|
||||
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-g++)
|
||||
set(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-gcc)
|
||||
|
||||
set(OpenCV_DIR /home/huey/opencv-4.7.0/install/lib/cmake/opencv4) # 填入OpenCVConfig.cmake
|
||||
find_package(OpenCV 4 REQUIRED)
|
||||
include_directories(${OpenCV_INCLUDE_DIRS})
|
||||
|
||||
set(OPENSSL_ROOT_DIR /home/huey/openssl/install/include/)
|
||||
set(OPENSSL_SSL_LIBRARY /home/huey/openssl/install/lib/libssl.so)
|
||||
set(OPENSSL_CRYPTO_LIBRARY /home/huey/openssl/install/lib/libcrypto.so)
|
||||
set(pkgcfg_lib__OPENSSL_crypto /home/huey/openssl/install/lib/libcrypto.so)
|
||||
set(pkgcfg_lib__OPENSSL_ssl /home/huey/openssl/install/lib/libssl.so)
|
||||
|
||||
find_package(OpenSSL REQUIRED)
|
||||
include_directories(${OPENSSL_INCLUDE_DIR})
|
||||
|
||||
|
||||
# install target and libraries
|
||||
set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install/rknn_yolov5_1109_new_${CMAKE_SYSTEM_NAME})
|
||||
|
||||
set(CMAKE_SKIP_INSTALL_RPATH FALSE)
|
||||
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
||||
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
|
||||
|
||||
set(
|
||||
include_libs
|
||||
"${PROJECT_SOURCE_DIR}/include"
|
||||
${PROJECT_SOURCE_DIR}/3rdparty/librknn_api/include
|
||||
${PROJECT_SOURCE_DIR}/3rdparty/rga/include
|
||||
)
|
||||
|
||||
include_directories(${include_libs})
|
||||
|
||||
add_executable(yolo_bytetrack
|
||||
src/bytetrack.cpp
|
||||
src/BYTETracker.cpp
|
||||
src/kalmanFilter.cpp
|
||||
src/lapjv.cpp
|
||||
src/STrack.cpp
|
||||
src/utils.cpp
|
||||
)
|
||||
set(
|
||||
link_libs pthread
|
||||
${PROJECT_SOURCE_DIR}/3rdparty/librknn_api/armhf/librknn_api.so
|
||||
${PROJECT_SOURCE_DIR}/3rdparty/rga/lib/librga.so
|
||||
)
|
||||
|
||||
target_link_libraries(yolo_bytetrack
|
||||
${OpenCV_LIBS}
|
||||
${OPENSSL_LIBRARIES}
|
||||
${link_libs}
|
||||
)
|
||||
|
|
@ -1,420 +0,0 @@
|
|||
# This is the CMakeCache file.
|
||||
# For build in directory: /home/huey/Desktop/C/yolo_bytetrack/build
|
||||
# It was generated by CMake: /usr/bin/cmake
|
||||
# You can edit this file to change values found and used by cmake.
|
||||
# If you do not want to change any of the values, simply exit the editor.
|
||||
# If you do want to change a value, simply edit, save, and exit the editor.
|
||||
# The syntax for the file is as follows:
|
||||
# KEY:TYPE=VALUE
|
||||
# KEY is the name of a variable in the cache.
|
||||
# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
|
||||
# VALUE is the current value for the KEY.
|
||||
|
||||
########################
|
||||
# EXTERNAL cache entries
|
||||
########################
|
||||
|
||||
//Path to a program.
|
||||
CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line
|
||||
|
||||
//Path to a program.
|
||||
CMAKE_AR:FILEPATH=/usr/bin/ar
|
||||
|
||||
//Choose the type of build, options are: None Debug Release RelWithDebInfo
|
||||
// MinSizeRel ...
|
||||
CMAKE_BUILD_TYPE:STRING=
|
||||
|
||||
//Enable/Disable color output during build.
|
||||
CMAKE_COLOR_MAKEFILE:BOOL=ON
|
||||
|
||||
//CXX compiler
|
||||
CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++
|
||||
|
||||
//A wrapper around 'ar' adding the appropriate '--plugin' option
|
||||
// for the GCC compiler
|
||||
CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-9
|
||||
|
||||
//A wrapper around 'ranlib' adding the appropriate '--plugin' option
|
||||
// for the GCC compiler
|
||||
CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-9
|
||||
|
||||
//Flags used by the CXX compiler during all build types.
|
||||
CMAKE_CXX_FLAGS:STRING=
|
||||
|
||||
//Flags used by the CXX compiler during DEBUG builds.
|
||||
CMAKE_CXX_FLAGS_DEBUG:STRING=-g
|
||||
|
||||
//Flags used by the CXX compiler during MINSIZEREL builds.
|
||||
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
|
||||
|
||||
//Flags used by the CXX compiler during RELEASE builds.
|
||||
CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
|
||||
|
||||
//Flags used by the CXX compiler during RELWITHDEBINFO builds.
|
||||
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
|
||||
|
||||
//C compiler
|
||||
CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc
|
||||
|
||||
//A wrapper around 'ar' adding the appropriate '--plugin' option
|
||||
// for the GCC compiler
|
||||
CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-9
|
||||
|
||||
//A wrapper around 'ranlib' adding the appropriate '--plugin' option
|
||||
// for the GCC compiler
|
||||
CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-9
|
||||
|
||||
//Flags used by the C compiler during all build types.
|
||||
CMAKE_C_FLAGS:STRING=
|
||||
|
||||
//Flags used by the C compiler during DEBUG builds.
|
||||
CMAKE_C_FLAGS_DEBUG:STRING=-g
|
||||
|
||||
//Flags used by the C compiler during MINSIZEREL builds.
|
||||
CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
|
||||
|
||||
//Flags used by the C compiler during RELEASE builds.
|
||||
CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
|
||||
|
||||
//Flags used by the C compiler during RELWITHDEBINFO builds.
|
||||
CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
|
||||
|
||||
//Path to a program.
|
||||
CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND
|
||||
|
||||
//Flags used by the linker during all build types.
|
||||
CMAKE_EXE_LINKER_FLAGS:STRING=
|
||||
|
||||
//Flags used by the linker during DEBUG builds.
|
||||
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
|
||||
|
||||
//Flags used by the linker during MINSIZEREL builds.
|
||||
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
|
||||
|
||||
//Flags used by the linker during RELEASE builds.
|
||||
CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
|
||||
|
||||
//Flags used by the linker during RELWITHDEBINFO builds.
|
||||
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
|
||||
|
||||
//Enable/Disable output of compile commands during generation.
|
||||
CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF
|
||||
|
||||
//Install path prefix, prepended onto install directories.
|
||||
CMAKE_INSTALL_PREFIX:PATH=/usr/local
|
||||
|
||||
//Path to a program.
|
||||
CMAKE_LINKER:FILEPATH=/usr/bin/ld
|
||||
|
||||
//Path to a program.
|
||||
CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make
|
||||
|
||||
//Flags used by the linker during the creation of modules during
|
||||
// all build types.
|
||||
CMAKE_MODULE_LINKER_FLAGS:STRING=
|
||||
|
||||
//Flags used by the linker during the creation of modules during
|
||||
// DEBUG builds.
|
||||
CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
|
||||
|
||||
//Flags used by the linker during the creation of modules during
|
||||
// MINSIZEREL builds.
|
||||
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
|
||||
|
||||
//Flags used by the linker during the creation of modules during
|
||||
// RELEASE builds.
|
||||
CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
|
||||
|
||||
//Flags used by the linker during the creation of modules during
|
||||
// RELWITHDEBINFO builds.
|
||||
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
|
||||
|
||||
//Path to a program.
|
||||
CMAKE_NM:FILEPATH=/usr/bin/nm
|
||||
|
||||
//Path to a program.
|
||||
CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
|
||||
|
||||
//Path to a program.
|
||||
CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
|
||||
|
||||
//Value Computed by CMake
|
||||
CMAKE_PROJECT_DESCRIPTION:STATIC=
|
||||
|
||||
//Value Computed by CMake
|
||||
CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
|
||||
|
||||
//Value Computed by CMake
|
||||
CMAKE_PROJECT_NAME:STATIC=yolo_bytetrack
|
||||
|
||||
//Path to a program.
|
||||
CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
|
||||
|
||||
//Path to a program.
|
||||
CMAKE_READELF:FILEPATH=/usr/bin/readelf
|
||||
|
||||
//Flags used by the linker during the creation of shared libraries
|
||||
// during all build types.
|
||||
CMAKE_SHARED_LINKER_FLAGS:STRING=
|
||||
|
||||
//Flags used by the linker during the creation of shared libraries
|
||||
// during DEBUG builds.
|
||||
CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
|
||||
|
||||
//Flags used by the linker during the creation of shared libraries
|
||||
// during MINSIZEREL builds.
|
||||
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
|
||||
|
||||
//Flags used by the linker during the creation of shared libraries
|
||||
// during RELEASE builds.
|
||||
CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
|
||||
|
||||
//Flags used by the linker during the creation of shared libraries
|
||||
// during RELWITHDEBINFO builds.
|
||||
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
|
||||
|
||||
//If set, runtime paths are not added when installing shared libraries,
|
||||
// but are added when building.
|
||||
CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
|
||||
|
||||
//If set, runtime paths are not added when using shared libraries.
|
||||
CMAKE_SKIP_RPATH:BOOL=NO
|
||||
|
||||
//Flags used by the linker during the creation of static libraries
|
||||
// during all build types.
|
||||
CMAKE_STATIC_LINKER_FLAGS:STRING=
|
||||
|
||||
//Flags used by the linker during the creation of static libraries
|
||||
// during DEBUG builds.
|
||||
CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
|
||||
|
||||
//Flags used by the linker during the creation of static libraries
|
||||
// during MINSIZEREL builds.
|
||||
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
|
||||
|
||||
//Flags used by the linker during the creation of static libraries
|
||||
// during RELEASE builds.
|
||||
CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
|
||||
|
||||
//Flags used by the linker during the creation of static libraries
|
||||
// during RELWITHDEBINFO builds.
|
||||
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
|
||||
|
||||
//Path to a program.
|
||||
CMAKE_STRIP:FILEPATH=/usr/bin/strip
|
||||
|
||||
//If this value is on, makefiles will be generated without the
|
||||
// .SILENT directive, and all commands will be echoed to the console
|
||||
// during the make. This is useful for debugging only. With Visual
|
||||
// Studio IDE projects all commands are done without /nologo.
|
||||
CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
|
||||
|
||||
//Path to a file.
|
||||
OPENSSL_INCLUDE_DIR:PATH=/home/huey/openssl/install/include
|
||||
|
||||
//pkg-config executable
|
||||
PKG_CONFIG_EXECUTABLE:FILEPATH=/usr/bin/pkg-config
|
||||
|
||||
//Value Computed by CMake
|
||||
yolo_bytetrack_BINARY_DIR:STATIC=/home/huey/Desktop/C/yolo_bytetrack/build
|
||||
|
||||
//Value Computed by CMake
|
||||
yolo_bytetrack_SOURCE_DIR:STATIC=/home/huey/Desktop/C/yolo_bytetrack
|
||||
|
||||
|
||||
########################
|
||||
# INTERNAL cache entries
|
||||
########################
|
||||
|
||||
//ADVANCED property for variable: CMAKE_ADDR2LINE
|
||||
CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_AR
|
||||
CMAKE_AR-ADVANCED:INTERNAL=1
|
||||
//This is the directory where this CMakeCache.txt was created
|
||||
CMAKE_CACHEFILE_DIR:INTERNAL=/home/huey/Desktop/C/yolo_bytetrack/build
|
||||
//Major version of cmake used to create the current loaded cache
|
||||
CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
|
||||
//Minor version of cmake used to create the current loaded cache
|
||||
CMAKE_CACHE_MINOR_VERSION:INTERNAL=16
|
||||
//Patch version of cmake used to create the current loaded cache
|
||||
CMAKE_CACHE_PATCH_VERSION:INTERNAL=3
|
||||
//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
|
||||
CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
|
||||
//Path to CMake executable.
|
||||
CMAKE_COMMAND:INTERNAL=/usr/bin/cmake
|
||||
//Path to cpack program executable.
|
||||
CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack
|
||||
//Path to ctest program executable.
|
||||
CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest
|
||||
//ADVANCED property for variable: CMAKE_CXX_COMPILER
|
||||
CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR
|
||||
CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB
|
||||
CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_CXX_FLAGS
|
||||
CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
|
||||
CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
|
||||
CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
|
||||
CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
||||
CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_C_COMPILER
|
||||
CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_C_COMPILER_AR
|
||||
CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
|
||||
CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_C_FLAGS
|
||||
CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
|
||||
CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
|
||||
CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
|
||||
CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
|
||||
CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_DLLTOOL
|
||||
CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
|
||||
//Path to cache edit program executable.
|
||||
CMAKE_EDIT_COMMAND:INTERNAL=/usr/bin/cmake-gui
|
||||
//Executable file format
|
||||
CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF
|
||||
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
|
||||
CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
|
||||
CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
|
||||
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
|
||||
CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
|
||||
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
|
||||
CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
|
||||
//Name of external makefile project generator.
|
||||
CMAKE_EXTRA_GENERATOR:INTERNAL=
|
||||
//Name of generator.
|
||||
CMAKE_GENERATOR:INTERNAL=Unix Makefiles
|
||||
//Generator instance identifier.
|
||||
CMAKE_GENERATOR_INSTANCE:INTERNAL=
|
||||
//Name of generator platform.
|
||||
CMAKE_GENERATOR_PLATFORM:INTERNAL=
|
||||
//Name of generator toolset.
|
||||
CMAKE_GENERATOR_TOOLSET:INTERNAL=
|
||||
//Source directory with the top level CMakeLists.txt file for this
|
||||
// project
|
||||
CMAKE_HOME_DIRECTORY:INTERNAL=/home/huey/Desktop/C/yolo_bytetrack
|
||||
//Install .so files without execute permission.
|
||||
CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_LINKER
|
||||
CMAKE_LINKER-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
|
||||
CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
|
||||
CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
|
||||
CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
|
||||
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
|
||||
CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
|
||||
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_NM
|
||||
CMAKE_NM-ADVANCED:INTERNAL=1
|
||||
//number of local generators
|
||||
CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_OBJCOPY
|
||||
CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_OBJDUMP
|
||||
CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
|
||||
//Platform information initialized
|
||||
CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_RANLIB
|
||||
CMAKE_RANLIB-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_READELF
|
||||
CMAKE_READELF-ADVANCED:INTERNAL=1
|
||||
//Path to CMake installation.
|
||||
CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.16
|
||||
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
|
||||
CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
|
||||
CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
|
||||
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
|
||||
CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
|
||||
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
|
||||
CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_SKIP_RPATH
|
||||
CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
|
||||
CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
|
||||
CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
|
||||
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
|
||||
CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
|
||||
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: CMAKE_STRIP
|
||||
CMAKE_STRIP-ADVANCED:INTERNAL=1
|
||||
//uname command
|
||||
CMAKE_UNAME:INTERNAL=/usr/bin/uname
|
||||
//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
|
||||
CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
|
||||
//Details about finding OpenCV
|
||||
FIND_PACKAGE_MESSAGE_DETAILS_OpenCV:INTERNAL=[/home/huey/opencv-4.7.0/install][v4.7.0(4)]
|
||||
//Details about finding OpenSSL
|
||||
FIND_PACKAGE_MESSAGE_DETAILS_OpenSSL:INTERNAL=[/home/huey/openssl/install/lib/libcrypto.so][/home/huey/openssl/install/include][c ][v()]
|
||||
//ADVANCED property for variable: OPENSSL_INCLUDE_DIR
|
||||
OPENSSL_INCLUDE_DIR-ADVANCED:INTERNAL=1
|
||||
//ADVANCED property for variable: PKG_CONFIG_EXECUTABLE
|
||||
PKG_CONFIG_EXECUTABLE-ADVANCED:INTERNAL=1
|
||||
_OPENSSL_CFLAGS:INTERNAL=
|
||||
_OPENSSL_CFLAGS_I:INTERNAL=
|
||||
_OPENSSL_CFLAGS_OTHER:INTERNAL=
|
||||
_OPENSSL_FOUND:INTERNAL=1
|
||||
_OPENSSL_INCLUDEDIR:INTERNAL=/usr/include
|
||||
_OPENSSL_INCLUDE_DIRS:INTERNAL=
|
||||
_OPENSSL_LDFLAGS:INTERNAL=-lssl;-lcrypto
|
||||
_OPENSSL_LDFLAGS_OTHER:INTERNAL=
|
||||
_OPENSSL_LIBDIR:INTERNAL=/usr/lib/x86_64-linux-gnu
|
||||
_OPENSSL_LIBRARIES:INTERNAL=ssl;crypto
|
||||
_OPENSSL_LIBRARY_DIRS:INTERNAL=
|
||||
_OPENSSL_LIBS:INTERNAL=
|
||||
_OPENSSL_LIBS_L:INTERNAL=
|
||||
_OPENSSL_LIBS_OTHER:INTERNAL=
|
||||
_OPENSSL_LIBS_PATHS:INTERNAL=
|
||||
_OPENSSL_MODULE_NAME:INTERNAL=openssl
|
||||
_OPENSSL_PREFIX:INTERNAL=/usr
|
||||
_OPENSSL_STATIC_CFLAGS:INTERNAL=
|
||||
_OPENSSL_STATIC_CFLAGS_I:INTERNAL=
|
||||
_OPENSSL_STATIC_CFLAGS_OTHER:INTERNAL=
|
||||
_OPENSSL_STATIC_INCLUDE_DIRS:INTERNAL=
|
||||
_OPENSSL_STATIC_LDFLAGS:INTERNAL=-lssl;-lcrypto;-ldl;-pthread
|
||||
_OPENSSL_STATIC_LDFLAGS_OTHER:INTERNAL=-pthread
|
||||
_OPENSSL_STATIC_LIBDIR:INTERNAL=
|
||||
_OPENSSL_STATIC_LIBRARIES:INTERNAL=ssl;crypto;dl
|
||||
_OPENSSL_STATIC_LIBRARY_DIRS:INTERNAL=
|
||||
_OPENSSL_STATIC_LIBS:INTERNAL=
|
||||
_OPENSSL_STATIC_LIBS_L:INTERNAL=
|
||||
_OPENSSL_STATIC_LIBS_OTHER:INTERNAL=
|
||||
_OPENSSL_STATIC_LIBS_PATHS:INTERNAL=
|
||||
_OPENSSL_VERSION:INTERNAL=1.1.1f
|
||||
_OPENSSL_openssl_INCLUDEDIR:INTERNAL=
|
||||
_OPENSSL_openssl_LIBDIR:INTERNAL=
|
||||
_OPENSSL_openssl_PREFIX:INTERNAL=
|
||||
_OPENSSL_openssl_VERSION:INTERNAL=
|
||||
__pkg_config_arguments__OPENSSL:INTERNAL=QUIET;openssl
|
||||
__pkg_config_checked__OPENSSL:INTERNAL=1
|
||||
prefix_result:INTERNAL=/usr/lib/x86_64-linux-gnu
|
||||
|
|
@ -1,76 +0,0 @@
|
|||
set(CMAKE_C_COMPILER "/usr/bin/cc")
|
||||
set(CMAKE_C_COMPILER_ARG1 "")
|
||||
set(CMAKE_C_COMPILER_ID "GNU")
|
||||
set(CMAKE_C_COMPILER_VERSION "9.4.0")
|
||||
set(CMAKE_C_COMPILER_VERSION_INTERNAL "")
|
||||
set(CMAKE_C_COMPILER_WRAPPER "")
|
||||
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
|
||||
set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
|
||||
set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
|
||||
set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
|
||||
set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
|
||||
|
||||
set(CMAKE_C_PLATFORM_ID "Linux")
|
||||
set(CMAKE_C_SIMULATE_ID "")
|
||||
set(CMAKE_C_COMPILER_FRONTEND_VARIANT "")
|
||||
set(CMAKE_C_SIMULATE_VERSION "")
|
||||
|
||||
|
||||
|
||||
set(CMAKE_AR "/usr/bin/ar")
|
||||
set(CMAKE_C_COMPILER_AR "/usr/bin/gcc-ar-9")
|
||||
set(CMAKE_RANLIB "/usr/bin/ranlib")
|
||||
set(CMAKE_C_COMPILER_RANLIB "/usr/bin/gcc-ranlib-9")
|
||||
set(CMAKE_LINKER "/usr/bin/ld")
|
||||
set(CMAKE_MT "")
|
||||
set(CMAKE_COMPILER_IS_GNUCC 1)
|
||||
set(CMAKE_C_COMPILER_LOADED 1)
|
||||
set(CMAKE_C_COMPILER_WORKS TRUE)
|
||||
set(CMAKE_C_ABI_COMPILED TRUE)
|
||||
set(CMAKE_COMPILER_IS_MINGW )
|
||||
set(CMAKE_COMPILER_IS_CYGWIN )
|
||||
if(CMAKE_COMPILER_IS_CYGWIN)
|
||||
set(CYGWIN 1)
|
||||
set(UNIX 1)
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_COMPILER_ENV_VAR "CC")
|
||||
|
||||
if(CMAKE_COMPILER_IS_MINGW)
|
||||
set(MINGW 1)
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER_ID_RUN 1)
|
||||
set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
|
||||
set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
|
||||
set(CMAKE_C_LINKER_PREFERENCE 10)
|
||||
|
||||
# Save compiler ABI information.
|
||||
set(CMAKE_C_SIZEOF_DATA_PTR "8")
|
||||
set(CMAKE_C_COMPILER_ABI "ELF")
|
||||
set(CMAKE_C_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
|
||||
|
||||
if(CMAKE_C_SIZEOF_DATA_PTR)
|
||||
set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_COMPILER_ABI)
|
||||
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_LIBRARY_ARCHITECTURE)
|
||||
set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
|
||||
if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
|
||||
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include")
|
||||
set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "gcc;gcc_s;c;gcc;gcc_s")
|
||||
set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
|
||||
set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
|
|
@ -1,88 +0,0 @@
|
|||
set(CMAKE_CXX_COMPILER "/usr/bin/c++")
|
||||
set(CMAKE_CXX_COMPILER_ARG1 "")
|
||||
set(CMAKE_CXX_COMPILER_ID "GNU")
|
||||
set(CMAKE_CXX_COMPILER_VERSION "9.4.0")
|
||||
set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "")
|
||||
set(CMAKE_CXX_COMPILER_WRAPPER "")
|
||||
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14")
|
||||
set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20")
|
||||
set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters")
|
||||
set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
|
||||
set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
|
||||
set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17")
|
||||
set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20")
|
||||
|
||||
set(CMAKE_CXX_PLATFORM_ID "Linux")
|
||||
set(CMAKE_CXX_SIMULATE_ID "")
|
||||
set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "")
|
||||
set(CMAKE_CXX_SIMULATE_VERSION "")
|
||||
|
||||
|
||||
|
||||
set(CMAKE_AR "/usr/bin/ar")
|
||||
set(CMAKE_CXX_COMPILER_AR "/usr/bin/gcc-ar-9")
|
||||
set(CMAKE_RANLIB "/usr/bin/ranlib")
|
||||
set(CMAKE_CXX_COMPILER_RANLIB "/usr/bin/gcc-ranlib-9")
|
||||
set(CMAKE_LINKER "/usr/bin/ld")
|
||||
set(CMAKE_MT "")
|
||||
set(CMAKE_COMPILER_IS_GNUCXX 1)
|
||||
set(CMAKE_CXX_COMPILER_LOADED 1)
|
||||
set(CMAKE_CXX_COMPILER_WORKS TRUE)
|
||||
set(CMAKE_CXX_ABI_COMPILED TRUE)
|
||||
set(CMAKE_COMPILER_IS_MINGW )
|
||||
set(CMAKE_COMPILER_IS_CYGWIN )
|
||||
if(CMAKE_COMPILER_IS_CYGWIN)
|
||||
set(CYGWIN 1)
|
||||
set(UNIX 1)
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
|
||||
|
||||
if(CMAKE_COMPILER_IS_MINGW)
|
||||
set(MINGW 1)
|
||||
endif()
|
||||
set(CMAKE_CXX_COMPILER_ID_RUN 1)
|
||||
set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;CPP)
|
||||
set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
|
||||
|
||||
foreach (lang C OBJC OBJCXX)
|
||||
if (CMAKE_${lang}_COMPILER_ID_RUN)
|
||||
foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS)
|
||||
list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension})
|
||||
endforeach()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(CMAKE_CXX_LINKER_PREFERENCE 30)
|
||||
set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
|
||||
|
||||
# Save compiler ABI information.
|
||||
set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
|
||||
set(CMAKE_CXX_COMPILER_ABI "ELF")
|
||||
set(CMAKE_CXX_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
|
||||
|
||||
if(CMAKE_CXX_SIZEOF_DATA_PTR)
|
||||
set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ABI)
|
||||
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
|
||||
set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu")
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
|
||||
if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
|
||||
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include")
|
||||
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;m;gcc_s;gcc;c;gcc_s;gcc")
|
||||
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib")
|
||||
set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
|
Binary file not shown.
Binary file not shown.
|
@ -1,15 +0,0 @@
|
|||
set(CMAKE_HOST_SYSTEM "Linux-5.15.0-113-generic")
|
||||
set(CMAKE_HOST_SYSTEM_NAME "Linux")
|
||||
set(CMAKE_HOST_SYSTEM_VERSION "5.15.0-113-generic")
|
||||
set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64")
|
||||
|
||||
|
||||
|
||||
set(CMAKE_SYSTEM "Linux-5.15.0-113-generic")
|
||||
set(CMAKE_SYSTEM_NAME "Linux")
|
||||
set(CMAKE_SYSTEM_VERSION "5.15.0-113-generic")
|
||||
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
|
||||
|
||||
set(CMAKE_CROSSCOMPILING "FALSE")
|
||||
|
||||
set(CMAKE_SYSTEM_LOADED 1)
|
Binary file not shown.
Binary file not shown.
|
@ -1,16 +0,0 @@
|
|||
# CMAKE generated file: DO NOT EDIT!
|
||||
# Generated by "Unix Makefiles" Generator, CMake Version 3.16
|
||||
|
||||
# Relative path conversion top directories.
|
||||
set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/huey/Desktop/C/yolo_bytetrack")
|
||||
set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/huey/Desktop/C/yolo_bytetrack/build")
|
||||
|
||||
# Force unix paths in dependencies.
|
||||
set(CMAKE_FORCE_UNIX_PATHS 1)
|
||||
|
||||
|
||||
# The C and CXX include file regular expressions for this directory.
|
||||
set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
|
||||
set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
|
||||
set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
|
||||
set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
|
|
@ -1,461 +0,0 @@
|
|||
The system is: Linux - 5.15.0-113-generic - x86_64
|
||||
Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
|
||||
Compiler: /usr/bin/cc
|
||||
Build flags:
|
||||
Id flags:
|
||||
|
||||
The output was:
|
||||
0
|
||||
|
||||
|
||||
Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out"
|
||||
|
||||
The C compiler identification is GNU, found in "/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/3.16.3/CompilerIdC/a.out"
|
||||
|
||||
Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
|
||||
Compiler: /usr/bin/c++
|
||||
Build flags:
|
||||
Id flags:
|
||||
|
||||
The output was:
|
||||
0
|
||||
|
||||
|
||||
Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.out"
|
||||
|
||||
The CXX compiler identification is GNU, found in "/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/3.16.3/CompilerIdCXX/a.out"
|
||||
|
||||
Determining if the C compiler works passed with the following output:
|
||||
Change Dir: /home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp
|
||||
|
||||
Run Build Command(s):/usr/bin/make cmTC_3ac10/fast && /usr/bin/make -f CMakeFiles/cmTC_3ac10.dir/build.make CMakeFiles/cmTC_3ac10.dir/build
|
||||
make[1]: 进入目录“/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp”
|
||||
Building C object CMakeFiles/cmTC_3ac10.dir/testCCompiler.c.o
|
||||
/usr/bin/cc -o CMakeFiles/cmTC_3ac10.dir/testCCompiler.c.o -c /home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp/testCCompiler.c
|
||||
Linking C executable cmTC_3ac10
|
||||
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_3ac10.dir/link.txt --verbose=1
|
||||
/usr/bin/cc CMakeFiles/cmTC_3ac10.dir/testCCompiler.c.o -o cmTC_3ac10
|
||||
make[1]: 离开目录“/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp”
|
||||
|
||||
|
||||
|
||||
Detecting C compiler ABI info compiled with the following output:
|
||||
Change Dir: /home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp
|
||||
|
||||
Run Build Command(s):/usr/bin/make cmTC_202d0/fast && /usr/bin/make -f CMakeFiles/cmTC_202d0.dir/build.make CMakeFiles/cmTC_202d0.dir/build
|
||||
make[1]: Entering directory '/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp'
|
||||
Building C object CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o
|
||||
/usr/bin/cc -v -o CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c
|
||||
Using built-in specs.
|
||||
COLLECT_GCC=/usr/bin/cc
|
||||
OFFLOAD_TARGET_NAMES=nvptx-none:hsa
|
||||
OFFLOAD_TARGET_DEFAULT=1
|
||||
Target: x86_64-linux-gnu
|
||||
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.2' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-9QDOt0/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
|
||||
Thread model: posix
|
||||
gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64'
|
||||
/usr/lib/gcc/x86_64-linux-gnu/9/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccKCe11d.s
|
||||
GNU C17 (Ubuntu 9.4.0-1ubuntu1~20.04.2) version 9.4.0 (x86_64-linux-gnu)
|
||||
compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP
|
||||
|
||||
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
|
||||
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
|
||||
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"
|
||||
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"
|
||||
#include "..." search starts here:
|
||||
#include <...> search starts here:
|
||||
/usr/lib/gcc/x86_64-linux-gnu/9/include
|
||||
/usr/local/include
|
||||
/usr/include/x86_64-linux-gnu
|
||||
/usr/include
|
||||
End of search list.
|
||||
GNU C17 (Ubuntu 9.4.0-1ubuntu1~20.04.2) version 9.4.0 (x86_64-linux-gnu)
|
||||
compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP
|
||||
|
||||
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
|
||||
Compiler executable checksum: 01da938ff5dc2163489aa33cb3b747a7
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64'
|
||||
as -v --64 -o CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o /tmp/ccKCe11d.s
|
||||
GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34
|
||||
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/
|
||||
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64'
|
||||
Linking C executable cmTC_202d0
|
||||
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_202d0.dir/link.txt --verbose=1
|
||||
/usr/bin/cc -v CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o -o cmTC_202d0
|
||||
Using built-in specs.
|
||||
COLLECT_GCC=/usr/bin/cc
|
||||
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper
|
||||
OFFLOAD_TARGET_NAMES=nvptx-none:hsa
|
||||
OFFLOAD_TARGET_DEFAULT=1
|
||||
Target: x86_64-linux-gnu
|
||||
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.2' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-9QDOt0/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
|
||||
Thread model: posix
|
||||
gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)
|
||||
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/
|
||||
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_202d0' '-mtune=generic' '-march=x86-64'
|
||||
/usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccJJ2fOY.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_202d0 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_202d0' '-mtune=generic' '-march=x86-64'
|
||||
make[1]: Leaving directory '/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp'
|
||||
|
||||
|
||||
|
||||
Parsed C implicit include dir info from above output: rv=done
|
||||
found start of include info
|
||||
found start of implicit include info
|
||||
add: [/usr/lib/gcc/x86_64-linux-gnu/9/include]
|
||||
add: [/usr/local/include]
|
||||
add: [/usr/include/x86_64-linux-gnu]
|
||||
add: [/usr/include]
|
||||
end of search list found
|
||||
collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include]
|
||||
collapse include dir [/usr/local/include] ==> [/usr/local/include]
|
||||
collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu]
|
||||
collapse include dir [/usr/include] ==> [/usr/include]
|
||||
implicit include dirs: [/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include]
|
||||
|
||||
|
||||
Parsed C implicit link information from above output:
|
||||
link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)]
|
||||
ignore line: [Change Dir: /home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp]
|
||||
ignore line: []
|
||||
ignore line: [Run Build Command(s):/usr/bin/make cmTC_202d0/fast && /usr/bin/make -f CMakeFiles/cmTC_202d0.dir/build.make CMakeFiles/cmTC_202d0.dir/build]
|
||||
ignore line: [make[1]: Entering directory '/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp']
|
||||
ignore line: [Building C object CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o]
|
||||
ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c]
|
||||
ignore line: [Using built-in specs.]
|
||||
ignore line: [COLLECT_GCC=/usr/bin/cc]
|
||||
ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa]
|
||||
ignore line: [OFFLOAD_TARGET_DEFAULT=1]
|
||||
ignore line: [Target: x86_64-linux-gnu]
|
||||
ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.2' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-9QDOt0/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu]
|
||||
ignore line: [Thread model: posix]
|
||||
ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2) ]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64']
|
||||
ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccKCe11d.s]
|
||||
ignore line: [GNU C17 (Ubuntu 9.4.0-1ubuntu1~20.04.2) version 9.4.0 (x86_64-linux-gnu)]
|
||||
ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP]
|
||||
ignore line: []
|
||||
ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072]
|
||||
ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"]
|
||||
ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"]
|
||||
ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"]
|
||||
ignore line: [#include "..." search starts here:]
|
||||
ignore line: [#include <...> search starts here:]
|
||||
ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include]
|
||||
ignore line: [ /usr/local/include]
|
||||
ignore line: [ /usr/include/x86_64-linux-gnu]
|
||||
ignore line: [ /usr/include]
|
||||
ignore line: [End of search list.]
|
||||
ignore line: [GNU C17 (Ubuntu 9.4.0-1ubuntu1~20.04.2) version 9.4.0 (x86_64-linux-gnu)]
|
||||
ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP]
|
||||
ignore line: []
|
||||
ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072]
|
||||
ignore line: [Compiler executable checksum: 01da938ff5dc2163489aa33cb3b747a7]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64']
|
||||
ignore line: [ as -v --64 -o CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o /tmp/ccKCe11d.s]
|
||||
ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34]
|
||||
ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/]
|
||||
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64']
|
||||
ignore line: [Linking C executable cmTC_202d0]
|
||||
ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_202d0.dir/link.txt --verbose=1]
|
||||
ignore line: [/usr/bin/cc -v CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o -o cmTC_202d0 ]
|
||||
ignore line: [Using built-in specs.]
|
||||
ignore line: [COLLECT_GCC=/usr/bin/cc]
|
||||
ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper]
|
||||
ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa]
|
||||
ignore line: [OFFLOAD_TARGET_DEFAULT=1]
|
||||
ignore line: [Target: x86_64-linux-gnu]
|
||||
ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.2' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-9QDOt0/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu]
|
||||
ignore line: [Thread model: posix]
|
||||
ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2) ]
|
||||
ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/]
|
||||
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_202d0' '-mtune=generic' '-march=x86-64']
|
||||
link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccJJ2fOY.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_202d0 /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o]
|
||||
arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore
|
||||
arg [-plugin] ==> ignore
|
||||
arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore
|
||||
arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore
|
||||
arg [-plugin-opt=-fresolution=/tmp/ccJJ2fOY.res] ==> ignore
|
||||
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
|
||||
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
|
||||
arg [-plugin-opt=-pass-through=-lc] ==> ignore
|
||||
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
|
||||
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
|
||||
arg [--build-id] ==> ignore
|
||||
arg [--eh-frame-hdr] ==> ignore
|
||||
arg [-m] ==> ignore
|
||||
arg [elf_x86_64] ==> ignore
|
||||
arg [--hash-style=gnu] ==> ignore
|
||||
arg [--as-needed] ==> ignore
|
||||
arg [-dynamic-linker] ==> ignore
|
||||
arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
|
||||
arg [-pie] ==> ignore
|
||||
arg [-znow] ==> ignore
|
||||
arg [-zrelro] ==> ignore
|
||||
arg [-o] ==> ignore
|
||||
arg [cmTC_202d0] ==> ignore
|
||||
arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore
|
||||
arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore
|
||||
arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore
|
||||
arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9]
|
||||
arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu]
|
||||
arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib]
|
||||
arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
|
||||
arg [-L/lib/../lib] ==> dir [/lib/../lib]
|
||||
arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
|
||||
arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
|
||||
arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..]
|
||||
arg [CMakeFiles/cmTC_202d0.dir/CMakeCCompilerABI.c.o] ==> ignore
|
||||
arg [-lgcc] ==> lib [gcc]
|
||||
arg [--push-state] ==> ignore
|
||||
arg [--as-needed] ==> ignore
|
||||
arg [-lgcc_s] ==> lib [gcc_s]
|
||||
arg [--pop-state] ==> ignore
|
||||
arg [-lc] ==> lib [c]
|
||||
arg [-lgcc] ==> lib [gcc]
|
||||
arg [--push-state] ==> ignore
|
||||
arg [--as-needed] ==> ignore
|
||||
arg [-lgcc_s] ==> lib [gcc_s]
|
||||
arg [--pop-state] ==> ignore
|
||||
arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore
|
||||
arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore
|
||||
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9]
|
||||
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
|
||||
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib]
|
||||
collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
|
||||
collapse library dir [/lib/../lib] ==> [/lib]
|
||||
collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
|
||||
collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
|
||||
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib]
|
||||
implicit libs: [gcc;gcc_s;c;gcc;gcc_s]
|
||||
implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
|
||||
implicit fwks: []
|
||||
|
||||
|
||||
Determining if the CXX compiler works passed with the following output:
|
||||
Change Dir: /home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp
|
||||
|
||||
Run Build Command(s):/usr/bin/make cmTC_64d08/fast && /usr/bin/make -f CMakeFiles/cmTC_64d08.dir/build.make CMakeFiles/cmTC_64d08.dir/build
|
||||
make[1]: 进入目录“/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp”
|
||||
Building CXX object CMakeFiles/cmTC_64d08.dir/testCXXCompiler.cxx.o
|
||||
/usr/bin/c++ -o CMakeFiles/cmTC_64d08.dir/testCXXCompiler.cxx.o -c /home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp/testCXXCompiler.cxx
|
||||
Linking CXX executable cmTC_64d08
|
||||
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_64d08.dir/link.txt --verbose=1
|
||||
/usr/bin/c++ CMakeFiles/cmTC_64d08.dir/testCXXCompiler.cxx.o -o cmTC_64d08
|
||||
make[1]: 离开目录“/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp”
|
||||
|
||||
|
||||
|
||||
Detecting CXX compiler ABI info compiled with the following output:
|
||||
Change Dir: /home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp
|
||||
|
||||
Run Build Command(s):/usr/bin/make cmTC_bd58d/fast && /usr/bin/make -f CMakeFiles/cmTC_bd58d.dir/build.make CMakeFiles/cmTC_bd58d.dir/build
|
||||
make[1]: Entering directory '/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp'
|
||||
Building CXX object CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o
|
||||
/usr/bin/c++ -v -o CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp
|
||||
Using built-in specs.
|
||||
COLLECT_GCC=/usr/bin/c++
|
||||
OFFLOAD_TARGET_NAMES=nvptx-none:hsa
|
||||
OFFLOAD_TARGET_DEFAULT=1
|
||||
Target: x86_64-linux-gnu
|
||||
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.2' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-9QDOt0/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
|
||||
Thread model: posix
|
||||
gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
|
||||
/usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccxp1oaQ.s
|
||||
GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.2) version 9.4.0 (x86_64-linux-gnu)
|
||||
compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP
|
||||
|
||||
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
|
||||
ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9"
|
||||
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
|
||||
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"
|
||||
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"
|
||||
#include "..." search starts here:
|
||||
#include <...> search starts here:
|
||||
/usr/include/c++/9
|
||||
/usr/include/x86_64-linux-gnu/c++/9
|
||||
/usr/include/c++/9/backward
|
||||
/usr/lib/gcc/x86_64-linux-gnu/9/include
|
||||
/usr/local/include
|
||||
/usr/include/x86_64-linux-gnu
|
||||
/usr/include
|
||||
End of search list.
|
||||
GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.2) version 9.4.0 (x86_64-linux-gnu)
|
||||
compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP
|
||||
|
||||
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
|
||||
Compiler executable checksum: 3d1eba838554fa2348dba760e4770469
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
|
||||
as -v --64 -o CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccxp1oaQ.s
|
||||
GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34
|
||||
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/
|
||||
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
|
||||
Linking CXX executable cmTC_bd58d
|
||||
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_bd58d.dir/link.txt --verbose=1
|
||||
/usr/bin/c++ -v CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_bd58d
|
||||
Using built-in specs.
|
||||
COLLECT_GCC=/usr/bin/c++
|
||||
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper
|
||||
OFFLOAD_TARGET_NAMES=nvptx-none:hsa
|
||||
OFFLOAD_TARGET_DEFAULT=1
|
||||
Target: x86_64-linux-gnu
|
||||
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.2' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-9QDOt0/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
|
||||
Thread model: posix
|
||||
gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)
|
||||
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/
|
||||
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_bd58d' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
|
||||
/usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccBblsAo.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_bd58d /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o
|
||||
COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_bd58d' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
|
||||
make[1]: Leaving directory '/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp'
|
||||
|
||||
|
||||
|
||||
Parsed CXX implicit include dir info from above output: rv=done
|
||||
found start of include info
|
||||
found start of implicit include info
|
||||
add: [/usr/include/c++/9]
|
||||
add: [/usr/include/x86_64-linux-gnu/c++/9]
|
||||
add: [/usr/include/c++/9/backward]
|
||||
add: [/usr/lib/gcc/x86_64-linux-gnu/9/include]
|
||||
add: [/usr/local/include]
|
||||
add: [/usr/include/x86_64-linux-gnu]
|
||||
add: [/usr/include]
|
||||
end of search list found
|
||||
collapse include dir [/usr/include/c++/9] ==> [/usr/include/c++/9]
|
||||
collapse include dir [/usr/include/x86_64-linux-gnu/c++/9] ==> [/usr/include/x86_64-linux-gnu/c++/9]
|
||||
collapse include dir [/usr/include/c++/9/backward] ==> [/usr/include/c++/9/backward]
|
||||
collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include]
|
||||
collapse include dir [/usr/local/include] ==> [/usr/local/include]
|
||||
collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu]
|
||||
collapse include dir [/usr/include] ==> [/usr/include]
|
||||
implicit include dirs: [/usr/include/c++/9;/usr/include/x86_64-linux-gnu/c++/9;/usr/include/c++/9/backward;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include]
|
||||
|
||||
|
||||
Parsed CXX implicit link information from above output:
|
||||
link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)]
|
||||
ignore line: [Change Dir: /home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp]
|
||||
ignore line: []
|
||||
ignore line: [Run Build Command(s):/usr/bin/make cmTC_bd58d/fast && /usr/bin/make -f CMakeFiles/cmTC_bd58d.dir/build.make CMakeFiles/cmTC_bd58d.dir/build]
|
||||
ignore line: [make[1]: Entering directory '/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/CMakeTmp']
|
||||
ignore line: [Building CXX object CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o]
|
||||
ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp]
|
||||
ignore line: [Using built-in specs.]
|
||||
ignore line: [COLLECT_GCC=/usr/bin/c++]
|
||||
ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa]
|
||||
ignore line: [OFFLOAD_TARGET_DEFAULT=1]
|
||||
ignore line: [Target: x86_64-linux-gnu]
|
||||
ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.2' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-9QDOt0/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu]
|
||||
ignore line: [Thread model: posix]
|
||||
ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2) ]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64']
|
||||
ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpbase CMakeCXXCompilerABI.cpp -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccxp1oaQ.s]
|
||||
ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.2) version 9.4.0 (x86_64-linux-gnu)]
|
||||
ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP]
|
||||
ignore line: []
|
||||
ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072]
|
||||
ignore line: [ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/9"]
|
||||
ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"]
|
||||
ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"]
|
||||
ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"]
|
||||
ignore line: [#include "..." search starts here:]
|
||||
ignore line: [#include <...> search starts here:]
|
||||
ignore line: [ /usr/include/c++/9]
|
||||
ignore line: [ /usr/include/x86_64-linux-gnu/c++/9]
|
||||
ignore line: [ /usr/include/c++/9/backward]
|
||||
ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include]
|
||||
ignore line: [ /usr/local/include]
|
||||
ignore line: [ /usr/include/x86_64-linux-gnu]
|
||||
ignore line: [ /usr/include]
|
||||
ignore line: [End of search list.]
|
||||
ignore line: [GNU C++14 (Ubuntu 9.4.0-1ubuntu1~20.04.2) version 9.4.0 (x86_64-linux-gnu)]
|
||||
ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP]
|
||||
ignore line: []
|
||||
ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072]
|
||||
ignore line: [Compiler executable checksum: 3d1eba838554fa2348dba760e4770469]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64']
|
||||
ignore line: [ as -v --64 -o CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccxp1oaQ.s]
|
||||
ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34]
|
||||
ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/]
|
||||
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64']
|
||||
ignore line: [Linking CXX executable cmTC_bd58d]
|
||||
ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_bd58d.dir/link.txt --verbose=1]
|
||||
ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_bd58d ]
|
||||
ignore line: [Using built-in specs.]
|
||||
ignore line: [COLLECT_GCC=/usr/bin/c++]
|
||||
ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper]
|
||||
ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa]
|
||||
ignore line: [OFFLOAD_TARGET_DEFAULT=1]
|
||||
ignore line: [Target: x86_64-linux-gnu]
|
||||
ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.2' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-9QDOt0/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu]
|
||||
ignore line: [Thread model: posix]
|
||||
ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2) ]
|
||||
ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/]
|
||||
ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/]
|
||||
ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_bd58d' '-shared-libgcc' '-mtune=generic' '-march=x86-64']
|
||||
link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccBblsAo.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_bd58d /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o]
|
||||
arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore
|
||||
arg [-plugin] ==> ignore
|
||||
arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore
|
||||
arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore
|
||||
arg [-plugin-opt=-fresolution=/tmp/ccBblsAo.res] ==> ignore
|
||||
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
|
||||
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
|
||||
arg [-plugin-opt=-pass-through=-lc] ==> ignore
|
||||
arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore
|
||||
arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
|
||||
arg [--build-id] ==> ignore
|
||||
arg [--eh-frame-hdr] ==> ignore
|
||||
arg [-m] ==> ignore
|
||||
arg [elf_x86_64] ==> ignore
|
||||
arg [--hash-style=gnu] ==> ignore
|
||||
arg [--as-needed] ==> ignore
|
||||
arg [-dynamic-linker] ==> ignore
|
||||
arg [/lib64/ld-linux-x86-64.so.2] ==> ignore
|
||||
arg [-pie] ==> ignore
|
||||
arg [-znow] ==> ignore
|
||||
arg [-zrelro] ==> ignore
|
||||
arg [-o] ==> ignore
|
||||
arg [cmTC_bd58d] ==> ignore
|
||||
arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore
|
||||
arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore
|
||||
arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore
|
||||
arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9]
|
||||
arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu]
|
||||
arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib]
|
||||
arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu]
|
||||
arg [-L/lib/../lib] ==> dir [/lib/../lib]
|
||||
arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu]
|
||||
arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib]
|
||||
arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..]
|
||||
arg [CMakeFiles/cmTC_bd58d.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore
|
||||
arg [-lstdc++] ==> lib [stdc++]
|
||||
arg [-lm] ==> lib [m]
|
||||
arg [-lgcc_s] ==> lib [gcc_s]
|
||||
arg [-lgcc] ==> lib [gcc]
|
||||
arg [-lc] ==> lib [c]
|
||||
arg [-lgcc_s] ==> lib [gcc_s]
|
||||
arg [-lgcc] ==> lib [gcc]
|
||||
arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore
|
||||
arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore
|
||||
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9]
|
||||
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
|
||||
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib]
|
||||
collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu]
|
||||
collapse library dir [/lib/../lib] ==> [/lib]
|
||||
collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu]
|
||||
collapse library dir [/usr/lib/../lib] ==> [/usr/lib]
|
||||
collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib]
|
||||
implicit libs: [stdc++;m;gcc_s;gcc;c;gcc_s;gcc]
|
||||
implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib]
|
||||
implicit fwks: []
|
||||
|
||||
|
|
@ -1,128 +0,0 @@
|
|||
# CMAKE generated file: DO NOT EDIT!
|
||||
# Generated by "Unix Makefiles" Generator, CMake Version 3.16
|
||||
|
||||
# The generator used is:
|
||||
set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles")
|
||||
|
||||
# The top level Makefile was generated from the following files:
|
||||
set(CMAKE_MAKEFILE_DEPENDS
|
||||
"CMakeCache.txt"
|
||||
"../CMakeLists.txt"
|
||||
"CMakeFiles/3.16.3/CMakeCCompiler.cmake"
|
||||
"CMakeFiles/3.16.3/CMakeCXXCompiler.cmake"
|
||||
"CMakeFiles/3.16.3/CMakeSystem.cmake"
|
||||
"/home/huey/opencv-4.7.0/install/lib/cmake/opencv4/OpenCVConfig-version.cmake"
|
||||
"/home/huey/opencv-4.7.0/install/lib/cmake/opencv4/OpenCVConfig.cmake"
|
||||
"/home/huey/opencv-4.7.0/install/lib/cmake/opencv4/OpenCVModules-release.cmake"
|
||||
"/home/huey/opencv-4.7.0/install/lib/cmake/opencv4/OpenCVModules.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeCCompiler.cmake.in"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeCInformation.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeCXXCompiler.cmake.in"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeCXXCompilerABI.cpp"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeCXXInformation.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeCommonLanguageInclude.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeCompilerIdDetection.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeDetermineCCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeDetermineCXXCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeDetermineCompileFeatures.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeDetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeDetermineCompilerABI.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeDetermineCompilerId.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeDetermineSystem.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeFindBinUtils.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeGenericSystem.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeInitializeConfigs.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeLanguageInformation.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeParseImplicitIncludeInfo.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeParseImplicitLinkInfo.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeSystem.cmake.in"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeSystemSpecificInformation.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeSystemSpecificInitialize.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeTestCCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeTestCXXCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeTestCompilerCommon.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/CMakeUnixFindMake.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/ADSP-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/ARMCC-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/ARMClang-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/AppleClang-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/Borland-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/Bruce-C-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/CMakeCommonCompilerMacros.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/Clang-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/Clang-DetermineCompilerInternal.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/Compaq-C-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/Cray-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/Embarcadero-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/Fujitsu-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/GHS-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/GNU-C-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/GNU-C.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/GNU-CXX.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/GNU-FindBinUtils.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/GNU.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/HP-C-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/HP-CXX-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/IAR-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/Intel-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/MSVC-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/NVIDIA-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/PGI-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/PathScale-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/SCO-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/SDCC-C-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/SunPro-C-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/TI-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/Watcom-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/XL-C-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/XL-CXX-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/XLClang-C-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/XLClang-CXX-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/zOS-C-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/FindOpenSSL.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/FindPackageMessage.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/FindPkgConfig.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Internal/CMakeCheckCompilerFlag.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Internal/FeatureTesting.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Platform/Linux-Determine-CXX.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Platform/Linux-GNU-C.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Platform/Linux-GNU-CXX.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Platform/Linux-GNU.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Platform/Linux.cmake"
|
||||
"/usr/share/cmake-3.16/Modules/Platform/UnixPaths.cmake"
|
||||
)
|
||||
|
||||
# The corresponding makefile is:
|
||||
set(CMAKE_MAKEFILE_OUTPUTS
|
||||
"Makefile"
|
||||
"CMakeFiles/cmake.check_cache"
|
||||
)
|
||||
|
||||
# Byproducts of CMake generate step:
|
||||
set(CMAKE_MAKEFILE_PRODUCTS
|
||||
"CMakeFiles/3.16.3/CMakeSystem.cmake"
|
||||
"CMakeFiles/3.16.3/CMakeCCompiler.cmake"
|
||||
"CMakeFiles/3.16.3/CMakeCXXCompiler.cmake"
|
||||
"CMakeFiles/3.16.3/CMakeCCompiler.cmake"
|
||||
"CMakeFiles/3.16.3/CMakeCXXCompiler.cmake"
|
||||
"CMakeFiles/CMakeDirectoryInformation.cmake"
|
||||
)
|
||||
|
||||
# Dependency information for all targets:
|
||||
set(CMAKE_DEPEND_INFO_FILES
|
||||
"CMakeFiles/yolo_bytetrack.dir/DependInfo.cmake"
|
||||
)
|
|
@ -1,106 +0,0 @@
|
|||
# CMAKE generated file: DO NOT EDIT!
|
||||
# Generated by "Unix Makefiles" Generator, CMake Version 3.16
|
||||
|
||||
# Default target executed when no arguments are given to make.
|
||||
default_target: all
|
||||
|
||||
.PHONY : default_target
|
||||
|
||||
#=============================================================================
|
||||
# Special targets provided by cmake.
|
||||
|
||||
# Disable implicit rules so canonical targets will work.
|
||||
.SUFFIXES:
|
||||
|
||||
|
||||
# Remove some rules from gmake that .SUFFIXES does not remove.
|
||||
SUFFIXES =
|
||||
|
||||
.SUFFIXES: .hpux_make_needs_suffix_list
|
||||
|
||||
|
||||
# Suppress display of executed commands.
|
||||
$(VERBOSE).SILENT:
|
||||
|
||||
|
||||
# A target that is always out of date.
|
||||
cmake_force:
|
||||
|
||||
.PHONY : cmake_force
|
||||
|
||||
#=============================================================================
|
||||
# Set environment variables for the build.
|
||||
|
||||
# The shell in which to execute make rules.
|
||||
SHELL = /bin/sh
|
||||
|
||||
# The CMake executable.
|
||||
CMAKE_COMMAND = /usr/bin/cmake
|
||||
|
||||
# The command to remove a file.
|
||||
RM = /usr/bin/cmake -E remove -f
|
||||
|
||||
# Escaping for special characters.
|
||||
EQUALS = =
|
||||
|
||||
# The top-level source directory on which CMake was run.
|
||||
CMAKE_SOURCE_DIR = /home/huey/Desktop/C/yolo_bytetrack
|
||||
|
||||
# The top-level build directory on which CMake was run.
|
||||
CMAKE_BINARY_DIR = /home/huey/Desktop/C/yolo_bytetrack/build
|
||||
|
||||
#=============================================================================
|
||||
# Directory level rules for the build root directory
|
||||
|
||||
# The main recursive "all" target.
|
||||
all: CMakeFiles/yolo_bytetrack.dir/all
|
||||
|
||||
.PHONY : all
|
||||
|
||||
# The main recursive "preinstall" target.
|
||||
preinstall:
|
||||
|
||||
.PHONY : preinstall
|
||||
|
||||
# The main recursive "clean" target.
|
||||
clean: CMakeFiles/yolo_bytetrack.dir/clean
|
||||
|
||||
.PHONY : clean
|
||||
|
||||
#=============================================================================
|
||||
# Target rules for target CMakeFiles/yolo_bytetrack.dir
|
||||
|
||||
# All Build rule for target.
|
||||
CMakeFiles/yolo_bytetrack.dir/all:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/depend
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/build
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles --progress-num=1,2,3,4,5,6,7 "Built target yolo_bytetrack"
|
||||
.PHONY : CMakeFiles/yolo_bytetrack.dir/all
|
||||
|
||||
# Build rule for subdir invocation for target.
|
||||
CMakeFiles/yolo_bytetrack.dir/rule: cmake_check_build_system
|
||||
$(CMAKE_COMMAND) -E cmake_progress_start /home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles 7
|
||||
$(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/yolo_bytetrack.dir/all
|
||||
$(CMAKE_COMMAND) -E cmake_progress_start /home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles 0
|
||||
.PHONY : CMakeFiles/yolo_bytetrack.dir/rule
|
||||
|
||||
# Convenience name for target.
|
||||
yolo_bytetrack: CMakeFiles/yolo_bytetrack.dir/rule
|
||||
|
||||
.PHONY : yolo_bytetrack
|
||||
|
||||
# clean rule for target.
|
||||
CMakeFiles/yolo_bytetrack.dir/clean:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/clean
|
||||
.PHONY : CMakeFiles/yolo_bytetrack.dir/clean
|
||||
|
||||
#=============================================================================
|
||||
# Special targets to cleanup operation of make.
|
||||
|
||||
# Special rule to run CMake to check the build system integrity.
|
||||
# No rule that depends on this can have commands that come from listfiles
|
||||
# because they might be regenerated.
|
||||
cmake_check_build_system:
|
||||
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
|
||||
.PHONY : cmake_check_build_system
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/rebuild_cache.dir
|
||||
/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/edit_cache.dir
|
||||
/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/yolo_bytetrack.dir
|
|
@ -1 +0,0 @@
|
|||
7
|
File diff suppressed because it is too large
Load Diff
|
@ -1,30 +0,0 @@
|
|||
# The set of languages for which implicit dependencies are needed:
|
||||
set(CMAKE_DEPENDS_LANGUAGES
|
||||
"CXX"
|
||||
)
|
||||
# The set of files for implicit dependencies of each language:
|
||||
set(CMAKE_DEPENDS_CHECK_CXX
|
||||
"/home/huey/Desktop/C/yolo_bytetrack/src/BYTETracker.cpp" "/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.o"
|
||||
"/home/huey/Desktop/C/yolo_bytetrack/src/STrack.cpp" "/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.o"
|
||||
"/home/huey/Desktop/C/yolo_bytetrack/src/bytetrack.cpp" "/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.o"
|
||||
"/home/huey/Desktop/C/yolo_bytetrack/src/kalmanFilter.cpp" "/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.o"
|
||||
"/home/huey/Desktop/C/yolo_bytetrack/src/lapjv.cpp" "/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.o"
|
||||
"/home/huey/Desktop/C/yolo_bytetrack/src/utils.cpp" "/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.o"
|
||||
)
|
||||
set(CMAKE_CXX_COMPILER_ID "GNU")
|
||||
|
||||
# The include file search paths:
|
||||
set(CMAKE_CXX_TARGET_INCLUDE_PATH
|
||||
"/home/huey/openssl/install/include"
|
||||
"../include"
|
||||
"../3rdparty/librknn_api/include"
|
||||
"../3rdparty/rga/include"
|
||||
"/home/huey/opencv-4.7.0/install/include/opencv4"
|
||||
)
|
||||
|
||||
# Targets to which this target links.
|
||||
set(CMAKE_TARGET_LINKED_INFO_FILES
|
||||
)
|
||||
|
||||
# Fortran module output directory.
|
||||
set(CMAKE_Fortran_TARGET_MODULE_DIR "")
|
|
@ -1,229 +0,0 @@
|
|||
# CMAKE generated file: DO NOT EDIT!
|
||||
# Generated by "Unix Makefiles" Generator, CMake Version 3.16
|
||||
|
||||
# Delete rule output on recipe failure.
|
||||
.DELETE_ON_ERROR:
|
||||
|
||||
|
||||
#=============================================================================
|
||||
# Special targets provided by cmake.
|
||||
|
||||
# Disable implicit rules so canonical targets will work.
|
||||
.SUFFIXES:
|
||||
|
||||
|
||||
# Remove some rules from gmake that .SUFFIXES does not remove.
|
||||
SUFFIXES =
|
||||
|
||||
.SUFFIXES: .hpux_make_needs_suffix_list
|
||||
|
||||
|
||||
# Suppress display of executed commands.
|
||||
$(VERBOSE).SILENT:
|
||||
|
||||
|
||||
# A target that is always out of date.
|
||||
cmake_force:
|
||||
|
||||
.PHONY : cmake_force
|
||||
|
||||
#=============================================================================
|
||||
# Set environment variables for the build.
|
||||
|
||||
# The shell in which to execute make rules.
|
||||
SHELL = /bin/sh
|
||||
|
||||
# The CMake executable.
|
||||
CMAKE_COMMAND = /usr/bin/cmake
|
||||
|
||||
# The command to remove a file.
|
||||
RM = /usr/bin/cmake -E remove -f
|
||||
|
||||
# Escaping for special characters.
|
||||
EQUALS = =
|
||||
|
||||
# The top-level source directory on which CMake was run.
|
||||
CMAKE_SOURCE_DIR = /home/huey/Desktop/C/yolo_bytetrack
|
||||
|
||||
# The top-level build directory on which CMake was run.
|
||||
CMAKE_BINARY_DIR = /home/huey/Desktop/C/yolo_bytetrack/build
|
||||
|
||||
# Include any dependencies generated for this target.
|
||||
include CMakeFiles/yolo_bytetrack.dir/depend.make
|
||||
|
||||
# Include the progress variables for this target.
|
||||
include CMakeFiles/yolo_bytetrack.dir/progress.make
|
||||
|
||||
# Include the compile flags for this target's objects.
|
||||
include CMakeFiles/yolo_bytetrack.dir/flags.make
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.o: CMakeFiles/yolo_bytetrack.dir/flags.make
|
||||
CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.o: ../src/bytetrack.cpp
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.o"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.o -c /home/huey/Desktop/C/yolo_bytetrack/src/bytetrack.cpp
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.i"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/huey/Desktop/C/yolo_bytetrack/src/bytetrack.cpp > CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.i
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.s"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/huey/Desktop/C/yolo_bytetrack/src/bytetrack.cpp -o CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.s
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.o: CMakeFiles/yolo_bytetrack.dir/flags.make
|
||||
CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.o: ../src/BYTETracker.cpp
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.o"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.o -c /home/huey/Desktop/C/yolo_bytetrack/src/BYTETracker.cpp
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.i"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/huey/Desktop/C/yolo_bytetrack/src/BYTETracker.cpp > CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.i
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.s"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/huey/Desktop/C/yolo_bytetrack/src/BYTETracker.cpp -o CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.s
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.o: CMakeFiles/yolo_bytetrack.dir/flags.make
|
||||
CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.o: ../src/kalmanFilter.cpp
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.o"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.o -c /home/huey/Desktop/C/yolo_bytetrack/src/kalmanFilter.cpp
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.i"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/huey/Desktop/C/yolo_bytetrack/src/kalmanFilter.cpp > CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.i
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.s"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/huey/Desktop/C/yolo_bytetrack/src/kalmanFilter.cpp -o CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.s
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.o: CMakeFiles/yolo_bytetrack.dir/flags.make
|
||||
CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.o: ../src/lapjv.cpp
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.o"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.o -c /home/huey/Desktop/C/yolo_bytetrack/src/lapjv.cpp
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.i"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/huey/Desktop/C/yolo_bytetrack/src/lapjv.cpp > CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.i
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.s"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/huey/Desktop/C/yolo_bytetrack/src/lapjv.cpp -o CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.s
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.o: CMakeFiles/yolo_bytetrack.dir/flags.make
|
||||
CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.o: ../src/STrack.cpp
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.o"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.o -c /home/huey/Desktop/C/yolo_bytetrack/src/STrack.cpp
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.i"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/huey/Desktop/C/yolo_bytetrack/src/STrack.cpp > CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.i
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.s"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/huey/Desktop/C/yolo_bytetrack/src/STrack.cpp -o CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.s
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.o: CMakeFiles/yolo_bytetrack.dir/flags.make
|
||||
CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.o: ../src/utils.cpp
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.o"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -o CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.o -c /home/huey/Desktop/C/yolo_bytetrack/src/utils.cpp
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.i"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/huey/Desktop/C/yolo_bytetrack/src/utils.cpp > CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.i
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.s"
|
||||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/huey/Desktop/C/yolo_bytetrack/src/utils.cpp -o CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.s
|
||||
|
||||
# Object files for target yolo_bytetrack
|
||||
yolo_bytetrack_OBJECTS = \
|
||||
"CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.o" \
|
||||
"CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.o" \
|
||||
"CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.o" \
|
||||
"CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.o" \
|
||||
"CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.o" \
|
||||
"CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.o"
|
||||
|
||||
# External object files for target yolo_bytetrack
|
||||
yolo_bytetrack_EXTERNAL_OBJECTS =
|
||||
|
||||
yolo_bytetrack: CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.o
|
||||
yolo_bytetrack: CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.o
|
||||
yolo_bytetrack: CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.o
|
||||
yolo_bytetrack: CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.o
|
||||
yolo_bytetrack: CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.o
|
||||
yolo_bytetrack: CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.o
|
||||
yolo_bytetrack: CMakeFiles/yolo_bytetrack.dir/build.make
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_gapi.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_stitching.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_aruco.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_barcode.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_bgsegm.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_bioinspired.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_ccalib.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_dnn_objdetect.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_dnn_superres.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_dpm.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_face.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_fuzzy.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_hfs.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_img_hash.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_intensity_transform.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_line_descriptor.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_mcc.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_quality.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_rapid.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_reg.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_rgbd.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_saliency.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_stereo.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_structured_light.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_superres.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_surface_matching.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_tracking.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_videostab.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_wechat_qrcode.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_xfeatures2d.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_xobjdetect.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_xphoto.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/openssl/install/lib/libssl.so
|
||||
yolo_bytetrack: /home/huey/openssl/install/lib/libcrypto.so
|
||||
yolo_bytetrack: ../3rdparty/librknn_api/armhf/librknn_api.so
|
||||
yolo_bytetrack: ../3rdparty/rga/lib/librga.so
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_shape.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_highgui.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_datasets.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_plot.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_text.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_ml.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_phase_unwrapping.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_optflow.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_ximgproc.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_video.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_videoio.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_imgcodecs.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_objdetect.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_calib3d.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_dnn.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_features2d.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_flann.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_photo.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_imgproc.so.4.7.0
|
||||
yolo_bytetrack: /home/huey/opencv-4.7.0/install/lib/libopencv_core.so.4.7.0
|
||||
yolo_bytetrack: CMakeFiles/yolo_bytetrack.dir/link.txt
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Linking CXX executable yolo_bytetrack"
|
||||
$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/yolo_bytetrack.dir/link.txt --verbose=$(VERBOSE)
|
||||
|
||||
# Rule to build all files generated by this target.
|
||||
CMakeFiles/yolo_bytetrack.dir/build: yolo_bytetrack
|
||||
|
||||
.PHONY : CMakeFiles/yolo_bytetrack.dir/build
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/clean:
|
||||
$(CMAKE_COMMAND) -P CMakeFiles/yolo_bytetrack.dir/cmake_clean.cmake
|
||||
.PHONY : CMakeFiles/yolo_bytetrack.dir/clean
|
||||
|
||||
CMakeFiles/yolo_bytetrack.dir/depend:
|
||||
cd /home/huey/Desktop/C/yolo_bytetrack/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/huey/Desktop/C/yolo_bytetrack /home/huey/Desktop/C/yolo_bytetrack /home/huey/Desktop/C/yolo_bytetrack/build /home/huey/Desktop/C/yolo_bytetrack/build /home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/yolo_bytetrack.dir/DependInfo.cmake --color=$(COLOR)
|
||||
.PHONY : CMakeFiles/yolo_bytetrack.dir/depend
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
file(REMOVE_RECURSE
|
||||
"CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.o"
|
||||
"CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.o"
|
||||
"CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.o"
|
||||
"CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.o"
|
||||
"CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.o"
|
||||
"CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.o"
|
||||
"yolo_bytetrack"
|
||||
"yolo_bytetrack.pdb"
|
||||
)
|
||||
|
||||
# Per-language clean rules from dependency scanning.
|
||||
foreach(lang CXX)
|
||||
include(CMakeFiles/yolo_bytetrack.dir/cmake_clean_${lang}.cmake OPTIONAL)
|
||||
endforeach()
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,10 +0,0 @@
|
|||
# CMAKE generated file: DO NOT EDIT!
|
||||
# Generated by "Unix Makefiles" Generator, CMake Version 3.16
|
||||
|
||||
# compile CXX with /home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
|
||||
CXX_FLAGS =
|
||||
|
||||
CXX_DEFINES =
|
||||
|
||||
CXX_INCLUDES = -I/home/huey/openssl/install/include -I/home/huey/Desktop/C/yolo_bytetrack/include -I/home/huey/Desktop/C/yolo_bytetrack/3rdparty/librknn_api/include -I/home/huey/Desktop/C/yolo_bytetrack/3rdparty/rga/include -isystem /home/huey/opencv-4.7.0/install/include/opencv4
|
||||
|
|
@ -1 +0,0 @@
|
|||
/home/huey/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.o CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.o CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.o CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.o CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.o CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.o -o yolo_bytetrack -Wl,-rpath,/home/huey/Desktop/C/yolo_bytetrack/install/rknn_yolov5_1109_new_Linux/lib /home/huey/opencv-4.7.0/install/lib/libopencv_gapi.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_stitching.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_aruco.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_barcode.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_bgsegm.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_bioinspired.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_ccalib.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_dnn_objdetect.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_dnn_superres.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_dpm.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_face.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_fuzzy.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_hfs.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_img_hash.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_intensity_transform.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_line_descriptor.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_mcc.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_quality.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_rapid.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_reg.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_rgbd.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_saliency.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_stereo.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_structured_light.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_superres.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_surface_matching.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_tracking.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_videostab.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_wechat_qrcode.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_xfeatures2d.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_xobjdetect.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_xphoto.so.4.7.0 /home/huey/openssl/install/lib/libssl.so /home/huey/openssl/install/lib/libcrypto.so -lpthread ../3rdparty/librknn_api/armhf/librknn_api.so ../3rdparty/rga/lib/librga.so /home/huey/opencv-4.7.0/install/lib/libopencv_shape.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_highgui.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_datasets.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_plot.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_text.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_ml.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_phase_unwrapping.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_optflow.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_ximgproc.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_video.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_videoio.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_imgcodecs.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_objdetect.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_calib3d.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_dnn.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_features2d.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_flann.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_photo.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_imgproc.so.4.7.0 /home/huey/opencv-4.7.0/install/lib/libopencv_core.so.4.7.0
|
|
@ -1,8 +0,0 @@
|
|||
CMAKE_PROGRESS_1 = 1
|
||||
CMAKE_PROGRESS_2 = 2
|
||||
CMAKE_PROGRESS_3 = 3
|
||||
CMAKE_PROGRESS_4 = 4
|
||||
CMAKE_PROGRESS_5 = 5
|
||||
CMAKE_PROGRESS_6 = 6
|
||||
CMAKE_PROGRESS_7 = 7
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,328 +0,0 @@
|
|||
# CMAKE generated file: DO NOT EDIT!
|
||||
# Generated by "Unix Makefiles" Generator, CMake Version 3.16
|
||||
|
||||
# Default target executed when no arguments are given to make.
|
||||
default_target: all
|
||||
|
||||
.PHONY : default_target
|
||||
|
||||
# Allow only one "make -f Makefile2" at a time, but pass parallelism.
|
||||
.NOTPARALLEL:
|
||||
|
||||
|
||||
#=============================================================================
|
||||
# Special targets provided by cmake.
|
||||
|
||||
# Disable implicit rules so canonical targets will work.
|
||||
.SUFFIXES:
|
||||
|
||||
|
||||
# Remove some rules from gmake that .SUFFIXES does not remove.
|
||||
SUFFIXES =
|
||||
|
||||
.SUFFIXES: .hpux_make_needs_suffix_list
|
||||
|
||||
|
||||
# Suppress display of executed commands.
|
||||
$(VERBOSE).SILENT:
|
||||
|
||||
|
||||
# A target that is always out of date.
|
||||
cmake_force:
|
||||
|
||||
.PHONY : cmake_force
|
||||
|
||||
#=============================================================================
|
||||
# Set environment variables for the build.
|
||||
|
||||
# The shell in which to execute make rules.
|
||||
SHELL = /bin/sh
|
||||
|
||||
# The CMake executable.
|
||||
CMAKE_COMMAND = /usr/bin/cmake
|
||||
|
||||
# The command to remove a file.
|
||||
RM = /usr/bin/cmake -E remove -f
|
||||
|
||||
# Escaping for special characters.
|
||||
EQUALS = =
|
||||
|
||||
# The top-level source directory on which CMake was run.
|
||||
CMAKE_SOURCE_DIR = /home/huey/Desktop/C/yolo_bytetrack
|
||||
|
||||
# The top-level build directory on which CMake was run.
|
||||
CMAKE_BINARY_DIR = /home/huey/Desktop/C/yolo_bytetrack/build
|
||||
|
||||
#=============================================================================
|
||||
# Targets provided globally by CMake.
|
||||
|
||||
# Special rule for the target rebuild_cache
|
||||
rebuild_cache:
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
|
||||
/usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
|
||||
.PHONY : rebuild_cache
|
||||
|
||||
# Special rule for the target rebuild_cache
|
||||
rebuild_cache/fast: rebuild_cache
|
||||
|
||||
.PHONY : rebuild_cache/fast
|
||||
|
||||
# Special rule for the target edit_cache
|
||||
edit_cache:
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..."
|
||||
/usr/bin/cmake-gui -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
|
||||
.PHONY : edit_cache
|
||||
|
||||
# Special rule for the target edit_cache
|
||||
edit_cache/fast: edit_cache
|
||||
|
||||
.PHONY : edit_cache/fast
|
||||
|
||||
# The main all target
|
||||
all: cmake_check_build_system
|
||||
$(CMAKE_COMMAND) -E cmake_progress_start /home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles /home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles/progress.marks
|
||||
$(MAKE) -f CMakeFiles/Makefile2 all
|
||||
$(CMAKE_COMMAND) -E cmake_progress_start /home/huey/Desktop/C/yolo_bytetrack/build/CMakeFiles 0
|
||||
.PHONY : all
|
||||
|
||||
# The main clean target
|
||||
clean:
|
||||
$(MAKE) -f CMakeFiles/Makefile2 clean
|
||||
.PHONY : clean
|
||||
|
||||
# The main clean target
|
||||
clean/fast: clean
|
||||
|
||||
.PHONY : clean/fast
|
||||
|
||||
# Prepare targets for installation.
|
||||
preinstall: all
|
||||
$(MAKE) -f CMakeFiles/Makefile2 preinstall
|
||||
.PHONY : preinstall
|
||||
|
||||
# Prepare targets for installation.
|
||||
preinstall/fast:
|
||||
$(MAKE) -f CMakeFiles/Makefile2 preinstall
|
||||
.PHONY : preinstall/fast
|
||||
|
||||
# clear depends
|
||||
depend:
|
||||
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
|
||||
.PHONY : depend
|
||||
|
||||
#=============================================================================
|
||||
# Target rules for targets named yolo_bytetrack
|
||||
|
||||
# Build rule for target.
|
||||
yolo_bytetrack: cmake_check_build_system
|
||||
$(MAKE) -f CMakeFiles/Makefile2 yolo_bytetrack
|
||||
.PHONY : yolo_bytetrack
|
||||
|
||||
# fast build rule for target.
|
||||
yolo_bytetrack/fast:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/build
|
||||
.PHONY : yolo_bytetrack/fast
|
||||
|
||||
src/BYTETracker.o: src/BYTETracker.cpp.o
|
||||
|
||||
.PHONY : src/BYTETracker.o
|
||||
|
||||
# target to build an object file
|
||||
src/BYTETracker.cpp.o:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.o
|
||||
.PHONY : src/BYTETracker.cpp.o
|
||||
|
||||
src/BYTETracker.i: src/BYTETracker.cpp.i
|
||||
|
||||
.PHONY : src/BYTETracker.i
|
||||
|
||||
# target to preprocess a source file
|
||||
src/BYTETracker.cpp.i:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.i
|
||||
.PHONY : src/BYTETracker.cpp.i
|
||||
|
||||
src/BYTETracker.s: src/BYTETracker.cpp.s
|
||||
|
||||
.PHONY : src/BYTETracker.s
|
||||
|
||||
# target to generate assembly for a file
|
||||
src/BYTETracker.cpp.s:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/BYTETracker.cpp.s
|
||||
.PHONY : src/BYTETracker.cpp.s
|
||||
|
||||
src/STrack.o: src/STrack.cpp.o
|
||||
|
||||
.PHONY : src/STrack.o
|
||||
|
||||
# target to build an object file
|
||||
src/STrack.cpp.o:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.o
|
||||
.PHONY : src/STrack.cpp.o
|
||||
|
||||
src/STrack.i: src/STrack.cpp.i
|
||||
|
||||
.PHONY : src/STrack.i
|
||||
|
||||
# target to preprocess a source file
|
||||
src/STrack.cpp.i:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.i
|
||||
.PHONY : src/STrack.cpp.i
|
||||
|
||||
src/STrack.s: src/STrack.cpp.s
|
||||
|
||||
.PHONY : src/STrack.s
|
||||
|
||||
# target to generate assembly for a file
|
||||
src/STrack.cpp.s:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/STrack.cpp.s
|
||||
.PHONY : src/STrack.cpp.s
|
||||
|
||||
src/bytetrack.o: src/bytetrack.cpp.o
|
||||
|
||||
.PHONY : src/bytetrack.o
|
||||
|
||||
# target to build an object file
|
||||
src/bytetrack.cpp.o:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.o
|
||||
.PHONY : src/bytetrack.cpp.o
|
||||
|
||||
src/bytetrack.i: src/bytetrack.cpp.i
|
||||
|
||||
.PHONY : src/bytetrack.i
|
||||
|
||||
# target to preprocess a source file
|
||||
src/bytetrack.cpp.i:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.i
|
||||
.PHONY : src/bytetrack.cpp.i
|
||||
|
||||
src/bytetrack.s: src/bytetrack.cpp.s
|
||||
|
||||
.PHONY : src/bytetrack.s
|
||||
|
||||
# target to generate assembly for a file
|
||||
src/bytetrack.cpp.s:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/bytetrack.cpp.s
|
||||
.PHONY : src/bytetrack.cpp.s
|
||||
|
||||
src/kalmanFilter.o: src/kalmanFilter.cpp.o
|
||||
|
||||
.PHONY : src/kalmanFilter.o
|
||||
|
||||
# target to build an object file
|
||||
src/kalmanFilter.cpp.o:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.o
|
||||
.PHONY : src/kalmanFilter.cpp.o
|
||||
|
||||
src/kalmanFilter.i: src/kalmanFilter.cpp.i
|
||||
|
||||
.PHONY : src/kalmanFilter.i
|
||||
|
||||
# target to preprocess a source file
|
||||
src/kalmanFilter.cpp.i:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.i
|
||||
.PHONY : src/kalmanFilter.cpp.i
|
||||
|
||||
src/kalmanFilter.s: src/kalmanFilter.cpp.s
|
||||
|
||||
.PHONY : src/kalmanFilter.s
|
||||
|
||||
# target to generate assembly for a file
|
||||
src/kalmanFilter.cpp.s:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/kalmanFilter.cpp.s
|
||||
.PHONY : src/kalmanFilter.cpp.s
|
||||
|
||||
src/lapjv.o: src/lapjv.cpp.o
|
||||
|
||||
.PHONY : src/lapjv.o
|
||||
|
||||
# target to build an object file
|
||||
src/lapjv.cpp.o:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.o
|
||||
.PHONY : src/lapjv.cpp.o
|
||||
|
||||
src/lapjv.i: src/lapjv.cpp.i
|
||||
|
||||
.PHONY : src/lapjv.i
|
||||
|
||||
# target to preprocess a source file
|
||||
src/lapjv.cpp.i:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.i
|
||||
.PHONY : src/lapjv.cpp.i
|
||||
|
||||
src/lapjv.s: src/lapjv.cpp.s
|
||||
|
||||
.PHONY : src/lapjv.s
|
||||
|
||||
# target to generate assembly for a file
|
||||
src/lapjv.cpp.s:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/lapjv.cpp.s
|
||||
.PHONY : src/lapjv.cpp.s
|
||||
|
||||
src/utils.o: src/utils.cpp.o
|
||||
|
||||
.PHONY : src/utils.o
|
||||
|
||||
# target to build an object file
|
||||
src/utils.cpp.o:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.o
|
||||
.PHONY : src/utils.cpp.o
|
||||
|
||||
src/utils.i: src/utils.cpp.i
|
||||
|
||||
.PHONY : src/utils.i
|
||||
|
||||
# target to preprocess a source file
|
||||
src/utils.cpp.i:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.i
|
||||
.PHONY : src/utils.cpp.i
|
||||
|
||||
src/utils.s: src/utils.cpp.s
|
||||
|
||||
.PHONY : src/utils.s
|
||||
|
||||
# target to generate assembly for a file
|
||||
src/utils.cpp.s:
|
||||
$(MAKE) -f CMakeFiles/yolo_bytetrack.dir/build.make CMakeFiles/yolo_bytetrack.dir/src/utils.cpp.s
|
||||
.PHONY : src/utils.cpp.s
|
||||
|
||||
# Help Target
|
||||
help:
|
||||
@echo "The following are some of the valid targets for this Makefile:"
|
||||
@echo "... all (the default if no target is provided)"
|
||||
@echo "... clean"
|
||||
@echo "... depend"
|
||||
@echo "... rebuild_cache"
|
||||
@echo "... edit_cache"
|
||||
@echo "... yolo_bytetrack"
|
||||
@echo "... src/BYTETracker.o"
|
||||
@echo "... src/BYTETracker.i"
|
||||
@echo "... src/BYTETracker.s"
|
||||
@echo "... src/STrack.o"
|
||||
@echo "... src/STrack.i"
|
||||
@echo "... src/STrack.s"
|
||||
@echo "... src/bytetrack.o"
|
||||
@echo "... src/bytetrack.i"
|
||||
@echo "... src/bytetrack.s"
|
||||
@echo "... src/kalmanFilter.o"
|
||||
@echo "... src/kalmanFilter.i"
|
||||
@echo "... src/kalmanFilter.s"
|
||||
@echo "... src/lapjv.o"
|
||||
@echo "... src/lapjv.i"
|
||||
@echo "... src/lapjv.s"
|
||||
@echo "... src/utils.o"
|
||||
@echo "... src/utils.i"
|
||||
@echo "... src/utils.s"
|
||||
.PHONY : help
|
||||
|
||||
|
||||
|
||||
#=============================================================================
|
||||
# Special targets to cleanup operation of make.
|
||||
|
||||
# Special rule to run CMake to check the build system integrity.
|
||||
# No rule that depends on this can have commands that come from listfiles
|
||||
# because they might be regenerated.
|
||||
cmake_check_build_system:
|
||||
$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
|
||||
.PHONY : cmake_check_build_system
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
# Install script for directory: /home/huey/Desktop/C/yolo_bytetrack
|
||||
|
||||
# Set the install prefix
|
||||
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
|
||||
set(CMAKE_INSTALL_PREFIX "/home/huey/Desktop/C/yolo_bytetrack/install/rknn_yolov5_1109_new_Linux")
|
||||
endif()
|
||||
string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
|
||||
|
||||
# Set the install configuration name.
|
||||
if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
|
||||
if(BUILD_TYPE)
|
||||
string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
|
||||
CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
|
||||
else()
|
||||
set(CMAKE_INSTALL_CONFIG_NAME "")
|
||||
endif()
|
||||
message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
|
||||
endif()
|
||||
|
||||
# Set the component getting installed.
|
||||
if(NOT CMAKE_INSTALL_COMPONENT)
|
||||
if(COMPONENT)
|
||||
message(STATUS "Install component: \"${COMPONENT}\"")
|
||||
set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
|
||||
else()
|
||||
set(CMAKE_INSTALL_COMPONENT)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Install shared libraries without execute permission?
|
||||
if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
|
||||
set(CMAKE_INSTALL_SO_NO_EXE "1")
|
||||
endif()
|
||||
|
||||
# Is this installation the result of a crosscompile?
|
||||
if(NOT DEFINED CMAKE_CROSSCOMPILING)
|
||||
set(CMAKE_CROSSCOMPILING "FALSE")
|
||||
endif()
|
||||
|
||||
if(CMAKE_INSTALL_COMPONENT)
|
||||
set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
|
||||
else()
|
||||
set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
|
||||
endif()
|
||||
|
||||
string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
|
||||
"${CMAKE_INSTALL_MANIFEST_FILES}")
|
||||
file(WRITE "/home/huey/Desktop/C/yolo_bytetrack/build/${CMAKE_INSTALL_MANIFEST}"
|
||||
"${CMAKE_INSTALL_MANIFEST_CONTENT}")
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,24 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
@CMAKE_CONFIGURABLE_FILE_CONTENT@
|
|
@ -0,0 +1,84 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
include(CheckCSourceCompiles)
|
||||
|
||||
option(CURL_HIDDEN_SYMBOLS "Set to ON to hide libcurl internal symbols (=hide all symbols that aren't officially external)." ON)
|
||||
mark_as_advanced(CURL_HIDDEN_SYMBOLS)
|
||||
|
||||
if(WIN32 AND ENABLE_CURLDEBUG)
|
||||
# We need to export internal debug functions (e.g. curl_dbg_*), so disable
|
||||
# symbol hiding for debug builds.
|
||||
set(CURL_HIDDEN_SYMBOLS OFF)
|
||||
endif()
|
||||
|
||||
if(CURL_HIDDEN_SYMBOLS)
|
||||
set(SUPPORTS_SYMBOL_HIDING FALSE)
|
||||
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT MSVC)
|
||||
set(SUPPORTS_SYMBOL_HIDING TRUE)
|
||||
set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
|
||||
set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
|
||||
elseif(CMAKE_COMPILER_IS_GNUCC)
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
# note: this is considered buggy prior to 4.0 but the autotools don't care, so let's ignore that fact
|
||||
set(SUPPORTS_SYMBOL_HIDING TRUE)
|
||||
set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
|
||||
set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
|
||||
endif()
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.0)
|
||||
set(SUPPORTS_SYMBOL_HIDING TRUE)
|
||||
set(_SYMBOL_EXTERN "__global")
|
||||
set(_CFLAG_SYMBOLS_HIDE "-xldscope=hidden")
|
||||
elseif(CMAKE_C_COMPILER_ID MATCHES "Intel" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 9.0)
|
||||
# note: this should probably just check for version 9.1.045 but I'm not 100% sure
|
||||
# so let's do it the same way autotools do.
|
||||
set(SUPPORTS_SYMBOL_HIDING TRUE)
|
||||
set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))")
|
||||
set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden")
|
||||
check_c_source_compiles("#include <stdio.h>
|
||||
int main (void) { printf(\"icc fvisibility bug test\"); return 0; }" _no_bug)
|
||||
if(NOT _no_bug)
|
||||
set(SUPPORTS_SYMBOL_HIDING FALSE)
|
||||
set(_SYMBOL_EXTERN "")
|
||||
set(_CFLAG_SYMBOLS_HIDE "")
|
||||
endif()
|
||||
elseif(MSVC)
|
||||
set(SUPPORTS_SYMBOL_HIDING TRUE)
|
||||
endif()
|
||||
|
||||
set(HIDES_CURL_PRIVATE_SYMBOLS ${SUPPORTS_SYMBOL_HIDING})
|
||||
elseif(MSVC)
|
||||
if(NOT CMAKE_VERSION VERSION_LESS 3.7)
|
||||
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) #present since 3.4.3 but broken
|
||||
set(HIDES_CURL_PRIVATE_SYMBOLS FALSE)
|
||||
else()
|
||||
message(WARNING "Hiding private symbols regardless CURL_HIDDEN_SYMBOLS being disabled.")
|
||||
set(HIDES_CURL_PRIVATE_SYMBOLS TRUE)
|
||||
endif()
|
||||
else()
|
||||
set(HIDES_CURL_PRIVATE_SYMBOLS FALSE)
|
||||
endif()
|
||||
|
||||
set(CURL_CFLAG_SYMBOLS_HIDE ${_CFLAG_SYMBOLS_HIDE})
|
||||
set(CURL_EXTERN_SYMBOL ${_SYMBOL_EXTERN})
|
|
@ -0,0 +1,430 @@
|
|||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at https://curl.se/docs/copyright.html.
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
* SPDX-License-Identifier: curl
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
#ifdef HAVE_FCNTL_O_NONBLOCK
|
||||
/* headers for FCNTL_O_NONBLOCK test */
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
/* */
|
||||
#if defined(sun) || defined(__sun__) || \
|
||||
defined(__SUNPRO_C) || defined(__SUNPRO_CC)
|
||||
# if defined(__SVR4) || defined(__srv4__)
|
||||
# define PLATFORM_SOLARIS
|
||||
# else
|
||||
# define PLATFORM_SUNOS4
|
||||
# endif
|
||||
#endif
|
||||
#if (defined(_AIX) || defined(__xlC__)) && !defined(_AIX41)
|
||||
# define PLATFORM_AIX_V3
|
||||
#endif
|
||||
/* */
|
||||
#if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3)
|
||||
#error "O_NONBLOCK does not work on this platform"
|
||||
#endif
|
||||
|
||||
int main(void)
|
||||
{
|
||||
/* O_NONBLOCK source test */
|
||||
int flags = 0;
|
||||
if(0 != fcntl(0, F_SETFL, flags | O_NONBLOCK))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* tests for gethostbyname_r */
|
||||
#if defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
|
||||
# define _REENTRANT
|
||||
/* no idea whether _REENTRANT is always set, just invent a new flag */
|
||||
# define TEST_GETHOSTBYFOO_REENTRANT
|
||||
#endif
|
||||
#if defined(HAVE_GETHOSTBYNAME_R_3) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_5) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_6) || \
|
||||
defined(TEST_GETHOSTBYFOO_REENTRANT)
|
||||
#include <sys/types.h>
|
||||
#include <netdb.h>
|
||||
int main(void)
|
||||
{
|
||||
char *address = "example.com";
|
||||
int length = 0;
|
||||
int type = 0;
|
||||
struct hostent h;
|
||||
int rc = 0;
|
||||
#if defined(HAVE_GETHOSTBYNAME_R_3) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT)
|
||||
struct hostent_data hdata;
|
||||
#elif defined(HAVE_GETHOSTBYNAME_R_5) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_6) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
|
||||
char buffer[8192];
|
||||
int h_errnop;
|
||||
struct hostent *hp;
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_GETHOSTBYNAME_R_3) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT)
|
||||
rc = gethostbyname_r(address, &h, &hdata);
|
||||
#elif defined(HAVE_GETHOSTBYNAME_R_5) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT)
|
||||
rc = gethostbyname_r(address, &h, buffer, 8192, &h_errnop);
|
||||
(void)hp; /* not used for test */
|
||||
#elif defined(HAVE_GETHOSTBYNAME_R_6) || \
|
||||
defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT)
|
||||
rc = gethostbyname_r(address, &h, buffer, 8192, &hp, &h_errnop);
|
||||
#endif
|
||||
|
||||
(void)length;
|
||||
(void)type;
|
||||
(void)rc;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_IN_ADDR_T
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <arpa/inet.h>
|
||||
int main(void)
|
||||
{
|
||||
if((in_addr_t *) 0)
|
||||
return 0;
|
||||
if(sizeof(in_addr_t))
|
||||
return 0;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_BOOL_T
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_STDBOOL_H
|
||||
#include <stdbool.h>
|
||||
#endif
|
||||
int main(void)
|
||||
{
|
||||
if(sizeof(bool *))
|
||||
return 0;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef STDC_HEADERS
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <float.h>
|
||||
int main(void) { return 0; }
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_FILE_OFFSET_BITS
|
||||
#ifdef _FILE_OFFSET_BITS
|
||||
#undef _FILE_OFFSET_BITS
|
||||
#endif
|
||||
#define _FILE_OFFSET_BITS 64
|
||||
#include <sys/types.h>
|
||||
/* Check that off_t can represent 2**63 - 1 correctly.
|
||||
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||
since some C++ compilers masquerading as C compilers
|
||||
incorrectly reject 9223372036854775807. */
|
||||
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||
&& LARGE_OFF_T % 2147483647 == 1)
|
||||
? 1 : -1];
|
||||
int main(void) { ; return 0; }
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_IOCTLSOCKET
|
||||
/* includes start */
|
||||
#ifdef _WIN32
|
||||
# ifndef WIN32_LEAN_AND_MEAN
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# endif
|
||||
# include <winsock2.h>
|
||||
#endif
|
||||
int main(void)
|
||||
{
|
||||
/* ioctlsocket source code */
|
||||
int socket;
|
||||
unsigned long flags = ioctlsocket(socket, FIONBIO, &flags);
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_IOCTLSOCKET_CAMEL
|
||||
/* includes start */
|
||||
#ifdef _WIN32
|
||||
# ifndef WIN32_LEAN_AND_MEAN
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# endif
|
||||
# include <winsock2.h>
|
||||
#endif
|
||||
int main(void)
|
||||
{
|
||||
/* IoctlSocket source code */
|
||||
if(0 != IoctlSocket(0, 0, 0))
|
||||
return 1;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_IOCTLSOCKET_CAMEL_FIONBIO
|
||||
/* includes start */
|
||||
#ifdef _WIN32
|
||||
# ifndef WIN32_LEAN_AND_MEAN
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# endif
|
||||
# include <winsock2.h>
|
||||
#endif
|
||||
int main(void)
|
||||
{
|
||||
/* IoctlSocket source code */
|
||||
long flags = 0;
|
||||
if(0 != IoctlSocket(0, FIONBIO, &flags))
|
||||
return 1;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_IOCTLSOCKET_FIONBIO
|
||||
/* includes start */
|
||||
#ifdef _WIN32
|
||||
# ifndef WIN32_LEAN_AND_MEAN
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# endif
|
||||
# include <winsock2.h>
|
||||
#endif
|
||||
int main(void)
|
||||
{
|
||||
unsigned long flags = 0;
|
||||
if(0 != ioctlsocket(0, FIONBIO, &flags))
|
||||
return 1;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_IOCTL_FIONBIO
|
||||
/* headers for FIONBIO test */
|
||||
/* includes start */
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_IOCTL_H
|
||||
# include <sys/ioctl.h>
|
||||
#endif
|
||||
#ifdef HAVE_STROPTS_H
|
||||
# include <stropts.h>
|
||||
#endif
|
||||
int main(void)
|
||||
{
|
||||
int flags = 0;
|
||||
if(0 != ioctl(0, FIONBIO, &flags))
|
||||
return 1;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_IOCTL_SIOCGIFADDR
|
||||
/* headers for FIONBIO test */
|
||||
/* includes start */
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_IOCTL_H
|
||||
# include <sys/ioctl.h>
|
||||
#endif
|
||||
#ifdef HAVE_STROPTS_H
|
||||
# include <stropts.h>
|
||||
#endif
|
||||
#include <net/if.h>
|
||||
int main(void)
|
||||
{
|
||||
struct ifreq ifr;
|
||||
if(0 != ioctl(0, SIOCGIFADDR, &ifr))
|
||||
return 1;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SETSOCKOPT_SO_NONBLOCK
|
||||
/* includes start */
|
||||
#ifdef _WIN32
|
||||
# ifndef WIN32_LEAN_AND_MEAN
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# endif
|
||||
# include <winsock2.h>
|
||||
#endif
|
||||
/* includes start */
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#endif
|
||||
/* includes end */
|
||||
int main(void)
|
||||
{
|
||||
if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
|
||||
return 1;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_GLIBC_STRERROR_R
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
void check(char c) {}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
char buffer[1024];
|
||||
/* This will not compile if strerror_r does not return a char* */
|
||||
check(strerror_r(EACCES, buffer, sizeof(buffer))[0]);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_POSIX_STRERROR_R
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
/* float, because a pointer can't be implicitly cast to float */
|
||||
void check(float f) {}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
char buffer[1024];
|
||||
/* This will not compile if strerror_r does not return an int */
|
||||
check(strerror_r(EACCES, buffer, sizeof(buffer)));
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_FSETXATTR_6
|
||||
#include <sys/xattr.h> /* header from libc, not from libattr */
|
||||
int main(void)
|
||||
{
|
||||
fsetxattr(0, 0, 0, 0, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_FSETXATTR_5
|
||||
#include <sys/xattr.h> /* header from libc, not from libattr */
|
||||
int main(void)
|
||||
{
|
||||
fsetxattr(0, 0, 0, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CLOCK_GETTIME_MONOTONIC
|
||||
#include <time.h>
|
||||
int main(void)
|
||||
{
|
||||
struct timespec ts = {0, 0};
|
||||
clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_BUILTIN_AVAILABLE
|
||||
int main(void)
|
||||
{
|
||||
if(__builtin_available(macOS 10.12, *)) {}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_ATOMIC
|
||||
/* includes start */
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_UNISTD_H
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
#ifdef HAVE_STDATOMIC_H
|
||||
# include <stdatomic.h>
|
||||
#endif
|
||||
/* includes end */
|
||||
|
||||
int main(void)
|
||||
{
|
||||
_Atomic int i = 1;
|
||||
i = 0; /* Force an atomic-write operation. */
|
||||
return i;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_WIN32_WINNT
|
||||
/* includes start */
|
||||
#ifdef _WIN32
|
||||
# ifndef WIN32_LEAN_AND_MEAN
|
||||
# define WIN32_LEAN_AND_MEAN
|
||||
# endif
|
||||
# ifndef NOGDI
|
||||
# define NOGDI
|
||||
# endif
|
||||
# include <windows.h>
|
||||
#endif
|
||||
/* includes end */
|
||||
|
||||
#define enquote(x) #x
|
||||
#define expand(x) enquote(x)
|
||||
#pragma message("_WIN32_WINNT=" expand(_WIN32_WINNT))
|
||||
|
||||
int main(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
|
@ -0,0 +1,32 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
find_path(BEARSSL_INCLUDE_DIRS bearssl.h)
|
||||
|
||||
find_library(BEARSSL_LIBRARY bearssl)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(BEARSSL DEFAULT_MSG
|
||||
BEARSSL_INCLUDE_DIRS BEARSSL_LIBRARY)
|
||||
|
||||
mark_as_advanced(BEARSSL_INCLUDE_DIRS BEARSSL_LIBRARY)
|
|
@ -0,0 +1,43 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
find_path(BROTLI_INCLUDE_DIR "brotli/decode.h")
|
||||
|
||||
find_library(BROTLICOMMON_LIBRARY NAMES brotlicommon)
|
||||
find_library(BROTLIDEC_LIBRARY NAMES brotlidec)
|
||||
|
||||
find_package_handle_standard_args(Brotli
|
||||
FOUND_VAR
|
||||
BROTLI_FOUND
|
||||
REQUIRED_VARS
|
||||
BROTLIDEC_LIBRARY
|
||||
BROTLICOMMON_LIBRARY
|
||||
BROTLI_INCLUDE_DIR
|
||||
FAIL_MESSAGE
|
||||
"Could NOT find Brotli"
|
||||
)
|
||||
|
||||
set(BROTLI_INCLUDE_DIRS ${BROTLI_INCLUDE_DIR})
|
||||
set(BROTLI_LIBRARIES ${BROTLICOMMON_LIBRARY} ${BROTLIDEC_LIBRARY})
|
|
@ -0,0 +1,47 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
# - Find c-ares
|
||||
# Find the c-ares includes and library
|
||||
# This module defines
|
||||
# CARES_INCLUDE_DIR, where to find ares.h, etc.
|
||||
# CARES_LIBRARIES, the libraries needed to use c-ares.
|
||||
# CARES_FOUND, If false, do not try to use c-ares.
|
||||
# also defined, but not for general use are
|
||||
# CARES_LIBRARY, where to find the c-ares library.
|
||||
|
||||
find_path(CARES_INCLUDE_DIR ares.h)
|
||||
|
||||
set(CARES_NAMES ${CARES_NAMES} cares)
|
||||
find_library(CARES_LIBRARY
|
||||
NAMES ${CARES_NAMES}
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(CARES
|
||||
REQUIRED_VARS CARES_LIBRARY CARES_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(
|
||||
CARES_LIBRARY
|
||||
CARES_INCLUDE_DIR
|
||||
)
|
|
@ -0,0 +1,312 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
# - Try to find the GSS Kerberos library
|
||||
# Once done this will define
|
||||
#
|
||||
# GSS_ROOT_DIR - Set this variable to the root installation of GSS
|
||||
#
|
||||
# Read-Only variables:
|
||||
# GSS_FOUND - system has the Heimdal library
|
||||
# GSS_FLAVOUR - "MIT" or "Heimdal" if anything found.
|
||||
# GSS_INCLUDE_DIR - the Heimdal include directory
|
||||
# GSS_LIBRARIES - The libraries needed to use GSS
|
||||
# GSS_LINK_DIRECTORIES - Directories to add to linker search path
|
||||
# GSS_LINKER_FLAGS - Additional linker flags
|
||||
# GSS_COMPILER_FLAGS - Additional compiler flags
|
||||
# GSS_VERSION - This is set to version advertised by pkg-config or read from manifest.
|
||||
# In case the library is found but no version info available it'll be set to "unknown"
|
||||
|
||||
set(_MIT_MODNAME mit-krb5-gssapi)
|
||||
set(_HEIMDAL_MODNAME heimdal-gssapi)
|
||||
|
||||
include(CheckIncludeFile)
|
||||
include(CheckIncludeFiles)
|
||||
include(CheckTypeSize)
|
||||
|
||||
set(_GSS_ROOT_HINTS
|
||||
"${GSS_ROOT_DIR}"
|
||||
"$ENV{GSS_ROOT_DIR}"
|
||||
)
|
||||
|
||||
# try to find library using system pkg-config if user didn't specify root dir
|
||||
if(NOT GSS_ROOT_DIR AND NOT "$ENV{GSS_ROOT_DIR}")
|
||||
if(UNIX)
|
||||
find_package(PkgConfig QUIET)
|
||||
pkg_search_module(_GSS_PKG ${_MIT_MODNAME} ${_HEIMDAL_MODNAME})
|
||||
list(APPEND _GSS_ROOT_HINTS "${_GSS_PKG_PREFIX}")
|
||||
elseif(WIN32)
|
||||
list(APPEND _GSS_ROOT_HINTS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos;InstallDir]")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT _GSS_FOUND) #not found by pkg-config. Let's take more traditional approach.
|
||||
find_file(_GSS_CONFIGURE_SCRIPT
|
||||
NAMES
|
||||
"krb5-config"
|
||||
HINTS
|
||||
${_GSS_ROOT_HINTS}
|
||||
PATH_SUFFIXES
|
||||
bin
|
||||
NO_CMAKE_PATH
|
||||
NO_CMAKE_ENVIRONMENT_PATH
|
||||
)
|
||||
|
||||
# if not found in user-supplied directories, maybe system knows better
|
||||
find_file(_GSS_CONFIGURE_SCRIPT
|
||||
NAMES
|
||||
"krb5-config"
|
||||
PATH_SUFFIXES
|
||||
bin
|
||||
)
|
||||
|
||||
if(_GSS_CONFIGURE_SCRIPT)
|
||||
execute_process(
|
||||
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--cflags" "gssapi"
|
||||
OUTPUT_VARIABLE _GSS_CFLAGS
|
||||
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
message(STATUS "CFLAGS: ${_GSS_CFLAGS}")
|
||||
if(NOT _GSS_CONFIGURE_FAILED) # 0 means success
|
||||
# should also work in an odd case when multiple directories are given
|
||||
string(STRIP "${_GSS_CFLAGS}" _GSS_CFLAGS)
|
||||
string(REGEX REPLACE " +-I" ";" _GSS_CFLAGS "${_GSS_CFLAGS}")
|
||||
string(REGEX REPLACE " +-([^I][^ \\t;]*)" ";-\\1" _GSS_CFLAGS "${_GSS_CFLAGS}")
|
||||
|
||||
foreach(_flag ${_GSS_CFLAGS})
|
||||
if(_flag MATCHES "^-I.*")
|
||||
string(REGEX REPLACE "^-I" "" _val "${_flag}")
|
||||
list(APPEND _GSS_INCLUDE_DIR "${_val}")
|
||||
else()
|
||||
list(APPEND _GSS_COMPILER_FLAGS "${_flag}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--libs" "gssapi"
|
||||
OUTPUT_VARIABLE _GSS_LIB_FLAGS
|
||||
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
message(STATUS "LDFLAGS: ${_GSS_LIB_FLAGS}")
|
||||
|
||||
if(NOT _GSS_CONFIGURE_FAILED) # 0 means success
|
||||
# this script gives us libraries and link directories. Blah. We have to deal with it.
|
||||
string(STRIP "${_GSS_LIB_FLAGS}" _GSS_LIB_FLAGS)
|
||||
string(REGEX REPLACE " +-(L|l)" ";-\\1" _GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}")
|
||||
string(REGEX REPLACE " +-([^Ll][^ \\t;]*)" ";-\\1" _GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}")
|
||||
|
||||
foreach(_flag ${_GSS_LIB_FLAGS})
|
||||
if(_flag MATCHES "^-l.*")
|
||||
string(REGEX REPLACE "^-l" "" _val "${_flag}")
|
||||
list(APPEND _GSS_LIBRARIES "${_val}")
|
||||
elseif(_flag MATCHES "^-L.*")
|
||||
string(REGEX REPLACE "^-L" "" _val "${_flag}")
|
||||
list(APPEND _GSS_LINK_DIRECTORIES "${_val}")
|
||||
else()
|
||||
list(APPEND _GSS_LINKER_FLAGS "${_flag}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--version"
|
||||
OUTPUT_VARIABLE _GSS_VERSION
|
||||
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
# older versions may not have the "--version" parameter. In this case we just don't care.
|
||||
if(_GSS_CONFIGURE_FAILED)
|
||||
set(_GSS_VERSION 0)
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${_GSS_CONFIGURE_SCRIPT} "--vendor"
|
||||
OUTPUT_VARIABLE _GSS_VENDOR
|
||||
RESULT_VARIABLE _GSS_CONFIGURE_FAILED
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
# older versions may not have the "--vendor" parameter. In this case we just don't care.
|
||||
if(_GSS_CONFIGURE_FAILED)
|
||||
set(GSS_FLAVOUR "Heimdal") # most probably, shouldn't really matter
|
||||
else()
|
||||
if(_GSS_VENDOR MATCHES ".*H|heimdal.*")
|
||||
set(GSS_FLAVOUR "Heimdal")
|
||||
else()
|
||||
set(GSS_FLAVOUR "MIT")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
else() # either there is no config script or we are on a platform that doesn't provide one (Windows?)
|
||||
|
||||
find_path(_GSS_INCLUDE_DIR
|
||||
NAMES
|
||||
"gssapi/gssapi.h"
|
||||
HINTS
|
||||
${_GSS_ROOT_HINTS}
|
||||
PATH_SUFFIXES
|
||||
include
|
||||
inc
|
||||
)
|
||||
|
||||
if(_GSS_INCLUDE_DIR) #jay, we've found something
|
||||
set(CMAKE_REQUIRED_INCLUDES "${_GSS_INCLUDE_DIR}")
|
||||
check_include_files( "gssapi/gssapi_generic.h;gssapi/gssapi_krb5.h" _GSS_HAVE_MIT_HEADERS)
|
||||
|
||||
if(_GSS_HAVE_MIT_HEADERS)
|
||||
set(GSS_FLAVOUR "MIT")
|
||||
else()
|
||||
# prevent compiling the header - just check if we can include it
|
||||
list(APPEND CMAKE_REQUIRED_DEFINITIONS -D__ROKEN_H__)
|
||||
check_include_file( "roken.h" _GSS_HAVE_ROKEN_H)
|
||||
|
||||
check_include_file( "heimdal/roken.h" _GSS_HAVE_HEIMDAL_ROKEN_H)
|
||||
if(_GSS_HAVE_ROKEN_H OR _GSS_HAVE_HEIMDAL_ROKEN_H)
|
||||
set(GSS_FLAVOUR "Heimdal")
|
||||
endif()
|
||||
list(REMOVE_ITEM CMAKE_REQUIRED_DEFINITIONS -D__ROKEN_H__)
|
||||
endif()
|
||||
else()
|
||||
# I'm not convinced if this is the right way but this is what autotools do at the moment
|
||||
find_path(_GSS_INCLUDE_DIR
|
||||
NAMES
|
||||
"gssapi.h"
|
||||
HINTS
|
||||
${_GSS_ROOT_HINTS}
|
||||
PATH_SUFFIXES
|
||||
include
|
||||
inc
|
||||
)
|
||||
|
||||
if(_GSS_INCLUDE_DIR)
|
||||
set(GSS_FLAVOUR "Heimdal")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# if we have headers, check if we can link libraries
|
||||
if(GSS_FLAVOUR)
|
||||
set(_GSS_LIBDIR_SUFFIXES "")
|
||||
set(_GSS_LIBDIR_HINTS ${_GSS_ROOT_HINTS})
|
||||
get_filename_component(_GSS_CALCULATED_POTENTIAL_ROOT "${_GSS_INCLUDE_DIR}" PATH)
|
||||
list(APPEND _GSS_LIBDIR_HINTS ${_GSS_CALCULATED_POTENTIAL_ROOT})
|
||||
|
||||
if(WIN32)
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
list(APPEND _GSS_LIBDIR_SUFFIXES "lib/AMD64")
|
||||
if(GSS_FLAVOUR STREQUAL "MIT")
|
||||
set(_GSS_LIBNAME "gssapi64")
|
||||
else()
|
||||
set(_GSS_LIBNAME "libgssapi")
|
||||
endif()
|
||||
else()
|
||||
list(APPEND _GSS_LIBDIR_SUFFIXES "lib/i386")
|
||||
if(GSS_FLAVOUR STREQUAL "MIT")
|
||||
set(_GSS_LIBNAME "gssapi32")
|
||||
else()
|
||||
set(_GSS_LIBNAME "libgssapi")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
list(APPEND _GSS_LIBDIR_SUFFIXES "lib;lib64") # those suffixes are not checked for HINTS
|
||||
if(GSS_FLAVOUR STREQUAL "MIT")
|
||||
set(_GSS_LIBNAME "gssapi_krb5")
|
||||
else()
|
||||
set(_GSS_LIBNAME "gssapi")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_library(_GSS_LIBRARIES
|
||||
NAMES
|
||||
${_GSS_LIBNAME}
|
||||
HINTS
|
||||
${_GSS_LIBDIR_HINTS}
|
||||
PATH_SUFFIXES
|
||||
${_GSS_LIBDIR_SUFFIXES}
|
||||
)
|
||||
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
if(_GSS_PKG_${_MIT_MODNAME}_VERSION)
|
||||
set(GSS_FLAVOUR "MIT")
|
||||
set(_GSS_VERSION _GSS_PKG_${_MIT_MODNAME}_VERSION)
|
||||
else()
|
||||
set(GSS_FLAVOUR "Heimdal")
|
||||
set(_GSS_VERSION _GSS_PKG_${_MIT_HEIMDAL}_VERSION)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(GSS_INCLUDE_DIR ${_GSS_INCLUDE_DIR})
|
||||
set(GSS_LIBRARIES ${_GSS_LIBRARIES})
|
||||
set(GSS_LINK_DIRECTORIES ${_GSS_LINK_DIRECTORIES})
|
||||
set(GSS_LINKER_FLAGS ${_GSS_LINKER_FLAGS})
|
||||
set(GSS_COMPILER_FLAGS ${_GSS_COMPILER_FLAGS})
|
||||
set(GSS_VERSION ${_GSS_VERSION})
|
||||
|
||||
if(GSS_FLAVOUR)
|
||||
if(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "Heimdal")
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.amd64.manifest")
|
||||
else()
|
||||
set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.x86.manifest")
|
||||
endif()
|
||||
|
||||
if(EXISTS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}")
|
||||
file(STRINGS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}" heimdal_version_str
|
||||
REGEX "^.*version=\"[0-9]\\.[^\"]+\".*$")
|
||||
|
||||
string(REGEX MATCH "[0-9]\\.[^\"]+"
|
||||
GSS_VERSION "${heimdal_version_str}")
|
||||
endif()
|
||||
|
||||
if(NOT GSS_VERSION)
|
||||
set(GSS_VERSION "Heimdal Unknown")
|
||||
endif()
|
||||
elseif(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "MIT")
|
||||
get_filename_component(_MIT_VERSION "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos\\SDK\\CurrentVersion;VersionString]" NAME CACHE)
|
||||
if(WIN32 AND _MIT_VERSION)
|
||||
set(GSS_VERSION "${_MIT_VERSION}")
|
||||
else()
|
||||
set(GSS_VERSION "MIT Unknown")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
set(_GSS_REQUIRED_VARS GSS_LIBRARIES GSS_FLAVOUR)
|
||||
|
||||
find_package_handle_standard_args(GSS
|
||||
REQUIRED_VARS
|
||||
${_GSS_REQUIRED_VARS}
|
||||
VERSION_VAR
|
||||
GSS_VERSION
|
||||
FAIL_MESSAGE
|
||||
"Could NOT find GSS, try to set the path to GSS root folder in the system variable GSS_ROOT_DIR"
|
||||
)
|
||||
|
||||
mark_as_advanced(GSS_INCLUDE_DIR GSS_LIBRARIES)
|
|
@ -0,0 +1,45 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
# - Try to find the libpsl library
|
||||
# Once done this will define
|
||||
#
|
||||
# LIBPSL_FOUND - system has the libpsl library
|
||||
# LIBPSL_INCLUDE_DIR - the libpsl include directory
|
||||
# LIBPSL_LIBRARY - the libpsl library name
|
||||
|
||||
find_path(LIBPSL_INCLUDE_DIR libpsl.h)
|
||||
|
||||
find_library(LIBPSL_LIBRARY NAMES psl libpsl)
|
||||
|
||||
if(LIBPSL_INCLUDE_DIR)
|
||||
file(STRINGS "${LIBPSL_INCLUDE_DIR}/libpsl.h" libpsl_version_str REGEX "^#define[\t ]+PSL_VERSION[\t ]+\"(.*)\"")
|
||||
string(REGEX REPLACE "^.*\"([^\"]+)\"" "\\1" LIBPSL_VERSION "${libpsl_version_str}")
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(LibPSL
|
||||
REQUIRED_VARS LIBPSL_LIBRARY LIBPSL_INCLUDE_DIR
|
||||
VERSION_VAR LIBPSL_VERSION)
|
||||
|
||||
mark_as_advanced(LIBPSL_INCLUDE_DIR LIBPSL_LIBRARY)
|
|
@ -0,0 +1,45 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
# - Try to find the libssh2 library
|
||||
# Once done this will define
|
||||
#
|
||||
# LIBSSH2_FOUND - system has the libssh2 library
|
||||
# LIBSSH2_INCLUDE_DIR - the libssh2 include directory
|
||||
# LIBSSH2_LIBRARY - the libssh2 library name
|
||||
|
||||
find_path(LIBSSH2_INCLUDE_DIR libssh2.h)
|
||||
|
||||
find_library(LIBSSH2_LIBRARY NAMES ssh2 libssh2)
|
||||
|
||||
if(LIBSSH2_INCLUDE_DIR)
|
||||
file(STRINGS "${LIBSSH2_INCLUDE_DIR}/libssh2.h" libssh2_version_str REGEX "^#define[\t ]+LIBSSH2_VERSION[\t ]+\"(.*)\"")
|
||||
string(REGEX REPLACE "^.*\"([^\"]+)\"" "\\1" LIBSSH2_VERSION "${libssh2_version_str}")
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(LibSSH2
|
||||
REQUIRED_VARS LIBSSH2_LIBRARY LIBSSH2_INCLUDE_DIR
|
||||
VERSION_VAR LIBSSH2_VERSION)
|
||||
|
||||
mark_as_advanced(LIBSSH2_INCLUDE_DIR LIBSSH2_LIBRARY)
|
|
@ -0,0 +1,70 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindMSH3
|
||||
----------
|
||||
|
||||
Find the msh3 library
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
``MSH3_FOUND``
|
||||
System has msh3
|
||||
``MSH3_INCLUDE_DIRS``
|
||||
The msh3 include directories.
|
||||
``MSH3_LIBRARIES``
|
||||
The libraries needed to use msh3
|
||||
#]=======================================================================]
|
||||
if(UNIX)
|
||||
find_package(PkgConfig QUIET)
|
||||
pkg_search_module(PC_MSH3 libmsh3)
|
||||
endif()
|
||||
|
||||
find_path(MSH3_INCLUDE_DIR msh3.h
|
||||
HINTS
|
||||
${PC_MSH3_INCLUDEDIR}
|
||||
${PC_MSH3_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
find_library(MSH3_LIBRARY NAMES msh3
|
||||
HINTS
|
||||
${PC_MSH3_LIBDIR}
|
||||
${PC_MSH3_LIBRARY_DIRS}
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(MSH3
|
||||
REQUIRED_VARS
|
||||
MSH3_LIBRARY
|
||||
MSH3_INCLUDE_DIR
|
||||
)
|
||||
|
||||
if(MSH3_FOUND)
|
||||
set(MSH3_LIBRARIES ${MSH3_LIBRARY})
|
||||
set(MSH3_INCLUDE_DIRS ${MSH3_INCLUDE_DIR})
|
||||
endif()
|
||||
|
||||
mark_as_advanced(MSH3_INCLUDE_DIRS MSH3_LIBRARIES)
|
|
@ -0,0 +1,36 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
find_path(MBEDTLS_INCLUDE_DIRS mbedtls/ssl.h)
|
||||
|
||||
find_library(MBEDTLS_LIBRARY mbedtls)
|
||||
find_library(MBEDX509_LIBRARY mbedx509)
|
||||
find_library(MBEDCRYPTO_LIBRARY mbedcrypto)
|
||||
|
||||
set(MBEDTLS_LIBRARIES "${MBEDTLS_LIBRARY}" "${MBEDX509_LIBRARY}" "${MBEDCRYPTO_LIBRARY}")
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(MbedTLS DEFAULT_MSG
|
||||
MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY)
|
||||
|
||||
mark_as_advanced(MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY)
|
|
@ -0,0 +1,41 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
find_path(NGHTTP2_INCLUDE_DIR "nghttp2/nghttp2.h")
|
||||
|
||||
find_library(NGHTTP2_LIBRARY NAMES nghttp2 nghttp2_static)
|
||||
|
||||
find_package_handle_standard_args(NGHTTP2
|
||||
FOUND_VAR
|
||||
NGHTTP2_FOUND
|
||||
REQUIRED_VARS
|
||||
NGHTTP2_LIBRARY
|
||||
NGHTTP2_INCLUDE_DIR
|
||||
)
|
||||
|
||||
set(NGHTTP2_INCLUDE_DIRS ${NGHTTP2_INCLUDE_DIR})
|
||||
set(NGHTTP2_LIBRARIES ${NGHTTP2_LIBRARY})
|
||||
|
||||
mark_as_advanced(NGHTTP2_INCLUDE_DIRS NGHTTP2_LIBRARIES)
|
|
@ -0,0 +1,78 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindNGHTTP3
|
||||
----------
|
||||
|
||||
Find the nghttp3 library
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
``NGHTTP3_FOUND``
|
||||
System has nghttp3
|
||||
``NGHTTP3_INCLUDE_DIRS``
|
||||
The nghttp3 include directories.
|
||||
``NGHTTP3_LIBRARIES``
|
||||
The libraries needed to use nghttp3
|
||||
``NGHTTP3_VERSION``
|
||||
version of nghttp3.
|
||||
#]=======================================================================]
|
||||
|
||||
if(UNIX)
|
||||
find_package(PkgConfig QUIET)
|
||||
pkg_search_module(PC_NGHTTP3 libnghttp3)
|
||||
endif()
|
||||
|
||||
find_path(NGHTTP3_INCLUDE_DIR nghttp3/nghttp3.h
|
||||
HINTS
|
||||
${PC_NGHTTP3_INCLUDEDIR}
|
||||
${PC_NGHTTP3_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
find_library(NGHTTP3_LIBRARY NAMES nghttp3
|
||||
HINTS
|
||||
${PC_NGHTTP3_LIBDIR}
|
||||
${PC_NGHTTP3_LIBRARY_DIRS}
|
||||
)
|
||||
|
||||
if(PC_NGHTTP3_VERSION)
|
||||
set(NGHTTP3_VERSION ${PC_NGHTTP3_VERSION})
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(NGHTTP3
|
||||
REQUIRED_VARS
|
||||
NGHTTP3_LIBRARY
|
||||
NGHTTP3_INCLUDE_DIR
|
||||
VERSION_VAR NGHTTP3_VERSION
|
||||
)
|
||||
|
||||
if(NGHTTP3_FOUND)
|
||||
set(NGHTTP3_LIBRARIES ${NGHTTP3_LIBRARY})
|
||||
set(NGHTTP3_INCLUDE_DIRS ${NGHTTP3_INCLUDE_DIR})
|
||||
endif()
|
||||
|
||||
mark_as_advanced(NGHTTP3_INCLUDE_DIRS NGHTTP3_LIBRARIES)
|
|
@ -0,0 +1,117 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindNGTCP2
|
||||
----------
|
||||
|
||||
Find the ngtcp2 library
|
||||
|
||||
This module accepts optional COMPONENTS to control the crypto library (these are
|
||||
mutually exclusive)::
|
||||
|
||||
quictls, LibreSSL: Use libngtcp2_crypto_quictls
|
||||
BoringSSL, AWS-LC: Use libngtcp2_crypto_boringssl
|
||||
wolfSSL: Use libngtcp2_crypto_wolfssl
|
||||
GnuTLS: Use libngtcp2_crypto_gnutls
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
``NGTCP2_FOUND``
|
||||
System has ngtcp2
|
||||
``NGTCP2_INCLUDE_DIRS``
|
||||
The ngtcp2 include directories.
|
||||
``NGTCP2_LIBRARIES``
|
||||
The libraries needed to use ngtcp2
|
||||
``NGTCP2_VERSION``
|
||||
version of ngtcp2.
|
||||
#]=======================================================================]
|
||||
|
||||
if(UNIX)
|
||||
find_package(PkgConfig QUIET)
|
||||
pkg_search_module(PC_NGTCP2 libngtcp2)
|
||||
endif()
|
||||
|
||||
find_path(NGTCP2_INCLUDE_DIR ngtcp2/ngtcp2.h
|
||||
HINTS
|
||||
${PC_NGTCP2_INCLUDEDIR}
|
||||
${PC_NGTCP2_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
find_library(NGTCP2_LIBRARY NAMES ngtcp2
|
||||
HINTS
|
||||
${PC_NGTCP2_LIBDIR}
|
||||
${PC_NGTCP2_LIBRARY_DIRS}
|
||||
)
|
||||
|
||||
if(PC_NGTCP2_VERSION)
|
||||
set(NGTCP2_VERSION ${PC_NGTCP2_VERSION})
|
||||
endif()
|
||||
|
||||
if(NGTCP2_FIND_COMPONENTS)
|
||||
set(NGTCP2_CRYPTO_BACKEND "")
|
||||
foreach(component IN LISTS NGTCP2_FIND_COMPONENTS)
|
||||
if(component MATCHES "^(BoringSSL|quictls|wolfSSL|GnuTLS)")
|
||||
if(NGTCP2_CRYPTO_BACKEND)
|
||||
message(FATAL_ERROR "NGTCP2: Only one crypto library can be selected")
|
||||
endif()
|
||||
set(NGTCP2_CRYPTO_BACKEND ${component})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(NGTCP2_CRYPTO_BACKEND)
|
||||
string(TOLOWER "ngtcp2_crypto_${NGTCP2_CRYPTO_BACKEND}" _crypto_library)
|
||||
if(UNIX)
|
||||
pkg_search_module(PC_${_crypto_library} lib${_crypto_library})
|
||||
endif()
|
||||
find_library(${_crypto_library}_LIBRARY
|
||||
NAMES
|
||||
${_crypto_library}
|
||||
HINTS
|
||||
${PC_${_crypto_library}_LIBDIR}
|
||||
${PC_${_crypto_library}_LIBRARY_DIRS}
|
||||
)
|
||||
if(${_crypto_library}_LIBRARY)
|
||||
set(NGTCP2_${NGTCP2_CRYPTO_BACKEND}_FOUND TRUE)
|
||||
set(NGTCP2_CRYPTO_LIBRARY ${${_crypto_library}_LIBRARY})
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(NGTCP2
|
||||
REQUIRED_VARS
|
||||
NGTCP2_LIBRARY
|
||||
NGTCP2_INCLUDE_DIR
|
||||
VERSION_VAR NGTCP2_VERSION
|
||||
HANDLE_COMPONENTS
|
||||
)
|
||||
|
||||
if(NGTCP2_FOUND)
|
||||
set(NGTCP2_LIBRARIES ${NGTCP2_LIBRARY} ${NGTCP2_CRYPTO_LIBRARY})
|
||||
set(NGTCP2_INCLUDE_DIRS ${NGTCP2_INCLUDE_DIR})
|
||||
endif()
|
||||
|
||||
mark_as_advanced(NGTCP2_INCLUDE_DIRS NGTCP2_LIBRARIES)
|
|
@ -0,0 +1,70 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindQUICHE
|
||||
----------
|
||||
|
||||
Find the quiche library
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
``QUICHE_FOUND``
|
||||
System has quiche
|
||||
``QUICHE_INCLUDE_DIRS``
|
||||
The quiche include directories.
|
||||
``QUICHE_LIBRARIES``
|
||||
The libraries needed to use quiche
|
||||
#]=======================================================================]
|
||||
if(UNIX)
|
||||
find_package(PkgConfig QUIET)
|
||||
pkg_search_module(PC_QUICHE quiche)
|
||||
endif()
|
||||
|
||||
find_path(QUICHE_INCLUDE_DIR quiche.h
|
||||
HINTS
|
||||
${PC_QUICHE_INCLUDEDIR}
|
||||
${PC_QUICHE_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
find_library(QUICHE_LIBRARY NAMES quiche
|
||||
HINTS
|
||||
${PC_QUICHE_LIBDIR}
|
||||
${PC_QUICHE_LIBRARY_DIRS}
|
||||
)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(QUICHE
|
||||
REQUIRED_VARS
|
||||
QUICHE_LIBRARY
|
||||
QUICHE_INCLUDE_DIR
|
||||
)
|
||||
|
||||
if(QUICHE_FOUND)
|
||||
set(QUICHE_LIBRARIES ${QUICHE_LIBRARY})
|
||||
set(QUICHE_INCLUDE_DIRS ${QUICHE_INCLUDE_DIR})
|
||||
endif()
|
||||
|
||||
mark_as_advanced(QUICHE_INCLUDE_DIRS QUICHE_LIBRARIES)
|
|
@ -0,0 +1,36 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
find_path(WolfSSL_INCLUDE_DIR NAMES wolfssl/ssl.h)
|
||||
find_library(WolfSSL_LIBRARY NAMES wolfssl)
|
||||
mark_as_advanced(WolfSSL_INCLUDE_DIR WolfSSL_LIBRARY)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(WolfSSL
|
||||
REQUIRED_VARS WolfSSL_INCLUDE_DIR WolfSSL_LIBRARY
|
||||
)
|
||||
|
||||
if(WolfSSL_FOUND)
|
||||
set(WolfSSL_INCLUDE_DIRS ${WolfSSL_INCLUDE_DIR})
|
||||
set(WolfSSL_LIBRARIES ${WolfSSL_LIBRARY})
|
||||
endif()
|
|
@ -0,0 +1,78 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindZstd
|
||||
----------
|
||||
|
||||
Find the zstd library
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
``Zstd_FOUND``
|
||||
System has zstd
|
||||
``Zstd_INCLUDE_DIRS``
|
||||
The zstd include directories.
|
||||
``Zstd_LIBRARIES``
|
||||
The libraries needed to use zstd
|
||||
#]=======================================================================]
|
||||
|
||||
if(UNIX)
|
||||
find_package(PkgConfig QUIET)
|
||||
pkg_search_module(PC_Zstd libzstd)
|
||||
endif()
|
||||
|
||||
find_path(Zstd_INCLUDE_DIR zstd.h
|
||||
HINTS
|
||||
${PC_Zstd_INCLUDEDIR}
|
||||
${PC_Zstd_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
find_library(Zstd_LIBRARY NAMES zstd
|
||||
HINTS
|
||||
${PC_Zstd_LIBDIR}
|
||||
${PC_Zstd_LIBRARY_DIRS}
|
||||
)
|
||||
|
||||
if(Zstd_INCLUDE_DIR)
|
||||
file(READ "${Zstd_INCLUDE_DIR}/zstd.h" _zstd_header)
|
||||
string(REGEX MATCH ".*define ZSTD_VERSION_MAJOR *([0-9]+).*define ZSTD_VERSION_MINOR *([0-9]+).*define ZSTD_VERSION_RELEASE *([0-9]+)" _zstd_ver "${_zstd_header}")
|
||||
set(Zstd_VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}")
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Zstd
|
||||
REQUIRED_VARS
|
||||
Zstd_LIBRARY
|
||||
Zstd_INCLUDE_DIR
|
||||
VERSION_VAR Zstd_VERSION
|
||||
)
|
||||
|
||||
if(Zstd_FOUND)
|
||||
set(Zstd_LIBRARIES ${Zstd_LIBRARY})
|
||||
set(Zstd_INCLUDE_DIRS ${Zstd_INCLUDE_DIR})
|
||||
endif()
|
||||
|
||||
mark_as_advanced(Zstd_INCLUDE_DIRS Zstd_LIBRARIES)
|
|
@ -0,0 +1,80 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
#File defines convenience macros for available feature testing
|
||||
|
||||
# Check if header file exists and add it to the list.
|
||||
# This macro is intended to be called multiple times with a sequence of
|
||||
# possibly dependent header files. Some headers depend on others to be
|
||||
# compiled correctly.
|
||||
macro(check_include_file_concat FILE VARIABLE)
|
||||
check_include_files("${CURL_INCLUDES};${FILE}" ${VARIABLE})
|
||||
if(${VARIABLE})
|
||||
set(CURL_INCLUDES ${CURL_INCLUDES} ${FILE})
|
||||
set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D${VARIABLE}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# For other curl specific tests, use this macro.
|
||||
macro(curl_internal_test CURL_TEST)
|
||||
if(NOT DEFINED "${CURL_TEST}")
|
||||
set(MACRO_CHECK_FUNCTION_DEFINITIONS
|
||||
"-D${CURL_TEST} ${CURL_TEST_DEFINES} ${CMAKE_REQUIRED_FLAGS}")
|
||||
if(CMAKE_REQUIRED_LIBRARIES)
|
||||
set(CURL_TEST_ADD_LIBRARIES
|
||||
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
|
||||
endif()
|
||||
|
||||
message(STATUS "Performing Test ${CURL_TEST}")
|
||||
try_compile(${CURL_TEST}
|
||||
${CMAKE_BINARY_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c
|
||||
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
|
||||
"${CURL_TEST_ADD_LIBRARIES}"
|
||||
OUTPUT_VARIABLE OUTPUT)
|
||||
if(${CURL_TEST})
|
||||
set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
|
||||
message(STATUS "Performing Test ${CURL_TEST} - Success")
|
||||
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
||||
"Performing Test ${CURL_TEST} passed with the following output:\n"
|
||||
"${OUTPUT}\n")
|
||||
else()
|
||||
message(STATUS "Performing Test ${CURL_TEST} - Failed")
|
||||
set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
|
||||
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
||||
"Performing Test ${CURL_TEST} failed with the following output:\n"
|
||||
"${OUTPUT}\n")
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(optional_dependency DEPENDENCY)
|
||||
set(CURL_${DEPENDENCY} AUTO CACHE STRING "Build curl with ${DEPENDENCY} support (AUTO, ON or OFF)")
|
||||
set_property(CACHE CURL_${DEPENDENCY} PROPERTY STRINGS AUTO ON OFF)
|
||||
|
||||
if(CURL_${DEPENDENCY} STREQUAL AUTO)
|
||||
find_package(${DEPENDENCY})
|
||||
elseif(CURL_${DEPENDENCY})
|
||||
find_package(${DEPENDENCY} REQUIRED)
|
||||
endif()
|
||||
endmacro()
|
|
@ -0,0 +1,184 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
include(CheckCSourceCompiles)
|
||||
include(CheckCSourceRuns)
|
||||
include(CheckTypeSize)
|
||||
|
||||
macro(add_header_include check header)
|
||||
if(${check})
|
||||
set(_source_epilogue "${_source_epilogue}
|
||||
#include <${header}>")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||
|
||||
if(NOT DEFINED HAVE_STRUCT_SOCKADDR_STORAGE)
|
||||
set(CMAKE_EXTRA_INCLUDE_FILES)
|
||||
if(WIN32)
|
||||
set(CMAKE_EXTRA_INCLUDE_FILES "winsock2.h")
|
||||
set(CMAKE_REQUIRED_DEFINITIONS "-DWIN32_LEAN_AND_MEAN")
|
||||
set(CMAKE_REQUIRED_LIBRARIES "ws2_32")
|
||||
elseif(HAVE_SYS_SOCKET_H)
|
||||
set(CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h")
|
||||
endif()
|
||||
check_type_size("struct sockaddr_storage" SIZEOF_STRUCT_SOCKADDR_STORAGE)
|
||||
set(HAVE_STRUCT_SOCKADDR_STORAGE ${HAVE_SIZEOF_STRUCT_SOCKADDR_STORAGE})
|
||||
endif()
|
||||
|
||||
if(NOT WIN32)
|
||||
set(_source_epilogue "#undef inline")
|
||||
add_header_include(HAVE_SYS_TYPES_H "sys/types.h")
|
||||
add_header_include(HAVE_SYS_SOCKET_H "sys/socket.h")
|
||||
check_c_source_compiles("${_source_epilogue}
|
||||
int main(void)
|
||||
{
|
||||
int flag = MSG_NOSIGNAL;
|
||||
(void)flag;
|
||||
return 0;
|
||||
}" HAVE_MSG_NOSIGNAL)
|
||||
endif()
|
||||
|
||||
set(_source_epilogue "#undef inline")
|
||||
add_header_include(HAVE_SYS_TIME_H "sys/time.h")
|
||||
check_c_source_compiles("${_source_epilogue}
|
||||
#include <time.h>
|
||||
int main(void)
|
||||
{
|
||||
struct timeval ts;
|
||||
ts.tv_sec = 0;
|
||||
ts.tv_usec = 0;
|
||||
(void)ts;
|
||||
return 0;
|
||||
}" HAVE_STRUCT_TIMEVAL)
|
||||
|
||||
unset(CMAKE_TRY_COMPILE_TARGET_TYPE)
|
||||
|
||||
if(NOT CMAKE_CROSSCOMPILING AND NOT APPLE)
|
||||
set(_source_epilogue "#undef inline")
|
||||
add_header_include(HAVE_SYS_POLL_H "sys/poll.h")
|
||||
add_header_include(HAVE_POLL_H "poll.h")
|
||||
check_c_source_runs("${_source_epilogue}
|
||||
#include <stdlib.h>
|
||||
#include <sys/time.h>
|
||||
int main(void)
|
||||
{
|
||||
if(0 != poll(0, 0, 10)) {
|
||||
return 1; /* fail */
|
||||
}
|
||||
else {
|
||||
/* detect the 10.12 poll() breakage */
|
||||
struct timeval before, after;
|
||||
int rc;
|
||||
size_t us;
|
||||
|
||||
gettimeofday(&before, NULL);
|
||||
rc = poll(NULL, 0, 500);
|
||||
gettimeofday(&after, NULL);
|
||||
|
||||
us = (after.tv_sec - before.tv_sec) * 1000000 +
|
||||
(after.tv_usec - before.tv_usec);
|
||||
|
||||
if(us < 400000) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}" HAVE_POLL_FINE)
|
||||
endif()
|
||||
|
||||
# Detect HAVE_GETADDRINFO_THREADSAFE
|
||||
|
||||
if(WIN32)
|
||||
set(HAVE_GETADDRINFO_THREADSAFE ${HAVE_GETADDRINFO})
|
||||
elseif(NOT HAVE_GETADDRINFO)
|
||||
set(HAVE_GETADDRINFO_THREADSAFE FALSE)
|
||||
elseif(APPLE OR
|
||||
CMAKE_SYSTEM_NAME STREQUAL "AIX" OR
|
||||
CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" OR
|
||||
CMAKE_SYSTEM_NAME STREQUAL "HP-UX" OR
|
||||
CMAKE_SYSTEM_NAME STREQUAL "MidnightBSD" OR
|
||||
CMAKE_SYSTEM_NAME STREQUAL "NetBSD" OR
|
||||
CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
||||
set(HAVE_GETADDRINFO_THREADSAFE TRUE)
|
||||
elseif(CMAKE_SYSTEM_NAME MATCHES "BSD")
|
||||
set(HAVE_GETADDRINFO_THREADSAFE FALSE)
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED HAVE_GETADDRINFO_THREADSAFE)
|
||||
set(_source_epilogue "#undef inline")
|
||||
add_header_include(HAVE_SYS_SOCKET_H "sys/socket.h")
|
||||
add_header_include(HAVE_SYS_TIME_H "sys/time.h")
|
||||
add_header_include(HAVE_NETDB_H "netdb.h")
|
||||
check_c_source_compiles("${_source_epilogue}
|
||||
int main(void)
|
||||
{
|
||||
#ifdef h_errno
|
||||
return 0;
|
||||
#else
|
||||
force compilation error
|
||||
#endif
|
||||
}" HAVE_H_ERRNO)
|
||||
|
||||
if(NOT HAVE_H_ERRNO)
|
||||
check_c_source_compiles("${_source_epilogue}
|
||||
int main(void)
|
||||
{
|
||||
h_errno = 2;
|
||||
return h_errno != 0 ? 1 : 0;
|
||||
}" HAVE_H_ERRNO_ASSIGNABLE)
|
||||
|
||||
if(NOT HAVE_H_ERRNO_ASSIGNABLE)
|
||||
check_c_source_compiles("${_source_epilogue}
|
||||
int main(void)
|
||||
{
|
||||
#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200809L)
|
||||
return 0;
|
||||
#elif defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 700)
|
||||
return 0;
|
||||
#else
|
||||
force compilation error
|
||||
#endif
|
||||
}" HAVE_H_ERRNO_SBS_ISSUE_7)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(HAVE_H_ERRNO OR HAVE_H_ERRNO_ASSIGNABLE OR HAVE_H_ERRNO_SBS_ISSUE_7)
|
||||
set(HAVE_GETADDRINFO_THREADSAFE TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT WIN32 AND NOT DEFINED HAVE_CLOCK_GETTIME_MONOTONIC_RAW)
|
||||
set(_source_epilogue "#undef inline")
|
||||
add_header_include(HAVE_SYS_TYPES_H "sys/types.h")
|
||||
add_header_include(HAVE_SYS_TIME_H "sys/time.h")
|
||||
check_c_source_compiles("${_source_epilogue}
|
||||
#include <time.h>
|
||||
int main(void)
|
||||
{
|
||||
struct timespec ts;
|
||||
(void)clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
|
||||
return 0;
|
||||
}" HAVE_CLOCK_GETTIME_MONOTONIC_RAW)
|
||||
endif()
|
|
@ -0,0 +1,236 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
include(CheckCCompilerFlag)
|
||||
|
||||
unset(WPICKY)
|
||||
|
||||
if(CURL_WERROR AND
|
||||
((CMAKE_COMPILER_IS_GNUCC AND
|
||||
NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 5.0 AND
|
||||
NOT CMAKE_VERSION VERSION_LESS 3.23.0) OR # check_symbol_exists() incompatible with GCC -pedantic-errors in earlier CMake versions
|
||||
CMAKE_C_COMPILER_ID MATCHES "Clang"))
|
||||
set(WPICKY "${WPICKY} -pedantic-errors")
|
||||
endif()
|
||||
|
||||
if(PICKY_COMPILER)
|
||||
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
|
||||
# https://clang.llvm.org/docs/DiagnosticsReference.html
|
||||
# https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
|
||||
|
||||
# WPICKY_ENABLE = Options we want to enable as-is.
|
||||
# WPICKY_DETECT = Options we want to test first and enable if available.
|
||||
|
||||
# Prefer the -Wextra alias with clang.
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
set(WPICKY_ENABLE "-Wextra")
|
||||
else()
|
||||
set(WPICKY_ENABLE "-W")
|
||||
endif()
|
||||
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Wall -pedantic
|
||||
)
|
||||
|
||||
# ----------------------------------
|
||||
# Add new options here, if in doubt:
|
||||
# ----------------------------------
|
||||
set(WPICKY_DETECT
|
||||
)
|
||||
|
||||
# Assume these options always exist with both clang and gcc.
|
||||
# Require clang 3.0 / gcc 2.95 or later.
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Wbad-function-cast # clang 2.7 gcc 2.95
|
||||
-Wconversion # clang 2.7 gcc 2.95
|
||||
-Winline # clang 1.0 gcc 1.0
|
||||
-Wmissing-declarations # clang 1.0 gcc 2.7
|
||||
-Wmissing-prototypes # clang 1.0 gcc 1.0
|
||||
-Wnested-externs # clang 1.0 gcc 2.7
|
||||
-Wno-long-long # clang 1.0 gcc 2.95
|
||||
-Wno-multichar # clang 1.0 gcc 2.95
|
||||
-Wpointer-arith # clang 1.0 gcc 1.4
|
||||
-Wshadow # clang 1.0 gcc 2.95
|
||||
-Wsign-compare # clang 1.0 gcc 2.95
|
||||
-Wundef # clang 1.0 gcc 2.95
|
||||
-Wunused # clang 1.1 gcc 2.95
|
||||
-Wwrite-strings # clang 1.0 gcc 1.4
|
||||
)
|
||||
|
||||
# Always enable with clang, version dependent with gcc
|
||||
set(WPICKY_COMMON_OLD
|
||||
-Waddress # clang 2.7 gcc 4.3
|
||||
-Wattributes # clang 2.7 gcc 4.1
|
||||
-Wcast-align # clang 1.0 gcc 4.2
|
||||
-Wdeclaration-after-statement # clang 1.0 gcc 3.4
|
||||
-Wdiv-by-zero # clang 2.7 gcc 4.1
|
||||
-Wempty-body # clang 2.7 gcc 4.3
|
||||
-Wendif-labels # clang 1.0 gcc 3.3
|
||||
-Wfloat-equal # clang 1.0 gcc 2.96 (3.0)
|
||||
-Wformat-security # clang 2.7 gcc 4.1
|
||||
-Wignored-qualifiers # clang 2.8 gcc 4.3
|
||||
-Wmissing-field-initializers # clang 2.7 gcc 4.1
|
||||
-Wmissing-noreturn # clang 2.7 gcc 4.1
|
||||
-Wno-format-nonliteral # clang 1.0 gcc 2.96 (3.0)
|
||||
-Wno-system-headers # clang 1.0 gcc 3.0
|
||||
# -Wpadded # clang 2.9 gcc 4.1 # Not used because we cannot change public structs
|
||||
-Wold-style-definition # clang 2.7 gcc 3.4
|
||||
-Wredundant-decls # clang 2.7 gcc 4.1
|
||||
-Wsign-conversion # clang 2.9 gcc 4.3
|
||||
-Wno-error=sign-conversion # FIXME
|
||||
-Wstrict-prototypes # clang 1.0 gcc 3.3
|
||||
# -Wswitch-enum # clang 2.7 gcc 4.1 # Not used because this basically disallows default case
|
||||
-Wtype-limits # clang 2.7 gcc 4.3
|
||||
-Wunreachable-code # clang 2.7 gcc 4.1
|
||||
# -Wunused-macros # clang 2.7 gcc 4.1 # Not practical
|
||||
-Wunused-parameter # clang 2.7 gcc 4.1
|
||||
-Wvla # clang 2.8 gcc 4.3
|
||||
)
|
||||
|
||||
set(WPICKY_COMMON
|
||||
-Wdouble-promotion # clang 3.6 gcc 4.6 appleclang 6.3
|
||||
-Wenum-conversion # clang 3.2 gcc 10.0 appleclang 4.6 g++ 11.0
|
||||
-Wpragmas # clang 3.5 gcc 4.1 appleclang 6.0
|
||||
-Wunused-const-variable # clang 3.4 gcc 6.0 appleclang 5.1
|
||||
)
|
||||
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
list(APPEND WPICKY_ENABLE
|
||||
${WPICKY_COMMON_OLD}
|
||||
-Wshift-sign-overflow # clang 2.9
|
||||
-Wshorten-64-to-32 # clang 1.0
|
||||
-Wlanguage-extension-token # clang 3.0
|
||||
-Wformat=2 # clang 3.0 gcc 4.8
|
||||
)
|
||||
# Enable based on compiler version
|
||||
if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.6) OR
|
||||
(CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 6.3))
|
||||
list(APPEND WPICKY_ENABLE
|
||||
${WPICKY_COMMON}
|
||||
-Wunreachable-code-break # clang 3.5 appleclang 6.0
|
||||
-Wheader-guard # clang 3.4 appleclang 5.1
|
||||
-Wsometimes-uninitialized # clang 3.2 appleclang 4.6
|
||||
)
|
||||
endif()
|
||||
if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.9) OR
|
||||
(CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.3))
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Wcomma # clang 3.9 appleclang 8.3
|
||||
-Wmissing-variable-declarations # clang 3.2 appleclang 4.6
|
||||
)
|
||||
endif()
|
||||
if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 7.0) OR
|
||||
(CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 10.3))
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Wassign-enum # clang 7.0 appleclang 10.3
|
||||
-Wextra-semi-stmt # clang 7.0 appleclang 10.3
|
||||
)
|
||||
endif()
|
||||
if((CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 10.0) OR
|
||||
(CMAKE_C_COMPILER_ID STREQUAL "AppleClang" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.4))
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Wimplicit-fallthrough # clang 4.0 gcc 7.0 appleclang 12.4 # we have silencing markup for clang 10.0 and above only
|
||||
)
|
||||
endif()
|
||||
else() # gcc
|
||||
list(APPEND WPICKY_DETECT
|
||||
${WPICKY_COMMON}
|
||||
)
|
||||
# Enable based on compiler version
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.3)
|
||||
list(APPEND WPICKY_ENABLE
|
||||
${WPICKY_COMMON_OLD}
|
||||
-Wclobbered # gcc 4.3
|
||||
-Wmissing-parameter-type # gcc 4.3
|
||||
-Wold-style-declaration # gcc 4.3
|
||||
-Wstrict-aliasing=3 # gcc 4.0
|
||||
-Wtrampolines # gcc 4.3
|
||||
)
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.5 AND MINGW)
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Wno-pedantic-ms-format # gcc 4.5 (mingw-only)
|
||||
)
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.8)
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Wformat=2 # clang 3.0 gcc 4.8
|
||||
)
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 5.0)
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Warray-bounds=2 -ftree-vrp # clang 3.0 gcc 5.0 (clang default: -Warray-bounds)
|
||||
)
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 6.0)
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Wduplicated-cond # gcc 6.0
|
||||
-Wnull-dereference # clang 3.0 gcc 6.0 (clang default)
|
||||
-fdelete-null-pointer-checks
|
||||
-Wshift-negative-value # clang 3.7 gcc 6.0 (clang default)
|
||||
-Wshift-overflow=2 # clang 3.0 gcc 6.0 (clang default: -Wshift-overflow)
|
||||
)
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 7.0)
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Walloc-zero # gcc 7.0
|
||||
-Wduplicated-branches # gcc 7.0
|
||||
-Wformat-overflow=2 # gcc 7.0
|
||||
-Wformat-truncation=2 # gcc 7.0
|
||||
-Wimplicit-fallthrough # clang 4.0 gcc 7.0
|
||||
-Wrestrict # gcc 7.0
|
||||
)
|
||||
endif()
|
||||
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 10.0)
|
||||
list(APPEND WPICKY_ENABLE
|
||||
-Warith-conversion # gcc 10.0
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#
|
||||
|
||||
foreach(_CCOPT IN LISTS WPICKY_ENABLE)
|
||||
set(WPICKY "${WPICKY} ${_CCOPT}")
|
||||
endforeach()
|
||||
|
||||
foreach(_CCOPT IN LISTS WPICKY_DETECT)
|
||||
# surprisingly, CHECK_C_COMPILER_FLAG needs a new variable to store each new
|
||||
# test result in.
|
||||
string(MAKE_C_IDENTIFIER "OPT${_CCOPT}" _optvarname)
|
||||
# GCC only warns about unknown -Wno- options if there are also other diagnostic messages,
|
||||
# so test for the positive form instead
|
||||
string(REPLACE "-Wno-" "-W" _CCOPT_ON "${_CCOPT}")
|
||||
check_c_compiler_flag(${_CCOPT_ON} ${_optvarname})
|
||||
if(${_optvarname})
|
||||
set(WPICKY "${WPICKY} ${_CCOPT}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WPICKY)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WPICKY}")
|
||||
message(STATUS "Picky compiler options:${WPICKY}")
|
||||
endif()
|
|
@ -0,0 +1,191 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
if(NOT WIN32)
|
||||
message(FATAL_ERROR "This file should be included on Windows platform only")
|
||||
endif()
|
||||
|
||||
set(HAVE_LOCALE_H 1)
|
||||
|
||||
if(MINGW)
|
||||
set(HAVE_SNPRINTF 1)
|
||||
set(HAVE_UNISTD_H 1)
|
||||
set(HAVE_LIBGEN_H 1)
|
||||
set(HAVE_STDDEF_H 1) # detected by CMake internally in check_type_size()
|
||||
set(HAVE_STDBOOL_H 1)
|
||||
set(HAVE_BOOL_T "${HAVE_STDBOOL_H}")
|
||||
set(HAVE_STRTOLL 1)
|
||||
set(HAVE_BASENAME 1)
|
||||
set(HAVE_STRCASECMP 1)
|
||||
set(HAVE_FTRUNCATE 1)
|
||||
set(HAVE_SYS_PARAM_H 1)
|
||||
set(HAVE_SYS_TIME_H 1)
|
||||
set(HAVE_GETTIMEOFDAY 1)
|
||||
else()
|
||||
set(HAVE_LIBGEN_H 0)
|
||||
set(HAVE_STRCASECMP 0)
|
||||
set(HAVE_FTRUNCATE 0)
|
||||
set(HAVE_SYS_PARAM_H 0)
|
||||
set(HAVE_SYS_TIME_H 0)
|
||||
set(HAVE_GETTIMEOFDAY 0)
|
||||
if(MSVC)
|
||||
set(HAVE_UNISTD_H 0)
|
||||
set(HAVE_LOCALE_H 1)
|
||||
set(HAVE_STDDEF_H 1) # detected by CMake internally in check_type_size()
|
||||
set(HAVE_STDATOMIC_H 0)
|
||||
if(NOT MSVC_VERSION LESS 1800)
|
||||
set(HAVE_STDBOOL_H 1)
|
||||
set(HAVE_STRTOLL 1)
|
||||
else()
|
||||
set(HAVE_STDBOOL_H 0)
|
||||
set(HAVE_STRTOLL 0)
|
||||
endif()
|
||||
set(HAVE_BOOL_T "${HAVE_STDBOOL_H}")
|
||||
if(NOT MSVC_VERSION LESS 1900)
|
||||
set(HAVE_SNPRINTF 1)
|
||||
else()
|
||||
set(HAVE_SNPRINTF 0)
|
||||
endif()
|
||||
set(HAVE_BASENAME 0)
|
||||
set(HAVE_STRTOK_R 0)
|
||||
set(HAVE_FILE_OFFSET_BITS 0)
|
||||
set(HAVE_ATOMIC 0)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Available in Windows XP and newer
|
||||
set(HAVE_GETADDRINFO 1)
|
||||
set(HAVE_FREEADDRINFO 1)
|
||||
|
||||
set(HAVE_FCHMOD 0)
|
||||
set(HAVE_SOCKETPAIR 0)
|
||||
set(HAVE_SENDMSG 0)
|
||||
set(HAVE_ALARM 0)
|
||||
set(HAVE_FCNTL 0)
|
||||
set(HAVE_GETPPID 0)
|
||||
set(HAVE_UTIMES 0)
|
||||
set(HAVE_GETPWUID_R 0)
|
||||
set(HAVE_STRERROR_R 0)
|
||||
set(HAVE_SIGINTERRUPT 0)
|
||||
set(HAVE_PIPE 0)
|
||||
set(HAVE_IF_NAMETOINDEX 0)
|
||||
set(HAVE_GETRLIMIT 0)
|
||||
set(HAVE_SETRLIMIT 0)
|
||||
set(HAVE_FSETXATTR 0)
|
||||
set(HAVE_LIBSOCKET 0)
|
||||
set(HAVE_SETLOCALE 1)
|
||||
set(HAVE_SETMODE 1)
|
||||
set(HAVE_GETPEERNAME 1)
|
||||
set(HAVE_GETSOCKNAME 1)
|
||||
set(HAVE_GETHOSTNAME 1)
|
||||
set(HAVE_LIBZ 0)
|
||||
|
||||
set(HAVE_RECV 1)
|
||||
set(HAVE_SEND 1)
|
||||
set(HAVE_STROPTS_H 0)
|
||||
set(HAVE_SYS_XATTR_H 0)
|
||||
set(HAVE_ARC4RANDOM 0)
|
||||
set(HAVE_FNMATCH 0)
|
||||
set(HAVE_SCHED_YIELD 0)
|
||||
set(HAVE_ARPA_INET_H 0)
|
||||
set(HAVE_FCNTL_H 1)
|
||||
set(HAVE_IFADDRS_H 0)
|
||||
set(HAVE_IO_H 1)
|
||||
set(HAVE_NETDB_H 0)
|
||||
set(HAVE_NETINET_IN_H 0)
|
||||
set(HAVE_NETINET_TCP_H 0)
|
||||
set(HAVE_NETINET_UDP_H 0)
|
||||
set(HAVE_NET_IF_H 0)
|
||||
set(HAVE_IOCTL_SIOCGIFADDR 0)
|
||||
set(HAVE_POLL_H 0)
|
||||
set(HAVE_POLL_FINE 0)
|
||||
set(HAVE_PWD_H 0)
|
||||
set(HAVE_STRINGS_H 0) # mingw-w64 has it (wrapper to string.h)
|
||||
set(HAVE_SYS_FILIO_H 0)
|
||||
set(HAVE_SYS_WAIT_H 0)
|
||||
set(HAVE_SYS_IOCTL_H 0)
|
||||
set(HAVE_SYS_POLL_H 0)
|
||||
set(HAVE_SYS_RESOURCE_H 0)
|
||||
set(HAVE_SYS_SELECT_H 0)
|
||||
set(HAVE_SYS_SOCKET_H 0)
|
||||
set(HAVE_SYS_SOCKIO_H 0)
|
||||
set(HAVE_SYS_STAT_H 1)
|
||||
set(HAVE_SYS_TYPES_H 1)
|
||||
set(HAVE_SYS_UN_H 0)
|
||||
set(HAVE_SYS_UTIME_H 1)
|
||||
set(HAVE_TERMIOS_H 0)
|
||||
set(HAVE_TERMIO_H 0)
|
||||
set(HAVE_UTIME_H 0) # mingw-w64 has it (wrapper to sys/utime.h)
|
||||
|
||||
set(HAVE_DIRENT_H 0)
|
||||
set(HAVE_OPENDIR 0)
|
||||
|
||||
set(HAVE_FSEEKO 0)
|
||||
set(HAVE__FSEEKI64 1)
|
||||
set(HAVE_SOCKET 1)
|
||||
set(HAVE_SELECT 1)
|
||||
set(HAVE_STRDUP 1)
|
||||
set(HAVE_STRICMP 1)
|
||||
set(HAVE_STRCMPI 1)
|
||||
set(HAVE_MEMRCHR 0)
|
||||
set(HAVE_CLOSESOCKET 1)
|
||||
set(HAVE_SIGSETJMP 0)
|
||||
set(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1)
|
||||
set(HAVE_GETPASS_R 0)
|
||||
set(HAVE_GETPWUID 0)
|
||||
set(HAVE_GETEUID 0)
|
||||
set(HAVE_UTIME 1)
|
||||
set(HAVE_GMTIME_R 0)
|
||||
set(HAVE_GETHOSTBYNAME_R 0)
|
||||
set(HAVE_SIGNAL 1)
|
||||
set(HAVE_SIGACTION 0)
|
||||
set(HAVE_LINUX_TCP_H 0)
|
||||
set(HAVE_GLIBC_STRERROR_R 0)
|
||||
set(HAVE_MACH_ABSOLUTE_TIME 0)
|
||||
set(HAVE_GETIFADDRS 0)
|
||||
set(HAVE_FCNTL_O_NONBLOCK 0)
|
||||
set(HAVE_IOCTLSOCKET 1)
|
||||
set(HAVE_IOCTLSOCKET_CAMEL 0)
|
||||
set(HAVE_IOCTLSOCKET_CAMEL_FIONBIO 0)
|
||||
set(HAVE_IOCTLSOCKET_FIONBIO 1)
|
||||
set(HAVE_IOCTL_FIONBIO 0)
|
||||
set(HAVE_SETSOCKOPT_SO_NONBLOCK 0)
|
||||
set(HAVE_POSIX_STRERROR_R 0)
|
||||
set(HAVE_BUILTIN_AVAILABLE 0)
|
||||
set(HAVE_MSG_NOSIGNAL 0)
|
||||
set(HAVE_STRUCT_TIMEVAL 1)
|
||||
set(HAVE_STRUCT_SOCKADDR_STORAGE 1)
|
||||
|
||||
set(HAVE_GETHOSTBYNAME_R_3 0)
|
||||
set(HAVE_GETHOSTBYNAME_R_3_REENTRANT 0)
|
||||
set(HAVE_GETHOSTBYNAME_R_5 0)
|
||||
set(HAVE_GETHOSTBYNAME_R_5_REENTRANT 0)
|
||||
set(HAVE_GETHOSTBYNAME_R_6 0)
|
||||
set(HAVE_GETHOSTBYNAME_R_6_REENTRANT 0)
|
||||
|
||||
set(HAVE_O_NONBLOCK 0)
|
||||
set(HAVE_IN_ADDR_T 0)
|
||||
set(STDC_HEADERS 1)
|
||||
|
||||
set(HAVE_SIZEOF_SUSECONDS_T 0)
|
||||
set(HAVE_SIZEOF_SA_FAMILY_T 0)
|
|
@ -0,0 +1,35 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
# File containing various utilities
|
||||
|
||||
# Returns number of arguments that evaluate to true
|
||||
function(count_true output_count_var)
|
||||
set(lst_len 0)
|
||||
foreach(option_var IN LISTS ARGN)
|
||||
if(${option_var})
|
||||
math(EXPR lst_len "${lst_len} + 1")
|
||||
endif()
|
||||
endforeach()
|
||||
set(${output_count_var} ${lst_len} PARENT_SCOPE)
|
||||
endfunction()
|
|
@ -0,0 +1,49 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
|
||||
set(CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@")
|
||||
endif()
|
||||
message(${CMAKE_INSTALL_PREFIX})
|
||||
|
||||
file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
|
||||
string(REGEX REPLACE "\n" ";" files "${files}")
|
||||
foreach(file ${files})
|
||||
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
|
||||
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||
exec_program(
|
||||
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
|
||||
OUTPUT_VARIABLE rm_out
|
||||
RETURN_VALUE rm_retval
|
||||
)
|
||||
if(NOT "${rm_retval}" STREQUAL 0)
|
||||
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
|
||||
endif()
|
||||
endforeach()
|
|
@ -0,0 +1,40 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
@PACKAGE_INIT@
|
||||
|
||||
include(CMakeFindDependencyMacro)
|
||||
if(@USE_OPENSSL@)
|
||||
find_dependency(OpenSSL @OPENSSL_VERSION_MAJOR@)
|
||||
endif()
|
||||
if(@USE_ZLIB@)
|
||||
find_dependency(ZLIB @ZLIB_VERSION_MAJOR@)
|
||||
endif()
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake")
|
||||
check_required_components("@PROJECT_NAME@")
|
||||
|
||||
# Alias for either shared or static library
|
||||
if(NOT TARGET @PROJECT_NAME@::libcurl)
|
||||
add_library(@PROJECT_NAME@::libcurl ALIAS @PROJECT_NAME@::@LIB_SELECTED@)
|
||||
endif()
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,22 @@
|
|||
COPYRIGHT AND PERMISSION NOTICE
|
||||
|
||||
Copyright (c) 1996 - 2024, Daniel Stenberg, <daniel@haxx.se>, and many
|
||||
contributors, see the THANKS file.
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Permission to use, copy, modify, and distribute this software for any purpose
|
||||
with or without fee is hereby granted, provided that the above copyright
|
||||
notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
|
||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
||||
OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of a copyright holder shall not
|
||||
be used in advertising or otherwise to promote the sale, use or other dealings
|
||||
in this Software without prior written authorization of the copyright holder.
|
|
@ -0,0 +1,41 @@
|
|||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
|
||||
# Self-contained build environment to match the release environment.
|
||||
#
|
||||
# Build and set the timestamp for the date corresponding to the release
|
||||
#
|
||||
# docker build --build-arg SOURCE_DATE_EPOCH=1711526400 --build-arg UID=$(id -u) --build-arg GID=$(id -g) -t curl/curl .
|
||||
#
|
||||
# Then run commands from within the build environment, for example
|
||||
#
|
||||
# docker run --rm -it -u $(id -u):$(id -g) -v $(pwd):/usr/src -w /usr/src curl/curl autoreconf -fi
|
||||
# docker run --rm -it -u $(id -u):$(id -g) -v $(pwd):/usr/src -w /usr/src curl/curl ./configure --without-ssl --without-libpsl
|
||||
# docker run --rm -it -u $(id -u):$(id -g) -v $(pwd):/usr/src -w /usr/src curl/curl make
|
||||
# docker run --rm -it -u $(id -u):$(id -g) -v $(pwd):/usr/src -w /usr/src curl/curl ./maketgz 8.7.1
|
||||
#
|
||||
# or get into a shell in the build environment, for example
|
||||
#
|
||||
# docker run --rm -it -u $(id -u):$(id -g) -v (pwd):/usr/src -w /usr/src curl/curl bash
|
||||
# $ autoreconf -fi
|
||||
# $ ./configure --without-ssl --without-libpsl
|
||||
# $ make
|
||||
# $ ./maketgz 8.7.1
|
||||
|
||||
# To update, get the latest digest e.g. from https://hub.docker.com/_/debian/tags
|
||||
FROM debian:bookworm-slim@sha256:911821c26cc366231183098f489068afff2d55cf56911cb5b7bd32796538dfe1
|
||||
|
||||
RUN apt-get update -qq && apt-get install -qq -y --no-install-recommends \
|
||||
build-essential make autoconf automake libtool git perl zip zlib1g-dev gawk && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
ARG UID=1000 GID=1000
|
||||
|
||||
RUN groupadd --gid $UID dev && \
|
||||
useradd --uid $UID --gid dev --shell /bin/bash --create-home dev
|
||||
|
||||
USER dev:dev
|
||||
|
||||
ARG SOURCE_DATE_EPOCH
|
||||
ENV SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH:-1}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,231 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
CMAKE_DIST = \
|
||||
CMake/cmake_uninstall.cmake.in \
|
||||
CMake/CMakeConfigurableFile.in \
|
||||
CMake/curl-config.cmake.in \
|
||||
CMake/CurlSymbolHiding.cmake \
|
||||
CMake/CurlTests.c \
|
||||
CMake/FindBearSSL.cmake \
|
||||
CMake/FindBrotli.cmake \
|
||||
CMake/FindCARES.cmake \
|
||||
CMake/FindGSS.cmake \
|
||||
CMake/FindLibPSL.cmake \
|
||||
CMake/FindLibSSH2.cmake \
|
||||
CMake/FindMbedTLS.cmake \
|
||||
CMake/FindMSH3.cmake \
|
||||
CMake/FindNGHTTP2.cmake \
|
||||
CMake/FindNGHTTP3.cmake \
|
||||
CMake/FindNGTCP2.cmake \
|
||||
CMake/FindQUICHE.cmake \
|
||||
CMake/FindWolfSSL.cmake \
|
||||
CMake/FindZstd.cmake \
|
||||
CMake/Macros.cmake \
|
||||
CMake/OtherTests.cmake \
|
||||
CMake/PickyWarnings.cmake \
|
||||
CMake/Platforms/WindowsCache.cmake \
|
||||
CMake/Utilities.cmake \
|
||||
CMakeLists.txt
|
||||
|
||||
VC_DIST = projects/README.md \
|
||||
projects/build-openssl.bat \
|
||||
projects/build-wolfssl.bat \
|
||||
projects/checksrc.bat \
|
||||
projects/generate.bat \
|
||||
projects/wolfssl_options.h \
|
||||
projects/wolfssl_override.props
|
||||
|
||||
WINBUILD_DIST = winbuild/README.md winbuild/gen_resp_file.bat \
|
||||
winbuild/MakefileBuild.vc winbuild/Makefile.vc winbuild/makedebug.cmd
|
||||
|
||||
PLAN9_DIST = plan9/include/mkfile \
|
||||
plan9/include/mkfile \
|
||||
plan9/mkfile.proto \
|
||||
plan9/mkfile \
|
||||
plan9/README \
|
||||
plan9/lib/mkfile.inc \
|
||||
plan9/lib/mkfile \
|
||||
plan9/src/mkfile.inc \
|
||||
plan9/src/mkfile
|
||||
|
||||
EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
|
||||
RELEASE-NOTES buildconf libcurl.pc.in $(CMAKE_DIST) $(VC_DIST) \
|
||||
$(WINBUILD_DIST) $(PLAN9_DIST) lib/libcurl.vers.in buildconf.bat \
|
||||
libcurl.def Dockerfile
|
||||
|
||||
CLEANFILES = $(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ) \
|
||||
$(VC14_10_LIBVCXPROJ) $(VC14_10_SRCVCXPROJ) \
|
||||
$(VC14_20_LIBVCXPROJ) $(VC14_20_SRCVCXPROJ) \
|
||||
$(VC14_30_LIBVCXPROJ) $(VC14_30_SRCVCXPROJ)
|
||||
|
||||
bin_SCRIPTS = curl-config
|
||||
|
||||
SUBDIRS = lib docs src scripts
|
||||
DIST_SUBDIRS = $(SUBDIRS) tests packages scripts include docs
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = libcurl.pc
|
||||
|
||||
# List of files required to generate VC IDE .dsp, .vcproj and .vcxproj files
|
||||
include lib/Makefile.inc
|
||||
include src/Makefile.inc
|
||||
|
||||
dist-hook:
|
||||
rm -rf $(top_builddir)/tests/log
|
||||
find $(distdir) -name "*.dist" -exec rm {} \;
|
||||
(distit=`find $(srcdir) -name "*.dist" | grep -v ./ares/`; \
|
||||
for file in $$distit; do \
|
||||
strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
|
||||
cp -p $$file $(distdir)$$strip; \
|
||||
done)
|
||||
|
||||
check: test examples check-docs
|
||||
|
||||
if CROSSCOMPILING
|
||||
test-full: test
|
||||
test-torture: test
|
||||
|
||||
test:
|
||||
@echo "NOTICE: we can't run the tests when cross-compiling!"
|
||||
|
||||
else
|
||||
|
||||
test:
|
||||
@(cd tests; $(MAKE) all quiet-test)
|
||||
|
||||
test-full:
|
||||
@(cd tests; $(MAKE) all full-test)
|
||||
|
||||
test-nonflaky:
|
||||
@(cd tests; $(MAKE) all nonflaky-test)
|
||||
|
||||
test-torture:
|
||||
@(cd tests; $(MAKE) all torture-test)
|
||||
|
||||
test-event:
|
||||
@(cd tests; $(MAKE) all event-test)
|
||||
|
||||
test-am:
|
||||
@(cd tests; $(MAKE) all am-test)
|
||||
|
||||
test-ci:
|
||||
@(cd tests; $(MAKE) all ci-test)
|
||||
|
||||
endif
|
||||
|
||||
examples:
|
||||
@(cd docs/examples; $(MAKE) check)
|
||||
|
||||
check-docs:
|
||||
@(cd docs/libcurl; $(MAKE) check)
|
||||
|
||||
# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
|
||||
# must contain the following line:
|
||||
# %_topdir /home/loic/local/rpm
|
||||
# and that /home/loic/local/rpm contains the directory SOURCES, BUILD etc.
|
||||
#
|
||||
# cd /home/loic/local/rpm ; mkdir -p SOURCES BUILD RPMS/i386 SPECS SRPMS
|
||||
#
|
||||
# If additional configure flags are needed to build the package, add the
|
||||
# following in ~/.rpmmacros
|
||||
# %configure CFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{_prefix} ${AM_CONFIGFLAGS}
|
||||
# and run make rpm in the following way:
|
||||
# AM_CONFIGFLAGS='--with-uri=/home/users/loic/local/RedHat-6.2' make rpm
|
||||
#
|
||||
|
||||
rpms:
|
||||
$(MAKE) RPMDIST=curl rpm
|
||||
$(MAKE) RPMDIST=curl-ssl rpm
|
||||
|
||||
rpm:
|
||||
RPM_TOPDIR=`rpm --showrc | $(PERL) -n -e 'print if(s/.*_topdir\s+(.*)/$$1/)'` ; \
|
||||
cp $(srcdir)/packages/Linux/RPM/$(RPMDIST).spec $$RPM_TOPDIR/SPECS ; \
|
||||
cp $(PACKAGE)-$(VERSION).tar.gz $$RPM_TOPDIR/SOURCES ; \
|
||||
rpm -ba --clean --rmsource $$RPM_TOPDIR/SPECS/$(RPMDIST).spec ; \
|
||||
mv $$RPM_TOPDIR/RPMS/i386/$(RPMDIST)-*.rpm . ; \
|
||||
mv $$RPM_TOPDIR/SRPMS/$(RPMDIST)-*.src.rpm .
|
||||
|
||||
#
|
||||
# Build a Solaris pkgadd format file
|
||||
# run 'make pkgadd' once you've done './configure' and 'make' to make a Solaris pkgadd format
|
||||
# file (which ends up back in this directory).
|
||||
# The pkgadd file is in 'pkgtrans' format, so to install on Solaris, do
|
||||
# pkgadd -d ./HAXXcurl-*
|
||||
#
|
||||
|
||||
# gak - libtool requires an absolute directory, hence the pwd below...
|
||||
pkgadd:
|
||||
umask 022 ; \
|
||||
$(MAKE) install DESTDIR=`/bin/pwd`/packages/Solaris/root ; \
|
||||
cat COPYING > $(srcdir)/packages/Solaris/copyright ; \
|
||||
cd $(srcdir)/packages/Solaris && $(MAKE) package
|
||||
|
||||
#
|
||||
# Build a cygwin binary tarball installation file
|
||||
# resulting .tar.bz2 file will end up at packages/Win32/cygwin
|
||||
cygwinbin:
|
||||
$(MAKE) -C packages/Win32/cygwin cygwinbin
|
||||
|
||||
# We extend the standard install with a custom hook:
|
||||
if BUILD_DOCS
|
||||
install-data-hook:
|
||||
(cd include && $(MAKE) install)
|
||||
(cd docs && $(MAKE) install)
|
||||
(cd docs/libcurl && $(MAKE) install)
|
||||
else
|
||||
install-data-hook:
|
||||
(cd include && $(MAKE) install)
|
||||
(cd docs && $(MAKE) install)
|
||||
endif
|
||||
|
||||
# We extend the standard uninstall with a custom hook:
|
||||
uninstall-hook:
|
||||
(cd include && $(MAKE) uninstall)
|
||||
(cd docs && $(MAKE) uninstall)
|
||||
(cd docs/libcurl && $(MAKE) uninstall)
|
||||
|
||||
ca-bundle: $(srcdir)/scripts/mk-ca-bundle.pl
|
||||
@echo "generating a fresh ca-bundle.crt"
|
||||
@perl $(srcdir)/scripts/mk-ca-bundle.pl -b -l -u lib/ca-bundle.crt
|
||||
|
||||
ca-firefox: $(srcdir)/scripts/firefox-db2pem.sh
|
||||
@echo "generating a fresh ca-bundle.crt"
|
||||
$(srcdir)/scripts/firefox-db2pem.sh lib/ca-bundle.crt
|
||||
|
||||
checksrc:
|
||||
(cd lib && $(MAKE) checksrc)
|
||||
(cd src && $(MAKE) checksrc)
|
||||
(cd tests && $(MAKE) checksrc)
|
||||
(cd include/curl && $(MAKE) checksrc)
|
||||
(cd docs/examples && $(MAKE) checksrc)
|
||||
(cd packages && $(MAKE) checksrc)
|
||||
|
||||
tidy:
|
||||
(cd src && $(MAKE) tidy)
|
||||
(cd lib && $(MAKE) tidy)
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,55 @@
|
|||
_ _ ____ _
|
||||
___| | | | _ \| |
|
||||
/ __| | | | |_) | |
|
||||
| (__| |_| | _ <| |___
|
||||
\___|\___/|_| \_\_____|
|
||||
|
||||
README
|
||||
|
||||
Curl is a command line tool for transferring data specified with URL
|
||||
syntax. Find out how to use curl by reading the curl.1 man page or the
|
||||
MANUAL document. Find out how to install Curl by reading the INSTALL
|
||||
document.
|
||||
|
||||
libcurl is the library curl is using to do its job. It is readily
|
||||
available to be used by your software. Read the libcurl.3 man page to
|
||||
learn how.
|
||||
|
||||
You find answers to the most frequent questions we get in the FAQ document.
|
||||
|
||||
Study the COPYING file for distribution terms.
|
||||
|
||||
Those documents and more can be found in the docs/ directory.
|
||||
|
||||
CONTACT
|
||||
|
||||
If you have problems, questions, ideas or suggestions, please contact us
|
||||
by posting to a suitable mailing list. See https://curl.se/mail/
|
||||
|
||||
All contributors to the project are listed in the THANKS document.
|
||||
|
||||
WEBSITE
|
||||
|
||||
Visit the curl website for the latest news and downloads:
|
||||
|
||||
https://curl.se/
|
||||
|
||||
GIT
|
||||
|
||||
To download the latest source code off the GIT server, do this:
|
||||
|
||||
git clone https://github.com/curl/curl.git
|
||||
|
||||
(you will get a directory named curl created, filled with the source code)
|
||||
|
||||
SECURITY PROBLEMS
|
||||
|
||||
Report suspected security problems via our HackerOne page and not in public.
|
||||
|
||||
https://hackerone.com/curl
|
||||
|
||||
NOTICE
|
||||
|
||||
Curl contains pieces of source code that is Copyright (c) 1998, 1999
|
||||
Kungliga Tekniska Högskolan. This notice is included here to comply with the
|
||||
distribution terms.
|
|
@ -0,0 +1,505 @@
|
|||
curl and libcurl 8.8.0
|
||||
|
||||
Public curl releases: 257
|
||||
Command line options: 259
|
||||
curl_easy_setopt() options: 305
|
||||
Public functions in libcurl: 94
|
||||
Contributors: 3173
|
||||
|
||||
This release includes the following changes:
|
||||
|
||||
o curl_version_info: provide librtmp version [73]
|
||||
o file: add support for directory listings [63]
|
||||
o idn: add native AppleIDN (icucore) support for macOS/iOS [95]
|
||||
o lib: add curl_multi_waitfds [34]
|
||||
o mbedTLS: implement CURLOPT_SSL_CIPHER_LIST option [103]
|
||||
o NTLM_WB: drop support [67]
|
||||
o TLS: add support for ECH (Encrypted Client Hello) [109]
|
||||
o urlapi: add CURLU_GET_EMPTY for empty queries and fragments [111]
|
||||
|
||||
This release includes the following bugfixes:
|
||||
|
||||
o appveyor: drop unnecessary `--clean-first` cmake option [197]
|
||||
o appveyor: guard against crash-build with VS2008 [193]
|
||||
o appveyor: make gcc 6 mingw64 job build-only [152]
|
||||
o asyn-thread: fix curl_global_cleanup crash in Windows [161]
|
||||
o asyn-thread: fix Curl_thread_create result check [162]
|
||||
o autotools: delete unused functions [177]
|
||||
o autotools: fix `HAVE_IOCTLSOCKET_FIONBIO` test for gcc 14 [186]
|
||||
o autotools: only probe for SGI MIPS compilers on IRIX [213]
|
||||
o bearssl: fix compiler warnings [43]
|
||||
o bearssl: use common code for cipher suite lookup [126]
|
||||
o bufq: remove duplicate word in comment [154]
|
||||
o BUG-BOUNTY.md: clarify the third party situation [210]
|
||||
o build: prefer `USE_IPV6` macro internally (was: `ENABLE_IPV6`) [85]
|
||||
o build: remove MacOSX-Framework script [60]
|
||||
o cd2nroff/manage: use UTC when SOURCE_DATE_EPOCH is set [36]
|
||||
o cf-https-connect: use timeouts as unsigned ints [143]
|
||||
o cf-socket: don't try getting local IP without socket [188]
|
||||
o cf-socket: remove references to l_ip, l_port [9]
|
||||
o ci: add curl-for-win builds: Linux MUSL, macOS, Windows [68]
|
||||
o cmake: add `BUILD_EXAMPLES` option to build examples [128]
|
||||
o cmake: add librtmp/rtmpdump option and detection [108]
|
||||
o cmake: check fseeko after detecting HAVE_FILE_OFFSET_BITS [64]
|
||||
o cmake: do not pass linker flags to the static library tool [203]
|
||||
o cmake: enable `-pedantic-errors` for clang when `CURL_WERROR=ON` [47]
|
||||
o cmake: FindNGHTTP2 add static lib name to find_library call [141]
|
||||
o cmake: fix `CURL_WERROR=ON` for old CMake and use it in GHA/linux-old [48]
|
||||
o cmake: fix `HAVE_IOCTLSOCKET_FIONBIO` test with gcc 14 [179]
|
||||
o cmake: fixup `DEPENDS` filename [51]
|
||||
o cmake: forward `USE_LIBRTMP` option to C [59]
|
||||
o cmake: generate misc manpages and install `mk-ca-bundle.pl` [24]
|
||||
o cmake: initialize `BUILD_TESTING` before first use [227]
|
||||
o cmake: speed up libcurl doc building again [15]
|
||||
o cmake: tidy-up to use `WORKING_DIRECTORY` [23]
|
||||
o cmake: use namespaced custom target names [80]
|
||||
o cmdline-docs: fix make install with configure --disable-docs [1]
|
||||
o configure: error on missing perl if docs or manual is enabled [135]
|
||||
o configure: make --disable-docs imply --disable-manual [2]
|
||||
o content_encoding: brotli and others, pass through 0-length writes [5]
|
||||
o content_encoding: ignore duplicate chunked encoding [137]
|
||||
o content_encoding: reject transfer-encoding after chunked [200]
|
||||
o contrithanks: honor `CURLWWW` variable [69]
|
||||
o curl-confopts.m4: define CARES_NO_DEPRECATED when c-ares is used [17]
|
||||
o curl.h: change CURL_SSLVERSION_* from enum to defines [132]
|
||||
o curl: make --help adapt to the terminal width [11]
|
||||
o curl: use curl_getenv instead of the curlx_ version [20]
|
||||
o Curl_creader_read: init two variables to avoid using them uninited [99]
|
||||
o curl_easy_pause.md: use correct defines in example [187]
|
||||
o curl_getdate.md: document two-digit year handling [127]
|
||||
o curl_global_trace.md: shorten the description [29]
|
||||
o curl_multibyte: remove access() function wrapper for Windows [163]
|
||||
o curl_path: make Curl_get_pathname use dynbuf [158]
|
||||
o curl_setup.h: add support for IAR compiler [191]
|
||||
o curl_setup.h: detect 'inline' support [133]
|
||||
o curl_sha512_256: do not use workaround for NetBSD when not needed [21]
|
||||
o curl_sha512_256: fix detection of OpenSSL 1.1.1 or later [8]
|
||||
o curl_url_get.md: clarify queries and fragments and CURLU_GET_EMPTY [105]
|
||||
o CURLINFO_REQUEST_SIZE: fixed, add tests for transfer infos reported [52]
|
||||
o CURLOPT_WRITEFUNCTION.md: fix the callback proto in the example [215]
|
||||
o cw-out: improved error handling [104]
|
||||
o DEPRECATE.md: TLS libraries without 1.3 support [199]
|
||||
o digest: replace strcpy for empty string with simple assignment [185]
|
||||
o dist: `set -eu`, fix shellcheck, make reproducible and smaller tarballs [38]
|
||||
o dist: add files missing from release tarball [53]
|
||||
o dist: add reproducible dir entries to tarballs [56]
|
||||
o dist: do not require Perl in `maketgz` [71]
|
||||
o dist: remove the curl-config.1 from the tarball [28]
|
||||
o dist: verify tarball reproducibility in CI [40]
|
||||
o DISTROS: add patch and issues link for curl-for-win [110]
|
||||
o DISTROS: Cygwin updates [44]
|
||||
o dllmain: Call OpenSSL thread cleanup for Windows and Cygwin [114]
|
||||
o doc: pytest `--repeat` -> `--count` [58]
|
||||
o docs/cmdline-opts: invoke managen using a relative path [30]
|
||||
o docs/cmdline-opts: mention STARTTLS for --ssl and --ssl-reqd [175]
|
||||
o docs: add CURLOPT_NOPROGRESS to CURLOPT_XFERINFOFUNCTION example [61]
|
||||
o docs: clarify CURLOPT_MAXFILESIZE and CURLOPT_MAXFILESIZE_LARGE [74]
|
||||
o docs: fix some CURLINFO examples [147]
|
||||
o doh: fix typo in comment [173]
|
||||
o doh: remove unused function prototype [169]
|
||||
o dynbuf: fix returncode on memory error [174]
|
||||
o examples: fix/silence `-Wsign-conversion` [178]
|
||||
o EXPERIMENTAL: add graduation requirements for each feature [166]
|
||||
o file: remove useless assignment [89]
|
||||
o ftp: add tracing support [181]
|
||||
o ftp: fix build for CURL_DISABLE_VERBOSE_STRINGS
|
||||
o ftp: fix socket leak on rare error [102]
|
||||
o GHA: add NetBSD, OpenBSD, FreeBSD/arm64 and OmniOS jobs [201]
|
||||
o GHA: add shellcheck job and fix warnings, shell tidy-ups [70]
|
||||
o GHA: add valgrind to a wolfSSL build [37]
|
||||
o GHA: on macOS remove $HOME/.curlrc [50]
|
||||
o GHA: pin dependencies [194]
|
||||
o gnutls: lazy init the trust settings [75]
|
||||
o h3/ngtcp2: improve error handling [140]
|
||||
o hash: change 'slots' to size_t from int [144]
|
||||
o hash: delete unused debug function [198]
|
||||
o hsts: explicitly skip blank lines [212]
|
||||
o hsts: remove single-use single-line function [151]
|
||||
o http tests: in CI skip test_02_23* for quiche [211]
|
||||
o http2 + ngtcp2: pass CURLcode errors from callbacks [94]
|
||||
o http2, http3: decouple stream state from easy handle [92]
|
||||
o http2: emit RST when client write fails [65]
|
||||
o http3: quiche+ngtcp2 improvements [129]
|
||||
o http: acknowledge a returned error code [123]
|
||||
o http: HEAD response body tolerance [170]
|
||||
o http: reject HTTP major version switch mid connection [100]
|
||||
o http: remove redundant check [182]
|
||||
o http: with chunked POST forced, disable length check on read callback [31]
|
||||
o http_aws_sigv4: remove useless assignment [88]
|
||||
o idn: make Curl_idnconvert_hostname() use Curl_idn_decode() [16]
|
||||
o if2ip: make the buf_size arg a size_t [142]
|
||||
o INSTALL-CMAKE.md: explain `cmake -G <generator-name>` [32]
|
||||
o krb5: use dynbuf [149]
|
||||
o ldap: fix unused variables (seen on OmniOS) [183]
|
||||
o lib/cf-h1-proxy: silence compiler warnings (gcc 14) [155]
|
||||
o lib: add trace support for client reads and writes [45]
|
||||
o lib: bump hash sizes to `size_t` [153]
|
||||
o lib: clear the easy handle's saved errno before transfer [180]
|
||||
o lib: fix compiler warnings (gcc) [222]
|
||||
o lib: make protocol handlers store scheme name lowercase [159]
|
||||
o lib: merge `ENABLE_QUIC` C macro into `USE_HTTP3` [84]
|
||||
o lib: remove two instances of "only only" messages [160]
|
||||
o lib: silence `-Wsign-conversion` in base64, strcase, mprintf [139]
|
||||
o lib: silence warnings on comma misuse [91]
|
||||
o lib: use `#error` instead of invalid syntax in `curl_setup_once.h` [49]
|
||||
o lib: use multi instead of multi_easy for the active multi [41]
|
||||
o libcurl-opts: mention pipelining less [33]
|
||||
o libssh2: delete redundant feature guard [171]
|
||||
o libssh2: replace `access()` with `stat()` [145]
|
||||
o libssh2: set length to 0 if strdup failed [6]
|
||||
o m4: fix rustls pkg-config codepath [22]
|
||||
o MAIL-ETIQUETTE: convert to markdown [12]
|
||||
o makefile: remove the sorting from the vc-ide action [42]
|
||||
o maketgz: put docs/RELEASE-TOOL.md into the tarball [35]
|
||||
o managen: fix the option sort order [150]
|
||||
o mbedtls: call mbedtls_ssl_setup() after RNG callback is set [66]
|
||||
o mbedtls: cut off trailing newlines from debug logs [87]
|
||||
o mbedtls: fix building with v3 in CMake Unity mode [107]
|
||||
o mbedtls: support TLS 1.3 [156]
|
||||
o mime: avoid using access() [125]
|
||||
o misc: fix typos [62]
|
||||
o misc: fix typos, quoting and spelling [167]
|
||||
o mprintf: check fputc error rather than matching returned character [82]
|
||||
o mqtt: when Curl_xfer_recv returns error, don't use nread [101]
|
||||
o multi: avoid memory-leak risk [134]
|
||||
o multi: introduce SETUP state for better timeouts [26]
|
||||
o multi: multi_wait improvements [131]
|
||||
o multi: remove the unused Curl_preconnect function [98]
|
||||
o multi: remove useless assignment [146]
|
||||
o multi: timeout handles even without connection [81]
|
||||
o openldap: create ldap URLs correctly for IPv6 addresses [19]
|
||||
o openssl: do not set SSL_MODE_RELEASE_BUFFERS [10]
|
||||
o openssl: revert keylog_callback support for LibreSSL [192]
|
||||
o OS400: fix shellcheck warnings in scripts [72]
|
||||
o projects: drop MSVC project files for recent versions [79]
|
||||
o pytest: add DELETE tests, check server version [225]
|
||||
o pytest: fixes for recent python, add FTP tests [206]
|
||||
o quic: fixup duplicate static function name (for cmake unity) [77]
|
||||
o quiche: expire all active transfers on connection close [116]
|
||||
o quiche: trust its timeout handling [190]
|
||||
o RELEASE-PROCEDURE: mention an initial working build [7]
|
||||
o request: make Curl_req_init return void [96]
|
||||
o request: paused upload on completed download, assess connection [54]
|
||||
o reuse: add copyright + license info to individual docs/*.md files [13]
|
||||
o ROADMAP: remove completed entries, mention websocket
|
||||
o rustls: fix handshake done handling [207]
|
||||
o rustls: fix partial send handling [224]
|
||||
o rustls: remove incorrect SSLSUPP_TLS13_CIPHERSUITES flag [115]
|
||||
o rustsls: fix error code on receive [230]
|
||||
o sendf: fix two typos in comments [90]
|
||||
o sendf: useless assignment in cr_lc_read() [120]
|
||||
o setopt: acknowledge errors proper for CURLOPT_COOKIEJAR [216]
|
||||
o setopt: make the setstropt_userpwd args compulsory [221]
|
||||
o setopt: remove check for 'option' that is always true [219]
|
||||
o setopt: warn on Curl_set*opt() uses not using the return value [176]
|
||||
o smtp: result of Curl_bufq_cread was not used [78]
|
||||
o socket: remove redundant call to getsockname [195]
|
||||
o socketpair: fix compilation when USE_UNIX_SOCKETS is not defined [229]
|
||||
o src: tidy up types, add necessary casts [217]
|
||||
o telnet: check return code from fileno() [112]
|
||||
o tests/http: fix compiler warning [39]
|
||||
o tests: add -q as first option when invoking curl for tests [97]
|
||||
o tests: check caddy server version to match test expectations [106]
|
||||
o tests: enable test 1117 for hyper [119]
|
||||
o tests: fix feature case in test1481 [117]
|
||||
o tests: fix test 1167 to skip digit-only symbols [214]
|
||||
o tests: make the unit test result type `CURLcode` [165]
|
||||
o tests: Mark tftpd timer function as noreturn [168]
|
||||
o tests: tidy up types in server code [220]
|
||||
o tls: fix SecureTransport + BearSSL cmake unity builds [113]
|
||||
o tls: remove EXAMPLEs from deprecated options [164]
|
||||
o tls: use shared init code for TCP+QUIC [57]
|
||||
o tool: move tool_ftruncate64 to tool_util.c [138]
|
||||
o tool_cb_rea: limit rate unpause for -T . uploads [136]
|
||||
o tool_cfgable: free {proxy_}cipher13_list on exit [172]
|
||||
o tool_getparam: output warning for leading unicode quote character [14]
|
||||
o tool_getparam: remove two redundant conditions [189]
|
||||
o tool_operate: don't truncate the etag save file by default [118]
|
||||
o tool_operate: init vars unconditionally in post_per_transfer [124]
|
||||
o tool_paramhlp: remove duplicate assign [121]
|
||||
o tool_xattr: "guess" URL scheme if none is provided [3]
|
||||
o tool_xattr: in debug builds, act normally if CURL_FAKE_XATTR is not set [4]
|
||||
o transfer: remove useless assignment [122]
|
||||
o url: do not URL decode proxy crendentials [55]
|
||||
o url: fix use of an uninitialized variable [86]
|
||||
o url: make parse_login_details use memdup0 [184]
|
||||
o url: remove duplicate call to Curl_conncache_remove_conn when pruning [196]
|
||||
o urlapi: allow setting port number zero [76]
|
||||
o urlapi: fix relative redirects to fragment-only [83]
|
||||
o urldata: remove fields not used depending on used features [46]
|
||||
o vauth: make two functions void that always just returned OK [218]
|
||||
o version: use msnprintf instead of strncpy [157]
|
||||
o vquic-tls: use correct cert name check API for wolfSSL [226]
|
||||
o vquic: use CURL_FORMAT_CURL_OFF_T for 64 bit printf output [18]
|
||||
o vtls: TLS session storage overhaul [130]
|
||||
o wakeup_create: use FD_CLOEXEC/SOCK_CLOEXEC [223]
|
||||
o warnless: delete orphan declarations [209]
|
||||
o websocket: avoid memory leak in error path [148]
|
||||
o winbuild: add ENABLE_WEBSOCKETS option [93]
|
||||
o winbuild: use $(RC) correctly [27]
|
||||
o wolfssl: plug memory leak in wolfssl_connect_step2() [25]
|
||||
o x509asn1: return error on missing OID [208]
|
||||
|
||||
This release includes the following known bugs:
|
||||
|
||||
o see docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html)
|
||||
|
||||
Planned upcoming removals include:
|
||||
|
||||
o support for space-separated NOPROXY patterns
|
||||
|
||||
See https://curl.se/dev/deprecate.html for details
|
||||
|
||||
This release would not have looked like this without help, code, reports and
|
||||
advice from friends like these:
|
||||
|
||||
Abdullah Alyan, Andrew, Antoine Bollengier, blankie, Brian Inglis,
|
||||
Carlos Henrique Lima Melara, Ch40zz on github, Christian Schmitz, Chris Webb,
|
||||
Colin Leroy-Mira, Dagfinn Ilmari Mannsåker, Dan Fandrich, Daniel Gustafsson,
|
||||
Daniel J. H., Daniel McCarney, Daniel Stenberg, Dmitry Karpov,
|
||||
Emanuele Torre, Evgeny Grin (Karlson2k), Fabian Keil, farazrbx on github,
|
||||
fuzzard, Gisle Vanem, Gonçalo Carvalho, Gusted, hammlee96 on github,
|
||||
Harmen Stoppels, Harry Sintonen, Hongfei Li, Ivan, Jan Macku, Jan Venekamp,
|
||||
Jeff King, Jeroen Ooms, Jérôme Leclercq, Jiwoo Park,
|
||||
Johann Sebastian Schicho, Jonatan Vela, Joseph Chen, Juliusz Sosinowicz,
|
||||
Kailun Qin, kalvdans on github, Keitagit-kun on github, Konstantin Kuzov,
|
||||
kpcyrd on github, Laramie Leavitt, LigH, Lucas Nussbaum,
|
||||
magisterquis on hackerone, Marcel Raad, Matt Jolly, Max Dymond, Mel Zuser,
|
||||
Michael Kaufmann, Michael Litwak, Michał Antoniak, Nathan Moinvaziri,
|
||||
Orgad Shaneh, Patrick Monnerat, Paul Gilmartin, Paul Howarth,
|
||||
Pavel Kropachev, Pavel Pavlov, Philip Heiduck, Rahul Krishna M, RainRat,
|
||||
Ray Satiro, renovate[bot], riastradh on github, Robert Moreton,
|
||||
Sanjay Pujare, Sergey Bronnikov, Sergey Ogryzkov, Sergio Durigan Junior,
|
||||
southernedge on github, Stefan Eissing, Stephen Farrell, Tal Regev,
|
||||
Tatsuhiro Tsujikawa, Tobias Stoeckmann, Toon Claes, Trumeet on github,
|
||||
Trzik on github, Viktor Szakats, zmcx16 on github
|
||||
(85 contributors)
|
||||
|
||||
References to bug reports and discussions on issues:
|
||||
|
||||
[1] = https://curl.se/bug/?i=13198
|
||||
[2] = https://curl.se/bug/?i=13191
|
||||
[3] = https://curl.se/bug/?i=13205
|
||||
[4] = https://curl.se/bug/?i=13220
|
||||
[5] = https://curl.se/bug/?i=13209
|
||||
[6] = https://curl.se/bug/?i=13213
|
||||
[7] = https://curl.se/bug/?i=13216
|
||||
[8] = https://curl.se/bug/?i=13208
|
||||
[9] = https://curl.se/bug/?i=13210
|
||||
[10] = https://curl.se/bug/?i=13203
|
||||
[11] = https://curl.se/bug/?i=13171
|
||||
[12] = https://curl.se/bug/?i=13247
|
||||
[13] = https://curl.se/bug/?i=13245
|
||||
[14] = https://curl.se/bug/?i=13214
|
||||
[15] = https://curl.se/bug/?i=13207
|
||||
[16] = https://curl.se/bug/?i=13236
|
||||
[17] = https://curl.se/bug/?i=13240
|
||||
[18] = https://curl.se/bug/?i=13224
|
||||
[19] = https://curl.se/bug/?i=13228
|
||||
[20] = https://curl.se/bug/?i=13230
|
||||
[21] = https://curl.se/bug/?i=13225
|
||||
[22] = https://curl.se/bug/?i=13200
|
||||
[23] = https://curl.se/bug/?i=13206
|
||||
[24] = https://curl.se/bug/?i=13197
|
||||
[25] = https://curl.se/bug/?i=13272
|
||||
[26] = https://curl.se/bug/?i=13371
|
||||
[27] = https://curl.se/bug/?i=13267
|
||||
[28] = https://curl.se/bug/?i=13268
|
||||
[29] = https://curl.se/bug/?i=13263
|
||||
[30] = https://curl.se/bug/?i=13281
|
||||
[31] = https://curl.se/bug/?i=13229
|
||||
[32] = https://curl.se/bug/?i=13244
|
||||
[33] = https://curl.se/bug/?i=13254
|
||||
[34] = https://curl.se/bug/?i=13135
|
||||
[35] = https://curl.se/bug/?i=13239
|
||||
[36] = https://curl.se/bug/?i=13242
|
||||
[37] = https://curl.se/bug/?i=13274
|
||||
[38] = https://curl.se/bug/?i=13299
|
||||
[39] = https://curl.se/bug/?i=13301
|
||||
[40] = https://curl.se/bug/?i=13327
|
||||
[41] = https://curl.se/bug/?i=12665
|
||||
[42] = https://curl.se/bug/?i=13294
|
||||
[43] = https://curl.se/bug/?i=13290
|
||||
[44] = https://curl.se/bug/?i=13258
|
||||
[45] = https://curl.se/bug/?i=13223
|
||||
[46] = https://curl.se/bug/?i=13188
|
||||
[47] = https://curl.se/bug/?i=13286
|
||||
[48] = https://curl.se/bug/?i=13282
|
||||
[49] = https://curl.se/bug/?i=13287
|
||||
[50] = https://curl.se/bug/?i=13284
|
||||
[51] = https://curl.se/bug/?i=13283
|
||||
[52] = https://curl.se/bug/?i=13269
|
||||
[53] = https://curl.se/bug/?i=13346
|
||||
[54] = https://curl.se/bug/?i=13260
|
||||
[55] = https://curl.se/bug/?i=13265
|
||||
[56] = https://curl.se/bug/?i=13322
|
||||
[57] = https://curl.se/bug/?i=13172
|
||||
[58] = https://curl.se/bug/?i=13218
|
||||
[59] = https://curl.se/bug/?i=13364
|
||||
[60] = https://curl.se/bug/?i=13313
|
||||
[61] = https://curl.se/bug/?i=13348
|
||||
[62] = https://curl.se/bug/?i=13344
|
||||
[63] = https://curl.se/bug/?i=13137
|
||||
[64] = https://curl.se/bug/?i=13264
|
||||
[65] = https://curl.se/bug/?i=13292
|
||||
[66] = https://curl.se/bug/?i=13314
|
||||
[67] = https://curl.se/bug/?i=13249
|
||||
[68] = https://curl.se/bug/?i=13335
|
||||
[69] = https://curl.se/bug/?i=13315
|
||||
[70] = https://curl.se/bug/?i=13307
|
||||
[71] = https://curl.se/bug/?i=13310
|
||||
[72] = https://curl.se/bug/?i=13309
|
||||
[73] = https://curl.se/bug/?i=13368
|
||||
[74] = https://curl.se/bug/?i=13372
|
||||
[75] = https://curl.se/bug/?i=13339
|
||||
[76] = https://curl.se/bug/?i=13427
|
||||
[77] = https://curl.se/bug/?i=13332
|
||||
[78] = https://curl.se/bug/?i=13398
|
||||
[79] = https://curl.se/bug/?i=13311
|
||||
[80] = https://curl.se/bug/?i=13324
|
||||
[81] = https://curl.se/bug/?i=13276
|
||||
[82] = https://curl.se/bug/?i=13367
|
||||
[83] = https://curl.se/bug/?i=13394
|
||||
[84] = https://curl.se/bug/?i=13352
|
||||
[85] = https://curl.se/bug/?i=13349
|
||||
[86] = https://curl.se/bug/?i=13399
|
||||
[87] = https://curl.se/bug/?i=13321
|
||||
[88] = https://curl.se/bug/?i=13426
|
||||
[89] = https://curl.se/bug/?i=13425
|
||||
[90] = https://curl.se/bug/?i=13393
|
||||
[91] = https://curl.se/bug/?i=13392
|
||||
[92] = https://curl.se/bug/?i=13204
|
||||
[93] = https://curl.se/bug/?i=13232
|
||||
[94] = https://curl.se/bug/?i=13411
|
||||
[95] = https://curl.se/bug/?i=13246
|
||||
[96] = https://curl.se/bug/?i=13423
|
||||
[97] = https://curl.se/bug/?i=13387
|
||||
[98] = https://curl.se/bug/?i=13422
|
||||
[99] = https://curl.se/bug/?i=13419
|
||||
[100] = https://curl.se/bug/?i=13421
|
||||
[101] = https://curl.se/bug/?i=13418
|
||||
[102] = https://curl.se/bug/?i=13417
|
||||
[103] = https://curl.se/bug/?i=13442
|
||||
[104] = https://curl.se/bug/?i=13337
|
||||
[105] = https://curl.se/bug/?i=13407
|
||||
[106] = https://curl.se/bug/?i=13405
|
||||
[107] = https://curl.se/bug/?i=13377
|
||||
[108] = https://curl.se/bug/?i=13373
|
||||
[109] = https://curl.se/bug/?i=11922
|
||||
[110] = https://curl.se/bug/?i=13499
|
||||
[111] = https://curl.se/bug/?i=13396
|
||||
[112] = https://curl.se/bug/?i=13457
|
||||
[113] = https://curl.se/bug/?i=13450
|
||||
[114] = https://curl.se/bug/?i=12327
|
||||
[115] = https://curl.se/bug/?i=13452
|
||||
[116] = https://curl.se/bug/?i=13439
|
||||
[117] = https://curl.se/bug/?i=13445
|
||||
[118] = https://curl.se/bug/?i=13432
|
||||
[119] = https://curl.se/bug/?i=13436
|
||||
[120] = https://curl.se/bug/?i=13437
|
||||
[121] = https://curl.se/bug/?i=13433
|
||||
[122] = https://curl.se/bug/?i=13435
|
||||
[123] = https://curl.se/bug/?i=13434
|
||||
[124] = https://curl.se/bug/?i=13430
|
||||
[125] = https://curl.se/bug/?i=13497
|
||||
[126] = https://curl.se/bug/?i=13464
|
||||
[127] = https://curl.se/bug/?i=13494
|
||||
[128] = https://curl.se/bug/?i=13491
|
||||
[129] = https://curl.se/bug/?i=13475
|
||||
[130] = https://curl.se/bug/?i=13386
|
||||
[131] = https://curl.se/bug/?i=13150
|
||||
[132] = https://curl.se/bug/?i=13510
|
||||
[133] = https://curl.se/bug/?i=13355
|
||||
[134] = https://curl.se/bug/?i=13471
|
||||
[135] = https://curl.se/bug/?i=13508
|
||||
[136] = https://curl.se/bug/?i=13174
|
||||
[137] = https://curl.se/bug/?i=13451
|
||||
[138] = https://curl.se/bug/?i=13458
|
||||
[139] = https://curl.se/bug/?i=13467
|
||||
[140] = https://curl.se/bug/?i=13562
|
||||
[141] = https://curl.se/bug/?i=13495
|
||||
[142] = https://curl.se/bug/?i=13505
|
||||
[143] = https://curl.se/bug/?i=13503
|
||||
[144] = https://curl.se/bug/?i=13502
|
||||
[145] = https://curl.se/bug/?i=13498
|
||||
[146] = https://curl.se/bug/?i=13500
|
||||
[147] = https://curl.se/bug/?i=13557
|
||||
[148] = https://curl.se/bug/?i=13602
|
||||
[149] = https://curl.se/bug/?i=13568
|
||||
[150] = https://curl.se/bug/?i=13567
|
||||
[151] = https://curl.se/bug/?i=13604
|
||||
[152] = https://curl.se/bug/?i=13566
|
||||
[153] = https://curl.se/bug/?i=13601
|
||||
[154] = https://curl.se/bug/?i=13554
|
||||
[155] = https://curl.se/bug/?i=13237
|
||||
[156] = https://curl.se/bug/?i=13539
|
||||
[157] = https://curl.se/bug/?i=13549
|
||||
[158] = https://curl.se/bug/?i=13550
|
||||
[159] = https://curl.se/bug/?i=13553
|
||||
[160] = https://curl.se/bug/?i=13551
|
||||
[161] = https://curl.se/bug/?i=13509
|
||||
[162] = https://curl.se/bug/?i=13542
|
||||
[163] = https://curl.se/bug/?i=13529
|
||||
[164] = https://curl.se/bug/?i=13540
|
||||
[165] = https://curl.se/bug/?i=13600
|
||||
[166] = https://curl.se/bug/?i=13541
|
||||
[167] = https://curl.se/bug/?i=13538
|
||||
[168] = https://curl.se/bug/?i=13534
|
||||
[169] = https://curl.se/bug/?i=13536
|
||||
[170] = https://curl.se/bug/?i=13725
|
||||
[171] = https://curl.se/bug/?i=13537
|
||||
[172] = https://curl.se/bug/?i=13531
|
||||
[173] = https://curl.se/bug/?i=13504
|
||||
[174] = https://curl.se/bug/?i=13533
|
||||
[175] = https://curl.se/bug/?i=13590
|
||||
[176] = https://curl.se/bug/?i=13591
|
||||
[177] = https://curl.se/bug/?i=13605
|
||||
[178] = https://curl.se/bug/?i=13501
|
||||
[179] = https://curl.se/bug/?i=13578
|
||||
[180] = https://curl.se/bug/?i=13574
|
||||
[181] = https://curl.se/bug/?i=13580
|
||||
[182] = https://curl.se/bug/?i=13582
|
||||
[183] = https://curl.se/bug/?i=13588
|
||||
[184] = https://curl.se/bug/?i=13584
|
||||
[185] = https://curl.se/bug/?i=13586
|
||||
[186] = https://curl.se/bug/?i=13579
|
||||
[187] = https://curl.se/bug/?i=13664
|
||||
[188] = https://curl.se/bug/?i=13577
|
||||
[189] = https://curl.se/bug/?i=13576
|
||||
[190] = https://curl.se/bug/?i=13581
|
||||
[191] = https://curl.se/bug/?i=13728
|
||||
[192] = https://curl.se/bug/?i=13672
|
||||
[193] = https://curl.se/bug/?i=13654
|
||||
[194] = https://curl.se/bug/?i=13628
|
||||
[195] = https://curl.se/bug/?i=13655
|
||||
[196] = https://curl.se/bug/?i=13710
|
||||
[197] = https://curl.se/bug/?i=13707
|
||||
[198] = https://curl.se/bug/?i=13729
|
||||
[199] = https://curl.se/bug/?i=13544
|
||||
[200] = https://curl.se/bug/?i=13733
|
||||
[201] = https://curl.se/bug/?i=13583
|
||||
[203] = https://curl.se/bug/?i=13697
|
||||
[206] = https://curl.se/bug/?i=13661
|
||||
[207] = https://curl.se/bug/?i=13686
|
||||
[208] = https://curl.se/bug/?i=13684
|
||||
[209] = https://curl.se/bug/?i=13639
|
||||
[210] = https://curl.se/bug/?i=13560
|
||||
[211] = https://curl.se/bug/?i=13638
|
||||
[212] = https://curl.se/bug/?i=13603
|
||||
[213] = https://curl.se/bug/?i=13611
|
||||
[214] = https://curl.se/bug/?i=13634
|
||||
[215] = https://curl.se/bug/?i=13681
|
||||
[216] = https://curl.se/bug/?i=13624
|
||||
[217] = https://curl.se/bug/?i=13614
|
||||
[218] = https://curl.se/bug/?i=13621
|
||||
[219] = https://curl.se/bug/?i=13619
|
||||
[220] = https://curl.se/bug/?i=13610
|
||||
[221] = https://curl.se/bug/?i=13608
|
||||
[222] = https://curl.se/bug/?i=13643
|
||||
[223] = https://curl.se/bug/?i=13618
|
||||
[224] = https://curl.se/bug/?i=13676
|
||||
[225] = https://curl.se/bug/?i=13679
|
||||
[226] = https://curl.se/bug/?i=13487
|
||||
[227] = https://curl.se/bug/?i=13668
|
||||
[229] = https://curl.se/bug/?i=13666
|
||||
[230] = https://curl.se/bug/?i=13670
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,8 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
|
||||
echo "*** Do not use buildconf. Instead, just use: autoreconf -fi" >&2
|
||||
exec ${AUTORECONF:-autoreconf} -fi "${@}"
|
|
@ -0,0 +1,265 @@
|
|||
@echo off
|
||||
rem ***************************************************************************
|
||||
rem * _ _ ____ _
|
||||
rem * Project ___| | | | _ \| |
|
||||
rem * / __| | | | |_) | |
|
||||
rem * | (__| |_| | _ <| |___
|
||||
rem * \___|\___/|_| \_\_____|
|
||||
rem *
|
||||
rem * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
rem *
|
||||
rem * This software is licensed as described in the file COPYING, which
|
||||
rem * you should have received as part of this distribution. The terms
|
||||
rem * are also available at https://curl.se/docs/copyright.html.
|
||||
rem *
|
||||
rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
rem * copies of the Software, and permit persons to whom the Software is
|
||||
rem * furnished to do so, under the terms of the COPYING file.
|
||||
rem *
|
||||
rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
rem * KIND, either express or implied.
|
||||
rem *
|
||||
rem * SPDX-License-Identifier: curl
|
||||
rem *
|
||||
rem ***************************************************************************
|
||||
|
||||
rem NOTES
|
||||
rem
|
||||
rem This batch file must be used to set up a git tree to build on systems where
|
||||
rem there is no autotools support (i.e. DOS and Windows).
|
||||
rem
|
||||
|
||||
:begin
|
||||
rem Set our variables
|
||||
if "%OS%" == "Windows_NT" setlocal
|
||||
set MODE=GENERATE
|
||||
|
||||
rem Switch to this batch file's directory
|
||||
cd /d "%~0\.." 1>NUL 2>&1
|
||||
|
||||
rem Check we are running from a curl git repository
|
||||
if not exist GIT-INFO.md goto norepo
|
||||
|
||||
:parseArgs
|
||||
if "%~1" == "" goto start
|
||||
|
||||
if /i "%~1" == "-clean" (
|
||||
set MODE=CLEAN
|
||||
) else if /i "%~1" == "-?" (
|
||||
goto syntax
|
||||
) else if /i "%~1" == "-h" (
|
||||
goto syntax
|
||||
) else if /i "%~1" == "-help" (
|
||||
goto syntax
|
||||
) else (
|
||||
goto unknown
|
||||
)
|
||||
|
||||
shift & goto parseArgs
|
||||
|
||||
:start
|
||||
if "%MODE%" == "GENERATE" (
|
||||
echo.
|
||||
echo Generating prerequisite files
|
||||
|
||||
call :generate
|
||||
if errorlevel 3 goto nogenhugehelp
|
||||
if errorlevel 2 goto nogenmakefile
|
||||
if errorlevel 1 goto warning
|
||||
|
||||
) else (
|
||||
echo.
|
||||
echo Removing prerequisite files
|
||||
|
||||
call :clean
|
||||
if errorlevel 2 goto nocleanhugehelp
|
||||
if errorlevel 1 goto nocleanmakefile
|
||||
)
|
||||
|
||||
goto success
|
||||
|
||||
rem Main generate function.
|
||||
rem
|
||||
rem Returns:
|
||||
rem
|
||||
rem 0 - success
|
||||
rem 1 - success with simplified tool_hugehelp.c
|
||||
rem 2 - failed to generate Makefile
|
||||
rem 3 - failed to generate tool_hugehelp.c
|
||||
rem
|
||||
:generate
|
||||
if "%OS%" == "Windows_NT" setlocal
|
||||
set BASIC_HUGEHELP=0
|
||||
|
||||
rem Create Makefile
|
||||
echo * %CD%\Makefile
|
||||
if exist Makefile.dist (
|
||||
copy /Y Makefile.dist Makefile 1>NUL 2>&1
|
||||
if errorlevel 1 (
|
||||
if "%OS%" == "Windows_NT" endlocal
|
||||
exit /B 2
|
||||
)
|
||||
)
|
||||
|
||||
rem Create tool_hugehelp.c
|
||||
echo * %CD%\src\tool_hugehelp.c
|
||||
call :genHugeHelp
|
||||
if errorlevel 2 (
|
||||
if "%OS%" == "Windows_NT" endlocal
|
||||
exit /B 3
|
||||
)
|
||||
if errorlevel 1 (
|
||||
set BASIC_HUGEHELP=1
|
||||
)
|
||||
cmd /c exit 0
|
||||
|
||||
if "%BASIC_HUGEHELP%" == "1" (
|
||||
if "%OS%" == "Windows_NT" endlocal
|
||||
exit /B 1
|
||||
)
|
||||
|
||||
if "%OS%" == "Windows_NT" endlocal
|
||||
exit /B 0
|
||||
|
||||
rem Main clean function.
|
||||
rem
|
||||
rem Returns:
|
||||
rem
|
||||
rem 0 - success
|
||||
rem 1 - failed to clean Makefile
|
||||
rem 2 - failed to clean tool_hugehelp.c
|
||||
rem
|
||||
:clean
|
||||
rem Remove Makefile
|
||||
echo * %CD%\Makefile
|
||||
if exist Makefile (
|
||||
del Makefile 2>NUL
|
||||
if exist Makefile (
|
||||
exit /B 1
|
||||
)
|
||||
)
|
||||
|
||||
rem Remove tool_hugehelp.c
|
||||
echo * %CD%\src\tool_hugehelp.c
|
||||
if exist src\tool_hugehelp.c (
|
||||
del src\tool_hugehelp.c 2>NUL
|
||||
if exist src\tool_hugehelp.c (
|
||||
exit /B 2
|
||||
)
|
||||
)
|
||||
|
||||
exit /B
|
||||
|
||||
rem Function to generate src\tool_hugehelp.c
|
||||
rem
|
||||
rem Returns:
|
||||
rem
|
||||
rem 0 - full tool_hugehelp.c generated
|
||||
rem 1 - simplified tool_hugehelp.c
|
||||
rem 2 - failure
|
||||
rem
|
||||
:genHugeHelp
|
||||
if "%OS%" == "Windows_NT" setlocal
|
||||
set LC_ALL=C
|
||||
set BASIC=1
|
||||
|
||||
if exist src\tool_hugehelp.c.cvs (
|
||||
copy /Y src\tool_hugehelp.c.cvs src\tool_hugehelp.c 1>NUL 2>&1
|
||||
) else (
|
||||
echo #include "tool_setup.h"> src\tool_hugehelp.c
|
||||
echo #include "tool_hugehelp.h">> src\tool_hugehelp.c
|
||||
echo.>> src\tool_hugehelp.c
|
||||
echo void hugehelp(void^)>> src\tool_hugehelp.c
|
||||
echo {>> src\tool_hugehelp.c
|
||||
echo #ifdef USE_MANUAL>> src\tool_hugehelp.c
|
||||
echo fputs("Built-in manual not included\n", stdout^);>> src\tool_hugehelp.c
|
||||
echo #endif>> src\tool_hugehelp.c
|
||||
echo }>> src\tool_hugehelp.c
|
||||
)
|
||||
|
||||
findstr "/C:void hugehelp(void)" src\tool_hugehelp.c 1>NUL 2>&1
|
||||
if errorlevel 1 (
|
||||
if "%OS%" == "Windows_NT" endlocal
|
||||
exit /B 2
|
||||
)
|
||||
|
||||
if "%BASIC%" == "1" (
|
||||
if "%OS%" == "Windows_NT" endlocal
|
||||
exit /B 1
|
||||
)
|
||||
|
||||
if "%OS%" == "Windows_NT" endlocal
|
||||
exit /B 0
|
||||
|
||||
rem Function to clean-up local variables under DOS, Windows 3.x and
|
||||
rem Windows 9x as setlocal isn't available until Windows NT
|
||||
rem
|
||||
:dosCleanup
|
||||
set MODE=
|
||||
set BASIC_HUGEHELP=
|
||||
set LC_ALL
|
||||
set BASIC=
|
||||
|
||||
exit /B
|
||||
|
||||
:syntax
|
||||
rem Display the help
|
||||
echo.
|
||||
echo Usage: buildconf [-clean]
|
||||
echo.
|
||||
echo -clean - Removes the files
|
||||
goto error
|
||||
|
||||
:unknown
|
||||
echo.
|
||||
echo Error: Unknown argument '%1'
|
||||
goto error
|
||||
|
||||
:norepo
|
||||
echo.
|
||||
echo Error: This batch file should only be used with a curl git repository
|
||||
goto error
|
||||
|
||||
:nogenmakefile
|
||||
echo.
|
||||
echo Error: Unable to generate Makefile
|
||||
goto error
|
||||
|
||||
:nogenhugehelp
|
||||
echo.
|
||||
echo Error: Unable to generate src\tool_hugehelp.c
|
||||
goto error
|
||||
|
||||
:nocleanmakefile
|
||||
echo.
|
||||
echo Error: Unable to clean Makefile
|
||||
goto error
|
||||
|
||||
:nocleanhugehelp
|
||||
echo.
|
||||
echo Error: Unable to clean src\tool_hugehelp.c
|
||||
goto error
|
||||
|
||||
:warning
|
||||
echo.
|
||||
echo Warning: The curl manual could not be integrated in the source. This means when
|
||||
echo you build curl the manual will not be available (curl --manual^). Integration of
|
||||
echo the manual is not required and a summary of the options will still be available
|
||||
echo (curl --help^). To integrate the manual build with configure or cmake.
|
||||
goto success
|
||||
|
||||
:error
|
||||
if "%OS%" == "Windows_NT" (
|
||||
endlocal
|
||||
) else (
|
||||
call :dosCleanup
|
||||
)
|
||||
exit /B 1
|
||||
|
||||
:success
|
||||
if "%OS%" == "Windows_NT" (
|
||||
endlocal
|
||||
) else (
|
||||
call :dosCleanup
|
||||
)
|
||||
exit /B 0
|
|
@ -0,0 +1,348 @@
|
|||
#! /bin/sh
|
||||
# Wrapper for compilers which do not understand '-c -o'.
|
||||
|
||||
scriptversion=2018-03-07.03; # UTC
|
||||
|
||||
# Copyright (C) 1999-2021 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
nl='
|
||||
'
|
||||
|
||||
# We need space, tab and new line, in precisely that order. Quoting is
|
||||
# there to prevent tools from complaining about whitespace usage.
|
||||
IFS=" "" $nl"
|
||||
|
||||
file_conv=
|
||||
|
||||
# func_file_conv build_file lazy
|
||||
# Convert a $build file to $host form and store it in $file
|
||||
# Currently only supports Windows hosts. If the determined conversion
|
||||
# type is listed in (the comma separated) LAZY, no conversion will
|
||||
# take place.
|
||||
func_file_conv ()
|
||||
{
|
||||
file=$1
|
||||
case $file in
|
||||
/ | /[!/]*) # absolute file, and not a UNC file
|
||||
if test -z "$file_conv"; then
|
||||
# lazily determine how to convert abs files
|
||||
case `uname -s` in
|
||||
MINGW*)
|
||||
file_conv=mingw
|
||||
;;
|
||||
CYGWIN* | MSYS*)
|
||||
file_conv=cygwin
|
||||
;;
|
||||
*)
|
||||
file_conv=wine
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
case $file_conv/,$2, in
|
||||
*,$file_conv,*)
|
||||
;;
|
||||
mingw/*)
|
||||
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||
;;
|
||||
cygwin/* | msys/*)
|
||||
file=`cygpath -m "$file" || echo "$file"`
|
||||
;;
|
||||
wine/*)
|
||||
file=`winepath -w "$file" || echo "$file"`
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# func_cl_dashL linkdir
|
||||
# Make cl look for libraries in LINKDIR
|
||||
func_cl_dashL ()
|
||||
{
|
||||
func_file_conv "$1"
|
||||
if test -z "$lib_path"; then
|
||||
lib_path=$file
|
||||
else
|
||||
lib_path="$lib_path;$file"
|
||||
fi
|
||||
linker_opts="$linker_opts -LIBPATH:$file"
|
||||
}
|
||||
|
||||
# func_cl_dashl library
|
||||
# Do a library search-path lookup for cl
|
||||
func_cl_dashl ()
|
||||
{
|
||||
lib=$1
|
||||
found=no
|
||||
save_IFS=$IFS
|
||||
IFS=';'
|
||||
for dir in $lib_path $LIB
|
||||
do
|
||||
IFS=$save_IFS
|
||||
if $shared && test -f "$dir/$lib.dll.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.dll.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/$lib.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/lib$lib.a"; then
|
||||
found=yes
|
||||
lib=$dir/lib$lib.a
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS=$save_IFS
|
||||
|
||||
if test "$found" != yes; then
|
||||
lib=$lib.lib
|
||||
fi
|
||||
}
|
||||
|
||||
# func_cl_wrapper cl arg...
|
||||
# Adjust compile command to suit cl
|
||||
func_cl_wrapper ()
|
||||
{
|
||||
# Assume a capable shell
|
||||
lib_path=
|
||||
shared=:
|
||||
linker_opts=
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.[oO][bB][jJ])
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fo"$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fe"$file"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-I)
|
||||
eat=1
|
||||
func_file_conv "$2" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-I*)
|
||||
func_file_conv "${1#-I}" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-l)
|
||||
eat=1
|
||||
func_cl_dashl "$2"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-l*)
|
||||
func_cl_dashl "${1#-l}"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-L)
|
||||
eat=1
|
||||
func_cl_dashL "$2"
|
||||
;;
|
||||
-L*)
|
||||
func_cl_dashL "${1#-L}"
|
||||
;;
|
||||
-static)
|
||||
shared=false
|
||||
;;
|
||||
-Wl,*)
|
||||
arg=${1#-Wl,}
|
||||
save_ifs="$IFS"; IFS=','
|
||||
for flag in $arg; do
|
||||
IFS="$save_ifs"
|
||||
linker_opts="$linker_opts $flag"
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
;;
|
||||
-Xlinker)
|
||||
eat=1
|
||||
linker_opts="$linker_opts $2"
|
||||
;;
|
||||
-*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
|
||||
func_file_conv "$1"
|
||||
set x "$@" -Tp"$file"
|
||||
shift
|
||||
;;
|
||||
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
|
||||
func_file_conv "$1" mingw
|
||||
set x "$@" "$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
if test -n "$linker_opts"; then
|
||||
linker_opts="-link$linker_opts"
|
||||
fi
|
||||
exec "$@" $linker_opts
|
||||
exit 1
|
||||
}
|
||||
|
||||
eat=
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Wrapper for compilers which do not understand '-c -o'.
|
||||
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||
arguments, and rename the output as expected.
|
||||
|
||||
If you are trying to build a whole package this is not the
|
||||
right script to run: please start by reading the file 'INSTALL'.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "compile $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
|
||||
icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
|
||||
func_cl_wrapper "$@" # Doesn't return...
|
||||
;;
|
||||
esac
|
||||
|
||||
ofile=
|
||||
cfile=
|
||||
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
# So we strip '-o arg' only if arg is an object.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.obj)
|
||||
ofile=$2
|
||||
;;
|
||||
*)
|
||||
set x "$@" -o "$2"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*.c)
|
||||
cfile=$1
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
if test -z "$ofile" || test -z "$cfile"; then
|
||||
# If no '-o' option was seen then we might have been invoked from a
|
||||
# pattern rule where we don't need one. That is ok -- this is a
|
||||
# normal compilation that the losing compiler can handle. If no
|
||||
# '.c' file was seen then we are probably linking. That is also
|
||||
# ok.
|
||||
exec "$@"
|
||||
fi
|
||||
|
||||
# Name of file we expect compiler to create.
|
||||
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
||||
|
||||
# Create the lock directory.
|
||||
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
|
||||
# that we are using for the .o file. Also, base the name on the expected
|
||||
# object file name, since that is what matters with a parallel build.
|
||||
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
||||
while true; do
|
||||
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
# FIXME: race condition here if user kills between mkdir and trap.
|
||||
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||
|
||||
# Run the compile.
|
||||
"$@"
|
||||
ret=$?
|
||||
|
||||
if test -f "$cofile"; then
|
||||
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
||||
elif test -f "${cofile}bj"; then
|
||||
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
||||
fi
|
||||
|
||||
rmdir "$lockdir"
|
||||
exit $ret
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,193 @@
|
|||
#!/bin/sh
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
prefix="/home/huey/curl-8.8.0/install"
|
||||
# Used in ${exec_prefix}/lib
|
||||
# shellcheck disable=SC2034
|
||||
exec_prefix=${prefix}
|
||||
# shellcheck disable=SC2034
|
||||
includedir=${prefix}/include
|
||||
cppflag_curl_staticlib=
|
||||
|
||||
usage()
|
||||
{
|
||||
cat <<EOF
|
||||
Usage: curl-config [OPTION]
|
||||
|
||||
Available values for OPTION include:
|
||||
|
||||
--built-shared says 'yes' if libcurl was built shared
|
||||
--ca CA bundle install path
|
||||
--cc compiler
|
||||
--cflags preprocessor and compiler flags
|
||||
--checkfor [version] check for (lib)curl of the specified version
|
||||
--configure the arguments given to configure when building curl
|
||||
--features newline separated list of enabled features
|
||||
--help display this help and exit
|
||||
--libs library linking information
|
||||
--prefix curl install prefix
|
||||
--protocols newline separated list of enabled protocols
|
||||
--ssl-backends output the SSL backends libcurl was built to support
|
||||
--static-libs static libcurl library linking information
|
||||
--version output version information
|
||||
--vernum output version as a hexadecimal number
|
||||
EOF
|
||||
|
||||
exit "$1"
|
||||
}
|
||||
|
||||
if test "$#" -eq 0; then
|
||||
usage 1
|
||||
fi
|
||||
|
||||
while test "$#" -gt 0; do
|
||||
case "$1" in
|
||||
--built-shared)
|
||||
echo 'yes'
|
||||
;;
|
||||
|
||||
--ca)
|
||||
echo ''
|
||||
;;
|
||||
|
||||
--cc)
|
||||
echo 'arm-linux-gnueabihf-gcc'
|
||||
;;
|
||||
|
||||
--prefix)
|
||||
echo "$prefix"
|
||||
;;
|
||||
|
||||
--feature|--features)
|
||||
for feature in AsynchDNS HSTS HTTPS-proxy IPv6 Largefile NTLM SSL TLS-SRP UnixSockets alt-svc threadsafe ""; do
|
||||
test -n "$feature" && echo "$feature"
|
||||
done
|
||||
;;
|
||||
|
||||
--protocols)
|
||||
# shellcheck disable=SC2043
|
||||
for protocol in DICT FILE FTP FTPS GOPHER GOPHERS HTTP HTTPS IMAP IMAPS IPFS IPNS MQTT POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP; do
|
||||
echo "$protocol"
|
||||
done
|
||||
;;
|
||||
|
||||
--version)
|
||||
echo 'libcurl 8.8.0'
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--checkfor)
|
||||
checkfor=$2
|
||||
cmajor=$(echo "$checkfor" | cut -d. -f1)
|
||||
cminor=$(echo "$checkfor" | cut -d. -f2)
|
||||
# when extracting the patch part we strip off everything after a
|
||||
# dash as that's used for things like version 1.2.3-pre1
|
||||
cpatch=$(echo "$checkfor" | cut -d. -f3 | cut -d- -f1)
|
||||
|
||||
vmajor=$(echo '8.8.0' | cut -d. -f1)
|
||||
vminor=$(echo '8.8.0' | cut -d. -f2)
|
||||
# when extracting the patch part we strip off everything after a
|
||||
# dash as that's used for things like version 1.2.3-pre1
|
||||
vpatch=$(echo '8.8.0' | cut -d. -f3 | cut -d- -f1)
|
||||
|
||||
if test "$vmajor" -gt "$cmajor"; then
|
||||
exit 0
|
||||
fi
|
||||
if test "$vmajor" -eq "$cmajor"; then
|
||||
if test "$vminor" -gt "$cminor"; then
|
||||
exit 0
|
||||
fi
|
||||
if test "$vminor" -eq "$cminor"; then
|
||||
if test "$cpatch" -le "$vpatch"; then
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "requested version $checkfor is newer than existing 8.8.0"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
--vernum)
|
||||
echo '080800'
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--help)
|
||||
usage 0
|
||||
;;
|
||||
|
||||
--cflags)
|
||||
if test "X$cppflag_curl_staticlib" = "X-DCURL_STATICLIB"; then
|
||||
CPPFLAG_CURL_STATICLIB="-DCURL_STATICLIB "
|
||||
else
|
||||
CPPFLAG_CURL_STATICLIB=""
|
||||
fi
|
||||
if test "X${prefix}/include" = "X/usr/include"; then
|
||||
echo "${CPPFLAG_CURL_STATICLIB}"
|
||||
else
|
||||
echo "${CPPFLAG_CURL_STATICLIB}-I${prefix}/include"
|
||||
fi
|
||||
;;
|
||||
|
||||
--libs)
|
||||
if test "X${exec_prefix}/lib" != "X/usr/lib" -a "X${exec_prefix}/lib" != "X/usr/lib64"; then
|
||||
CURLLIBDIR="-L${exec_prefix}/lib "
|
||||
else
|
||||
CURLLIBDIR=""
|
||||
fi
|
||||
if test "Xyes" = "Xno"; then
|
||||
echo "${CURLLIBDIR}-lcurl -lssl -lcrypto -lssl -lcrypto -pthread"
|
||||
else
|
||||
echo "${CURLLIBDIR}-lcurl"
|
||||
fi
|
||||
;;
|
||||
|
||||
--ssl-backends)
|
||||
echo 'OpenSSL v3+'
|
||||
;;
|
||||
|
||||
--static-libs)
|
||||
if test "Xyes" != "Xno" ; then
|
||||
echo "${exec_prefix}/lib/libcurl.a" -L/home/huey/openssl/install/lib -lssl -lcrypto -lssl -lcrypto -pthread
|
||||
else
|
||||
echo 'curl was built with static libraries disabled' >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
--configure)
|
||||
echo " '--host=arm-linux-gnueabihf' '--prefix=/home/huey/curl-8.8.0/install' '--with-ssl=/home/huey/openssl/install' 'host_alias=arm-linux-gnueabihf'"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "unknown option: $1"
|
||||
usage 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,193 @@
|
|||
#!/bin/sh
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
prefix="@prefix@"
|
||||
# Used in @libdir@
|
||||
# shellcheck disable=SC2034
|
||||
exec_prefix=@exec_prefix@
|
||||
# shellcheck disable=SC2034
|
||||
includedir=@includedir@
|
||||
cppflag_curl_staticlib=@CPPFLAG_CURL_STATICLIB@
|
||||
|
||||
usage()
|
||||
{
|
||||
cat <<EOF
|
||||
Usage: curl-config [OPTION]
|
||||
|
||||
Available values for OPTION include:
|
||||
|
||||
--built-shared says 'yes' if libcurl was built shared
|
||||
--ca CA bundle install path
|
||||
--cc compiler
|
||||
--cflags preprocessor and compiler flags
|
||||
--checkfor [version] check for (lib)curl of the specified version
|
||||
--configure the arguments given to configure when building curl
|
||||
--features newline separated list of enabled features
|
||||
--help display this help and exit
|
||||
--libs library linking information
|
||||
--prefix curl install prefix
|
||||
--protocols newline separated list of enabled protocols
|
||||
--ssl-backends output the SSL backends libcurl was built to support
|
||||
--static-libs static libcurl library linking information
|
||||
--version output version information
|
||||
--vernum output version as a hexadecimal number
|
||||
EOF
|
||||
|
||||
exit "$1"
|
||||
}
|
||||
|
||||
if test "$#" -eq 0; then
|
||||
usage 1
|
||||
fi
|
||||
|
||||
while test "$#" -gt 0; do
|
||||
case "$1" in
|
||||
--built-shared)
|
||||
echo '@ENABLE_SHARED@'
|
||||
;;
|
||||
|
||||
--ca)
|
||||
echo '@CURL_CA_BUNDLE@'
|
||||
;;
|
||||
|
||||
--cc)
|
||||
echo '@CC@'
|
||||
;;
|
||||
|
||||
--prefix)
|
||||
echo "$prefix"
|
||||
;;
|
||||
|
||||
--feature|--features)
|
||||
for feature in @SUPPORT_FEATURES@ ""; do
|
||||
test -n "$feature" && echo "$feature"
|
||||
done
|
||||
;;
|
||||
|
||||
--protocols)
|
||||
# shellcheck disable=SC2043
|
||||
for protocol in @SUPPORT_PROTOCOLS@; do
|
||||
echo "$protocol"
|
||||
done
|
||||
;;
|
||||
|
||||
--version)
|
||||
echo 'libcurl @CURLVERSION@'
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--checkfor)
|
||||
checkfor=$2
|
||||
cmajor=$(echo "$checkfor" | cut -d. -f1)
|
||||
cminor=$(echo "$checkfor" | cut -d. -f2)
|
||||
# when extracting the patch part we strip off everything after a
|
||||
# dash as that's used for things like version 1.2.3-pre1
|
||||
cpatch=$(echo "$checkfor" | cut -d. -f3 | cut -d- -f1)
|
||||
|
||||
vmajor=$(echo '@CURLVERSION@' | cut -d. -f1)
|
||||
vminor=$(echo '@CURLVERSION@' | cut -d. -f2)
|
||||
# when extracting the patch part we strip off everything after a
|
||||
# dash as that's used for things like version 1.2.3-pre1
|
||||
vpatch=$(echo '@CURLVERSION@' | cut -d. -f3 | cut -d- -f1)
|
||||
|
||||
if test "$vmajor" -gt "$cmajor"; then
|
||||
exit 0
|
||||
fi
|
||||
if test "$vmajor" -eq "$cmajor"; then
|
||||
if test "$vminor" -gt "$cminor"; then
|
||||
exit 0
|
||||
fi
|
||||
if test "$vminor" -eq "$cminor"; then
|
||||
if test "$cpatch" -le "$vpatch"; then
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "requested version $checkfor is newer than existing @CURLVERSION@"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
--vernum)
|
||||
echo '@VERSIONNUM@'
|
||||
exit 0
|
||||
;;
|
||||
|
||||
--help)
|
||||
usage 0
|
||||
;;
|
||||
|
||||
--cflags)
|
||||
if test "X$cppflag_curl_staticlib" = "X-DCURL_STATICLIB"; then
|
||||
CPPFLAG_CURL_STATICLIB="-DCURL_STATICLIB "
|
||||
else
|
||||
CPPFLAG_CURL_STATICLIB=""
|
||||
fi
|
||||
if test "X@includedir@" = "X/usr/include"; then
|
||||
echo "${CPPFLAG_CURL_STATICLIB}"
|
||||
else
|
||||
echo "${CPPFLAG_CURL_STATICLIB}-I@includedir@"
|
||||
fi
|
||||
;;
|
||||
|
||||
--libs)
|
||||
if test "X@libdir@" != "X/usr/lib" -a "X@libdir@" != "X/usr/lib64"; then
|
||||
CURLLIBDIR="-L@libdir@ "
|
||||
else
|
||||
CURLLIBDIR=""
|
||||
fi
|
||||
if test "X@ENABLE_SHARED@" = "Xno"; then
|
||||
echo "${CURLLIBDIR}-lcurl @LIBCURL_LIBS@"
|
||||
else
|
||||
echo "${CURLLIBDIR}-lcurl"
|
||||
fi
|
||||
;;
|
||||
|
||||
--ssl-backends)
|
||||
echo '@SSL_BACKENDS@'
|
||||
;;
|
||||
|
||||
--static-libs)
|
||||
if test "X@ENABLE_STATIC@" != "Xno" ; then
|
||||
echo "@libdir@/libcurl.@libext@" @LDFLAGS@ @LIBCURL_LIBS@
|
||||
else
|
||||
echo 'curl was built with static libraries disabled' >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
--configure)
|
||||
echo @CONFIGURE_OPTIONS@
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "unknown option: $1"
|
||||
usage 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,791 @@
|
|||
#! /bin/sh
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
|
||||
scriptversion=2018-03-07.03; # UTC
|
||||
|
||||
# Copyright (C) 1999-2021 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||
as side-effects.
|
||||
|
||||
Environment variables:
|
||||
depmode Dependency tracking mode.
|
||||
source Source file read by 'PROGRAMS ARGS'.
|
||||
object Object file output by 'PROGRAMS ARGS'.
|
||||
DEPDIR directory where to store dependencies.
|
||||
depfile Dependency file to output.
|
||||
tmpdepfile Temporary file to use when outputting dependencies.
|
||||
libtool Whether libtool is used (yes/no).
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "depcomp $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
esac
|
||||
|
||||
# Get the directory component of the given path, and save it in the
|
||||
# global variables '$dir'. Note that this directory component will
|
||||
# be either empty or ending with a '/' character. This is deliberate.
|
||||
set_dir_from ()
|
||||
{
|
||||
case $1 in
|
||||
*/*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
|
||||
*) dir=;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Get the suffix-stripped basename of the given path, and save it the
|
||||
# global variable '$base'.
|
||||
set_base_from ()
|
||||
{
|
||||
base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
|
||||
}
|
||||
|
||||
# If no dependency file was actually created by the compiler invocation,
|
||||
# we still have to create a dummy depfile, to avoid errors with the
|
||||
# Makefile "include basename.Plo" scheme.
|
||||
make_dummy_depfile ()
|
||||
{
|
||||
echo "#dummy" > "$depfile"
|
||||
}
|
||||
|
||||
# Factor out some common post-processing of the generated depfile.
|
||||
# Requires the auxiliary global variable '$tmpdepfile' to be set.
|
||||
aix_post_process_depfile ()
|
||||
{
|
||||
# If the compiler actually managed to produce a dependency file,
|
||||
# post-process it.
|
||||
if test -f "$tmpdepfile"; then
|
||||
# Each line is of the form 'foo.o: dependency.h'.
|
||||
# Do two passes, one to just change these to
|
||||
# $object: dependency.h
|
||||
# and one to simply output
|
||||
# dependency.h:
|
||||
# which is needed to avoid the deleted-header problem.
|
||||
{ sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
|
||||
sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
|
||||
} > "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
else
|
||||
make_dummy_depfile
|
||||
fi
|
||||
}
|
||||
|
||||
# A tabulation character.
|
||||
tab=' '
|
||||
# A newline character.
|
||||
nl='
|
||||
'
|
||||
# Character ranges might be problematic outside the C locale.
|
||||
# These definitions help.
|
||||
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||
lower=abcdefghijklmnopqrstuvwxyz
|
||||
digits=0123456789
|
||||
alpha=${upper}${lower}
|
||||
|
||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||
depfile=${depfile-`echo "$object" |
|
||||
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||
|
||||
rm -f "$tmpdepfile"
|
||||
|
||||
# Avoid interferences from the environment.
|
||||
gccflag= dashmflag=
|
||||
|
||||
# Some modes work just like other modes, but use different flags. We
|
||||
# parameterize here, but still list the modes in the big case below,
|
||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||
# here, because this file can only contain one case statement.
|
||||
if test "$depmode" = hp; then
|
||||
# HP compiler uses -M and no extra arg.
|
||||
gccflag=-M
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
if test "$depmode" = dashXmstdout; then
|
||||
# This is just like dashmstdout with a different argument.
|
||||
dashmflag=-xM
|
||||
depmode=dashmstdout
|
||||
fi
|
||||
|
||||
cygpath_u="cygpath -u -f -"
|
||||
if test "$depmode" = msvcmsys; then
|
||||
# This is just like msvisualcpp but w/o cygpath translation.
|
||||
# Just convert the backslash-escaped backslashes to single forward
|
||||
# slashes to satisfy depend.m4
|
||||
cygpath_u='sed s,\\\\,/,g'
|
||||
depmode=msvisualcpp
|
||||
fi
|
||||
|
||||
if test "$depmode" = msvc7msys; then
|
||||
# This is just like msvc7 but w/o cygpath translation.
|
||||
# Just convert the backslash-escaped backslashes to single forward
|
||||
# slashes to satisfy depend.m4
|
||||
cygpath_u='sed s,\\\\,/,g'
|
||||
depmode=msvc7
|
||||
fi
|
||||
|
||||
if test "$depmode" = xlc; then
|
||||
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
|
||||
gccflag=-qmakedep=gcc,-MF
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
case "$depmode" in
|
||||
gcc3)
|
||||
## gcc 3 implements dependency tracking that does exactly what
|
||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
||||
## the command line argument order; so add the flags where they
|
||||
## appear in depend2.am. Note that the slowdown incurred here
|
||||
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
||||
*) set fnord "$@" "$arg" ;;
|
||||
esac
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
done
|
||||
"$@"
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
mv "$tmpdepfile" "$depfile"
|
||||
;;
|
||||
|
||||
gcc)
|
||||
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
|
||||
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
|
||||
## (see the conditional assignment to $gccflag above).
|
||||
## There are various ways to get dependency output from gcc. Here's
|
||||
## why we pick this rather obscure method:
|
||||
## - Don't want to use -MD because we'd like the dependencies to end
|
||||
## up in a subdir. Having to rename by hand is ugly.
|
||||
## (We might end up doing this anyway to support other compilers.)
|
||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||
## -MM, not -M (despite what the docs say). Also, it might not be
|
||||
## supported by the other compilers which use the 'gcc' depmode.
|
||||
## - Using -M directly means running the compiler twice (even worse
|
||||
## than renaming).
|
||||
if test -z "$gccflag"; then
|
||||
gccflag=-MD,
|
||||
fi
|
||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
# The second -e expression handles DOS-style file names with drive
|
||||
# letters.
|
||||
sed -e 's/^[^:]*: / /' \
|
||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||
## This next piece of magic avoids the "deleted header file" problem.
|
||||
## The problem is that when a header file which appears in a .P file
|
||||
## is deleted, the dependency causes make to die (because there is
|
||||
## typically no way to rebuild the header). We avoid this by adding
|
||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||
## this for us directly.
|
||||
## Some versions of gcc put a space before the ':'. On the theory
|
||||
## that the space means something, we add a space to the output as
|
||||
## well. hp depmode also adds that space, but also prefixes the VPATH
|
||||
## to the object. Take care to not repeat it in the output.
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
sgi)
|
||||
if test "$libtool" = yes; then
|
||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||
else
|
||||
"$@" -MDupdate "$tmpdepfile"
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
|
||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||
echo "$object : \\" > "$depfile"
|
||||
# Clip off the initial element (the dependent). Don't try to be
|
||||
# clever and replace this with sed code, as IRIX sed won't handle
|
||||
# lines with more than a fixed number of characters (4096 in
|
||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||
# the IRIX cc adds comments like '#:fec' to the end of the
|
||||
# dependency line.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
|
||||
| tr "$nl" ' ' >> "$depfile"
|
||||
echo >> "$depfile"
|
||||
# The second pass generates a dummy entry for each header file.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||
>> "$depfile"
|
||||
else
|
||||
make_dummy_depfile
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
xlc)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
aix)
|
||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||
# in a .u file. In older versions, this file always lives in the
|
||||
# current directory. Also, the AIX compiler puts '$object:' at the
|
||||
# start of each line; $object doesn't have directory information.
|
||||
# Version 6 uses the directory in both cases.
|
||||
set_dir_from "$object"
|
||||
set_base_from "$object"
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$base.u
|
||||
tmpdepfile3=$dir.libs/$base.u
|
||||
"$@" -Wc,-M
|
||||
else
|
||||
tmpdepfile1=$dir$base.u
|
||||
tmpdepfile2=$dir$base.u
|
||||
tmpdepfile3=$dir$base.u
|
||||
"$@" -M
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
aix_post_process_depfile
|
||||
;;
|
||||
|
||||
tcc)
|
||||
# tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
|
||||
# FIXME: That version still under development at the moment of writing.
|
||||
# Make that this statement remains true also for stable, released
|
||||
# versions.
|
||||
# It will wrap lines (doesn't matter whether long or short) with a
|
||||
# trailing '\', as in:
|
||||
#
|
||||
# foo.o : \
|
||||
# foo.c \
|
||||
# foo.h \
|
||||
#
|
||||
# It will put a trailing '\' even on the last line, and will use leading
|
||||
# spaces rather than leading tabs (at least since its commit 0394caf7
|
||||
# "Emit spaces for -MD").
|
||||
"$@" -MD -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
|
||||
# We have to change lines of the first kind to '$object: \'.
|
||||
sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
|
||||
# And for each line of the second kind, we have to emit a 'dep.h:'
|
||||
# dummy dependency, to avoid the deleted-header problem.
|
||||
sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
## The order of this option in the case statement is important, since the
|
||||
## shell code in configure will try each of these formats in the order
|
||||
## listed in this file. A plain '-MD' option would be understood by many
|
||||
## compilers, so we must ensure this comes after the gcc and icc options.
|
||||
pgcc)
|
||||
# Portland's C compiler understands '-MD'.
|
||||
# Will always output deps to 'file.d' where file is the root name of the
|
||||
# source file under compilation, even if file resides in a subdirectory.
|
||||
# The object file name does not affect the name of the '.d' file.
|
||||
# pgcc 10.2 will output
|
||||
# foo.o: sub/foo.c sub/foo.h
|
||||
# and will wrap long lines using '\' :
|
||||
# foo.o: sub/foo.c ... \
|
||||
# sub/foo.h ... \
|
||||
# ...
|
||||
set_dir_from "$object"
|
||||
# Use the source, not the object, to determine the base name, since
|
||||
# that's sadly what pgcc will do too.
|
||||
set_base_from "$source"
|
||||
tmpdepfile=$base.d
|
||||
|
||||
# For projects that build the same source file twice into different object
|
||||
# files, the pgcc approach of using the *source* file root name can cause
|
||||
# problems in parallel builds. Use a locking strategy to avoid stomping on
|
||||
# the same $tmpdepfile.
|
||||
lockdir=$base.d-lock
|
||||
trap "
|
||||
echo '$0: caught signal, cleaning up...' >&2
|
||||
rmdir '$lockdir'
|
||||
exit 1
|
||||
" 1 2 13 15
|
||||
numtries=100
|
||||
i=$numtries
|
||||
while test $i -gt 0; do
|
||||
# mkdir is a portable test-and-set.
|
||||
if mkdir "$lockdir" 2>/dev/null; then
|
||||
# This process acquired the lock.
|
||||
"$@" -MD
|
||||
stat=$?
|
||||
# Release the lock.
|
||||
rmdir "$lockdir"
|
||||
break
|
||||
else
|
||||
# If the lock is being held by a different process, wait
|
||||
# until the winning process is done or we timeout.
|
||||
while test -d "$lockdir" && test $i -gt 0; do
|
||||
sleep 1
|
||||
i=`expr $i - 1`
|
||||
done
|
||||
fi
|
||||
i=`expr $i - 1`
|
||||
done
|
||||
trap - 1 2 13 15
|
||||
if test $i -le 0; then
|
||||
echo "$0: failed to acquire lock after $numtries attempts" >&2
|
||||
echo "$0: check lockdir '$lockdir'" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each line is of the form `foo.o: dependent.h',
|
||||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp2)
|
||||
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
||||
# compilers, which have integrated preprocessors. The correct option
|
||||
# to use with these is +Maked; it writes dependencies to a file named
|
||||
# 'foo.d', which lands next to the object file, wherever that
|
||||
# happens to be.
|
||||
# Much of this is similar to the tru64 case; see comments there.
|
||||
set_dir_from "$object"
|
||||
set_base_from "$object"
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir.libs/$base.d
|
||||
"$@" -Wc,+Maked
|
||||
else
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
"$@" +Maked
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||
# Add 'dependent.h:' lines.
|
||||
sed -ne '2,${
|
||||
s/^ *//
|
||||
s/ \\*$//
|
||||
s/$/:/
|
||||
p
|
||||
}' "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
make_dummy_depfile
|
||||
fi
|
||||
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||
# effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
|
||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||
# dependencies in 'foo.d' instead, so we check for that too.
|
||||
# Subdirectories are respected.
|
||||
set_dir_from "$object"
|
||||
set_base_from "$object"
|
||||
|
||||
if test "$libtool" = yes; then
|
||||
# Libtool generates 2 separate objects for the 2 libraries. These
|
||||
# two compilations output dependencies in $dir.libs/$base.o.d and
|
||||
# in $dir$base.o.d. We have to check for both files, because
|
||||
# one of the two compilations can be disabled. We should prefer
|
||||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||
# the former would cause a distcleancheck panic.
|
||||
tmpdepfile1=$dir$base.o.d # libtool 1.5
|
||||
tmpdepfile2=$dir.libs/$base.o.d # Likewise.
|
||||
tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||
"$@" -Wc,-MD
|
||||
else
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
tmpdepfile3=$dir$base.d
|
||||
"$@" -MD
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
# Same post-processing that is required for AIX mode.
|
||||
aix_post_process_depfile
|
||||
;;
|
||||
|
||||
msvc7)
|
||||
if test "$libtool" = yes; then
|
||||
showIncludes=-Wc,-showIncludes
|
||||
else
|
||||
showIncludes=-showIncludes
|
||||
fi
|
||||
"$@" $showIncludes > "$tmpdepfile"
|
||||
stat=$?
|
||||
grep -v '^Note: including file: ' "$tmpdepfile"
|
||||
if test $stat -ne 0; then
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
# The first sed program below extracts the file names and escapes
|
||||
# backslashes for cygpath. The second sed program outputs the file
|
||||
# name when reading, but also accumulates all include files in the
|
||||
# hold buffer in order to output them again at the end. This only
|
||||
# works with sed implementations that can handle large buffers.
|
||||
sed < "$tmpdepfile" -n '
|
||||
/^Note: including file: *\(.*\)/ {
|
||||
s//\1/
|
||||
s/\\/\\\\/g
|
||||
p
|
||||
}' | $cygpath_u | sort -u | sed -n '
|
||||
s/ /\\ /g
|
||||
s/\(.*\)/'"$tab"'\1 \\/p
|
||||
s/.\(.*\) \\/\1:/
|
||||
H
|
||||
$ {
|
||||
s/.*/'"$tab"'/
|
||||
G
|
||||
p
|
||||
}' >> "$depfile"
|
||||
echo >> "$depfile" # make sure the fragment doesn't end with a backslash
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvc7msys)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
#nosideeffect)
|
||||
# This comment above is used by automake to tell side-effect
|
||||
# dependency tracking mechanisms from slower ones.
|
||||
|
||||
dashmstdout)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove '-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
# Require at least two characters before searching for ':'
|
||||
# in the target name. This is to cope with DOS-style filenames:
|
||||
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
|
||||
"$@" $dashmflag |
|
||||
sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this sed invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
tr ' ' "$nl" < "$tmpdepfile" \
|
||||
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
dashXmstdout)
|
||||
# This case only exists to satisfy depend.m4. It is never actually
|
||||
# run, as this mode is specially recognized in the preamble.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
makedepend)
|
||||
"$@" || exit $?
|
||||
# Remove any Libtool call
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
# X makedepend
|
||||
shift
|
||||
cleared=no eat=no
|
||||
for arg
|
||||
do
|
||||
case $cleared in
|
||||
no)
|
||||
set ""; shift
|
||||
cleared=yes ;;
|
||||
esac
|
||||
if test $eat = yes; then
|
||||
eat=no
|
||||
continue
|
||||
fi
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
# Strip any option that makedepend may not understand. Remove
|
||||
# the object too, otherwise makedepend will parse it as a source file.
|
||||
-arch)
|
||||
eat=yes ;;
|
||||
-*|$object)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
esac
|
||||
done
|
||||
obj_suffix=`echo "$object" | sed 's/^.*\././'`
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
rm -f "$depfile"
|
||||
# makedepend may prepend the VPATH from the source file name to the object.
|
||||
# No need to regex-escape $object, excess matching of '.' is harmless.
|
||||
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process the last invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed '1,2d' "$tmpdepfile" \
|
||||
| tr ' ' "$nl" \
|
||||
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
|
||||
| sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||
;;
|
||||
|
||||
cpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove '-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
"$@" -E \
|
||||
| sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||
| sed '$ s: \\$::' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
cat < "$tmpdepfile" >> "$depfile"
|
||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvisualcpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test "X$1" != 'X--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||
set fnord "$@"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
"$@" -E 2>/dev/null |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
|
||||
echo "$tab" >> "$depfile"
|
||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvcmsys)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
none)
|
||||
exec "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown depmode $depmode" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
|
@ -0,0 +1,50 @@
|
|||
<!--
|
||||
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
|
||||
SPDX-License-Identifier: curl
|
||||
-->
|
||||
|
||||
# Alt-Svc
|
||||
|
||||
curl features support for the Alt-Svc: HTTP header.
|
||||
|
||||
## Enable Alt-Svc in build
|
||||
|
||||
`./configure --enable-alt-svc`
|
||||
|
||||
(enabled by default since 7.73.0)
|
||||
|
||||
## Standard
|
||||
|
||||
[RFC 7838](https://datatracker.ietf.org/doc/html/rfc7838)
|
||||
|
||||
# Alt-Svc cache file format
|
||||
|
||||
This is a text based file with one line per entry and each line consists of nine
|
||||
space separated fields.
|
||||
|
||||
## Example
|
||||
|
||||
h2 quic.tech 8443 h3-22 quic.tech 8443 "20190808 06:18:37" 0 0
|
||||
|
||||
## Fields
|
||||
|
||||
1. The ALPN id for the source origin
|
||||
2. The hostname for the source origin
|
||||
3. The port number for the source origin
|
||||
4. The ALPN id for the destination host
|
||||
5. The hostname for the destination host
|
||||
6. The port number for the destination host
|
||||
7. The expiration date and time of this entry within double quotes. The date format is "YYYYMMDD HH:MM:SS" and the time zone is GMT.
|
||||
8. Boolean (1 or 0) if "persist" was set for this entry
|
||||
9. Integer priority value (not currently used)
|
||||
|
||||
If the hostname is an IPv6 numerical address, it is stored with brackets such
|
||||
as `[::1]`.
|
||||
|
||||
# TODO
|
||||
|
||||
- handle multiple response headers, when one of them says `clear` (should
|
||||
override them all)
|
||||
- using `Age:` value for caching age as per spec
|
||||
- `CURLALTSVC_IMMEDIATELY` support
|
|
@ -0,0 +1,146 @@
|
|||
<!--
|
||||
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
|
||||
SPDX-License-Identifier: curl
|
||||
-->
|
||||
|
||||
libcurl bindings
|
||||
================
|
||||
|
||||
Creative people have written bindings or interfaces for various environments
|
||||
and programming languages. Using one of these allows you to take advantage of
|
||||
curl powers from within your favourite language or system.
|
||||
|
||||
This is a list of all known interfaces as of this writing.
|
||||
|
||||
The bindings listed below are not part of the curl/libcurl distribution
|
||||
archives, but must be downloaded and installed separately.
|
||||
|
||||
<!-- markdown-link-check-disable -->
|
||||
|
||||
[Ada95](https://web.archive.org/web/20070403105909/www.almroth.com/adacurl/index.html) Written by Andreas Almroth
|
||||
|
||||
[Basic](https://scriptbasic.com/) ScriptBasic bindings written by Peter Verhas
|
||||
|
||||
C++: [curlpp](https://github.com/jpbarrette/curlpp/) Written by Jean-Philippe Barrette-LaPierre,
|
||||
[curlcpp](https://github.com/JosephP91/curlcpp) by Giuseppe Persico and [C++
|
||||
Requests](https://github.com/libcpr/cpr) by Huu Nguyen
|
||||
|
||||
[Ch](https://chcurl.sourceforge.net/) Written by Stephen Nestinger and Jonathan Rogado
|
||||
|
||||
Cocoa: [BBHTTP](https://github.com/biasedbit/BBHTTP) written by Bruno de Carvalho
|
||||
[curlhandle](https://github.com/karelia/curlhandle) Written by Dan Wood
|
||||
|
||||
Clojure: [clj-curl](https://github.com/lsevero/clj-curl) by Lucas Severo
|
||||
|
||||
[D](https://dlang.org/library/std/net/curl.html) Written by Kenneth Bogert
|
||||
|
||||
[Delphi](https://github.com/Mercury13/curl4delphi) Written by Mikhail Merkuryev
|
||||
|
||||
[Dylan](https://dylanlibs.sourceforge.net/) Written by Chris Double
|
||||
|
||||
[Eiffel](https://iron.eiffel.com/repository/20.11/package/ABEF6975-37AC-45FD-9C67-52D10BA0669B) Written by Eiffel Software
|
||||
|
||||
[Euphoria](https://web.archive.org/web/20050204080544/rays-web.com/eulibcurl.htm) Written by Ray Smith
|
||||
|
||||
[Falcon](http://www.falconpl.org/project_docs/curl/)
|
||||
|
||||
[Ferite](https://web.archive.org/web/20150102192018/ferite.org/) Written by Paul Querna
|
||||
|
||||
[Fortran](https://github.com/interkosmos/fortran-curl) Written by Philipp Engel
|
||||
|
||||
[Gambas](https://gambas.sourceforge.net/)
|
||||
|
||||
[glib/GTK+](https://web.archive.org/web/20100526203452/atterer.net/glibcurl) Written by Richard Atterer
|
||||
|
||||
Go: [go-curl](https://github.com/andelf/go-curl) by ShuYu Wang
|
||||
|
||||
[Guile](https://github.com/spk121/guile-curl) Written by Michael L. Gran
|
||||
|
||||
[Harbour](https://github.com/vszakats/hb/tree/main/contrib/hbcurl) Written by Viktor Szakats
|
||||
|
||||
[Haskell](https://hackage.haskell.org/package/curl) Written by Galois, Inc
|
||||
|
||||
[Hollywood](https://www.hollywood-mal.com/download.html) hURL by Andreas Falkenhahn
|
||||
|
||||
[Java](https://github.com/pjlegato/curl-java)
|
||||
|
||||
[Julia](https://github.com/JuliaWeb/LibCURL.jl) Written by Amit Murthy
|
||||
|
||||
[Kapito](https://github.com/puzza007/katipo) is an Erlang HTTP library around libcurl.
|
||||
|
||||
[Lisp](https://common-lisp.net/project/cl-curl/) Written by Liam Healy
|
||||
|
||||
Lua: [luacurl](https://web.archive.org/web/20201205052437/luacurl.luaforge.net/) by Alexander Marinov, [Lua-cURL](https://github.com/Lua-cURL) by Jürgen Hötzel
|
||||
|
||||
[Mono](https://web.archive.org/web/20070606064500/https://forge.novell.com/modules/xfmod/project/?libcurl-mono) Written by Jeffrey Phillips
|
||||
|
||||
[.NET](https://sourceforge.net/projects/libcurl-net/) libcurl-net by Jeffrey Phillips
|
||||
|
||||
[Nim](https://nimble.directory/pkg/libcurl) wrapper for libcurl
|
||||
|
||||
[node.js](https://github.com/JCMais/node-libcurl) node-libcurl by Jonathan Cardoso Machado
|
||||
|
||||
[Object-Pascal](https://web.archive.org/web/20020610214926/www.tekool.com/opcurl) Free Pascal, Delphi and Kylix binding written by Christophe Espern.
|
||||
|
||||
[OCaml](https://opam.ocaml.org/packages/ocurl/) Written by Lars Nilsson and ygrek
|
||||
|
||||
[Pascal](https://web.archive.org/web/20030804091414/houston.quik.com/jkp/curlpas/) Free Pascal, Delphi and Kylix binding written by Jeffrey Pohlmeyer.
|
||||
|
||||
Perl: [WWW::Curl](https://github.com/szbalint/WWW--Curl) Maintained by Cris
|
||||
Bailiff and Bálint Szilakszi,
|
||||
[perl6-net-curl](https://github.com/azawawi/perl6-net-curl) by Ahmad M. Zawawi
|
||||
[NET::Curl](https://metacpan.org/pod/Net::Curl) by Przemyslaw Iskra
|
||||
|
||||
[PHP](https://php.net/curl) Originally written by Sterling Hughes
|
||||
|
||||
[PostgreSQL](https://github.com/pramsey/pgsql-http) - HTTP client for PostgreSQL
|
||||
|
||||
[PostgreSQL](https://github.com/RekGRpth/pg_curl) - cURL client for PostgreSQL
|
||||
|
||||
[PureBasic](https://www.purebasic.com/documentation/http/index.html) uses libcurl in its "native" HTTP subsystem
|
||||
|
||||
[Python](http://pycurl.io/) PycURL by Kjetil Jacobsen
|
||||
|
||||
[Python](https://pypi.org/project/pymcurl/) mcurl by Ganesh Viswanathan
|
||||
|
||||
[Q](https://q-lang.sourceforge.net/) The libcurl module is part of the default install
|
||||
|
||||
[R](https://cran.r-project.org/package=curl)
|
||||
|
||||
[Rexx](https://rexxcurl.sourceforge.net/) Written Mark Hessling
|
||||
|
||||
[Ring](https://ring-lang.sourceforge.io/doc1.3/libcurl.html) RingLibCurl by Mahmoud Fayed
|
||||
|
||||
RPG, support for ILE/RPG on OS/400 is included in source distribution
|
||||
|
||||
Ruby: [curb](https://github.com/taf2/curb) written by Ross Bamford,
|
||||
[ruby-curl-multi](https://github.com/kball/curl_multi.rb) by Kristjan Petursson and Keith Rarick
|
||||
|
||||
[Rust](https://github.com/alexcrichton/curl-rust) curl-rust - by Carl Lerche
|
||||
|
||||
[Scheme](https://www.metapaper.net/lisovsky/web/curl/) Bigloo binding by Kirill Lisovsky
|
||||
|
||||
[Scilab](https://help.scilab.org/docs/current/fr_FR/getURL.html) binding by Sylvestre Ledru
|
||||
|
||||
[S-Lang](https://www.jedsoft.org/slang/modules/curl.html) by John E Davis
|
||||
|
||||
[Smalltalk](https://www.squeaksource.com/CurlPlugin/) Written by Danil Osipchuk
|
||||
|
||||
[SP-Forth](https://sourceforge.net/p/spf/spf/ci/master/tree/devel/~ac/lib/lin/curl/) Written by Andrey Cherezov
|
||||
|
||||
[SPL](https://web.archive.org/web/20210203022158/www.clifford.at/spl/spldoc/curl.html) Written by Clifford Wolf
|
||||
|
||||
[Tcl](https://web.archive.org/web/20160826011806/mirror.yellow5.com/tclcurl/) Tclcurl by Andrés García
|
||||
|
||||
[Vibe](https://github.com/ttytm/vibe) HTTP requests through libcurl in V
|
||||
|
||||
[Visual Basic](https://sourceforge.net/projects/libcurl-vb/) libcurl-vb by Jeffrey Phillips
|
||||
|
||||
[Visual Foxpro](https://web.archive.org/web/20130730181523/www.ctl32.com.ar/libcurl.asp) by Carlos Alloatti
|
||||
|
||||
[wxWidgets](https://wxcode.sourceforge.net/components/wxcurl/) Written by Casey O'Donnell
|
||||
|
||||
[XBLite](https://web.archive.org/web/20060426150418/perso.wanadoo.fr/xblite/libraries.html) Written by David Szafranski
|
||||
|
||||
[Xojo](https://github.com/charonn0/RB-libcURL) Written by Andrew Lambert
|
|
@ -0,0 +1,177 @@
|
|||
<!--
|
||||
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
|
||||
SPDX-License-Identifier: curl
|
||||
-->
|
||||
|
||||
# bufq
|
||||
|
||||
This is an internal module for managing I/O buffers. A `bufq` can be written
|
||||
to and read from. It manages read and write positions and has a maximum size.
|
||||
|
||||
## read/write
|
||||
|
||||
Its basic read/write functions have a similar signature and return code handling
|
||||
as many internal Curl read and write ones.
|
||||
|
||||
|
||||
```
|
||||
ssize_t Curl_bufq_write(struct bufq *q, const unsigned char *buf, size_t len, CURLcode *err);
|
||||
|
||||
- returns the length written into `q` or -1 on error.
|
||||
- writing to a full `q` returns -1 and set *err to CURLE_AGAIN
|
||||
|
||||
ssize_t Curl_bufq_read(struct bufq *q, unsigned char *buf, size_t len, CURLcode *err);
|
||||
|
||||
- returns the length read from `q` or -1 on error.
|
||||
- reading from an empty `q` returns -1 and set *err to CURLE_AGAIN
|
||||
|
||||
```
|
||||
|
||||
To pass data into a `bufq` without an extra copy, read callbacks can be used.
|
||||
|
||||
```
|
||||
typedef ssize_t Curl_bufq_reader(void *reader_ctx, unsigned char *buf, size_t len,
|
||||
CURLcode *err);
|
||||
|
||||
ssize_t Curl_bufq_slurp(struct bufq *q, Curl_bufq_reader *reader, void *reader_ctx,
|
||||
CURLcode *err);
|
||||
```
|
||||
|
||||
`Curl_bufq_slurp()` invokes the given `reader` callback, passing it its own
|
||||
internal buffer memory to write to. It may invoke the `reader` several times,
|
||||
as long as it has space and while the `reader` always returns the length that
|
||||
was requested. There are variations of `slurp` that call the `reader` at most
|
||||
once or only read in a maximum amount of bytes.
|
||||
|
||||
The analog mechanism for write out buffer data is:
|
||||
|
||||
```
|
||||
typedef ssize_t Curl_bufq_writer(void *writer_ctx, const unsigned char *buf, size_t len,
|
||||
CURLcode *err);
|
||||
|
||||
ssize_t Curl_bufq_pass(struct bufq *q, Curl_bufq_writer *writer, void *writer_ctx,
|
||||
CURLcode *err);
|
||||
```
|
||||
|
||||
`Curl_bufq_pass()` invokes the `writer`, passing its internal memory and
|
||||
remove the amount that `writer` reports.
|
||||
|
||||
## peek and skip
|
||||
|
||||
It is possible to get access to the memory of data stored in a `bufq` with:
|
||||
|
||||
```
|
||||
bool Curl_bufq_peek(const struct bufq *q, const unsigned char **pbuf, size_t *plen);
|
||||
```
|
||||
|
||||
On returning TRUE, `pbuf` points to internal memory with `plen` bytes that one
|
||||
may read. This is only valid until another operation on `bufq` is performed.
|
||||
|
||||
Instead of reading `bufq` data, one may simply skip it:
|
||||
|
||||
```
|
||||
void Curl_bufq_skip(struct bufq *q, size_t amount);
|
||||
```
|
||||
|
||||
This removes `amount` number of bytes from the `bufq`.
|
||||
|
||||
|
||||
## lifetime
|
||||
|
||||
`bufq` is initialized and freed similar to the `dynbuf` module. Code using
|
||||
`bufq` holds a `struct bufq` somewhere. Before it uses it, it invokes:
|
||||
|
||||
```
|
||||
void Curl_bufq_init(struct bufq *q, size_t chunk_size, size_t max_chunks);
|
||||
```
|
||||
|
||||
The `bufq` is told how many "chunks" of data it shall hold at maximum and how
|
||||
large those "chunks" should be. There are some variants of this, allowing for
|
||||
more options. How "chunks" are handled in a `bufq` is presented in the section
|
||||
about memory management.
|
||||
|
||||
The user of the `bufq` has the responsibility to call:
|
||||
|
||||
```
|
||||
void Curl_bufq_free(struct bufq *q);
|
||||
```
|
||||
to free all resources held by `q`. It is possible to reset a `bufq` to empty via:
|
||||
|
||||
```
|
||||
void Curl_bufq_reset(struct bufq *q);
|
||||
```
|
||||
|
||||
## memory management
|
||||
|
||||
Internally, a `bufq` uses allocation of fixed size, e.g. the "chunk_size", up
|
||||
to a maximum number, e.g. "max_chunks". These chunks are allocated on demand,
|
||||
therefore writing to a `bufq` may return `CURLE_OUT_OF_MEMORY`. Once the max
|
||||
number of chunks are used, the `bufq` reports that it is "full".
|
||||
|
||||
Each chunks has a `read` and `write` index. A `bufq` keeps its chunks in a
|
||||
list. Reading happens always at the head chunk, writing always goes to the
|
||||
tail chunk. When the head chunk becomes empty, it is removed. When the tail
|
||||
chunk becomes full, another chunk is added to the end of the list, becoming
|
||||
the new tail.
|
||||
|
||||
Chunks that are no longer used are returned to a `spare` list by default. If
|
||||
the `bufq` is created with option `BUFQ_OPT_NO_SPARES` those chunks are freed
|
||||
right away.
|
||||
|
||||
If a `bufq` is created with a `bufc_pool`, the no longer used chunks are
|
||||
returned to the pool. Also `bufq` asks the pool for a chunk when it needs one.
|
||||
More in section "pools".
|
||||
|
||||
## empty, full and overflow
|
||||
|
||||
One can ask about the state of a `bufq` with methods such as
|
||||
`Curl_bufq_is_empty(q)`, `Curl_bufq_is_full(q)`, etc. The amount of data held
|
||||
by a `bufq` is the sum of the data in all its chunks. This is what is reported
|
||||
by `Curl_bufq_len(q)`.
|
||||
|
||||
Note that a `bufq` length and it being "full" are only loosely related. A
|
||||
simple example:
|
||||
|
||||
* create a `bufq` with chunk_size=1000 and max_chunks=4.
|
||||
* write 4000 bytes to it, it reports "full"
|
||||
* read 1 bytes from it, it still reports "full"
|
||||
* read 999 more bytes from it, and it is no longer "full"
|
||||
|
||||
The reason for this is that full really means: *bufq uses max_chunks and the
|
||||
last one cannot be written to*.
|
||||
|
||||
When you read 1 byte from the head chunk in the example above, the head still
|
||||
hold 999 unread bytes. Only when those are also read, can the head chunk be
|
||||
removed and a new tail be added.
|
||||
|
||||
There is another variation to this. If you initialized a `bufq` with option
|
||||
`BUFQ_OPT_SOFT_LIMIT`, it allows writes **beyond** the `max_chunks`. It
|
||||
reports **full**, but one can **still** write. This option is necessary, if
|
||||
partial writes need to be avoided. It means that you need other checks to keep
|
||||
the `bufq` from growing ever larger and larger.
|
||||
|
||||
|
||||
## pools
|
||||
|
||||
A `struct bufc_pool` may be used to create chunks for a `bufq` and keep spare
|
||||
ones around. It is initialized and used via:
|
||||
|
||||
```
|
||||
void Curl_bufcp_init(struct bufc_pool *pool, size_t chunk_size, size_t spare_max);
|
||||
|
||||
void Curl_bufq_initp(struct bufq *q, struct bufc_pool *pool, size_t max_chunks, int opts);
|
||||
```
|
||||
|
||||
The pool gets the size and the mount of spares to keep. The `bufq` gets the
|
||||
pool and the `max_chunks`. It no longer needs to know the chunk sizes, as
|
||||
those are managed by the pool.
|
||||
|
||||
A pool can be shared between many `bufq`s, as long as all of them operate in
|
||||
the same thread. In curl that would be true for all transfers using the same
|
||||
multi handle. The advantages of a pool are:
|
||||
|
||||
* when all `bufq`s are empty, only memory for `max_spare` chunks in the pool
|
||||
is used. Empty `bufq`s holds no memory.
|
||||
* the latest spare chunk is the first to be handed out again, no matter which
|
||||
`bufq` needs it. This keeps the footprint of "recently used" memory smaller.
|
|
@ -0,0 +1,86 @@
|
|||
<!--
|
||||
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
|
||||
SPDX-License-Identifier: curl
|
||||
-->
|
||||
|
||||
# bufref
|
||||
|
||||
This is an internal module for handling buffer references. A referenced
|
||||
buffer is associated with its destructor function that is implicitly called
|
||||
when the reference is invalidated. Once referenced, a buffer cannot be
|
||||
reallocated.
|
||||
|
||||
A data length is stored within the reference for binary data handling
|
||||
purposes; it is not used by the bufref API.
|
||||
|
||||
The `struct bufref` is used to hold data referencing a buffer. The members of
|
||||
that structure **MUST NOT** be accessed or modified without using the dedicated
|
||||
bufref API.
|
||||
|
||||
## `init`
|
||||
|
||||
```c
|
||||
void Curl_bufref_init(struct bufref *br);
|
||||
```
|
||||
|
||||
Initializes a `bufref` structure. This function **MUST** be called before any
|
||||
other operation is performed on the structure.
|
||||
|
||||
Upon completion, the referenced buffer is `NULL` and length is zero.
|
||||
|
||||
This function may also be called to bypass referenced buffer destruction while
|
||||
invalidating the current reference.
|
||||
|
||||
## `free`
|
||||
|
||||
```c
|
||||
void Curl_bufref_free(struct bufref *br);
|
||||
```
|
||||
|
||||
Destroys the previously referenced buffer using its destructor and
|
||||
reinitializes the structure for a possible subsequent reuse.
|
||||
|
||||
## `set`
|
||||
|
||||
```c
|
||||
void Curl_bufref_set(struct bufref *br, const void *buffer, size_t length,
|
||||
void (*destructor)(void *));
|
||||
```
|
||||
|
||||
Releases the previously referenced buffer, then assigns the new `buffer` to
|
||||
the structure, associated with its `destructor` function. The latter can be
|
||||
specified as `NULL`: this is the case when the referenced buffer is static.
|
||||
|
||||
if `buffer` is NULL, `length` must be zero.
|
||||
|
||||
## `memdup`
|
||||
|
||||
```c
|
||||
CURLcode Curl_bufref_memdup(struct bufref *br, const void *data, size_t length);
|
||||
```
|
||||
|
||||
Releases the previously referenced buffer, then duplicates the `length`-byte
|
||||
`data` into a buffer allocated via `malloc()` and references the latter
|
||||
associated with destructor `curl_free()`.
|
||||
|
||||
An additional trailing byte is allocated and set to zero as a possible string
|
||||
null-terminator; it is not counted in the stored length.
|
||||
|
||||
Returns `CURLE_OK` if successful, else `CURLE_OUT_OF_MEMORY`.
|
||||
|
||||
## `ptr`
|
||||
|
||||
```c
|
||||
const unsigned char *Curl_bufref_ptr(const struct bufref *br);
|
||||
```
|
||||
|
||||
Returns a `const unsigned char *` to the referenced buffer.
|
||||
|
||||
## `len`
|
||||
|
||||
```c
|
||||
size_t Curl_bufref_len(const struct bufref *br);
|
||||
```
|
||||
|
||||
Returns the stored length of the referenced buffer.
|
|
@ -0,0 +1,94 @@
|
|||
<!--
|
||||
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
|
||||
SPDX-License-Identifier: curl
|
||||
-->
|
||||
|
||||
# The curl bug bounty
|
||||
|
||||
The curl project runs a bug bounty program in association with
|
||||
[HackerOne](https://www.hackerone.com) and the [Internet Bug
|
||||
Bounty](https://internetbugbounty.org).
|
||||
|
||||
## How does it work?
|
||||
|
||||
Start out by posting your suspected security vulnerability directly to [curl's
|
||||
HackerOne program](https://hackerone.com/curl).
|
||||
|
||||
After you have reported a security issue, it has been deemed credible, and a
|
||||
patch and advisory has been made public, you may be eligible for a bounty from
|
||||
this program. See the [Security Process](https://curl.se/dev/secprocess.html)
|
||||
document for how we work with security issues.
|
||||
|
||||
## What are the reward amounts?
|
||||
|
||||
The curl project offers monetary compensation for reported and published
|
||||
security vulnerabilities. The amount of money that is rewarded depends on how
|
||||
serious the flaw is determined to be.
|
||||
|
||||
Since 2021, the Bug Bounty is managed in association with the Internet Bug
|
||||
Bounty and they set the reward amounts. If it would turn out that they set
|
||||
amounts that are way lower than we can accept, the curl project intends to
|
||||
"top up" rewards.
|
||||
|
||||
In 2022, typical "Medium" rated vulnerabilities have been rewarded 2,400 USD
|
||||
each.
|
||||
|
||||
## Who is eligible for a reward?
|
||||
|
||||
Everyone and anyone who reports a security problem in a released curl version
|
||||
that has not already been reported can ask for a bounty.
|
||||
|
||||
Dedicated - paid for - security audits that are performed in collaboration
|
||||
with curl developers are not eligible for bounties.
|
||||
|
||||
Vulnerabilities in features that are off by default and documented as
|
||||
experimental are not eligible for a reward.
|
||||
|
||||
The vulnerability has to be fixed and publicly announced (by the curl project)
|
||||
before a bug bounty is considered.
|
||||
|
||||
Once the vulnerability has been published by curl, the researcher can request
|
||||
their bounty from the [Internet Bug Bounty](https://hackerone.com/ibb).
|
||||
|
||||
Bounties need to be requested within twelve months from the publication of the
|
||||
vulnerability.
|
||||
|
||||
The curl security team reserves themselves the right to deny or allow bug
|
||||
bounty payouts on its own discretion. There is no appeals process.
|
||||
|
||||
## Product vulnerabilities only
|
||||
|
||||
This bug bounty only concerns the curl and libcurl products and thus their
|
||||
respective source codes - when running on existing hardware. It does not
|
||||
include curl documentation, curl websites, or other curl related
|
||||
infrastructure.
|
||||
|
||||
The curl security team is the sole arbiter if a reported flaw is subject to a
|
||||
bounty or not.
|
||||
|
||||
## Third parties
|
||||
|
||||
The curl bug bounty does not cover flaws in third party dependencies
|
||||
(libraries) used by curl or libcurl. If the bug triggers because of curl
|
||||
behaving wrongly or abusing a third party dependency, the problem is rather in
|
||||
curl and not in the dependency and then the bounty might cover the problem.
|
||||
|
||||
## How are vulnerabilities graded?
|
||||
|
||||
The grading of each reported vulnerability that makes a reward claim is
|
||||
performed by the curl security team. The grading is based on the CVSS (Common
|
||||
Vulnerability Scoring System) 3.0.
|
||||
|
||||
## How are reward amounts determined?
|
||||
|
||||
The curl security team gives the vulnerability a score or severity level, as
|
||||
mentioned above. The actual monetary reward amount is decided and paid by the
|
||||
Internet Bug Bounty..
|
||||
|
||||
## Regarding taxes, etc. on the bounties
|
||||
|
||||
In the event that the individual receiving a bug bounty needs to pay taxes on
|
||||
the reward money, the responsibility lies with the receiver. The curl project
|
||||
or its security team never actually receive any of this money, hold the money,
|
||||
or pay out the money.
|
|
@ -0,0 +1,270 @@
|
|||
<!--
|
||||
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
|
||||
SPDX-License-Identifier: curl
|
||||
-->
|
||||
|
||||
# BUGS
|
||||
|
||||
## There are still bugs
|
||||
|
||||
Curl and libcurl keep being developed. Adding features and changing code
|
||||
means that bugs sneak in, no matter how hard we try to keep them out.
|
||||
|
||||
Of course there are lots of bugs left. Not to mention misfeatures.
|
||||
|
||||
To help us make curl the stable and solid product we want it to be, we need
|
||||
bug reports and bug fixes.
|
||||
|
||||
## Where to report
|
||||
|
||||
If you cannot fix a bug yourself and submit a fix for it, try to report an as
|
||||
detailed report as possible to a curl mailing list to allow one of us to have
|
||||
a go at a solution. You can optionally also submit your problem in [curl's
|
||||
bug tracking system](https://github.com/curl/curl/issues).
|
||||
|
||||
Please read the rest of this document below first before doing that.
|
||||
|
||||
If you feel you need to ask around first, find a suitable [mailing list](
|
||||
https://curl.se/mail/) and post your questions there.
|
||||
|
||||
## Security bugs
|
||||
|
||||
If you find a bug or problem in curl or libcurl that you think has a security
|
||||
impact, for example a bug that can put users in danger or make them
|
||||
vulnerable if the bug becomes public knowledge, then please report that bug
|
||||
using our security development process.
|
||||
|
||||
Security related bugs or bugs that are suspected to have a security impact,
|
||||
should be reported on the [curl security tracker at
|
||||
HackerOne](https://hackerone.com/curl).
|
||||
|
||||
This ensures that the report reaches the curl security team so that they
|
||||
first can deal with the report away from the public to minimize the harm and
|
||||
impact it has on existing users out there who might be using the vulnerable
|
||||
versions.
|
||||
|
||||
The curl project's process for handling security related issues is
|
||||
[documented separately](https://curl.se/dev/secprocess.html).
|
||||
|
||||
## What to report
|
||||
|
||||
When reporting a bug, you should include all information to help us
|
||||
understand what is wrong, what you expected to happen and how to repeat the
|
||||
bad behavior. You therefore need to tell us:
|
||||
|
||||
- your operating system's name and version number
|
||||
|
||||
- what version of curl you are using (`curl -V` is fine)
|
||||
|
||||
- versions of the used libraries that libcurl is built to use
|
||||
|
||||
- what URL you were working with (if possible), at least which protocol
|
||||
|
||||
and anything and everything else you think matters. Tell us what you expected
|
||||
to happen, tell use what did happen, tell us how you could make it work
|
||||
another way. Dig around, try out, test. Then include all the tiny bits and
|
||||
pieces in your report. You benefit from this yourself, as it enables us to
|
||||
help you quicker and more accurately.
|
||||
|
||||
Since curl deals with networks, it often helps us if you include a protocol
|
||||
debug dump with your bug report. The output you get by using the `-v` or
|
||||
`--trace` options.
|
||||
|
||||
If curl crashed, causing a core dump (in Unix), there is hardly any use to
|
||||
send that huge file to anyone of us. Unless we have the same system setup as
|
||||
you, we cannot do much with it. Instead, we ask you to get a stack trace and
|
||||
send that (much smaller) output to us instead.
|
||||
|
||||
The address and how to subscribe to the mailing lists are detailed in the
|
||||
`MANUAL.md` file.
|
||||
|
||||
## libcurl problems
|
||||
|
||||
When you have written your own application with libcurl to perform transfers,
|
||||
it is even more important to be specific and detailed when reporting bugs.
|
||||
|
||||
Tell us the libcurl version and your operating system. Tell us the name and
|
||||
version of all relevant sub-components like for example the SSL library
|
||||
you are using and what name resolving your libcurl uses. If you use SFTP or
|
||||
SCP, the libssh2 version is relevant etc.
|
||||
|
||||
Showing us a real source code example repeating your problem is the best way
|
||||
to get our attention and it greatly increases our chances to understand your
|
||||
problem and to work on a fix (if we agree it truly is a problem).
|
||||
|
||||
Lots of problems that appear to be libcurl problems are actually just abuses
|
||||
of the libcurl API or other malfunctions in your applications. It is advised
|
||||
that you run your problematic program using a memory debug tool like valgrind
|
||||
or similar before you post memory-related or "crashing" problems to us.
|
||||
|
||||
## Who fixes the problems
|
||||
|
||||
If the problems or bugs you describe are considered to be bugs, we want to
|
||||
have the problems fixed.
|
||||
|
||||
There are no developers in the curl project that are paid to work on bugs.
|
||||
All developers that take on reported bugs do this on a voluntary basis. We do
|
||||
it out of an ambition to keep curl and libcurl excellent products and out of
|
||||
pride.
|
||||
|
||||
Please do not assume that you can just lump over something to us and it then
|
||||
magically gets fixed after some given time. Most often we need feedback and
|
||||
help to understand what you have experienced and how to repeat a problem.
|
||||
Then we may only be able to assist YOU to debug the problem and to track down
|
||||
the proper fix.
|
||||
|
||||
We get reports from many people every month and each report can take a
|
||||
considerable amount of time to really go to the bottom with.
|
||||
|
||||
## How to get a stack trace
|
||||
|
||||
First, you must make sure that you compile all sources with `-g` and that you
|
||||
do not 'strip' the final executable. Try to avoid optimizing the code as well,
|
||||
remove `-O`, `-O2` etc from the compiler options.
|
||||
|
||||
Run the program until it cores.
|
||||
|
||||
Run your debugger on the core file, like `<debugger> curl core`. `<debugger>`
|
||||
should be replaced with the name of your debugger, in most cases that is
|
||||
`gdb`, but `dbx` and others also occur.
|
||||
|
||||
When the debugger has finished loading the core file and presents you a
|
||||
prompt, enter `where` (without quotes) and press return.
|
||||
|
||||
The list that is presented is the stack trace. If everything worked, it is
|
||||
supposed to contain the chain of functions that were called when curl
|
||||
crashed. Include the stack trace with your detailed bug report, it helps a
|
||||
lot.
|
||||
|
||||
## Bugs in libcurl bindings
|
||||
|
||||
There are of course bugs in libcurl bindings. You should then primarily
|
||||
approach the team that works on that particular binding and see what you can
|
||||
do to help them fix the problem.
|
||||
|
||||
If you suspect that the problem exists in the underlying libcurl, then please
|
||||
convert your program over to plain C and follow the steps outlined above.
|
||||
|
||||
## Bugs in old versions
|
||||
|
||||
The curl project typically releases new versions every other month, and we
|
||||
fix several hundred bugs per year. For a huge table of releases, number of
|
||||
bug fixes and more, see: https://curl.se/docs/releases.html
|
||||
|
||||
The developers in the curl project do not have bandwidth or energy enough to
|
||||
maintain several branches or to spend much time on hunting down problems in
|
||||
old versions when chances are we already fixed them or at least that they have
|
||||
changed nature and appearance in later versions.
|
||||
|
||||
When you experience a problem and want to report it, you really SHOULD
|
||||
include the version number of the curl you are using when you experience the
|
||||
issue. If that version number shows us that you are using an out-of-date curl,
|
||||
you should also try out a modern curl version to see if the problem persists
|
||||
or how/if it has changed in appearance.
|
||||
|
||||
Even if you cannot immediately upgrade your application/system to run the
|
||||
latest curl version, you can most often at least run a test version or
|
||||
experimental build or similar, to get this confirmed or not.
|
||||
|
||||
At times people insist that they cannot upgrade to a modern curl version, but
|
||||
instead, they "just want the bug fixed". That is fine, just do not count on us
|
||||
spending many cycles on trying to identify which single commit, if that is
|
||||
even possible, that at some point in the past fixed the problem you are now
|
||||
experiencing.
|
||||
|
||||
Security wise, it is almost always a bad idea to lag behind the current curl
|
||||
versions by a lot. We keep discovering and reporting security problems
|
||||
over time see you can see in [this
|
||||
table](https://curl.se/docs/vulnerabilities.html)
|
||||
|
||||
# Bug fixing procedure
|
||||
|
||||
## What happens on first filing
|
||||
|
||||
When a new issue is posted in the issue tracker or on the mailing list, the
|
||||
team of developers first needs to see the report. Maybe they took the day off,
|
||||
maybe they are off in the woods hunting. Have patience. Allow at least a few
|
||||
days before expecting someone to have responded.
|
||||
|
||||
In the issue tracker, you can expect that some labels are set on the issue to
|
||||
help categorize it.
|
||||
|
||||
## First response
|
||||
|
||||
If your issue/bug report was not perfect at once (and few are), chances are
|
||||
that someone asks follow-up questions. Which version did you use? Which
|
||||
options did you use? How often does the problem occur? How can we reproduce
|
||||
this problem? Which protocols does it involve? Or perhaps much more specific
|
||||
and deep diving questions. It all depends on your specific issue.
|
||||
|
||||
You should then respond to these follow-up questions and provide more info
|
||||
about the problem, so that we can help you figure it out. Or maybe you can
|
||||
help us figure it out. An active back-and-forth communication is important
|
||||
and the key for finding a cure and landing a fix.
|
||||
|
||||
## Not reproducible
|
||||
|
||||
We may require further work from you who actually see or experience the
|
||||
problem if we cannot reproduce it and cannot understand it even after having
|
||||
gotten all the info we need and having studied the source code over again.
|
||||
|
||||
## Unresponsive
|
||||
|
||||
If the problem have not been understood or reproduced, and there is nobody
|
||||
responding to follow-up questions or questions asking for clarifications or
|
||||
for discussing possible ways to move forward with the task, we take that as a
|
||||
strong suggestion that the bug is unimportant.
|
||||
|
||||
Unimportant issues are closed as inactive sooner or later as they cannot be
|
||||
fixed. The inactivity period (waiting for responses) should not be shorter
|
||||
than two weeks but may extend months.
|
||||
|
||||
## Lack of time/interest
|
||||
|
||||
Bugs that are filed and are understood can unfortunately end up in the
|
||||
"nobody cares enough about it to work on it" category. Such bugs are
|
||||
perfectly valid problems that *should* get fixed but apparently are not. We
|
||||
try to mark such bugs as `KNOWN_BUGS material` after a time of inactivity and
|
||||
if no activity is noticed after yet some time those bugs are added to the
|
||||
`KNOWN_BUGS` document and are closed in the issue tracker.
|
||||
|
||||
## `KNOWN_BUGS`
|
||||
|
||||
This is a list of known bugs. Bugs we know exist and that have been pointed
|
||||
out but that have not yet been fixed. The reasons for why they have not been
|
||||
fixed can involve anything really, but the primary reason is that nobody has
|
||||
considered these problems to be important enough to spend the necessary time
|
||||
and effort to have them fixed.
|
||||
|
||||
The `KNOWN_BUGS` items are always up for grabs and we love the ones who bring
|
||||
one of them back to life and offer solutions to them.
|
||||
|
||||
The `KNOWN_BUGS` document has a sibling document known as `TODO`.
|
||||
|
||||
## `TODO`
|
||||
|
||||
Issues that are filed or reported that are not really bugs but more missing
|
||||
features or ideas for future improvements and so on are marked as
|
||||
*enhancement* or *feature-request* and get added to the `TODO` document and
|
||||
the issues are closed. We do not keep TODO items open in the issue tracker.
|
||||
|
||||
The `TODO` document is full of ideas and suggestions of what we can add or
|
||||
fix one day. You are always encouraged and free to grab one of those items and
|
||||
take up a discussion with the curl development team on how that could be
|
||||
implemented or provided in the project so that you can work on ticking it odd
|
||||
that document.
|
||||
|
||||
If an issue is rather a bug and not a missing feature or functionality, it is
|
||||
listed in `KNOWN_BUGS` instead.
|
||||
|
||||
## Closing off stalled bugs
|
||||
|
||||
The [issue and pull request trackers](https://github.com/curl/curl) only hold
|
||||
"active" entries open (using a non-precise definition of what active actually
|
||||
is, but they are at least not completely dead). Those that are abandoned or
|
||||
in other ways dormant are closed and sometimes added to `TODO` and
|
||||
`KNOWN_BUGS` instead.
|
||||
|
||||
This way, we only have "active" issues open on GitHub. Irrelevant issues and
|
||||
pull requests do not distract developers or casual visitors.
|
|
@ -0,0 +1,190 @@
|
|||
<!--
|
||||
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
|
||||
SPDX-License-Identifier: curl
|
||||
-->
|
||||
|
||||
# checksrc
|
||||
|
||||
This is the tool we use within the curl project to scan C source code and
|
||||
check that it adheres to our [Source Code Style guide](CODE_STYLE.md).
|
||||
|
||||
## Usage
|
||||
|
||||
checksrc.pl [options] [file1] [file2] ...
|
||||
|
||||
## Command line options
|
||||
|
||||
`-W[file]` skip that file and exclude it from being checked. Helpful
|
||||
when, for example, one of the files is generated.
|
||||
|
||||
`-D[dir]` directory name to prepend to filenames when accessing them.
|
||||
|
||||
`-h` shows the help output, that also lists all recognized warnings
|
||||
|
||||
## What does `checksrc` warn for?
|
||||
|
||||
`checksrc` does not check and verify the code against the entire style guide.
|
||||
The script is an effort to detect the most common mistakes and syntax mistakes
|
||||
that contributors make before they get accustomed to our code style. Heck,
|
||||
many of us regulars do the mistakes too and this script helps us keep the code
|
||||
in shape.
|
||||
|
||||
checksrc.pl -h
|
||||
|
||||
Lists how to use the script and it lists all existing warnings it has and
|
||||
problems it detects. At the time of this writing, the existing `checksrc`
|
||||
warnings are:
|
||||
|
||||
- `ASSIGNWITHINCONDITION`: Assignment within a conditional expression. The
|
||||
code style mandates the assignment to be done outside of it.
|
||||
|
||||
- `ASTERISKNOSPACE`: A pointer was declared like `char* name` instead of the
|
||||
more appropriate `char *name` style. The asterisk should sit next to the
|
||||
name.
|
||||
|
||||
- `ASTERISKSPACE`: A pointer was declared like `char * name` instead of the
|
||||
more appropriate `char *name` style. The asterisk should sit right next to
|
||||
the name without a space in between.
|
||||
|
||||
- `BADCOMMAND`: There is a bad `checksrc` instruction in the code. See the
|
||||
**Ignore certain warnings** section below for details.
|
||||
|
||||
- `BANNEDFUNC`: A banned function was used. The functions sprintf, vsprintf,
|
||||
strcat, strncat, gets are **never** allowed in curl source code.
|
||||
|
||||
- `BRACEELSE`: '} else' on the same line. The else is supposed to be on the
|
||||
following line.
|
||||
|
||||
- `BRACEPOS`: wrong position for an open brace (`{`).
|
||||
|
||||
- `BRACEWHILE`: more than once space between end brace and while keyword
|
||||
|
||||
- `COMMANOSPACE`: a comma without following space
|
||||
|
||||
- `COPYRIGHT`: the file is missing a copyright statement
|
||||
|
||||
- `CPPCOMMENTS`: `//` comment detected, that is not C89 compliant
|
||||
|
||||
- `DOBRACE`: only use one space after do before open brace
|
||||
|
||||
- `EMPTYLINEBRACE`: found empty line before open brace
|
||||
|
||||
- `EQUALSNOSPACE`: no space after `=` sign
|
||||
|
||||
- `EQUALSNULL`: comparison with `== NULL` used in if/while. We use `!var`.
|
||||
|
||||
- `EXCLAMATIONSPACE`: space found after exclamations mark
|
||||
|
||||
- `FOPENMODE`: `fopen()` needs a macro for the mode string, use it
|
||||
|
||||
- `INDENTATION`: detected a wrong start column for code. Note that this
|
||||
warning only checks some specific places and can certainly miss many bad
|
||||
indentations.
|
||||
|
||||
- `LONGLINE`: A line is longer than 79 columns.
|
||||
|
||||
- `MULTISPACE`: Multiple spaces were found where only one should be used.
|
||||
|
||||
- `NOSPACEEQUALS`: An equals sign was found without preceding space. We prefer
|
||||
`a = 2` and *not* `a=2`.
|
||||
|
||||
- `NOTEQUALSZERO`: check found using `!= 0`. We use plain `if(var)`.
|
||||
|
||||
- `ONELINECONDITION`: do not put the conditional block on the same line as `if()`
|
||||
|
||||
- `OPENCOMMENT`: File ended with a comment (`/*`) still "open".
|
||||
|
||||
- `PARENBRACE`: `){` was used without sufficient space in between.
|
||||
|
||||
- `RETURNNOSPACE`: `return` was used without space between the keyword and the
|
||||
following value.
|
||||
|
||||
- `SEMINOSPACE`: There was no space (or newline) following a semicolon.
|
||||
|
||||
- `SIZEOFNOPAREN`: Found use of sizeof without parentheses. We prefer
|
||||
`sizeof(int)` style.
|
||||
|
||||
- `SNPRINTF` - Found use of `snprintf()`. Since we use an internal replacement
|
||||
with a different return code etc, we prefer `msnprintf()`.
|
||||
|
||||
- `SPACEAFTERPAREN`: there was a space after open parenthesis, `( text`.
|
||||
|
||||
- `SPACEBEFORECLOSE`: there was a space before a close parenthesis, `text )`.
|
||||
|
||||
- `SPACEBEFORECOMMA`: there was a space before a comma, `one , two`.
|
||||
|
||||
- `SPACEBEFOREPAREN`: there was a space before an open parenthesis, `if (`,
|
||||
where one was not expected
|
||||
|
||||
- `SPACESEMICOLON`: there was a space before semicolon, ` ;`.
|
||||
|
||||
- `TABS`: TAB characters are not allowed
|
||||
|
||||
- `TRAILINGSPACE`: Trailing whitespace on the line
|
||||
|
||||
- `TYPEDEFSTRUCT`: we frown upon (most) typedefed structs
|
||||
|
||||
- `UNUSEDIGNORE`: a `checksrc` inlined warning ignore was asked for but not
|
||||
used, that is an ignore that should be removed or changed to get used.
|
||||
|
||||
### Extended warnings
|
||||
|
||||
Some warnings are quite computationally expensive to perform, so they are
|
||||
turned off by default. To enable these warnings, place a `.checksrc` file in
|
||||
the directory where they should be activated with commands to enable the
|
||||
warnings you are interested in. The format of the file is to enable one
|
||||
warning per line like so: `enable <EXTENDEDWARNING>`
|
||||
|
||||
Currently these are the extended warnings which can be enabled:
|
||||
|
||||
- `COPYRIGHTYEAR`: the current changeset has not updated the copyright year in
|
||||
the source file
|
||||
|
||||
- `STRERROR`: use of banned function strerror()
|
||||
|
||||
- `STDERR`: use of banned variable `stderr`
|
||||
|
||||
## Ignore certain warnings
|
||||
|
||||
Due to the nature of the source code and the flaws of the `checksrc` tool,
|
||||
there is sometimes a need to ignore specific warnings. `checksrc` allows a few
|
||||
different ways to do this.
|
||||
|
||||
### Inline ignore
|
||||
|
||||
You can control what to ignore within a specific source file by providing
|
||||
instructions to `checksrc` in the source code itself. See examples below. The
|
||||
instruction can ask to ignore a specific warning a specific number of times or
|
||||
you ignore all of them until you mark the end of the ignored section.
|
||||
|
||||
Inline ignores are only done for that single specific source code file.
|
||||
|
||||
Example
|
||||
|
||||
/* !checksrc! disable LONGLINE all */
|
||||
|
||||
This ignores the warning for overly long lines until it is re-enabled with:
|
||||
|
||||
/* !checksrc! enable LONGLINE */
|
||||
|
||||
If the enabling is not performed before the end of the file, it is enabled
|
||||
again automatically for the next file.
|
||||
|
||||
You can also opt to ignore just N violations so that if you have a single long
|
||||
line you just cannot shorten and is agreed to be fine anyway:
|
||||
|
||||
/* !checksrc! disable LONGLINE 1 */
|
||||
|
||||
... and the warning for long lines is enabled again automatically after it has
|
||||
ignored that single warning. The number `1` can of course be changed to any
|
||||
other integer number. It can be used to make sure only the exact intended
|
||||
instances are ignored and nothing extra.
|
||||
|
||||
### Directory wide ignore patterns
|
||||
|
||||
This is a method we have transitioned away from. Use inline ignores as far as
|
||||
possible.
|
||||
|
||||
Make a `checksrc.skip` file in the directory of the source code with the
|
||||
false positive, and include the full offending line into this file.
|
|
@ -0,0 +1,433 @@
|
|||
<!--
|
||||
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
|
||||
SPDX-License-Identifier: curl
|
||||
-->
|
||||
|
||||
# Ciphers
|
||||
|
||||
With curl's options
|
||||
[`CURLOPT_SSL_CIPHER_LIST`](https://curl.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html)
|
||||
and
|
||||
[`--ciphers`](https://curl.se/docs/manpage.html#--ciphers)
|
||||
users can control which ciphers to consider when negotiating TLS connections.
|
||||
|
||||
TLS 1.3 ciphers are supported since curl 7.61 for OpenSSL 1.1.1+, and since
|
||||
curl 7.85 for Schannel with options
|
||||
[`CURLOPT_TLS13_CIPHERS`](https://curl.se/libcurl/c/CURLOPT_TLS13_CIPHERS.html)
|
||||
and
|
||||
[`--tls13-ciphers`](https://curl.se/docs/manpage.html#--tls13-ciphers)
|
||||
. If you are using a different SSL backend you can try setting TLS 1.3 cipher
|
||||
suites by using the respective regular cipher option.
|
||||
|
||||
The names of the known ciphers differ depending on which TLS backend that
|
||||
libcurl was built to use. This is an attempt to list known cipher names.
|
||||
|
||||
## OpenSSL
|
||||
|
||||
(based on [OpenSSL docs](https://www.openssl.org/docs/manmaster/man1/openssl-ciphers.html))
|
||||
|
||||
When specifying multiple cipher names, separate them with colon (`:`).
|
||||
|
||||
### SSL3 cipher suites
|
||||
|
||||
`NULL-MD5`
|
||||
`NULL-SHA`
|
||||
`RC4-MD5`
|
||||
`RC4-SHA`
|
||||
`IDEA-CBC-SHA`
|
||||
`DES-CBC3-SHA`
|
||||
`DH-DSS-DES-CBC3-SHA`
|
||||
`DH-RSA-DES-CBC3-SHA`
|
||||
`DHE-DSS-DES-CBC3-SHA`
|
||||
`DHE-RSA-DES-CBC3-SHA`
|
||||
`ADH-RC4-MD5`
|
||||
`ADH-DES-CBC3-SHA`
|
||||
|
||||
### TLS v1.0 cipher suites
|
||||
|
||||
`NULL-MD5`
|
||||
`NULL-SHA`
|
||||
`RC4-MD5`
|
||||
`RC4-SHA`
|
||||
`IDEA-CBC-SHA`
|
||||
`DES-CBC3-SHA`
|
||||
`DHE-DSS-DES-CBC3-SHA`
|
||||
`DHE-RSA-DES-CBC3-SHA`
|
||||
`ADH-RC4-MD5`
|
||||
`ADH-DES-CBC3-SHA`
|
||||
|
||||
### AES cipher suites from RFC 3268, extending TLS v1.0
|
||||
|
||||
`AES128-SHA`
|
||||
`AES256-SHA`
|
||||
`DH-DSS-AES128-SHA`
|
||||
`DH-DSS-AES256-SHA`
|
||||
`DH-RSA-AES128-SHA`
|
||||
`DH-RSA-AES256-SHA`
|
||||
`DHE-DSS-AES128-SHA`
|
||||
`DHE-DSS-AES256-SHA`
|
||||
`DHE-RSA-AES128-SHA`
|
||||
`DHE-RSA-AES256-SHA`
|
||||
`ADH-AES128-SHA`
|
||||
`ADH-AES256-SHA`
|
||||
|
||||
### SEED cipher suites from RFC 4162, extending TLS v1.0
|
||||
|
||||
`SEED-SHA`
|
||||
`DH-DSS-SEED-SHA`
|
||||
`DH-RSA-SEED-SHA`
|
||||
`DHE-DSS-SEED-SHA`
|
||||
`DHE-RSA-SEED-SHA`
|
||||
`ADH-SEED-SHA`
|
||||
|
||||
### GOST cipher suites, extending TLS v1.0
|
||||
|
||||
`GOST94-GOST89-GOST89`
|
||||
`GOST2001-GOST89-GOST89`
|
||||
`GOST94-NULL-GOST94`
|
||||
`GOST2001-NULL-GOST94`
|
||||
|
||||
### Elliptic curve cipher suites
|
||||
|
||||
`ECDHE-RSA-NULL-SHA`
|
||||
`ECDHE-RSA-RC4-SHA`
|
||||
`ECDHE-RSA-DES-CBC3-SHA`
|
||||
`ECDHE-RSA-AES128-SHA`
|
||||
`ECDHE-RSA-AES256-SHA`
|
||||
`ECDHE-ECDSA-NULL-SHA`
|
||||
`ECDHE-ECDSA-RC4-SHA`
|
||||
`ECDHE-ECDSA-DES-CBC3-SHA`
|
||||
`ECDHE-ECDSA-AES128-SHA`
|
||||
`ECDHE-ECDSA-AES256-SHA`
|
||||
`AECDH-NULL-SHA`
|
||||
`AECDH-RC4-SHA`
|
||||
`AECDH-DES-CBC3-SHA`
|
||||
`AECDH-AES128-SHA`
|
||||
`AECDH-AES256-SHA`
|
||||
|
||||
### TLS v1.2 cipher suites
|
||||
|
||||
`NULL-SHA256`
|
||||
`AES128-SHA256`
|
||||
`AES256-SHA256`
|
||||
`AES128-GCM-SHA256`
|
||||
`AES256-GCM-SHA384`
|
||||
`DH-RSA-AES128-SHA256`
|
||||
`DH-RSA-AES256-SHA256`
|
||||
`DH-RSA-AES128-GCM-SHA256`
|
||||
`DH-RSA-AES256-GCM-SHA384`
|
||||
`DH-DSS-AES128-SHA256`
|
||||
`DH-DSS-AES256-SHA256`
|
||||
`DH-DSS-AES128-GCM-SHA256`
|
||||
`DH-DSS-AES256-GCM-SHA384`
|
||||
`DHE-RSA-AES128-SHA256`
|
||||
`DHE-RSA-AES256-SHA256`
|
||||
`DHE-RSA-AES128-GCM-SHA256`
|
||||
`DHE-RSA-AES256-GCM-SHA384`
|
||||
`DHE-DSS-AES128-SHA256`
|
||||
`DHE-DSS-AES256-SHA256`
|
||||
`DHE-DSS-AES128-GCM-SHA256`
|
||||
`DHE-DSS-AES256-GCM-SHA384`
|
||||
`ECDHE-RSA-AES128-SHA256`
|
||||
`ECDHE-RSA-AES256-SHA384`
|
||||
`ECDHE-RSA-AES128-GCM-SHA256`
|
||||
`ECDHE-RSA-AES256-GCM-SHA384`
|
||||
`ECDHE-ECDSA-AES128-SHA256`
|
||||
`ECDHE-ECDSA-AES256-SHA384`
|
||||
`ECDHE-ECDSA-AES128-GCM-SHA256`
|
||||
`ECDHE-ECDSA-AES256-GCM-SHA384`
|
||||
`ADH-AES128-SHA256`
|
||||
`ADH-AES256-SHA256`
|
||||
`ADH-AES128-GCM-SHA256`
|
||||
`ADH-AES256-GCM-SHA384`
|
||||
`AES128-CCM`
|
||||
`AES256-CCM`
|
||||
`DHE-RSA-AES128-CCM`
|
||||
`DHE-RSA-AES256-CCM`
|
||||
`AES128-CCM8`
|
||||
`AES256-CCM8`
|
||||
`DHE-RSA-AES128-CCM8`
|
||||
`DHE-RSA-AES256-CCM8`
|
||||
`ECDHE-ECDSA-AES128-CCM`
|
||||
`ECDHE-ECDSA-AES256-CCM`
|
||||
`ECDHE-ECDSA-AES128-CCM8`
|
||||
`ECDHE-ECDSA-AES256-CCM8`
|
||||
|
||||
### Camellia HMAC-Based cipher suites from RFC 6367, extending TLS v1.2
|
||||
|
||||
`ECDHE-ECDSA-CAMELLIA128-SHA256`
|
||||
`ECDHE-ECDSA-CAMELLIA256-SHA384`
|
||||
`ECDHE-RSA-CAMELLIA128-SHA256`
|
||||
`ECDHE-RSA-CAMELLIA256-SHA384`
|
||||
|
||||
### TLS 1.3 cipher suites
|
||||
|
||||
(Note these ciphers are set with `CURLOPT_TLS13_CIPHERS` and `--tls13-ciphers`)
|
||||
|
||||
`TLS_AES_256_GCM_SHA384`
|
||||
`TLS_CHACHA20_POLY1305_SHA256`
|
||||
`TLS_AES_128_GCM_SHA256`
|
||||
`TLS_AES_128_CCM_8_SHA256`
|
||||
`TLS_AES_128_CCM_SHA256`
|
||||
|
||||
## WolfSSL
|
||||
|
||||
`RC4-SHA`,
|
||||
`RC4-MD5`,
|
||||
`DES-CBC3-SHA`,
|
||||
`AES128-SHA`,
|
||||
`AES256-SHA`,
|
||||
`NULL-SHA`,
|
||||
`NULL-SHA256`,
|
||||
`DHE-RSA-AES128-SHA`,
|
||||
`DHE-RSA-AES256-SHA`,
|
||||
`DHE-PSK-AES256-GCM-SHA384`,
|
||||
`DHE-PSK-AES128-GCM-SHA256`,
|
||||
`PSK-AES256-GCM-SHA384`,
|
||||
`PSK-AES128-GCM-SHA256`,
|
||||
`DHE-PSK-AES256-CBC-SHA384`,
|
||||
`DHE-PSK-AES128-CBC-SHA256`,
|
||||
`PSK-AES256-CBC-SHA384`,
|
||||
`PSK-AES128-CBC-SHA256`,
|
||||
`PSK-AES128-CBC-SHA`,
|
||||
`PSK-AES256-CBC-SHA`,
|
||||
`DHE-PSK-AES128-CCM`,
|
||||
`DHE-PSK-AES256-CCM`,
|
||||
`PSK-AES128-CCM`,
|
||||
`PSK-AES256-CCM`,
|
||||
`PSK-AES128-CCM-8`,
|
||||
`PSK-AES256-CCM-8`,
|
||||
`DHE-PSK-NULL-SHA384`,
|
||||
`DHE-PSK-NULL-SHA256`,
|
||||
`PSK-NULL-SHA384`,
|
||||
`PSK-NULL-SHA256`,
|
||||
`PSK-NULL-SHA`,
|
||||
`HC128-MD5`,
|
||||
`HC128-SHA`,
|
||||
`HC128-B2B256`,
|
||||
`AES128-B2B256`,
|
||||
`AES256-B2B256`,
|
||||
`RABBIT-SHA`,
|
||||
`NTRU-RC4-SHA`,
|
||||
`NTRU-DES-CBC3-SHA`,
|
||||
`NTRU-AES128-SHA`,
|
||||
`NTRU-AES256-SHA`,
|
||||
`AES128-CCM-8`,
|
||||
`AES256-CCM-8`,
|
||||
`ECDHE-ECDSA-AES128-CCM`,
|
||||
`ECDHE-ECDSA-AES128-CCM-8`,
|
||||
`ECDHE-ECDSA-AES256-CCM-8`,
|
||||
`ECDHE-RSA-AES128-SHA`,
|
||||
`ECDHE-RSA-AES256-SHA`,
|
||||
`ECDHE-ECDSA-AES128-SHA`,
|
||||
`ECDHE-ECDSA-AES256-SHA`,
|
||||
`ECDHE-RSA-RC4-SHA`,
|
||||
`ECDHE-RSA-DES-CBC3-SHA`,
|
||||
`ECDHE-ECDSA-RC4-SHA`,
|
||||
`ECDHE-ECDSA-DES-CBC3-SHA`,
|
||||
`AES128-SHA256`,
|
||||
`AES256-SHA256`,
|
||||
`DHE-RSA-AES128-SHA256`,
|
||||
`DHE-RSA-AES256-SHA256`,
|
||||
`ECDH-RSA-AES128-SHA`,
|
||||
`ECDH-RSA-AES256-SHA`,
|
||||
`ECDH-ECDSA-AES128-SHA`,
|
||||
`ECDH-ECDSA-AES256-SHA`,
|
||||
`ECDH-RSA-RC4-SHA`,
|
||||
`ECDH-RSA-DES-CBC3-SHA`,
|
||||
`ECDH-ECDSA-RC4-SHA`,
|
||||
`ECDH-ECDSA-DES-CBC3-SHA`,
|
||||
`AES128-GCM-SHA256`,
|
||||
`AES256-GCM-SHA384`,
|
||||
`DHE-RSA-AES128-GCM-SHA256`,
|
||||
`DHE-RSA-AES256-GCM-SHA384`,
|
||||
`ECDHE-RSA-AES128-GCM-SHA256`,
|
||||
`ECDHE-RSA-AES256-GCM-SHA384`,
|
||||
`ECDHE-ECDSA-AES128-GCM-SHA256`,
|
||||
`ECDHE-ECDSA-AES256-GCM-SHA384`,
|
||||
`ECDH-RSA-AES128-GCM-SHA256`,
|
||||
`ECDH-RSA-AES256-GCM-SHA384`,
|
||||
`ECDH-ECDSA-AES128-GCM-SHA256`,
|
||||
`ECDH-ECDSA-AES256-GCM-SHA384`,
|
||||
`CAMELLIA128-SHA`,
|
||||
`DHE-RSA-CAMELLIA128-SHA`,
|
||||
`CAMELLIA256-SHA`,
|
||||
`DHE-RSA-CAMELLIA256-SHA`,
|
||||
`CAMELLIA128-SHA256`,
|
||||
`DHE-RSA-CAMELLIA128-SHA256`,
|
||||
`CAMELLIA256-SHA256`,
|
||||
`DHE-RSA-CAMELLIA256-SHA256`,
|
||||
`ECDHE-RSA-AES128-SHA256`,
|
||||
`ECDHE-ECDSA-AES128-SHA256`,
|
||||
`ECDH-RSA-AES128-SHA256`,
|
||||
`ECDH-ECDSA-AES128-SHA256`,
|
||||
`ECDHE-RSA-AES256-SHA384`,
|
||||
`ECDHE-ECDSA-AES256-SHA384`,
|
||||
`ECDH-RSA-AES256-SHA384`,
|
||||
`ECDH-ECDSA-AES256-SHA384`,
|
||||
`ECDHE-RSA-CHACHA20-POLY1305`,
|
||||
`ECDHE-ECDSA-CHACHA20-POLY1305`,
|
||||
`DHE-RSA-CHACHA20-POLY1305`,
|
||||
`ECDHE-RSA-CHACHA20-POLY1305-OLD`,
|
||||
`ECDHE-ECDSA-CHACHA20-POLY1305-OLD`,
|
||||
`DHE-RSA-CHACHA20-POLY1305-OLD`,
|
||||
`ADH-AES128-SHA`,
|
||||
`QSH`,
|
||||
`RENEGOTIATION-INFO`,
|
||||
`IDEA-CBC-SHA`,
|
||||
`ECDHE-ECDSA-NULL-SHA`,
|
||||
`ECDHE-PSK-NULL-SHA256`,
|
||||
`ECDHE-PSK-AES128-CBC-SHA256`,
|
||||
`PSK-CHACHA20-POLY1305`,
|
||||
`ECDHE-PSK-CHACHA20-POLY1305`,
|
||||
`DHE-PSK-CHACHA20-POLY1305`,
|
||||
`EDH-RSA-DES-CBC3-SHA`,
|
||||
|
||||
## Schannel
|
||||
|
||||
Schannel allows the enabling and disabling of encryption algorithms, but not
|
||||
specific cipher suites, prior to TLS 1.3. The algorithms are
|
||||
[defined](https://docs.microsoft.com/windows/desktop/SecCrypto/alg-id) by
|
||||
Microsoft.
|
||||
|
||||
The algorithms below are for TLS 1.2 and earlier. TLS 1.3 is covered in the
|
||||
next section.
|
||||
|
||||
There is also the case that the selected algorithm is not supported by the
|
||||
protocol or does not match the ciphers offered by the server during the SSL
|
||||
negotiation. In this case curl returns error
|
||||
`CURLE_SSL_CONNECT_ERROR (35) SEC_E_ALGORITHM_MISMATCH`
|
||||
and the request fails.
|
||||
|
||||
`CALG_MD2`,
|
||||
`CALG_MD4`,
|
||||
`CALG_MD5`,
|
||||
`CALG_SHA`,
|
||||
`CALG_SHA1`,
|
||||
`CALG_MAC`,
|
||||
`CALG_RSA_SIGN`,
|
||||
`CALG_DSS_SIGN`,
|
||||
`CALG_NO_SIGN`,
|
||||
`CALG_RSA_KEYX`,
|
||||
`CALG_DES`,
|
||||
`CALG_3DES_112`,
|
||||
`CALG_3DES`,
|
||||
`CALG_DESX`,
|
||||
`CALG_RC2`,
|
||||
`CALG_RC4`,
|
||||
`CALG_SEAL`,
|
||||
`CALG_DH_SF`,
|
||||
`CALG_DH_EPHEM`,
|
||||
`CALG_AGREEDKEY_ANY`,
|
||||
`CALG_HUGHES_MD5`,
|
||||
`CALG_SKIPJACK`,
|
||||
`CALG_TEK`,
|
||||
`CALG_CYLINK_MEK`,
|
||||
`CALG_SSL3_SHAMD5`,
|
||||
`CALG_SSL3_MASTER`,
|
||||
`CALG_SCHANNEL_MASTER_HASH`,
|
||||
`CALG_SCHANNEL_MAC_KEY`,
|
||||
`CALG_SCHANNEL_ENC_KEY`,
|
||||
`CALG_PCT1_MASTER`,
|
||||
`CALG_SSL2_MASTER`,
|
||||
`CALG_TLS1_MASTER`,
|
||||
`CALG_RC5`,
|
||||
`CALG_HMAC`,
|
||||
`CALG_TLS1PRF`,
|
||||
`CALG_HASH_REPLACE_OWF`,
|
||||
`CALG_AES_128`,
|
||||
`CALG_AES_192`,
|
||||
`CALG_AES_256`,
|
||||
`CALG_AES`,
|
||||
`CALG_SHA_256`,
|
||||
`CALG_SHA_384`,
|
||||
`CALG_SHA_512`,
|
||||
`CALG_ECDH`,
|
||||
`CALG_ECMQV`,
|
||||
`CALG_ECDSA`,
|
||||
`CALG_ECDH_EPHEM`,
|
||||
|
||||
As of curl 7.77.0, you can also pass `SCH_USE_STRONG_CRYPTO` as a cipher name
|
||||
to [constrain the set of available ciphers as specified in the Schannel
|
||||
documentation](https://docs.microsoft.com/en-us/windows/win32/secauthn/tls-cipher-suites-in-windows-server-2022).
|
||||
Note that the supported ciphers in this case follow the OS version, so if you
|
||||
are running an outdated OS you might still be supporting weak ciphers.
|
||||
|
||||
### TLS 1.3 cipher suites
|
||||
|
||||
You can set TLS 1.3 ciphers for Schannel by using `CURLOPT_TLS13_CIPHERS` or
|
||||
`--tls13-ciphers` with the names below.
|
||||
|
||||
If TLS 1.3 cipher suites are set then libcurl adds or restricts Schannel TLS
|
||||
1.3 algorithms automatically. Essentially, libcurl is emulating support for
|
||||
individual TLS 1.3 cipher suites since Schannel does not support it directly.
|
||||
|
||||
`TLS_AES_256_GCM_SHA384`
|
||||
`TLS_AES_128_GCM_SHA256`
|
||||
`TLS_CHACHA20_POLY1305_SHA256`
|
||||
`TLS_AES_128_CCM_8_SHA256`
|
||||
`TLS_AES_128_CCM_SHA256`
|
||||
|
||||
Note if you set TLS 1.3 ciphers without also setting the minimum TLS version
|
||||
to 1.3 then it is possible Schannel may negotiate an earlier TLS version and
|
||||
cipher suite if your libcurl and OS settings allow it. You can set the minimum
|
||||
TLS version by using `CURLOPT_SSLVERSION` or `--tlsv1.3`.
|
||||
|
||||
## BearSSL
|
||||
|
||||
BearSSL ciphers can be specified by either the OpenSSL name (`ECDHE-RSA-AES128-GCM-SHA256`) or the IANA name (`TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`).
|
||||
|
||||
Since BearSSL 0.1:
|
||||
|
||||
`DES-CBC3-SHA`
|
||||
`AES128-SHA`
|
||||
`AES256-SHA`
|
||||
`AES128-SHA256`
|
||||
`AES256-SHA256`
|
||||
`AES128-GCM-SHA256`
|
||||
`AES256-GCM-SHA384`
|
||||
`ECDH-ECDSA-DES-CBC3-SHA`
|
||||
`ECDH-ECDSA-AES128-SHA`
|
||||
`ECDH-ECDSA-AES256-SHA`
|
||||
`ECDHE-ECDSA-DES-CBC3-SHA`
|
||||
`ECDHE-ECDSA-AES128-SHA`
|
||||
`ECDHE-ECDSA-AES256-SHA`
|
||||
`ECDH-RSA-DES-CBC3-SHA`
|
||||
`ECDH-RSA-AES128-SHA`
|
||||
`ECDH-RSA-AES256-SHA`
|
||||
`ECDHE-RSA-DES-CBC3-SHA`
|
||||
`ECDHE-RSA-AES128-SHA`
|
||||
`ECDHE-RSA-AES256-SHA`
|
||||
`ECDHE-ECDSA-AES128-SHA256`
|
||||
`ECDHE-ECDSA-AES256-SHA384`
|
||||
`ECDH-ECDSA-AES128-SHA256`
|
||||
`ECDH-ECDSA-AES256-SHA384`
|
||||
`ECDHE-RSA-AES128-SHA256`
|
||||
`ECDHE-RSA-AES256-SHA384`
|
||||
`ECDH-RSA-AES128-SHA256`
|
||||
`ECDH-RSA-AES256-SHA384`
|
||||
`ECDHE-ECDSA-AES128-GCM-SHA256`
|
||||
`ECDHE-ECDSA-AES256-GCM-SHA384`
|
||||
`ECDH-ECDSA-AES128-GCM-SHA256`
|
||||
`ECDH-ECDSA-AES256-GCM-SHA384`
|
||||
`ECDHE-RSA-AES128-GCM-SHA256`
|
||||
`ECDHE-RSA-AES256-GCM-SHA384`
|
||||
`ECDH-RSA-AES128-GCM-SHA256`
|
||||
`ECDH-RSA-AES256-GCM-SHA384`
|
||||
|
||||
Since BearSSL 0.2:
|
||||
|
||||
`ECDHE-RSA-CHACHA20-POLY1305`
|
||||
`ECDHE-ECDSA-CHACHA20-POLY1305`
|
||||
|
||||
Since BearSSL 0.6:
|
||||
|
||||
`AES128-CCM`
|
||||
`AES256-CCM`
|
||||
`AES128-CCM8`
|
||||
`AES256-CCM8`
|
||||
`ECDHE-ECDSA-AES128-CCM`
|
||||
`ECDHE-ECDSA-AES256-CCM`
|
||||
`ECDHE-ECDSA-AES128-CCM8`
|
||||
`ECDHE-ECDSA-AES256-CCM8`
|
|
@ -0,0 +1,132 @@
|
|||
<!--
|
||||
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
|
||||
SPDX-License-Identifier: curl
|
||||
-->
|
||||
|
||||
# curl client readers
|
||||
|
||||
Client readers is a design in the internals of libcurl, not visible in its public API. They were started
|
||||
in curl v8.7.0. This document describes the concepts, its high level implementation and the motivations.
|
||||
|
||||
## Naming
|
||||
|
||||
`libcurl` operates between clients and servers. A *client* is the application using libcurl, like the command line tool `curl` itself. Data to be uploaded to a server is **read** from the client and **sent** to the server, the servers response is **received** by `libcurl` and then **written** to the client.
|
||||
|
||||
With this naming established, client readers are concerned with providing data from the application to the server. Applications register callbacks via `CURLOPT_READFUNCTION`, data via `CURLOPT_POSTFIELDS` and other options to be used by `libcurl` when the request is send.
|
||||
|
||||
## Invoking
|
||||
|
||||
The transfer loop that sends and receives, is using `Curl_client_read()` to get more data to send for a transfer. If no specific reader has been installed yet, the default one that uses `CURLOPT_READFUNCTION` is added. The prototype is
|
||||
|
||||
```
|
||||
CURLcode Curl_client_read(struct Curl_easy *data, char *buf, size_t blen,
|
||||
size_t *nread, bool *eos);
|
||||
```
|
||||
The arguments are the transfer to read for, a buffer to hold the read data, its length, the actual number of bytes placed into the buffer and the `eos` (*end of stream*) flag indicating that no more data is available. The `eos` flag may be set for a read amount, if that amount was the last. That way curl can avoid to read an additional time.
|
||||
|
||||
The implementation of `Curl_client_read()` uses a chain of *client reader* instances to get the data. This is similar to the design of *client writers*. The chain of readers allows processing of the data to send.
|
||||
|
||||
The definition of a reader is:
|
||||
|
||||
```
|
||||
struct Curl_crtype {
|
||||
const char *name; /* writer name. */
|
||||
CURLcode (*do_init)(struct Curl_easy *data, struct Curl_creader *writer);
|
||||
CURLcode (*do_read)(struct Curl_easy *data, struct Curl_creader *reader,
|
||||
char *buf, size_t blen, size_t *nread, bool *eos);
|
||||
void (*do_close)(struct Curl_easy *data, struct Curl_creader *reader);
|
||||
bool (*needs_rewind)(struct Curl_easy *data, struct Curl_creader *reader);
|
||||
curl_off_t (*total_length)(struct Curl_easy *data,
|
||||
struct Curl_creader *reader);
|
||||
CURLcode (*resume_from)(struct Curl_easy *data,
|
||||
struct Curl_creader *reader, curl_off_t offset);
|
||||
CURLcode (*rewind)(struct Curl_easy *data, struct Curl_creader *reader);
|
||||
};
|
||||
|
||||
struct Curl_creader {
|
||||
const struct Curl_crtype *crt; /* type implementation */
|
||||
struct Curl_creader *next; /* Downstream reader. */
|
||||
Curl_creader_phase phase; /* phase at which it operates */
|
||||
};
|
||||
```
|
||||
|
||||
`Curl_creader` is a reader instance with a `next` pointer to form the chain. It as a type `crt` which provides the implementation. The main callback is `do_read()` which provides the data to the caller. The others are for setup and tear down. `needs_rewind()` is explained further below.
|
||||
|
||||
## Phases and Ordering
|
||||
|
||||
Since client readers may transform the data being read through the chain, the order in which they are called is relevant for the outcome. When a reader is created, it gets the `phase` property in which it operates. Reader phases are defined like:
|
||||
|
||||
```
|
||||
typedef enum {
|
||||
CURL_CR_NET, /* data send to the network (connection filters) */
|
||||
CURL_CR_TRANSFER_ENCODE, /* add transfer-encodings */
|
||||
CURL_CR_PROTOCOL, /* before transfer, but after content decoding */
|
||||
CURL_CR_CONTENT_ENCODE, /* add content-encodings */
|
||||
CURL_CR_CLIENT /* data read from client */
|
||||
} Curl_creader_phase;
|
||||
```
|
||||
|
||||
If a reader for phase `PROTOCOL` is added to the chain, it is always added *after* any `NET` or `TRANSFER_ENCODE` readers and *before* and `CONTENT_ENCODE` and `CLIENT` readers. If there is already a reader for the same phase, the new reader is added before the existing one(s).
|
||||
|
||||
### Example: `chunked` reader
|
||||
|
||||
In `http_chunks.c` a client reader for chunked uploads is implemented. This one operates at phase `CURL_CR_TRANSFER_ENCODE`. Any data coming from the reader "below" has the HTTP/1.1 chunk handling applied and returned to the caller.
|
||||
|
||||
When this reader sees an `eos` from below, it generates the terminal chunk, adding trailers if provided by the application. When that last chunk is fully returned, it also sets `eos` to the caller.
|
||||
|
||||
### Example: `lineconv` reader
|
||||
|
||||
In `sendf.c` a client reader that does line-end conversions is implemented. It operates at `CURL_CR_CONTENT_ENCODE` and converts any "\n" to "\r\n". This is used for FTP ASCII uploads or when the general `crlf` options has been set.
|
||||
|
||||
### Example: `null` reader
|
||||
|
||||
Implemented in `sendf.c` for phase `CURL_CR_CLIENT`, this reader has the simple job of providing transfer bytes of length 0 to the caller, immediately indicating an `eos`. This reader is installed by HTTP for all GET/HEAD requests and when authentication is being negotiated.
|
||||
|
||||
### Example: `buf` reader
|
||||
|
||||
Implemented in `sendf.c` for phase `CURL_CR_CLIENT`, this reader get a buffer pointer and a length and provides exactly these bytes. This one is used in HTTP for sending `postfields` provided by the application.
|
||||
|
||||
## Request retries
|
||||
|
||||
Sometimes it is necessary to send a request with client data again. Transfer handling can inquire via `Curl_client_read_needs_rewind()` if a rewind (e.g. a reset of the client data) is necessary. This asks all installed readers if they need it and give `FALSE` of none does.
|
||||
|
||||
## Upload Size
|
||||
|
||||
Many protocols need to know the amount of bytes delivered by the client readers in advance. They may invoke `Curl_creader_total_length(data)` to retrieve that. However, not all reader chains know the exact value beforehand. In that case, the call returns `-1` for "unknown".
|
||||
|
||||
Even if the length of the "raw" data is known, the length that is send may not. Example: with option `--crlf` the uploaded content undergoes line-end conversion. The line converting reader does not know in advance how many newlines it may encounter. Therefore it must return `-1` for any positive raw content length.
|
||||
|
||||
In HTTP, once the correct client readers are installed, the protocol asks the readers for the total length. If that is known, it can set `Content-Length:` accordingly. If not, it may choose to add an HTTP "chunked" reader.
|
||||
|
||||
In addition, there is `Curl_creader_client_length(data)` which gives the total length as reported by the reader in phase `CURL_CR_CLIENT` without asking other readers that may transform the raw data. This is useful in estimating the size of an upload. The HTTP protocol uses this to determine if `Expect: 100-continue` shall be done.
|
||||
|
||||
## Resuming
|
||||
|
||||
Uploads can start at a specific offset, if so requested. The "resume from" that offset. This applies to the reader in phase `CURL_CR_CLIENT` that delivers the "raw" content. Resumption can fail if the installed reader does not support it or if the offset is too large.
|
||||
|
||||
The total length reported by the reader changes when resuming. Example: resuming an upload of 100 bytes by 25 reports a total length of 75 afterwards.
|
||||
|
||||
If `resume_from()` is invoked twice, it is additive. There is currently no way to undo a resume.
|
||||
|
||||
## Rewinding
|
||||
|
||||
When a request is retried, installed client readers are discarded and replaced by new ones. This works only if the new readers upload the same data. For many readers, this is not an issue. The "null" reader always does the same. Also the `buf` reader, initialized with the same buffer, does this.
|
||||
|
||||
Readers operating on callbacks to the application need to "rewind" the underlying content. For example, when reading from a `FILE*`, the reader needs to `fseek()` to the beginning. The following methods are used:
|
||||
|
||||
1. `Curl_creader_needs_rewind(data)`: tells if a rewind is necessary, given the current state of the reader chain. If nothing really has been read so far, this returns `FALSE`.
|
||||
2. `Curl_creader_will_rewind(data)`: tells if the reader chain rewinds at the start of the next request.
|
||||
3. `Curl_creader_set_rewind(data, TRUE)`: marks the reader chain for rewinding at the start of the next request.
|
||||
4. `Curl_client_start(data)`: tells the readers that a new request starts and they need to rewind if requested.
|
||||
|
||||
|
||||
## Summary and Outlook
|
||||
|
||||
By adding the client reader interface, any protocol can control how/if it wants the curl transfer to send bytes for a request. The transfer loop becomes then blissfully ignorant of the specifics.
|
||||
|
||||
The protocols on the other hand no longer have to care to package data most efficiently. At any time, should more data be needed, it can be read from the client. This is used when sending HTTP requests headers to add as much request body data to the initial sending as there is room for.
|
||||
|
||||
Future enhancements based on the client readers:
|
||||
* `expect-100` handling: place that into a HTTP specific reader at `CURL_CR_PROTOCOL` and eliminate the checks in the generic transfer parts.
|
||||
* `eos forwarding`: transfer should forward an `eos` flag to the connection filters. Filters like HTTP/2 and HTTP/3 can make use of that, terminating streams early. This would also eliminate length checks in stream handling.
|
|
@ -0,0 +1,123 @@
|
|||
<!--
|
||||
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
|
||||
SPDX-License-Identifier: curl
|
||||
-->
|
||||
|
||||
# curl client writers
|
||||
|
||||
Client writers is a design in the internals of libcurl, not visible in its public API. They were started
|
||||
in curl v8.5.0. This document describes the concepts, its high level implementation and the motivations.
|
||||
|
||||
## Naming
|
||||
|
||||
`libcurl` operates between clients and servers. A *client* is the application using libcurl, like the command line tool `curl` itself. Data to be uploaded to a server is **read** from the client and **send** to the server, the servers response is **received** by `libcurl` and then **written** to the client.
|
||||
|
||||
With this naming established, client writers are concerned with writing responses from the server to the application. Applications register callbacks via `CURLOPT_WRITEFUNCTION` and `CURLOPT_HEADERFUNCTION` to be invoked by `libcurl` when the response is received.
|
||||
|
||||
## Invoking
|
||||
|
||||
All code in `libcurl` that handles response data is ultimately expected to forward this data via `Curl_client_write()` to the application. The exact prototype of this function is:
|
||||
|
||||
```
|
||||
CURLcode Curl_client_write(struct Curl_easy *data, int type, const char *buf, size_t blen);
|
||||
```
|
||||
The `type` argument specifies what the bytes in `buf` actually are. The following bits are defined:
|
||||
|
||||
```
|
||||
#define CLIENTWRITE_BODY (1<<0) /* non-meta information, BODY */
|
||||
#define CLIENTWRITE_INFO (1<<1) /* meta information, not a HEADER */
|
||||
#define CLIENTWRITE_HEADER (1<<2) /* meta information, HEADER */
|
||||
#define CLIENTWRITE_STATUS (1<<3) /* a special status HEADER */
|
||||
#define CLIENTWRITE_CONNECT (1<<4) /* a CONNECT related HEADER */
|
||||
#define CLIENTWRITE_1XX (1<<5) /* a 1xx response related HEADER */
|
||||
#define CLIENTWRITE_TRAILER (1<<6) /* a trailer HEADER */
|
||||
```
|
||||
|
||||
The main types here are `CLIENTWRITE_BODY` and `CLIENTWRITE_HEADER`. They are
|
||||
mutually exclusive. The other bits are enhancements to `CLIENTWRITE_HEADER` to
|
||||
specify what the header is about. They are only used in HTTP and related
|
||||
protocols (RTSP and WebSocket).
|
||||
|
||||
The implementation of `Curl_client_write()` uses a chain of *client writer* instances to process the call and make sure that the bytes reach the proper application callbacks. This is similar to the design of connection filters: client writers can be chained to process the bytes written through them. The definition is:
|
||||
|
||||
```
|
||||
struct Curl_cwtype {
|
||||
const char *name;
|
||||
CURLcode (*do_init)(struct Curl_easy *data,
|
||||
struct Curl_cwriter *writer);
|
||||
CURLcode (*do_write)(struct Curl_easy *data,
|
||||
struct Curl_cwriter *writer, int type,
|
||||
const char *buf, size_t nbytes);
|
||||
void (*do_close)(struct Curl_easy *data,
|
||||
struct Curl_cwriter *writer);
|
||||
};
|
||||
|
||||
struct Curl_cwriter {
|
||||
const struct Curl_cwtype *cwt; /* type implementation */
|
||||
struct Curl_cwriter *next; /* Downstream writer. */
|
||||
Curl_cwriter_phase phase; /* phase at which it operates */
|
||||
};
|
||||
```
|
||||
|
||||
`Curl_cwriter` is a writer instance with a `next` pointer to form the chain. It has a type `cwt` which provides the implementation. The main callback is `do_write()` that processes the data and calls then the `next` writer. The others are for setup and tear down.
|
||||
|
||||
## Phases and Ordering
|
||||
|
||||
Since client writers may transform the bytes written through them, the order in which the are called is relevant for the outcome. When a writer is created, one property it gets is the `phase` in which it operates. Writer phases are defined like:
|
||||
|
||||
```
|
||||
typedef enum {
|
||||
CURL_CW_RAW, /* raw data written, before any decoding */
|
||||
CURL_CW_TRANSFER_DECODE, /* remove transfer-encodings */
|
||||
CURL_CW_PROTOCOL, /* after transfer, but before content decoding */
|
||||
CURL_CW_CONTENT_DECODE, /* remove content-encodings */
|
||||
CURL_CW_CLIENT /* data written to client */
|
||||
} Curl_cwriter_phase;
|
||||
```
|
||||
|
||||
If a writer for phase `PROTOCOL` is added to the chain, it is always added *after* any `RAW` or `TRANSFER_DECODE` and *before* any `CONTENT_DECODE` and `CLIENT` phase writer. If there is already a writer for the same phase present, the new writer is inserted just before that one.
|
||||
|
||||
All transfers have a chain of 3 writers by default. A specific protocol handler may alter that by adding additional writers. The 3 standard writers are (name, phase):
|
||||
|
||||
1. `"raw", CURL_CW_RAW `: if the transfer is verbose, it forwards the body data to the debug function.
|
||||
1. `"download", CURL_CW_PROTOCOL`: checks that protocol limits are kept and updates progress counters. When a download has a known length, it checks that it is not exceeded and errors otherwise.
|
||||
1. `"client", CURL_CW_CLIENT`: the main work horse. It invokes the application callbacks or writes to the configured file handles. It chops large writes into smaller parts, as documented for `CURLOPT_WRITEFUNCTION`. If also handles *pausing* of transfers when the application callback returns `CURL_WRITEFUNC_PAUSE`.
|
||||
|
||||
With these writers always in place, libcurl's protocol handlers automatically have these implemented.
|
||||
|
||||
## Enhanced Use
|
||||
|
||||
HTTP is the protocol in curl that makes use of the client writer chain by
|
||||
adding writers to it. When the `libcurl` application set
|
||||
`CURLOPT_ACCEPT_ENCODING` (as `curl` does with `--compressed`), the server is
|
||||
offered an `Accept-Encoding` header with the algorithms supported. The server
|
||||
then may choose to send the response body compressed. For example using `gzip`
|
||||
or `brotli` or even both.
|
||||
|
||||
In the server's response, if there is a `Content-Encoding` header listing the
|
||||
encoding applied. If supported by `libcurl` it then decompresses the content
|
||||
before writing it out to the client. How does it do that?
|
||||
|
||||
The HTTP protocol adds client writers in phase `CURL_CW_CONTENT_DECODE` on
|
||||
seeing such a header. For each encoding listed, it adds the corresponding
|
||||
writer. The response from the server is then passed through
|
||||
`Curl_client_write()` to the writers that decode it. If several encodings had
|
||||
been applied the writer chain decodes them in the proper order.
|
||||
|
||||
When the server provides a `Content-Length` header, that value applies to the
|
||||
*compressed* content. Length checks on the response bytes must happen *before*
|
||||
it gets decoded. That is why this check happens in phase `CURL_CW_PROTOCOL`
|
||||
which always is ordered before writers in phase `CURL_CW_CONTENT_DECODE`.
|
||||
|
||||
What else?
|
||||
|
||||
Well, HTTP servers may also apply a `Transfer-Encoding` to the body of a response. The most well-known one is `chunked`, but algorithms like `gzip` and friends could also be applied. The difference to content encodings is that decoding needs to happen *before* protocol checks, for example on length, are done.
|
||||
|
||||
That is why transfer decoding writers are added for phase `CURL_CW_TRANSFER_DECODE`. Which makes their operation happen *before* phase `CURL_CW_PROTOCOL` where length may be checked.
|
||||
|
||||
## Summary
|
||||
|
||||
By adding the common behavior of all protocols into `Curl_client_write()` we make sure that they do apply everywhere. Protocol handler have less to worry about. Changes to default behavior can be done without affecting handler implementations.
|
||||
|
||||
Having a writer chain as implementation allows protocol handlers with extra needs, like HTTP, to add to this for special behavior. The common way of writing the actual response data stays the same.
|
|
@ -0,0 +1,46 @@
|
|||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at https://curl.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# SPDX-License-Identifier: curl
|
||||
#
|
||||
###########################################################################
|
||||
#add_subdirectory(examples)
|
||||
if(BUILD_LIBCURL_DOCS)
|
||||
add_subdirectory(libcurl)
|
||||
endif()
|
||||
if(ENABLE_CURL_MANUAL AND BUILD_CURL_EXE)
|
||||
add_subdirectory(cmdline-opts)
|
||||
endif()
|
||||
|
||||
if(BUILD_MISC_DOCS)
|
||||
foreach(_man_misc IN ITEMS "curl-config" "mk-ca-bundle")
|
||||
set(_man_target "${CURL_BINARY_DIR}/docs/${_man_misc}.1")
|
||||
add_custom_command(OUTPUT "${_man_target}"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
COMMAND "${PERL_EXECUTABLE}" ${PROJECT_SOURCE_DIR}/scripts/cd2nroff "${_man_misc}.md" > "${_man_target}"
|
||||
DEPENDS "${_man_misc}.md"
|
||||
VERBATIM
|
||||
)
|
||||
add_custom_target("curl-generate-${_man_misc}.1" ALL DEPENDS "${_man_target}")
|
||||
if(NOT CURL_DISABLE_INSTALL)
|
||||
install(FILES "${_man_target}" DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
|
@ -0,0 +1,38 @@
|
|||
<!--
|
||||
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
|
||||
SPDX-License-Identifier: curl
|
||||
-->
|
||||
|
||||
Contributor Code of Conduct
|
||||
===========================
|
||||
|
||||
As contributors and maintainers of this project, we pledge to respect all
|
||||
people who contribute through reporting issues, posting feature requests,
|
||||
updating documentation, submitting pull requests or patches, and other
|
||||
activities.
|
||||
|
||||
We are committed to making participation in this project a harassment-free
|
||||
experience for everyone, regardless of level of experience, gender, gender
|
||||
identity and expression, sexual orientation, disability, personal appearance,
|
||||
body size, race, ethnicity, age, or religion.
|
||||
|
||||
Examples of unacceptable behavior by participants include the use of sexual
|
||||
language or imagery, derogatory comments or personal attacks, trolling, public
|
||||
or private harassment, insults, or other unprofessional conduct.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct. Project maintainers who do not
|
||||
follow the Code of Conduct may be removed from the project team.
|
||||
|
||||
This code of conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community.
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by opening an issue or contacting one or more of the project
|
||||
maintainers.
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor
|
||||
Covenant](https://contributor-covenant.org/), version 1.1.0, available at
|
||||
[https://contributor-covenant.org/version/1/1/0/](https://contributor-covenant.org/version/1/1/0/)
|
|
@ -0,0 +1,174 @@
|
|||
<!--
|
||||
Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
|
||||
SPDX-License-Identifier: curl
|
||||
-->
|
||||
|
||||
# How to do code reviews for curl
|
||||
|
||||
Anyone and everyone is encouraged and welcome to review code submissions in
|
||||
curl. This is a guide on what to check for and how to perform a successful
|
||||
code review.
|
||||
|
||||
## All submissions should get reviewed
|
||||
|
||||
All pull requests and patches submitted to the project should be reviewed by
|
||||
at least one experienced curl maintainer before that code is accepted and
|
||||
merged.
|
||||
|
||||
## Let the tools and tests take the first rounds
|
||||
|
||||
On initial pull requests, let the tools and tests do their job first and then
|
||||
start out by helping the submitter understand the test failures and tool
|
||||
alerts.
|
||||
|
||||
## How to provide feedback to author
|
||||
|
||||
Be nice. Ask questions. Provide examples or suggestions of improvements.
|
||||
Assume the best intentions. Remember language barriers.
|
||||
|
||||
All first-time contributors can become regulars. Let's help them go there.
|
||||
|
||||
## Is this a change we want?
|
||||
|
||||
If this is not a change that seems to be aligned with the project's path
|
||||
forward and as such cannot be accepted, inform the author about this sooner
|
||||
rather than later. Do it gently and explain why and possibly what could be
|
||||
done to make it more acceptable.
|
||||
|
||||
## API/ABI stability or changed behavior
|
||||
|
||||
Changing the API and the ABI may be fine in a change but it needs to be done
|
||||
deliberately and carefully. If not, a reviewer must help the author to realize
|
||||
the mistake.
|
||||
|
||||
curl and libcurl are similarly strict on not modifying existing behavior. API
|
||||
and ABI stability is not enough, the behavior should also remain intact as far
|
||||
as possible.
|
||||
|
||||
## Code style
|
||||
|
||||
Most code style nits are detected by checksrc but not all. Only leave remarks
|
||||
on style deviation once checksrc does not find anymore.
|
||||
|
||||
Minor nits from fresh submitters can also be handled by the maintainer when
|
||||
merging, in case it seems like the submitter is not clear on what to do. We
|
||||
want to make the process fun and exciting for new contributors.
|
||||
|
||||
## Encourage consistency
|
||||
|
||||
Make sure new code is written in a similar style as existing code. Naming,
|
||||
logic, conditions, etc.
|
||||
|
||||
## Are pointers always non-NULL?
|
||||
|
||||
If a function or code rely on pointers being non-NULL, take an extra look if
|
||||
that seems to be a fair assessment.
|
||||
|
||||
## Asserts
|
||||
|
||||
Conditions that should never be false can be verified with `DEBUGASSERT()`
|
||||
calls to get caught in tests and debugging easier, while not having an impact
|
||||
on final or release builds.
|
||||
|
||||
## Memory allocation
|
||||
|
||||
Can the mallocs be avoided? Do not introduce mallocs in any hot paths. If
|
||||
there are (new) mallocs, can they be combined into fewer calls?
|
||||
|
||||
Are all allocations handled in error paths to avoid leaks and crashes?
|
||||
|
||||
## Thread-safety
|
||||
|
||||
We do not like static variables as they break thread-safety and prevent
|
||||
functions from being reentrant.
|
||||
|
||||
## Should features be `#ifdef`ed?
|
||||
|
||||
Features and functionality may not be present everywhere and should therefore
|
||||
be `#ifdef`ed. Additionally, some features should be possible to switch on/off
|
||||
in the build.
|
||||
|
||||
Write `#ifdef`s to be as little of a "maze" as possible.
|
||||
|
||||
## Does it look portable enough?
|
||||
|
||||
curl runs "everywhere". Does the code take a reasonable stance and enough
|
||||
precautions to be possible to build and run on most platforms?
|
||||
|
||||
Remember that we live by C89 restrictions.
|
||||
|
||||
## Tests and testability
|
||||
|
||||
New features should be added in conjunction with one or more test cases.
|
||||
Ideally, functions should also be written so that unit tests can be done to
|
||||
test individual functions.
|
||||
|
||||
## Documentation
|
||||
|
||||
New features or changes to existing functionality **must** be accompanied by
|
||||
updated documentation. Submitting that in a separate follow-up pull request is
|
||||
not OK. A code review must also verify that the submitted documentation update
|
||||
matches the code submission.
|
||||
|
||||
English is not everyone's first language, be mindful of this and help the
|
||||
submitter improve the text if it needs a rewrite to read better.
|
||||
|
||||
## Code should not be hard to understand
|
||||
|
||||
Source code should be written to maximize readability and be easy to
|
||||
understand.
|
||||
|
||||
## Functions should not be large
|
||||
|
||||
A single function should never be large as that makes it hard to follow and
|
||||
understand all the exit points and state changes. Some existing functions in
|
||||
curl certainly violate this ground rule but when reviewing new code we should
|
||||
propose splitting into smaller functions.
|
||||
|
||||
## Duplication is evil
|
||||
|
||||
Anything that looks like duplicated code is a red flag. Anything that seems to
|
||||
introduce code that we *should* already have or provide needs a closer check.
|
||||
|
||||
## Sensitive data
|
||||
|
||||
When credentials are involved, take an extra look at what happens with this
|
||||
data. Where it comes from and where it goes.
|
||||
|
||||
## Variable types differ
|
||||
|
||||
`size_t` is not a fixed size. `time_t` can be signed or unsigned and have
|
||||
different sizes. Relying on variable sizes is a red flag.
|
||||
|
||||
Also remember that endianness and >= 32 bit accesses to unaligned addresses
|
||||
are problematic areas.
|
||||
|
||||
## Integer overflows
|
||||
|
||||
Be careful about integer overflows. Some variable types can be either 32 bit
|
||||
or 64 bit. Integer overflows must be detected and acted on *before* they
|
||||
happen.
|
||||
|
||||
## Dangerous use of functions
|
||||
|
||||
Maybe use of `realloc()` should rather use the dynbuf functions?
|
||||
|
||||
Do not allow new code that grows buffers without using dynbuf.
|
||||
|
||||
Use of C functions that rely on a terminating zero must only be used on data
|
||||
that really do have a null-terminating zero.
|
||||
|
||||
## Dangerous "data styles"
|
||||
|
||||
Make extra precautions and verify that memory buffers that need a terminating
|
||||
zero always have exactly that. Buffers *without* a null-terminator must not be
|
||||
used as input to string functions.
|
||||
|
||||
# Commit messages
|
||||
|
||||
Tightly coupled with a code review is making sure that the commit message is
|
||||
good. It is the responsibility of the person who merges the code to make sure
|
||||
that the commit message follows our standard (detailed in the
|
||||
[CONTRIBUTE](CONTRIBUTE.md) document). This includes making sure the PR
|
||||
identifies related issues and giving credit to reporters and helpers.
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue