Build entire toolchain as PIC for proper static linking
This commit is contained in:
		
							parent
							
								
									a0384b8b70
								
							
						
					
					
						commit
						654a6d765e
					
				
					 5 changed files with 27 additions and 18 deletions
				
			
		
							
								
								
									
										4
									
								
								build.sh
									
										
									
									
									
								
							
							
						
						
									
										4
									
								
								build.sh
									
										
									
									
									
								
							| 
						 | 
					@ -29,6 +29,7 @@ for script in scripts.d/**/*.sh; do
 | 
				
			||||||
    FF_CFLAGS+=" $(get_output $script cflags)"
 | 
					    FF_CFLAGS+=" $(get_output $script cflags)"
 | 
				
			||||||
    FF_CXXFLAGS+=" $(get_output $script cxxflags)"
 | 
					    FF_CXXFLAGS+=" $(get_output $script cxxflags)"
 | 
				
			||||||
    FF_LDFLAGS+=" $(get_output $script ldflags)"
 | 
					    FF_LDFLAGS+=" $(get_output $script ldflags)"
 | 
				
			||||||
 | 
					    FF_LDEXEFLAGS+=" $(get_output $script ldexeflags)"
 | 
				
			||||||
    FF_LIBS+=" $(get_output $script libs)"
 | 
					    FF_LIBS+=" $(get_output $script libs)"
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,6 +37,7 @@ FF_CONFIGURE="$(xargs <<< "$FF_CONFIGURE")"
 | 
				
			||||||
FF_CFLAGS="$(xargs <<< "$FF_CFLAGS")"
 | 
					FF_CFLAGS="$(xargs <<< "$FF_CFLAGS")"
 | 
				
			||||||
FF_CXXFLAGS="$(xargs <<< "$FF_CXXFLAGS")"
 | 
					FF_CXXFLAGS="$(xargs <<< "$FF_CXXFLAGS")"
 | 
				
			||||||
FF_LDFLAGS="$(xargs <<< "$FF_LDFLAGS")"
 | 
					FF_LDFLAGS="$(xargs <<< "$FF_LDFLAGS")"
 | 
				
			||||||
 | 
					FF_LDEXEFLAGS="$(xargs <<< "$FF_LDEXEFLAGS")"
 | 
				
			||||||
FF_LIBS="$(xargs <<< "$FF_LIBS")"
 | 
					FF_LIBS="$(xargs <<< "$FF_LIBS")"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TESTFILE="uidtestfile"
 | 
					TESTFILE="uidtestfile"
 | 
				
			||||||
| 
						 | 
					@ -57,7 +59,7 @@ docker run --rm -i "${UIDARGS[@]}" -v $PWD/ffbuild:/ffbuild "$IMAGE" bash -s <<E
 | 
				
			||||||
    cd ffmpeg
 | 
					    cd ffmpeg
 | 
				
			||||||
    git checkout $GIT_BRANCH
 | 
					    git checkout $GIT_BRANCH
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ./configure --prefix=/ffbuild/prefix --pkg-config-flags="--static" \$FFBUILD_TARGET_FLAGS $FF_CONFIGURE --extra-cflags='$FF_CFLAGS' --extra-cxxflags='$FF_CXXFLAGS' --extra-ldflags='$FF_LDFLAGS' --extra-libs='$FF_LIBS'
 | 
					    ./configure --prefix=/ffbuild/prefix --pkg-config-flags="--static" \$FFBUILD_TARGET_FLAGS $FF_CONFIGURE --extra-cflags='$FF_CFLAGS' --extra-cxxflags='$FF_CXXFLAGS' --extra-ldflags='$FF_LDFLAGS' --extra-ldexeflags='$FF_LDEXEFLAGS' --extra-libs='$FF_LIBS'
 | 
				
			||||||
    make -j\$(nproc) V=1
 | 
					    make -j\$(nproc) V=1
 | 
				
			||||||
    make install install-doc
 | 
					    make install install-doc
 | 
				
			||||||
