[uClibc][PATCH] Update uClibc build script to new config system
M. R. Brown
mrbrown at 0xd6.org
Tue Nov 5 07:12:22 UTC 2002
Ugh, one more time...
M. R.
-------------- next part --------------
--- gcc-3.2.orig/Makefile 2002-09-16 13:07:32.000000000 -0500
+++ gcc-3.2/Makefile 2002-11-05 00:53:51.000000000 -0600
@@ -38,6 +38,10 @@
#ARCH:=mipsel
#ARCH:=powerpc
+# Set this to the path of a custom .config that will be used in place
+# of the uClibc default.
+USE_CONFIG:=false
+
# Set this to `false' if you are building for a CPU does not have
# a memory management unit (MMU) -- i.e. an uClinux system.. If
# you are targeting a regular Linux system, leave this "true".
@@ -320,47 +324,54 @@
touch $(UCLIBC_DIR)/.unpacked
$(UCLIBC_DIR)/.configured: $(UCLIBC_DIR)/.unpacked
- cp $(UCLIBC_DIR)/extra/Configs/Config.$(ARCH) $(UCLIBC_DIR)/Config~;
- echo "TARGET_ARCH=$(ARCH)" >> $(UCLIBC_DIR)/Config~
- perl -i -p -e 's,^HAS_WCHAR.*,HAS_WCHAR=true,g' $(UCLIBC_DIR)/Config~
- perl -i -p -e 's,^PREFIX.*,,g' $(UCLIBC_DIR)/Config~
- perl -i -p -e 's,^CROSS.*,CROSS=,g' $(UCLIBC_DIR)/Config~
- perl -i -p -e 's,^SYSTEM_DEVEL_PREFIX.*,SYSTEM_DEVEL_PREFIX=$(STAGING_DIR),g' \
- $(UCLIBC_DIR)/Config~
- perl -i -p -e 's,^UNIX98PTY_ONLY.*,UNIX98PTY_ONLY=false,g' $(UCLIBC_DIR)/Config~
- $(UCLIBC_DIR)/extra/Configs/uClibc_config_fix.pl \
- --arch=$(ARCH) \
- --cross=$(STAGING_DIR)/bin/$(ARCH)-uclibc- \
- --c99_math=$(HAS_MMU) \
- --devel_prefix=$(STAGING_DIR) \
- --kernel_dir=$(LINUX_DIR) \
- --long_long=true \
- --float=true \
- --shadow=true \
- --threads=true \
- --rpc_support=true \
- --large_file=$(HAS_MMU) \
- --mmu=$(HAS_MMU) \
- --debug=false \
- --ldso_path="/lib" \
- --shared_support=$(HAS_MMU) \
- --file=$(UCLIBC_DIR)/Config~ \
- > $(UCLIBC_DIR)/Config;
+ifneq ($(USE_CONFIG),false)
+ cp $(USE_CONFIG) $(UCLIBC_DIR)/.config
+else
+ cp $(UCLIBC_DIR)/extra/Configs/Config.$(TARGET_ARCH).default \
+ $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^# UCLIBC_HAS_FLOATS.*,UCLIBC_HAS_FLOATS=y,g' $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^# HAS_SHADOW.*,HAS_SHADOW=y,g' $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^# UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g' $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^# UCLIBC_HAS_THREADS.*,UCLIBC_HAS_THREADS=y,g' $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^# UCLIBC_HAS_RPC.*,UCLIBC_HAS_RPC=y,g' $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^UNIX98PTY_ONLY=y.*,# UNIX98PTY_ONLY is not set,g' $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^DODEBUG=y.*,# DODEBUG is not set,g' $(UCLIBC_DIR)/.config
+ifeq ($(HAS_MMU),true)
+ perl -i -p -e 's,^# UCLIBC_HAS_MMU.*,UCLIBC_HAS_MMU=y,g' $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^# DO_C99_MATH.*,DO_C99_MATH=y,g' $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^# UCLIBC_HAS_LFS.*,UCLIBC_HAS_LFS=y,g' $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^# HAVE_SHARED.*,HAVE_SHARED=y,g' $(UCLIBC_DIR)/.config
+else
+ perl -i -p -e 's,^UCLIBC_HAS_MMU=y.*,# UCLIBC_HAS_MMU is not set,g' $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^DO_C99_MATH=y.*,# DO_C99_MATH is not set,g' $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^UCLIBC_HAS_LFS=y.*,# UCLIBC_HAS_LFS is not set,g' $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^HAVE_SHARED=y.*,# HAVE_SHARED is not set,g' $(UCLIBC_DIR)/.config
+endif
+endif
+ perl -i -p -e 's,^DEVEL_PREFIX.*,DEVEL_PREFIX=\"$(STAGING_DIR)\",g' \
+ $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^SYSTEM_DEVEL_PREFIX.*,SYSTEM_DEVEL_PREFIX=\"$(STAGING_DIR)\",g' \
+ $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^KERNEL_SOURCE.*,KERNEL_SOURCE=\"$(LINUX_DIR)\",g' \
+ $(UCLIBC_DIR)/.config
+ perl -i -p -e 's,^SHARED_LIB_LOADER_PATH.*,SHARED_LIB_LOADER_PATH=\"/lib\",g' \
+ $(UCLIBC_DIR)/.config
+ $(MAKE) -C $(UCLIBC_DIR) oldconfig
# Note that since the target compiler does not yet exist, we will not
# be able to properly generate include/bits/syscall.h so we will need
# to run part again later...
- $(MAKE) -C $(UCLIBC_DIR) headers uClibc_config install_dev;
+ $(MAKE) -C $(UCLIBC_DIR) headers install_dev
touch $(UCLIBC_DIR)/.configured
# Now that we have a working target compiler, rebuild the header files for the
# target so things like include/bits/syscall.h can actually be built this time
# around...
$(UCLIBC_DIR)/.config_final: $(UCLIBC_DIR)/.configured
- $(MAKE) -C $(UCLIBC_DIR) headers uClibc_config install_dev
+ $(MAKE) -C $(UCLIBC_DIR) headers install_dev
touch $(UCLIBC_DIR)/.config_final
$(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.config_final
- $(MAKE) -C $(UCLIBC_DIR)
+ $(MAKE) -C $(UCLIBC_DIR) CROSS=$(STAGING_DIR)/bin/$(ARCH)-uclibc-
$(STAGING_DIR)/lib/libc.a: $(UCLIBC_DIR)/lib/libc.a
$(MAKE) -C $(UCLIBC_DIR) install_dev install_runtime install_utils
@@ -369,7 +380,7 @@
uclibc-clean:
-$(MAKE) -C $(UCLIBC_DIR) clean
- rm -f $(UCLIBC_DIR)/Config
+ rm -f $(UCLIBC_DIR)/.config
uclibc-dirclean:
rm -rf $(UCLIBC_DIR)
More information about the uClibc
mailing list