Skip to content

Commit

Permalink
Merge branch 'feature-compile-for-newer-cpus'
Browse files Browse the repository at this point in the history
  • Loading branch information
Panzerschrek committed Oct 7, 2024
2 parents 3f29c46 + af756b8 commit 18e7bff
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 4 deletions.
2 changes: 1 addition & 1 deletion ci/build_emscripten.sh
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ sed -i -e "s/-DLLVM_TARGET_IS_CROSSCOMPILE_HOST=TRUE/-DLLVM_TARGET_IS_CROSSCOMPI
# Configure build
mkdir build &&\
cd build &&\
cmake ../source/ -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=emcc -DCMAKE_CXX_COMPILER=emcc -DLLVM_SRC_DIR=../llvm-15.0.7.src/ -DU_EXTERNAL_LLVM_AS=$PWD/../clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04/bin/llvm-as -DU_EMSCRIPTEN=YES -DU_BUILD_COMPILER=NO -DU_BUILD_COMPILER1=NO -DU_BUILD_CPP_HEADER_CONVERTER=NO -DU_BUILD_LANGUAGE_SERVER=NO -DU_BUILD_TESTS=NO -DU_BUILD_PY_TESTS=NO -DU_BUILD_LINKAGE_TESTS=NO -DUBUILD_DOCS=NO -DU_BUILD_INTERPRETER=YES -DLLVM_TARGETS_TO_BUILD="" -DLLVM_BUILD_BENCHMARKS=OFF -DLLVM_INCLUDE_BENCHMARKS=OFF -DLLVM_BUILD_DOCS=OFF -DLLVM_BUILD_EXAMPLES=OFF -DLLVM_BUILD_TESTS=OFF &&\
cmake ../source/ -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=$PWD/../emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DEMSCRIPTEN_SYSTEM_PROCESSOR=wasm -DCMAKE_C_COMPILER=emcc -DCMAKE_CXX_COMPILER=emcc -DLLVM_SRC_DIR=../llvm-15.0.7.src/ -DU_EXTERNAL_LLVM_AS=$PWD/../clang+llvm-15.0.6-x86_64-linux-gnu-ubuntu-18.04/bin/llvm-as -DU_EMSCRIPTEN=YES -DU_BUILD_COMPILER=NO -DU_BUILD_COMPILER1=NO -DU_BUILD_CPP_HEADER_CONVERTER=NO -DU_BUILD_LANGUAGE_SERVER=NO -DU_BUILD_TESTS=NO -DU_BUILD_PY_TESTS=NO -DU_BUILD_LINKAGE_TESTS=NO -DUBUILD_DOCS=NO -DU_BUILD_INTERPRETER=YES -DLLVM_TARGETS_TO_BUILD="" -DLLVM_BUILD_BENCHMARKS=OFF -DLLVM_INCLUDE_BENCHMARKS=OFF -DLLVM_BUILD_DOCS=OFF -DLLVM_BUILD_EXAMPLES=OFF -DLLVM_BUILD_TESTS=OFF &&\
\
# Run build
cmake --build .
21 changes: 21 additions & 0 deletions source/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,27 @@ if( MSVC )
add_definitions( -D_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS )
endif()

#
# Global codegen options (for both Ü and dependencies).
#

if( CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64" )
message( "Target architecture seems to be x86_64 (${CMAKE_SYSTEM_PROCESSOR}), turn on modern instructions support" )

# Use a CPU from year 2015 or newer. It seems to be fine to avoid using older CPUs.
set( SPRACHE_TARGET_CPU_NAME skylake )
set( SPRACHE_COMPILER_ARCH_OPTIONS -mcpu=${SPRACHE_TARGET_CPU_NAME} )

if(MSVC)
add_compile_options( /arch:AVX2 )
else()
add_compile_options( -march=${SPRACHE_TARGET_CPU_NAME} )
endif()

else()
message( "Target architecture is not x86_64 (${CMAKE_SYSTEM_PROCESSOR})" )
endif()

#
# External dependencies
#
Expand Down
7 changes: 4 additions & 3 deletions source/compiler1/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ else()
set( SPRACHE_COMPILER_OPT_OPTIONS -O2 )
endif()


# Build rule for "Ü" files.
function( CompileUSource u_source_file out_object )
file( RELATIVE_PATH current_subdir ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR} )
Expand All @@ -32,7 +33,7 @@ function( CompileUSource u_source_file out_object )
-o ${current_subdir}/${u_source_file_relative}.bc
-MF ${CMAKE_CURRENT_BINARY_DIR}/${u_source_file_relative}.d
--verify-module
${SPRACHE_COMPILER_OPT_OPTIONS} ${SPRACHE_COMPILER_PIC_OPTIONS}
${SPRACHE_COMPILER_OPT_OPTIONS} ${SPRACHE_COMPILER_PIC_OPTIONS} ${SPRACHE_COMPILER_ARCH_OPTIONS}
--include-dir ${CMAKE_CURRENT_SOURCE_DIR}/../ustlib/
--include-dir ${CMAKE_CURRENT_SOURCE_DIR}/
--include-dir ${CMAKE_CURRENT_BINARY_DIR}/
Expand All @@ -51,7 +52,7 @@ function( CompileUSource u_source_file out_object )
-o ${current_subdir}/${u_source_file_relative}.o
-MF ${CMAKE_CURRENT_BINARY_DIR}/${u_source_file_relative}.d
--verify-module
${SPRACHE_COMPILER_OPT_OPTIONS} ${SPRACHE_COMPILER_PIC_OPTIONS}
${SPRACHE_COMPILER_OPT_OPTIONS} ${SPRACHE_COMPILER_PIC_OPTIONS} ${SPRACHE_COMPILER_ARCH_OPTIONS}
--data-sections --function-sections # Put symbols into section in order to remove unused functions during linking.
--symbols-visibility=hidden # Make functions and variables hidden to avoid exporting them in ELF shared libraries (*.so)
--include-dir ${CMAKE_CURRENT_SOURCE_DIR}/../ustlib/
Expand Down Expand Up @@ -148,7 +149,7 @@ if( COMPILER1_LTO )
COMMAND
Compiler${CURRENT_COMPILER_GENERATION}
${LEX_SYNT_LIB_OBJECTS} ${CODE_BUILDER_LIB_OBJECTS} ${LAUNCHERS_COMMON_OBJECTS}
${SPRACHE_COMPILER_OPT_OPTIONS} ${SPRACHE_COMPILER_PIC_OPTIONS}
${SPRACHE_COMPILER_OPT_OPTIONS} ${SPRACHE_COMPILER_PIC_OPTIONS} ${SPRACHE_COMPILER_ARCH_OPTIONS}
-o ${CODE_BUILDER_LIB_O}
--input-filetype=bc
-lto-mode=link
Expand Down

0 comments on commit 18e7bff

Please sign in to comment.