EOF
 | 
					EOF
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,13 +20,11 @@ RUN \
 | 
				
			||||||
        -and -not -name 'libdl.*' \
 | 
					        -and -not -name 'libdl.*' \
 | 
				
			||||||
        -and -not -name 'libc.*' \
 | 
					        -and -not -name 'libc.*' \
 | 
				
			||||||
        -and -not -name 'libm.*' \
 | 
					        -and -not -name 'libm.*' \
 | 
				
			||||||
        -and -not -name 'libgomp.*' \
 | 
					 | 
				
			||||||
        -delete && \
 | 
					        -delete && \
 | 
				
			||||||
    find /opt/ct-ng \
 | 
					    find /opt/ct-ng \
 | 
				
			||||||
        -name 'libdl.a' \
 | 
					        -name 'libdl.a' \
 | 
				
			||||||
        -or -name 'libc.a' \
 | 
					        -or -name 'libc.a' \
 | 
				
			||||||
        -or -name 'libm.a' \
 | 
					        -or -name 'libm.a' \
 | 
				
			||||||
        -or -name 'libgomp.a' \
 | 
					 | 
				
			||||||
        -delete
 | 
					        -delete
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ADD toolchain.cmake /toolchain.cmake
 | 
					ADD toolchain.cmake /toolchain.cmake
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -59,7 +59,7 @@ CT_PREFIX_DIR="/opt/ct-ng"
 | 
				
			||||||
CT_RM_RF_PREFIX_DIR=y
 | 
					CT_RM_RF_PREFIX_DIR=y
 | 
				
			||||||
CT_REMOVE_DOCS=y
 | 
					CT_REMOVE_DOCS=y
 | 
				
			||||||
# CT_INSTALL_LICENSES is not set
 | 
					# CT_INSTALL_LICENSES is not set
 | 
				
			||||||
CT_PREFIX_DIR_RO=y
 | 
					# CT_PREFIX_DIR_RO is not set
 | 
				
			||||||
CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y
 | 
					CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y
 | 
				
			||||||
CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES=y
 | 
					CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES=y
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -102,9 +102,9 @@ CT_PATCH_ORDER="bundled"
 | 
				
			||||||
CT_PARALLEL_JOBS=0
 | 
					CT_PARALLEL_JOBS=0
 | 
				
			||||||
CT_LOAD=""
 | 
					CT_LOAD=""
 | 
				
			||||||
CT_USE_PIPES=y
 | 
					CT_USE_PIPES=y
 | 
				
			||||||
CT_EXTRA_CFLAGS_FOR_BUILD=""
 | 
					CT_EXTRA_CFLAGS_FOR_BUILD="-fPIC -DPIC"
 | 
				
			||||||
CT_EXTRA_LDFLAGS_FOR_BUILD=""
 | 
					CT_EXTRA_LDFLAGS_FOR_BUILD=""
 | 
				
			||||||
CT_EXTRA_CFLAGS_FOR_HOST=""
 | 
					CT_EXTRA_CFLAGS_FOR_HOST="-fPIC -DPIC"
 | 
				
			||||||
CT_EXTRA_LDFLAGS_FOR_HOST=""
 | 
					CT_EXTRA_LDFLAGS_FOR_HOST=""
 | 
				
			||||||
# CT_CONFIG_SHELL_SH is not set
 | 
					# CT_CONFIG_SHELL_SH is not set
 | 
				
			||||||
# CT_CONFIG_SHELL_ASH is not set
 | 
					# CT_CONFIG_SHELL_ASH is not set
 | 
				
			||||||
| 
						 | 
					@ -184,7 +184,7 @@ CT_ARCH_SUPPORTS_WITH_ARCH=y
 | 
				
			||||||
CT_ARCH_SUPPORTS_WITH_CPU=y
 | 
					CT_ARCH_SUPPORTS_WITH_CPU=y
 | 
				
			||||||
