diff options
author | snermolaev <snermolaev@yandex-team.ru> | 2022-05-13 08:57:14 +0300 |
---|---|---|
committer | snermolaev <snermolaev@yandex-team.ru> | 2022-05-13 08:57:14 +0300 |
commit | 91b6031857dda86e99b4862f25809da4cf03f340 (patch) | |
tree | 9ec5617864979cebe06e82767207ea7f7e708449 | |
parent | d4548f890bf1430e2a826c0a4aea3a48fd1d6ff6 (diff) | |
download | ydb-91b6031857dda86e99b4862f25809da4cf03f340.tar.gz |
SRC_C_* macros to process both C and C++ source files
ref:9e6952121af22d52d3dd000527b5ab07dc0c11d1
-rw-r--r-- | build/ymake.core.conf | 190 |
1 files changed, 132 insertions, 58 deletions
diff --git a/build/ymake.core.conf b/build/ymake.core.conf index 845f26f0f8..737a0963d3 100644 --- a/build/ymake.core.conf +++ b/build/ymake.core.conf @@ -6167,139 +6167,213 @@ macro SRCS(FILES...) { } } -# tag:cpu tag:src-processing -### @usage SRC_C_SSE2(File Flags...) -### Compile single .c-file with SSE2 and extra Flags. +# tag:src-specific tag:cpp-specific +### @usage: _SRC_STRICT_C_CPP(Ext MacroName File Flags...) # internal +### +### Defenition of generic macro. Report an error that the File with Ext is not +### supported by macro MacroName if no appropriate macro specialization is found. +macro _SRC_STRICT_C_CPP(EXT, MACRO_NAME, FILE, FLAGS...) { + MESSAGE(FATAL_ERROR macro [[alt1]]$MACRO_NAME[[rst]] does not support files with [[imp]].$EXT[[rst]] extension) +} + +# tag:src-specific tag:cpp-specific +### @usage: _SRC_STRICT_C_CPP(Ext MacroName File Flags...) # internal +### +### Specialization of genreric macro _SRC_STRICT_C_CPP which compiles a single C file (with .c extension) +macro _SRC_STRICT_C_CPP("c", MACRO_NAME, FILE, FLAGS...) { + _SRC(c $FILE $FLAGS) +} + +# tag:src-specific tag:cpp-specific +### @usage: _SRC_STRICT_C_CPP(Ext MacroName File Flags...) # internal +### +### Specialization of genreric macro _SRC_STRICT_C_CPP which compiles a single Cpp file (with .cpp extension) +macro _SRC_STRICT_C_CPP("cpp", MACRO_NAME, FILE, FLAGS...) { + _SRC(cpp $FILE $FLAGS) +} + +# tag:src-specific tag:cpp-specific +### @usage: _SRC_STRICT_C_CPP(Ext MacroName File Flags...) # internal +### +### Specialization of genreric macro _SRC_STRICT_C_CPP which compiles a single Cpp file (with .cxx extension) +macro _SRC_STRICT_C_CPP("cxx", MACRO_NAME, FILE, FLAGS...) { + _SRC(cpp $FILE $FLAGS) +} + +# tag:src-specific tag:cpp-specific +### @usage: _SRC_STRICT_C_CPP(Ext MacroName File Flags...) # internal +### +### Specialization of genreric macro _SRC_STRICT_C_CPP which compiles a single Cpp file (with .cc extension) +macro _SRC_STRICT_C_CPP("cc", MACRO_NAME, FILE, FLAGS...) { + _SRC(cpp $FILE $FLAGS) +} + +# tag:src-specific tag:cpp-specific +### @usage: _SRC_STRICT_C_CPP(Ext MacroName File Flags...) # internal +### +### Specialization of genreric macro _SRC_STRICT_C_CPP which compiles a single Cpp file (with .C extension) +macro _SRC_STRICT_C_CPP("C", MACRO_NAME, FILE, FLAGS...) { + _SRC(cpp $FILE $FLAGS) +} + +# tag:src-specific tag:cpp-specific tag:cpu +### @uasge SRC_C_SSE2(File Flags...) +### +### Compile a single C/C++ file with SSE2 and additional Flags macro SRC_C_SSE2(FILE, FLAGS...) { - _SRC(c $FILE $SSE2_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .sse2) + _SRC_STRICT_C_CPP(${lastext:FILE} SRC_C_SSE2 $FILE $SSE2_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .sse2) } -# tag:cpu tag:src-processing -### @usage SRC_C_SSE3(File Flags...) -### Compile single .c-file with SSE3 and extra Flags. +# tag:src-specific tag:cpp-specific tag:cpu +### @uasge SRC_C_SSE3(File Flags...) +### +### Compile a single C/C++ file with SSE3 and additional Flags macro SRC_C_SSE3(FILE, FLAGS...) { - _SRC(c $FILE $SSE3_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .sse3) + _SRC_STRICT_C_CPP(${lastext:FILE} SRC_C_SSE3 $FILE $SSE3_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .sse3) } -# tag:cpu tag:src-processing -### @usage SRC_C_SSSE3(File Flags...) -### Compile single .c-file with SSSE3 and extra Flags. +# tag:src-specific tag:cpp-specific tag:cpu +### @uasge SRC_C_SSSE3(File Flags...) +### +### Compile a single C/C++ file with SSSE3 and additional Flags macro SRC_C_SSSE3(FILE, FLAGS...) { - _SRC(c $FILE $SSSE3_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .ssse3) + _SRC_STRICT_C_CPP(${lastext:FILE} SRC_C_SSSE3 $FILE $SSSE3_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .ssse3) } -# tag:cpu tag:src-processing -### @usage SRC_C_SSE41(File Flags...) -### Compile single .c-file with SSE4.1 and extra Flags. +# tag:src-specific tag:cpp-specific tag:cpu +### @uasge SRC_C_SSE4(File Flags...) +### +### Compile a single C/C++ file with SSE4 and additional Flags +macro SRC_C_SSE4(FILE, FLAGS...) { + _SRC_STRICT_C_CPP(${lastext:FILE} SRC_C_SSE4 $FILE $SSE4_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .sse4) +} + +# tag:src-specific tag:cpp-specific tag:cpu +### @uasge SRC_C_SSE41(File Flags...) +### +### Compile a single C/C++ file with SSE4.1 and additional Flags macro SRC_C_SSE41(FILE, FLAGS...) { - _SRC(c $FILE $SSE41_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .sse41) + _SRC_STRICT_C_CPP(${lastext:FILE} SRC_C_SSE41 $FILE $SSE41_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .sse41) } -# tag:cpu tag:src-processing -### @usage SRC_C_SSE4(File Flags...) -### Compile single .c-file with SSE4 (SSE4.1, SSE4.2 and POPCNT) and extra Flags. -macro SRC_C_SSE4(FILE, FLAGS...) { - _SRC(c $FILE $SSE4_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .sse4) +# tag:src-specific tag:cpp-specific tag:cpu +### @uasge SRC_C_AVX(File Flags...) +### +### Compile a single C/C++ file with AVX and additional Flags +macro SRC_C_AVX(FILE, FLAGS...) { + _SRC_STRICT_C_CPP(${lastext:FILE} SRC_C_AVX $FILE $AVX_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .avx) } -# tag:cpu tag:src-processing -### @usage SRC_C_SSE4(File Flags...) -### Compile single .c-file with XOP -### (an AMD-specific instruction set, see https://en.wikipedia.org/wiki/XOP_instruction_set) -### and extra Flags (optional) -macro SRC_C_XOP(FILE, FLAGS...) { - _SRC(c $FILE $XOP_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .xop) +# tag:src-specific tag:cpp-specific tag:cpu +### @uasge SRC_C_AVX2(File Flags...) +### +### Compile a single C/C++ file with AVX2 and additional Flags +macro SRC_C_AVX2(FILE, FLAGS...) { + _SRC_STRICT_C_CPP(${lastext:FILE} SRC_C_AVX2 $FILE $AVX2_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .avx2) } -# tag:cpu tag:src-processing -### @usage SRC_C_PCLMUL(File Flags...) -### Compile single .c-file with PCLMUL instruction enabled -macro SRC_C_PCLMUL(FILE) { - _SRC(c $FILE $PCLMUL_CFLAGS COMPILE_OUT_SUFFIX .pclmul) +# tag:src-specific tag:cpp-specific tag:cpu +### @uasge SRC_C_AVX512(File Flags...) +### +### Compile a single C/C++ file with AVX512 and additional Flags +macro SRC_C_AVX512(FILE, FLAGS...) { + _SRC_STRICT_C_CPP(${lastext:FILE} SRC_C_AVX512 $FILE $AVX512_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .avx512) } -# tag:cpu tag:src-processing -### @usage SRC_C_AVX(File Flags...) -### Compile single .c-file with AVX and extra Flags. -macro SRC_C_AVX(FILE, FLAGS...) { - _SRC(c $FILE $AVX_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .avx) +# tag:src-specific tag:cpp-specific tag:cpu +### @uasge SRC_C_XOP(File Flags...) +### +### Compile a single C/C++ file with (an AMD-specific instruction set, +### see https://en.wikipedia.org/wiki/XOP_instruction_set) and additional Flags +macro SRC_C_XOP(FILE, FLAGS...) { + _SRC_STRICT_C_CPP(${lastext:FILE} SRC_C_XOP $FILE $XOP_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .xop) } -# tag:cpu tag:src-processing -### @usage SRC_C_AVX2(File Flags...) -### Compile single .c-file with AVX2 and extra Flags. -macro SRC_C_AVX2(FILE, FLAGS...) { - _SRC(c $FILE $AVX2_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .avx2) +# tag:src-specific tag:cpp-specific tag:cpu +### @uasge SRC_C_PCLMUL(File Flags...) +### +### Compile a single C/C++ file with PCLMUL and additional Flags +macro SRC_C_PCLMUL(FILE, FLAGS...) { + _SRC_STRICT_C_CPP(${lastext:FILE} SRC_C_PCLMUL $FILE $PCLMUL_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .pclmul) } -# tag:cpu tag:src-processing -### @usage SRC_C_AVX512(File Flags...) -### Compile single .c-file with AVX512 extension enabled -macro SRC_C_AVX512(FILE, FLAGS...) { - _SRC(c $FILE $AVX512_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .avx512) +# tag:src-specific tag:cpp-specific +### @uasge SRC_C_PIC(File Flags...) +### +### Compile a single C/C++ file with -fPIC and additional Flags +macro SRC_C_PIC(FILE, FLAGS...) { + _SRC_STRICT_C_CPP(${lastext:FILE} SRC_C_PIC $FILE $PIC_CFLAGS $FLAGS) } # tag:cpu tag:src-processing ### @usage SRC_CPP_PIC(File Flags...) ### Compile single .c-file with -fPIC and extra Flags. macro SRC_CPP_PIC(FILE, FLAGS...) { - _SRC(cpp $FILE $PIC_CFLAGS $FLAGS) + SRC_C_PIC($FILE $FLAGS) +} + +# tag:src-specific tag:cpp-specific +### @uasge SRC_C_NO_LTO(File Flags...) +### +### Compile a single C/C++ file with link-time-optimization disabling and additional Flags +macro SRC_C_NO_LTO(FILE, FLAGS...) { + _SRC_STRICT_C_CPP(${lastext:FILE} SRC_C_NO_LTO $FILE $NO_LTO_CFLAGS $FLAGS) } # tag:cpu tag:src-processing ### @usage SRC_CPP_NO_LTO(File) ### Compile single .cpp file with link-time-optimization disabled -macro SRC_CPP_NO_LTO(FILE) { - _SRC(cpp $FILE $NO_LTO_CFLAGS) +macro SRC_CPP_NO_LTO(FILE, FLAGS...) { + SRC_C_NO_LTO($FILE $FLAGS) } # tag:cpu tag:src-processing ### @usage SRC_CPP_SSE2(File Flags...) ### Compile single .cpp-file with SSE2 and extra Flags. macro SRC_CPP_SSE2(FILE, FLAGS...) { - _SRC(cpp $FILE $SSE2_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .sse2) + SRC_C_SSE2($FILE $FLAGS) } # tag:cpu tag:src-processing ### @usage SRC_CPP_SSE3(File Flags...) ### Compile single .cpp-file with SSE3 and extra Flags. macro SRC_CPP_SSE3(FILE, FLAGS...) { - _SRC(cpp $FILE $SSE3_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .sse3) + SRC_C_SSE3($FILE $FLAGS) } # tag:cpu tag:src-processing ### @usage SRC_CPP_SSSE3(File Flags...) ### Compile single .cpp-file with SSSE3 and extra Flags. macro SRC_CPP_SSSE3(FILE, FLAGS...) { - _SRC(cpp $FILE $SSSE3_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .sss3) + SRC_C_SSSE3($FILE $FLAGS) } # tag:cpu tag:src-processing ### @usage SRC_CPP_SSE41(File Flags...) ### Compile single .cpp-file with SSE4.1 and extra Flags. macro SRC_CPP_SSE41(FILE, FLAGS...) { - _SRC(cpp $FILE $SSE41_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .sse41) + SRC_C_SSE41($FILE $FLAGS) } # tag:cpu tag:src-processing ### @usage SRC_CPP_SSE4(File Flags...) ### Compile single .cpp-file with SSE4 (SSE4.1, SSE4.2 and POPCNT) and extra Flags. macro SRC_CPP_SSE4(FILE, FLAGS...) { - _SRC(cpp $FILE $SSE4_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .sse4) + SRC_C_SSE4($FILE $FLAGS) } # tag:cpu tag:src-processing ### @usage SRC_CPP_AVX(File Flags...) ### Compile single .cpp-file with AVX and extra Flags. macro SRC_CPP_AVX(FILE, FLAGS...) { - _SRC(cpp $FILE $AVX_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .avx) + SRC_C_AVX($FILE $FLAGS) } # tag:cpu tag:src-processing ### @usage SRC_CPP_AVX2(File Flags...) ### Compile single .cpp-file with AVX2 and extra Flags. macro SRC_CPP_AVX2(FILE, FLAGS...) { - _SRC(cpp $FILE $AVX2_CFLAGS $FLAGS COMPILE_OUT_SUFFIX .avx2) + SRC_C_AVX2($FILE $FLAGS) } # tag:python-processing tag:cython |