diff --git a/Makefile b/Makefile index b5e86dc..afd1f88 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ SOURCES = sources CONFIG_SUB_REV = 28ea239c53a2 -GCC_VER = 13.2.0 +GCC_VER = 11.4.0 MUSL_VER = 1.2.4 BINUTILS_VER = 2.41 GMP_VER = 6.3.0 diff --git a/litecross/Makefile b/litecross/Makefile index 5463a7e..c2425d7 100644 --- a/litecross/Makefile +++ b/litecross/Makefile @@ -29,30 +29,6 @@ ifeq ($(CPUS),) CPUS = $(shell if command -v nproc >/dev/null 2>&1; then nproc; else echo 1; fi) endif -ifeq ($(CC_COMPILER),) -FULL_CC = gcc -else -FULL_CC = $(CC_COMPILER) -endif - -ifeq ($(CXX_COMPILER),) -FULL_CXX = g++ -else -FULL_CXX = $(CXX_COMPILER) -endif - -ifeq ($(FC_COMPILER),) -FULL_FC = gfortran -else -FULL_FC = $(FC_COMPILER) -endif - -ifeq ($(STATIC),) -COMMON_CONFIG += CC="$(FULL_CC)" CXX="$(FULL_CXX)" FC="$(FULL_FC) -else -COMMON_CONFIG += CC="$(FULL_CC) -static --static" CXX="$(FULL_CXX) -static --static" FC="$(FULL_FC) -static --static" -endif - ifneq ($(findstring musl,$(TARGET)),) MINGW_SRCDIR = # # https://wiki.musl-libc.org/getting-started.html#Notes_on_ARM_Float_Mode @@ -182,19 +158,42 @@ FULL_MINGW_CRT_CONFIG = $(MINGW_CONFIG) $(MINGW_CRT_CONFIG) \ FULL_MINGW_PTHREADS_CONFIG = $(MINGW_CONFIG) \ --prefix= --host=$(TARGET) --with-sysroot=$(SYSROOT) -ifneq ($(NATIVE),) -HOST := $(TARGET) -endif - ifeq ($(BUILD),) GUESS = $(shell cd $(GCC_SRCDIR) && ./config.guess) TARGET_CANON = $(shell cd $(GCC_SRCDIR) && ./config.sub $(TARGET)) BUILD = $(GUESS)$(if $(subst $(TARGET_CANON),,$(GUESS)),,xx) endif -ifeq ($(HOST),) +ifeq ($(NATIVE),) SYSROOT = /$(TARGET) -FULL_BINUTILS_CONFIG += --build=$(BUILD) --host=$(BUILD) +ifeq ($(CC_COMPILER),) +CC_PATH = $(shell which gcc) +else +CC_PATH = $(shell which $(CC_COMPILER)) +endif + +ifeq ($(CXX_COMPILER),) +CXX_PATH = $(shell which g++) +else +CXX_PATH = $(shell which $(CXX_COMPILER)) +endif + +ifeq ($(FC_COMPILER),) +FC_PATH = $(shell which gfortran) +else +FC_PATH = $(shell which $(FC_COMPILER)) +endif + +ifneq ($(STATIC),) +FULL_CC = $(CC_PATH) -static --static +FULL_CXX = $(CXX_PATH) -static --static +FULL_FC = $(FC_PATH) -static --static +endif + +COMMON_CONFIG += CC="$(FULL_CC)" CXX="$(FULL_CXX)" FC="$(FULL_FC)" + +FULL_BINUTILS_CONFIG += --build=$(BUILD) --host=$(BUILD) \ + CC="$(FULL_CC)" CXX="$(FULL_CXX)" FC="$(FULL_FC)" FULL_GCC_CONFIG += --with-build-sysroot=$(CURDIR)/obj_sysroot \ AR_FOR_TARGET=$(PWD)/obj_binutils/binutils/ar \ AS_FOR_TARGET=$(PWD)/obj_binutils/gas/as-new \ @@ -205,8 +204,9 @@ FULL_GCC_CONFIG += --with-build-sysroot=$(CURDIR)/obj_sysroot \ RANLIB_FOR_TARGET=$(PWD)/obj_binutils/binutils/ranlib \ READELF_FOR_TARGET=$(PWD)/obj_binutils/binutils/readelf \ STRIP_FOR_TARGET=$(PWD)/obj_binutils/binutils/strip-new \ - --build=$(BUILD) --host=$(BUILD) \ - # end + CC="$(FULL_CC)" CXX="$(FULL_CXX)" FC="$(FULL_FC)" \ + --build=$(BUILD) --host=$(BUILD) + FULL_MUSL_CONFIG += CC="$(XGCC)" LIBCC="../obj_gcc/$(TARGET)/libgcc/libgcc.a" MUSL_VARS = AR=../obj_binutils/binutils/ar RANLIB=../obj_binutils/binutils/ranlib MINGW_VARS = AS="$(XAS)" AR="$(XAR)" CC="$(XGCC)" RANLIB="$(XRANLIB)" @@ -225,9 +225,67 @@ obj_gcc/.lc_built: | obj_sysroot/.lc_libs_crt obj_sysroot/.lc_headers endif obj_gcc/.lc_configured: obj_binutils/.lc_built else +# native build SYSROOT = / -FULL_BINUTILS_CONFIG += --build=$(BUILD) --host=$(HOST) -FULL_GCC_CONFIG += --build=$(BUILD) --host=$(HOST) + +check-target-musl: + @if ! command -v $(TARGET)-gcc >/dev/null; then \ + echo "$(TARGET)-gcc not found in the environment"; \ + exit 1; \ + fi + @if ! command -v $(TARGET)-ar >/dev/null; then \ + echo "$(TARGET)-ar not found in the environment"; \ + exit 1; \ + fi +check-target-mingw: + @if ! command -v $(TARGET)-gcc >/dev/null; then \ + echo "$(TARGET)-gcc not found in the environment"; \ + exit 1; \ + fi + @if ! command -v $(TARGET)-ar >/dev/null; then \ + echo "$(TARGET)-ar not found in the environment"; \ + exit 1; \ + fi + +obj_mingw_headers/.lc_configured: | check-target-mingw +obj_mingw_crt/.lc_configured: | check-target-mingw +obj_mingw_pthreads/.lc_configured: | check-target-mingw +obj_musl/.lc_configured: | check-target-musl +obj_musl/.lc_built: | check-target-musl +obj_gcc/gcc/.lc_built: | check-target-musl +obj_gcc/.lc_built: | check-target-musl +obj_gcc/.lc_configured: | check-target-musl + +ifeq ($(CC_COMPILER),) +CC_PATH = $(shell which $(TARGET)-gcc) +else +CC_PATH = $(shell which $(CC_COMPILER)) +endif + +ifeq ($(CXX_COMPILER),) +CXX_PATH = $(shell which $(TARGET)-g++) +else +CXX_PATH = $(shell which $(CXX_COMPILER)) +endif + +ifeq ($(FC_COMPILER),) +FC_PATH = $(shell which $(TARGET)-gfortran) +else +FC_PATH = $(shell which $(FC_COMPILER)) +endif + +ifneq ($(STATIC),) +FULL_CC = $(CC_PATH) -static --static +FULL_CXX = $(CXX_PATH) -static --static +FULL_FC = $(FC_PATH) -static --static +endif + +FULL_BINUTILS_CONFIG += --build=$(BUILD) --host=$(TARGET) \ + CC="$(FULL_CC)" CXX="$(FULL_CXX)" FC="$(FULL_FC)" +FULL_GCC_CONFIG += --build=$(BUILD) --host=$(TARGET) \ + CC="$(FULL_CC)" CXX="$(FULL_CXX)" FC="$(FULL_FC)" +FULL_MUSL_CONFIG += --enable-static \ + --disable-shared MUSL_VARS = endif diff --git a/scripts/build.sh b/scripts/build.sh index 2327473..7e7d8ee 100644 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -28,7 +28,7 @@ function Help() { echo "-x: set CXX" echo "-f: set FC" echo "-s: static build" - echo "-n: native build" + echo "-n: with native build" echo "-e: skip error (-Wno-error)" } @@ -81,54 +81,60 @@ function FixArgs() { if [ "$SKIP_ERROR" ]; then FLAG="${FLAG} -Wno-error" fi + mkdir -p "${DIST}" + if [ $? -ne 0 ]; then + echo "mkdir dist dir ${DIST} error" + exit 1 + fi + DIST="$(cd "$DIST" && pwd)" + if [ $? -ne 0 ]; then + echo "cd dist dir ${DIST} error" + exit 1 + fi } function Build() { TARGET="$1" - make TARGET="${TARGET}" \ - CONFIG_SUB_REV="28ea239c53a2" \ - GCC_VER="11.4.0" \ - MUSL_VER="1.2.4" \ - BINUTILS_VER="2.41" \ - GMP_VER="6.3.0" \ - MPC_VER="1.3.1" \ - MPFR_VER="4.2.1" \ - ISL_VER="" \ - LINUX_VER="" \ - MINGW_VER="v11.0.1" \ - CC_COMPILER="${CC}" \ - CXX_COMPILER="${CXX}" \ - FC_COMPILER="${FC}" \ - CHINA="${USE_CHINA_MIRROR}" \ - STATIC="${STATIC_BUILD}" \ - NATIVE="${NATIVE_BUILD}" \ + DIST_NAME="${DIST}/${TARGET}" + NATIVE_DIST_NAME="${DIST_NAME}-native" + + make \ + TARGET="${TARGET}" \ + OUTPUT="${DIST_NAME}" \ install if [ $? -ne 0 ]; then echo "build ${TARGET} error" exit 1 fi + if [ "$NATIVE_BUILD" ]; then - DIST_NAME="${DIST}/${TARGET}-native" - else - DIST_NAME="${DIST}/${TARGET}" + PATH="${DIST_NAME}/bin:${PATH}" \ + make \ + TARGET="${TARGET}" \ + OUTPUT="${NATIVE_DIST_NAME}" \ + NATIVE=true \ + install fi - if [ ! "$TEST_BUILD_ONLY" ]; then + if [ "$TEST_BUILD_ONLY" ]; then + rm -rf "${DIST_NAME}" "${NATIVE_DIST_NAME}" + else if [ "$ENABLE_ARCHIVE" ]; then - tar -zcvf "${DIST_NAME}.tgz" -C output/ . + tar -zcvf "${DIST_NAME}.tgz" -C "${DIST_NAME}" . if [ $? -ne 0 ]; then - echo "package ${TARGET} error" + echo "package ${DIST_NAME} error" exit 1 fi - else - mv output "${DIST_NAME}" - if [ $? -ne 0 ]; then - echo "move ${TARGET} to ${DIST_NAME} error" - exit 1 + + if [ "$NATIVE_BUILD" ]; then + tar -zcvf "${NATIVE_DIST_NAME}.tgz" -C "${NATIVE_DIST_NAME}" . + if [ $? -ne 0 ]; then + echo "package ${NATIVE_DIST_NAME} error" + exit 1 + fi fi + rm -rf "${DIST_NAME}" "${NATIVE_DIST_NAME}" fi fi - rm -rf output/* - # rm -rf build/* make clean } @@ -170,11 +176,28 @@ i486-w64-mingw32 i686-w64-mingw32 x86_64-w64-mingw32' -FLAG="-g0 -O2 -fno-align-functions -fno-align-jumps -fno-align-loops -fno-align-labels" +FLAG="-g0 -O2" function BuildAll() { cat >config.mak <>config.mak + else + echo 'COMMON_CONFIG += LDFLAGS="-s"' >>config.mak + fi if [ "$TARGETS_FILE" ]; then if [ -f "$TARGETS_FILE" ]; then while read line; do