CT_ARCH_SUPPORTS_WITH_TUNE=y
 | 
					CT_ARCH_SUPPORTS_WITH_TUNE=y
 | 
				
			||||||
CT_ARCH_ARCH=""
 | 
					CT_ARCH_ARCH=""
 | 
				
			||||||
CT_TARGET_CFLAGS=""
 | 
					CT_TARGET_CFLAGS="-fPIC -DPIC"
 | 
				
			||||||
CT_TARGET_LDFLAGS=""
 | 
					CT_TARGET_LDFLAGS=""
 | 
				
			||||||
# end of Target options
 | 
					# end of Target options
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -198,8 +198,6 @@ CT_TARGET_LDFLAGS=""
 | 
				
			||||||
CT_USE_SYSROOT=y
 | 
					CT_USE_SYSROOT=y
 | 
				
			||||||
CT_SYSROOT_NAME="sysroot"
 | 
					CT_SYSROOT_NAME="sysroot"
 | 
				
			||||||
CT_SYSROOT_DIR_PREFIX=""
 | 
					CT_SYSROOT_DIR_PREFIX=""
 | 
				
			||||||
CT_WANTS_STATIC_LINK=y
 | 
					 | 
				
			||||||
CT_WANTS_STATIC_LINK_CXX=y
 | 
					 | 
				
			||||||
# CT_STATIC_TOOLCHAIN is not set
 | 
					# CT_STATIC_TOOLCHAIN is not set
 | 
				
			||||||
CT_SHOW_CT_VERSION=y
 | 
					CT_SHOW_CT_VERSION=y
 | 
				
			||||||
CT_TOOLCHAIN_PKGVERSION=""
 | 
					CT_TOOLCHAIN_PKGVERSION=""
 | 
				
			||||||
| 
						 | 
					@ -523,9 +521,9 @@ CT_GLIBC_HAS_LIBIDN_ADDON=y
 | 
				
			||||||
# CT_GLIBC_USE_LIBIDN_ADDON is not set
 | 
					# CT_GLIBC_USE_LIBIDN_ADDON is not set
 | 
				
			||||||
CT_GLIBC_NO_SPARC_V8=y
 | 
					CT_GLIBC_NO_SPARC_V8=y
 | 
				
			||||||
CT_GLIBC_HAS_OBSOLETE_RPC=y
 | 
					CT_GLIBC_HAS_OBSOLETE_RPC=y
 | 
				
			||||||
CT_GLIBC_EXTRA_CONFIG_ARRAY="--with-pic --enable-static-pie"
 | 
					CT_GLIBC_EXTRA_CONFIG_ARRAY="--with-pic"
 | 
				
			||||||
CT_GLIBC_CONFIGPARMS=""
 | 
					CT_GLIBC_CONFIGPARMS=""
 | 
				
			||||||
CT_GLIBC_EXTRA_CFLAGS=""
 | 
					CT_GLIBC_EXTRA_CFLAGS="-fPIC -DPIC"
 | 
				
			||||||
CT_GLIBC_ENABLE_OBSOLETE_RPC=y
 | 
					CT_GLIBC_ENABLE_OBSOLETE_RPC=y
 | 
				
			||||||
# CT_GLIBC_ENABLE_FORTIFIED_BUILD is not set
 | 
					# CT_GLIBC_ENABLE_FORTIFIED_BUILD is not set
 | 
				
			||||||
# CT_GLIBC_DISABLE_VERSIONING is not set
 | 
					# CT_GLIBC_DISABLE_VERSIONING is not set
 | 
				
			||||||
| 
						 | 
					@ -617,9 +615,9 @@ CT_GCC_4_8_or_later=y
 | 
				
			||||||
CT_CC_GCC_ENABLE_PLUGINS=y
 | 
					CT_CC_GCC_ENABLE_PLUGINS=y
 | 
				
			||||||
