aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsnermolaev <snermolaev@yandex-team.ru>2022-05-13 08:57:14 +0300
committersnermolaev <snermolaev@yandex-team.ru>2022-05-13 08:57:14 +0300
commit91b6031857dda86e99b4862f25809da4cf03f340 (patch)
tree9ec5617864979cebe06e82767207ea7f7e708449
parentd4548f890bf1430e2a826c0a4aea3a48fd1d6ff6 (diff)
downloadydb-91b6031857dda86e99b4862f25809da4cf03f340.tar.gz
SRC_C_* macros to process both C and C++ source files
ref:9e6952121af22d52d3dd000527b5ab07dc0c11d1
-rw-r--r--build/ymake.core.conf190
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