summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authormonster <[email protected]>2022-07-07 14:41:37 +0300
committermonster <[email protected]>2022-07-07 14:41:37 +0300
commit06e5c21a835c0e923506c4ff27929f34e00761c2 (patch)
tree75efcbc6854ef9bd476eb8bf00cc5c900da436a2 /cmake
parent03f024c4412e3aa613bb543cf1660176320ba8f4 (diff)
fix ya.make
Diffstat (limited to 'cmake')
-rw-r--r--cmake/global_flags.cmake106
-rw-r--r--cmake/global_vars.cmake2
-rw-r--r--cmake/llvm-tools.cmake48
3 files changed, 49 insertions, 107 deletions
diff --git a/cmake/global_flags.cmake b/cmake/global_flags.cmake
deleted file mode 100644
index dc68e42d128..00000000000
--- a/cmake/global_flags.cmake
+++ /dev/null
@@ -1,106 +0,0 @@
-set(CMAKE_C_FLAGS "\
- -m64 \
- -fexceptions \
- -fno-common \
- -fcolor-diagnostics \
- -faligned-allocation \
- -ffunction-sections \
- -fdata-sections \
- -Wall \
- -Wextra \
- -Wno-parentheses \
- -Wno-implicit-const-int-float-conversion \
- -Wno-unknown-warning-option \
- -D_THREAD_SAFE \
- -D_PTHREADS \
- -D_REENTRANT \
- -D_LARGEFILE_SOURCE \
- -D__STDC_CONSTANT_MACROS \
- -D__STDC_FORMAT_MACROS \
- -D_FILE_OFFSET_BITS=64 \
- -D_GNU_SOURCE \
- -D_YNDX_LIBUNWIND_ENABLE_EXCEPTION_BACKTRACE \
- -D__LONG_LONG_SUPPORTED \
- -DSSE_ENABLED=1 \
- -DSSE3_ENABLED=1 \
- -DSSSE3_ENABLED=1 \
- -DSSE41_ENABLED=1 \
- -DSSE42_ENABLED=1 \
- -DPOPCNT_ENABLED=1 \
- -DCX16_ENABLED=1 \
- -D_libunwind_ \
- -DLIBCXX_BUILDING_LIBCXXRT \
- -msse2 \
- -msse3 \
- -mssse3 \
- -msse4.1 \
- -msse4.2 \
- -mpopcnt \
- -mcx16 \
- "
-)
-set(CMAKE_CXX_FLAGS "\
- -m64 \
- -fexceptions \
- -fno-common \
- -fcolor-diagnostics \
- -faligned-allocation \
- -ffunction-sections \
- -fdata-sections \
- -Wall \
- -Wextra \
- -Wno-parentheses \
- -Wno-implicit-const-int-float-conversion \
- -Wno-unknown-warning-option \
- -D_THREAD_SAFE \
- -D_PTHREADS \
- -D_REENTRANT \
- -D_LARGEFILE_SOURCE \
- -D__STDC_CONSTANT_MACROS \
- -D__STDC_FORMAT_MACROS \
- -D_FILE_OFFSET_BITS=64 \
- -D_GNU_SOURCE \
- -D_YNDX_LIBUNWIND_ENABLE_EXCEPTION_BACKTRACE \
- -D__LONG_LONG_SUPPORTED \
- -DSSE_ENABLED=1 \
- -DSSE3_ENABLED=1 \
- -DSSSE3_ENABLED=1 \
- -DSSE41_ENABLED=1 \
- -DSSE42_ENABLED=1 \
- -DPOPCNT_ENABLED=1 \
- -DCX16_ENABLED=1 \
- -D_libunwind_ \
- -DLIBCXX_BUILDING_LIBCXXRT \
- -msse2 \
- -msse3 \
- -mssse3 \
- -msse4.1 \
- -msse4.2 \
- -mpopcnt \
- -mcx16 \
- -Woverloaded-virtual \
- -Wimport-preprocessor-directive-pedantic \
- -Wno-undefined-var-template \
- -Wno-return-std-move \
- -Wno-address-of-packed-member \
- -Wno-defaulted-function-deleted \
- -Wno-pessimizing-move \
- -Wno-range-loop-construct \
- -Wno-deprecated-anon-enum-enum-conversion \
- -Wno-deprecated-enum-enum-conversion \
- -Wno-deprecated-enum-float-conversion \
- -Wno-ambiguous-reversed-operator \
- -Wno-deprecated-volatile \
- "
-)
-add_link_options(
- -nodefaultlibs
- -lc
- -lm
-)
-if (APPLE)
- set(CMAKE_SHARED_LINKER_FLAGS "-undefined dynamic_lookup")
-elseif(UNIX)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-init-array")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-init-array")
-endif()
diff --git a/cmake/global_vars.cmake b/cmake/global_vars.cmake
index 9b3d4248d28..3b48b3cf4a6 100644
--- a/cmake/global_vars.cmake
+++ b/cmake/global_vars.cmake
@@ -6,7 +6,7 @@
# original buildsystem will not be accepted.
-if(UNIX AND NOT APPLE)
+if(UNIX)
set(YASM_FLAGS -f elf64 -D UNIX -D _x86_64_ -D_YASM_ -g dwarf2)
set(BISON_FLAGS -v)
set(RAGEL_FLAGS -L -I ${CMAKE_SOURCE_DIR}/)
diff --git a/cmake/llvm-tools.cmake b/cmake/llvm-tools.cmake
new file mode 100644
index 00000000000..b53345232a5
--- /dev/null
+++ b/cmake/llvm-tools.cmake
@@ -0,0 +1,48 @@
+if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ set(CLANGPLUSPLUS ${CMAKE_CXX_COMPILER})
+ message(STATUS "Using ${CLANGPLUSPLUS} for c++ to LLVM IR translation")
+else()
+ find_program(CLANGPLUSPLUS NAMES clang++-12 clang++)
+ if (CLANGPLUSPLUS MATCHES "CLANGPLUSPLUS-NOTFOUND")
+ message(SEND_ERROR "clang++ not found")
+ else()
+ message(STATUS "Using ${CLANGPLUSPLUS} for c++ to LLVM IR translation")
+ endif()
+endif()
+
+find_program(LLVMLINK NAMES llvm-link-12 llvm-link)
+if (LLVMLINK MATCHES "LLVMLINK-NOTFOUND")
+ message(SEND_ERROR "llvm-link not found")
+else()
+ message(STATUS "Using ${LLVMLINK} for LLVM IR linking")
+endif()
+find_program(LLVMOPT NAMES opt-12 opt)
+if (LLVMOPT MATCHES "LLVMOPT-NOTFOUND")
+ message(SEND_ERROR "llvm opt tool not found")
+else()
+ message(STATUS "Using ${LLVMOPT} for LLVM IR optimization")
+endif()
+
+function(llvm_compile_cxx Tgt Inpt Out Tool)
+ list(APPEND TARGET_INCLUDES "-I$<JOIN:$<TARGET_PROPERTY:${Tgt},INCLUDE_DIRECTORIES>,$<SEMICOLON>-I>")
+ list(APPEND TARGET_COMPILE_OPTIONS "$<JOIN:$<TARGET_PROPERTY:${Tgt},COMPILE_OPTIONS>,$<SEMICOLON>>")
+ get_target_property(TARGET_STANDARD ${Tgt} CXX_STANDARD)
+
+ add_custom_command(
+ OUTPUT ${Out}
+ COMMAND
+ ${Tool}
+ ${TARGET_INCLUDES}
+ ${TARGET_COMPILE_OPTIONS}
+ -std=c++${TARGET_STANDARD}
+ -Wno-unknown-warning-option
+ -fno-lto
+ -emit-llvm
+ -c
+ ${Inpt}
+ -o
+ ${Out}
+ COMMAND_EXPAND_LISTS
+ DEPENDS ${Inpt} ${Tool}
+ )
+endfunction()