intel / intel-graphics-compiler

Other
594 stars 155 forks source link

Building IGC and LLVM from source with `-static-libgcc` and `-static-libstdc++` produces libs of several gigabytes in size #331

Open alucryd opened 3 months ago

alucryd commented 3 months ago

Hi, there seems to be a link issue whenever trying to statically linking libgcc and libstdc++, happens with the last release, also tested 1.0.15468.28:

drwxr-xr-x 2 embybuilder embybuilder 4.0K Jun  7 13:11 igc/
lrwxrwxrwx 1 embybuilder embybuilder   13 Jun  7 13:11 libiga64.so -> libiga64.so.1*
lrwxrwxrwx 1 embybuilder embybuilder   17 Jun  7 13:11 libiga64.so.1 -> libiga64.so.1.0.1*
-rwxr-xr-x 1 embybuilder embybuilder  33M Jun  7 13:11 libiga64.so.1.0.1*
lrwxrwxrwx 1 embybuilder embybuilder   11 Jun  7 13:11 libigc.so -> libigc.so.1*
lrwxrwxrwx 1 embybuilder embybuilder   15 Jun  7 13:11 libigc.so.1 -> libigc.so.1.0.1*
-rwxr-xr-x 1 embybuilder embybuilder 2.4G Jun  7 13:11 libigc.so.1.0.1*
lrwxrwxrwx 1 embybuilder embybuilder   14 Jun  7 13:11 libigdfcl.so -> libigdfcl.so.1*
lrwxrwxrwx 1 embybuilder embybuilder   18 Jun  7 13:11 libigdfcl.so.1 -> libigdfcl.so.1.0.1*
-rwxr-xr-x 1 embybuilder embybuilder  38M Jun  7 13:11 libigdfcl.so.1.0.1*
-rwxr-xr-x 1 embybuilder embybuilder 3.1G Jun  7 13:11 libopencl-clang.so.14*
drwxr-xr-x 2 embybuilder embybuilder 4.0K Jun  7 13:11 pkgconfig/

This does not happen without them:

drwxr-xr-x 2 embybuilder embybuilder 4.0K Jun  7 15:15 igc/
lrwxrwxrwx 1 embybuilder embybuilder   13 Jun  7 15:15 libiga64.so -> libiga64.so.1*
lrwxrwxrwx 1 embybuilder embybuilder   17 Jun  7 15:15 libiga64.so.1 -> libiga64.so.1.0.1*
-rwxr-xr-x 1 embybuilder embybuilder 2.5M Jun  7 15:15 libiga64.so.1.0.1*
lrwxrwxrwx 1 embybuilder embybuilder   11 Jun  7 15:15 libigc.so -> libigc.so.1*
lrwxrwxrwx 1 embybuilder embybuilder   15 Jun  7 15:15 libigc.so.1 -> libigc.so.1.0.1*
-rwxr-xr-x 1 embybuilder embybuilder  83M Jun  7 15:15 libigc.so.1.0.1*
lrwxrwxrwx 1 embybuilder embybuilder   14 Jun  7 15:15 libigdfcl.so -> libigdfcl.so.1*
lrwxrwxrwx 1 embybuilder embybuilder   18 Jun  7 15:15 libigdfcl.so.1 -> libigdfcl.so.1.0.1*
-rwxr-xr-x 1 embybuilder embybuilder 1.9M Jun  7 15:15 libigdfcl.so.1.0.1*
-rwxr-xr-x 1 embybuilder embybuilder 111M Jun  7 15:15 libopencl-clang.so.14*
drwxr-xr-x 2 embybuilder embybuilder 4.0K Jun  7 15:15 pkgconfig/

The compiler is built using GCC from a crosstool toolchain.

CMake command: cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/home/embybuilder/Buildbot/x64/cmake/cross.cmake -DCMAKE_INSTALL_PREFIX=/home/embybuilder/Buildbot/x64/libopencl-intel-graphics-compiler-x64/staging -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_SKIP_RPATH=ON -DIGC_OPTION__ARCHITECTURE_TARGET=Linux64 -DIGC_OPTION__ARCHITECTURE_HOST=Linux64 -DIGC_OPTION__LLVM_MODE=Source -Wno-dev

CMake cross file:

cmake_minimum_required( VERSION 2.8.12 )

set(CMAKE_SYSTEM_NAME "Linux")
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
set(CMAKE_SYSROOT "/home/embybuilder/Buildbot/x64/toolchain/x86_64-emby-linux-gnu/sysroot")
set(CMAKE_FIND_ROOT_PATH "/home/embybuilder/Buildbot/x64/toolchain")
set(CMAKE_C_COMPILER "x86_64-emby-linux-gnu-gcc")
set(CMAKE_CXX_COMPILER "x86_64-emby-linux-gnu-g++")
set(CMAKE_C_COMPILER_LAUNCHER "sccache")
set(CMAKE_CXX_COMPILER_LAUNCHER "sccache")
set(CMAKE_CPP_FLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -I/home/embybuilder/Buildbot/x64/staging/include")
set(CMAKE_C_FLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -I/home/embybuilder/Buildbot/x64/staging/include")
set(CMAKE_CXX_FLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -I/home/embybuilder/Buildbot/x64/staging/include")
set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -static-libgcc -static-libstdc++ -L/home/embybuilder/Buildbot/x64/staging/lib -Wl,-rpath-link,/home/embybuilder/Buildbot/x64/staging/lib")
set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -static-libgcc -static-libstdc++ -L/home/embybuilder/Buildbot/x64/staging/lib -Wl,-rpath-link,/home/embybuilder/Buildbot/x64/staging/lib")

Statically linking these libs is desirable to be more portable, any idea what's going on?