CT_CC_GCC_HAS_LIBMPX=y
 | 
					CT_CC_GCC_HAS_LIBMPX=y
 | 
				
			||||||
CT_CC_GCC_ENABLE_CXX_FLAGS=""
 | 
					CT_CC_GCC_ENABLE_CXX_FLAGS=""
 | 
				
			||||||
CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="--enable-host-shared --enable-default-pie --enable-default-ssp"
 | 
					CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="--enable-host-shared --enable-default-ssp"
 | 
				
			||||||
CT_CC_GCC_EXTRA_CONFIG_ARRAY="--enable-host-shared --enable-default-pie --enable-default-ssp"
 | 
					CT_CC_GCC_EXTRA_CONFIG_ARRAY="--enable-host-shared --enable-default-ssp"
 | 
				
			||||||
CT_CC_GCC_STATIC_LIBSTDCXX=y
 | 
					# CT_CC_GCC_STATIC_LIBSTDCXX is not set
 | 
				
			||||||
# CT_CC_GCC_SYSTEM_ZLIB is not set
 | 
					# CT_CC_GCC_SYSTEM_ZLIB is not set
 | 
				
			||||||
CT_CC_GCC_CONFIG_TLS=m
 | 
					CT_CC_GCC_CONFIG_TLS=m
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -632,13 +630,13 @@ CT_CC_GCC_USE_LTO=y
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Settings for libraries running on target
 | 
					# Settings for libraries running on target
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y
 | 
					# CT_CC_GCC_ENABLE_TARGET_OPTSPACE is not set
 | 
				
			||||||
# CT_CC_GCC_LIBMUDFLAP is not set
 | 
					# CT_CC_GCC_LIBMUDFLAP is not set
 | 
				
			||||||
CT_CC_GCC_LIBGOMP=y
 | 
					CT_CC_GCC_LIBGOMP=y
 | 
				
			||||||
CT_CC_GCC_LIBSSP=m
 | 
					CT_CC_GCC_LIBSSP=m
 | 
				
			||||||
# CT_CC_GCC_LIBQUADMATH is not set
 | 
					# CT_CC_GCC_LIBQUADMATH is not set
 | 
				
			||||||
# CT_CC_GCC_LIBSANITIZER is not set
 | 
					# CT_CC_GCC_LIBSANITIZER is not set
 | 
				
			||||||
CT_CC_GCC_LIBMPX=y
 | 
					# CT_CC_GCC_LIBMPX is not set
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# Misc. obscure options.
 | 
					# Misc. obscure options.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,9 +20,12 @@ ffbuild_dockerbuild() {
 | 
				
			||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ffbuild_configure() {
 | 
					ffbuild_ldexeflags() {
 | 
				
			||||||
 | 
					    echo '-pie'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if [[ $VARIANT == *shared* ]]; then
 | 
					    if [[ $VARIANT == *shared* ]]; then
 | 
				
			||||||
        # Can't escape escape hell
 | 
					        # Can't escape escape hell
 | 
				
			||||||
        echo --extra-ldexeflags=\'-Wl,-rpath='\\\\\\\$\\\$ORIGIN'\\ -Wl,-rpath='\\\\\\\$\\\$ORIGIN/../lib'\'
 | 
					        echo -Wl,-rpath='\\\\\\\$\\\$ORIGIN'
 | 
				
			||||||
 | 
					        echo -Wl,-rpath='\\\\\\\$\\\$ORIGIN/../lib'
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -71,6 +71,14 @@ ffbuild_uncxxflags() {
 | 
				
			||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ffbuild_ldexeflags() {
 | 
				
			||||||
 | 
					    return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ffbuild_unldexeflags() {
 | 
				
			||||||
 | 
					    return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ffbuild_ldflags() {
 | 
					ffbuild_ldflags() {
 | 
				
			||||||
    return 0
 | 
					    return 0
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue