From 0c9995c79a68e019d24cfbfdbe0f5268854719c5 Mon Sep 17 00:00:00 2001 From: midipix Date: Sun, 16 Aug 2020 08:27:18 +0000 Subject: build system: ccenv: ccenv_set_primary_tools(): added archive format support. --- sofort/ccenv/ccenv.in | 1 + sofort/ccenv/ccenv.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ sofort/ccenv/ccenv.vars | 1 + 3 files changed, 44 insertions(+) diff --git a/sofort/ccenv/ccenv.in b/sofort/ccenv/ccenv.in index f12c78e..a8a07e3 100644 --- a/sofort/ccenv/ccenv.in +++ b/sofort/ccenv/ccenv.in @@ -24,6 +24,7 @@ OS_LIB_SUFFIXED_SUFFIX = @ccenv_os_lib_suffixed_suffix@ CC_HOST = @ccenv_cc_host@ CC_BITS = @ccenv_cc_bits@ +CC_ARFMT = @ccenv_cc_arfmt@ CC_BINFMT = @ccenv_cc_binfmt@ CC_UNDERSCORE = @ccenv_cc_underscore@ diff --git a/sofort/ccenv/ccenv.sh b/sofort/ccenv/ccenv.sh index c026030..52ad423 100644 --- a/sofort/ccenv/ccenv.sh +++ b/sofort/ccenv/ccenv.sh @@ -226,6 +226,48 @@ ccenv_set_primary_tools() # windrc ccenv_windrc="$ccenv_windres" + + # archive format preamble + ccenv_libgcc_a_header=$(od -b -N8 $($ccenv_cc -print-file-name=libgcc.a) | head -n1) + ccenv_cc_arfmt='common' + + # ar (big) + ccenv_bigaf_header=$(printf '%s\n' '' | od -b | head -n1) + + if [ "$ccenv_libgcc_a_header" = "$ccenv_bigaf_header" ]; then + ccenv_cc_arfmt='bigaf' + + for __tool in $(printf '%s' "$ccenv_core_tools"); do + ccenv_var_name=ccenv_$__tool + ccenv_var_expr='${'$ccenv_var_name':-}' + eval ccenv_var_val="$ccenv_var_expr" + + if [ "$ccenv_var_val" != false ]; then + ccenv_var_val="$ccenv_var_val -X64" + ccenv_var_expr='${ccenv_var_val:-}' + eval ccenv_$__tool="$ccenv_var_expr" + fi + done + fi + + # ar (small) + ccenv_aiaff_header=$(printf '%s\n' '' | od -b | head -n1) + + if [ "$ccenv_libgcc_a_header" = "$ccenv_aiaff_header" ]; then + ccenv_cc_arfmt='aiaff' + + for __tool in $(printf '%s' "$ccenv_core_tools"); do + ccenv_var_name=ccenv_$__tool + ccenv_var_expr='${'$ccenv_var_name':-}' + eval ccenv_var_val="$ccenv_var_expr" + + if [ "$ccenv_var_val" != false ]; then + ccenv_var_val="$ccenv_var_val -X32" + ccenv_var_expr='${ccenv_var_val:-}' + eval ccenv_$__tool="$ccenv_var_expr" + fi + done + fi } ccenv_set_tool_variants() diff --git a/sofort/ccenv/ccenv.vars b/sofort/ccenv/ccenv.vars index 4775b37..6d9fc3a 100644 --- a/sofort/ccenv/ccenv.vars +++ b/sofort/ccenv/ccenv.vars @@ -24,6 +24,7 @@ ccenv_os_lib_suffixed_suffix= ccenv_cc_host= ccenv_cc_bits= +ccenv_cc_arfmt= ccenv_cc_binfmt= ccenv_cc_underscore= -- cgit v1.2.3