scripts/build/internals.sh: compile wrapper with portable options.
static linking is not possible on MacOS, and unnessecary on other systems.
The old optimization and warning flags crash the gcc on MacOS
and (imho) are a bit overdone for this software.
3 # This script is responsible for saving the current configuration into a
4 # sample to be used later on as a pre-configured target.
6 # What we need to save:
8 # - the uClibc .config file if uClibc selected
9 # - info about who reported the sample
11 # Parse the tools' paths configuration
12 . "${CT_LIB_DIR}/paths.mk"
14 # We'll need the stdout later, save it
17 . "${CT_LIB_DIR}/scripts/functions"
19 # Don't care about any log file
21 rm -f "${tmp_log_file}"
23 # Parse the configuration file
24 # Don't use CT_TestOrAbort, it prints the test string to [DEBUG]
25 if [ ! -f .config ]; then
26 CT_Abort "Configuration file not found. Please create one."
30 # We can not reliably save a sample which either uses local patches
31 # and/or custom Linux kernel headers. Warn the user about this issue
32 # and continue if he/she confirms sving the sample.
33 if [ "${CT_CUSTOM_PATCH}" = "y" ]; then
35 echo "You are using local patches."
36 echo "You will not be able to (easily) share this sample in this case."
37 read -p "Press Ctrl-C to stop now, or Enter to continue..."
39 if [ "${CT_KERNEL_LINUX_USE_CUSTOM_HEADERS}" = "y" ]; then
41 echo "You are using custom Linux headers."
42 echo "You will not be able to (easily) share this sample in this case."
43 read -p "Press Ctrl-C to stop now, or Enter to continue..."
46 # Do not use a progress bar
47 unset CT_LOG_PROGRESS_BAR
49 # Parse architecture and kernel specific functions
50 . "${CT_LIB_DIR}/scripts/build/arch/${CT_ARCH}.sh"
51 . "${CT_LIB_DIR}/scripts/build/kernel/${CT_KERNEL}.sh"
53 # Target tuple: CT_TARGET needs a little love:
56 # Kludge: if any of the config options needs either CT_TARGET or CT_TOP_DIR,
60 # Override log options
61 unset CT_LOG_PROGRESS_BAR CT_LOG_ERROR CT_LOG_INFO CT_LOG_EXTRA CT_LOG_DEBUG LOG_ALL
63 CT_LOG_LEVEL_MAX="WARN"
65 # Compute the name of the sample directory
66 case "${CT_TOOLCHAIN_TYPE}" in
67 cross) samp_name="${CT_TARGET}";;
68 canadian) samp_name="${CT_HOST},${CT_TARGET}";;
69 *) CT_Abort "Unsupported toolchain type '${CT_TOOLCHAIN_TYPE}'";;
71 samp_dir="samples/${samp_name}"
72 mkdir -p "${samp_dir}"
74 # Save the crosstool-NG config file
75 "${sed}" -r -e 's|^(CT_PREFIX_DIR)=.*|\1="${HOME}/x-tools/${CT_TARGET}"|;' \
76 -e 's|^# CT_LOG_TO_FILE is not set$|CT_LOG_TO_FILE=y|;' \
77 -e 's|^# CT_LOG_FILE_COMPRESS is not set$|CT_LOG_FILE_COMPRESS=y|;' \
78 -e 's|^(CT_LOCAL_TARBALLS_DIR)=.*|\1="${HOME}/src"|;' \
80 >"${samp_dir}/crosstool.config"
82 # Function to copy a file to the sample directory
83 # Needed in case the file is already there (think of a previously available sample)
84 # Usage: CT_DoAddFileToSample <source> <dest>
85 CT_DoAddFileToSample() {
88 inode_s=$(ls -i "${source}" |awk '{ print $1; }')
89 inode_d=$(ls -i "${dest}" 2>/dev/null |awk '{ print $1; }' || true)
90 if [ "${inode_s}" != "${inode_d}" ]; then
91 cp "${source}" "${dest}"
95 if [ "${CT_TOP_DIR}" = "${CT_LIB_DIR}" ]; then
96 samp_top_dir="\${CT_LIB_DIR}"
98 samp_top_dir="\${CT_TOP_DIR}"
101 # Save the uClibc .config file
102 if [ -n "${CT_LIBC_UCLIBC_CONFIG_FILE}" ]; then
103 # We save the file, and then point the saved sample to this file
104 CT_DoAddFileToSample "${CT_LIBC_UCLIBC_CONFIG_FILE}" "${samp_dir}/${CT_LIBC}-${CT_LIBC_VERSION}.config"
105 "${sed}" -r -i -e 's|^(CT_LIBC_UCLIBC_CONFIG_FILE)=.+$|\1="'"${samp_top_dir}"'/samples/${CT_TARGET}/${CT_LIBC}-${CT_LIBC_VERSION}.config"|;' \
106 "${samp_dir}/crosstool.config"
108 # remove any dangling files
109 for f in "${samp_dir}/${CT_LIBC}-"*.config; do
110 if [ -f "${f}" ]; then rm -f "${f}"; fi
114 # Restore stdout now, to be interactive
117 # Fill-in the reported-by info
118 [ -f "${samp_dir}/reported.by" ] && . "${samp_dir}/reported.by"
119 old_name="${reporter_name}"
120 old_url="${reporter_url}"
121 read -p "Reporter name [${reporter_name}]: " reporter_name
122 read -p "Reporter URL [${reporter_url}]: " reporter_url
123 if [ -n "${reporter_comment}" ]; then
124 echo "Old comment if you need to copy-paste:"
125 printf "${reporter_comment}\n"
127 echo "Reporter comment (Ctrl-D to finish):"
128 reporter_comment=$(cat)
130 ( echo "reporter_name=\"${reporter_name:=${old_name}}\""
131 echo "reporter_url=\"${reporter_url:=${old_url}}\""
132 printf "reporter_comment=\"${reporter_comment}\"\n"
133 ) >"${samp_dir}/reported.by"