diff options
author | wbx <wbx@hydrogenium.(none)> | 2009-05-17 14:41:34 +0200 |
---|---|---|
committer | wbx <wbx@hydrogenium.(none)> | 2009-05-17 14:41:34 +0200 |
commit | 219a6dab8995aad9ac4860cc1a84d6f3509a03a4 (patch) | |
tree | b9c0f3c43aebba2fcfef777592d0add39f2072f4 /mk |
Initial import
Diffstat (limited to 'mk')
-rw-r--r-- | mk/build.mk | 182 | ||||
-rw-r--r-- | mk/buildhlp.mk | 98 | ||||
-rw-r--r-- | mk/cpu.mk | 23 | ||||
-rw-r--r-- | mk/fetch.mk | 83 | ||||
-rw-r--r-- | mk/image.mk | 69 | ||||
-rw-r--r-- | mk/kernel-build.mk | 61 | ||||
-rw-r--r-- | mk/kernel.mk | 77 | ||||
-rw-r--r-- | mk/linux.mk | 11 | ||||
-rw-r--r-- | mk/mirrors.mk | 147 | ||||
-rw-r--r-- | mk/modules.mk | 1254 | ||||
-rw-r--r-- | mk/package.mk | 212 | ||||
-rw-r--r-- | mk/pkg-bottom.mk | 212 | ||||
-rw-r--r-- | mk/rootfs.mk | 21 | ||||
-rw-r--r-- | mk/split-cfg.mk | 10 | ||||
-rw-r--r-- | mk/toolchain.mk | 6 | ||||
-rw-r--r-- | mk/tools.mk | 6 | ||||
-rw-r--r-- | mk/vars.mk | 120 |
17 files changed, 2592 insertions, 0 deletions
diff --git a/mk/build.mk b/mk/build.mk new file mode 100644 index 000000000..b08b97273 --- /dev/null +++ b/mk/build.mk @@ -0,0 +1,182 @@ +# $Id$ +#- +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +TOPDIR=$(shell pwd) +export TOPDIR + +ifneq ($(shell umask 2>/dev/null | sed 's/0*022/OK/'),OK) +$(error your umask is not 022) +endif + +CONFIG_CONFIG_IN = Config.in +CONFIG = config + +noconfig_targets:= menuconfig \ + _config \ + _mconfig \ + tags + +MAKECLEAN_SYMBOLS= ADK_TARGET_LIB_UCLIBC ADK_TARGET_LIB_GLIBC ADK_SSP ADK_IPV6 ADK_CXX +POSTCONFIG= -@\ + if [ -f .config.old ];then \ + if [ -d .cfg ];then \ + what=cleandevice; \ + for symbol in ${MAKECLEAN_SYMBOLS}; do \ + newval=$$(grep -e "^$$symbol=" -e "^\# $$symbol " .config); \ + oldval=$$(cat .cfg/"$$symbol" 2>&-); \ + [[ $$newval = $$oldval ]] && continue; \ + echo; \ + echo >&2 "WARNING: Toolchain related options have changed, 'make" \ + "$$what' might be required!"; \ + break; \ + done; \ + fi; \ + if [ "$$(grep ^BUSYBOX .config|md5sum)" != "$$(grep ^BUSYBOX .config.old|md5sum)" ];then \ + if [ -f build_$(CPU_ARCH)/w-busybox*/busybox*/.configure_done ];then \ + rm build_$(CPU_ARCH)/w-busybox*/busybox*/.configure_done; \ + fi; \ + fi; \ + fi + +# Pull in the user's configuration file +ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),) +-include $(TOPDIR)/.config +endif + +ifeq ($(strip $(ADK_HAVE_DOT_CONFIG)),y) +include $(TOPDIR)/rules.mk +include ${TOPDIR}/mk/split-cfg.mk + +all: world + +.NOTPARALLEL: +.PHONY: all world clean cleandevice cleandir distclean image_clean + +world: $(DISTDIR) $(BUILD_DIR) $(TARGET_DIR) $(PACKAGE_DIR) ${TOPDIR}/.cfg/ADK_HAVE_DOT_CONFIG + ${BASH} ${TOPDIR}/scripts/scan-pkgs.sh + $(MAKE) -f mk/build.mk toolchain/install target/config-prepare target/compile package/compile root_clean package/install package_index target/install + +package_index: + -cd ${PACKAGE_DIR} && \ + ${BASH} ${TOPDIR}/scripts/ipkg-make-index.sh . >Packages + +$(DISTDIR): + mkdir -p $(DISTDIR) + +$(BUILD_DIR): + mkdir -p $(BUILD_DIR) + +$(TARGET_DIR): + mkdir -p $(TARGET_DIR) + +$(PACKAGE_DIR): + mkdir -p ${PACKAGE_DIR}/.stamps + +${STAGING_DIR} ${STAGING_DIR}/etc ${STAGING_TOOLS}: + mkdir -p ${STAGING_DIR}/{bin,etc,include,lib,usr} \ + ${STAGING_TOOLS}/{bin,lib} + cd ${STAGING_DIR}/usr; ln -s ../include include + +${STAGING_DIR}/etc/ipkg.conf: ${STAGING_DIR}/etc + echo "dest root /" >${STAGING_DIR}/etc/ipkg.conf + echo "option offline_root ${TARGET_DIR}" >>$(STAGING_DIR)/etc/ipkg.conf + +package/%: ${TOPDIR}/.cfg/ADK_HAVE_DOT_CONFIG ${STAGING_DIR}/etc/ipkg.conf + $(MAKE) -C package $(patsubst package/%,%,$@) + +target/%: ${TOPDIR}/.cfg/ADK_HAVE_DOT_CONFIG + $(MAKE) -C target $(patsubst target/%,%,$@) + +toolchain/%: ${STAGING_DIR} + $(MAKE) -C toolchain $(patsubst toolchain/%,%,$@) + +image: + $(MAKE) -C target image + +switch: + echo "Saving configuration for device: ${DEVICE}" + cp .config .config.${DEVICE} + if [ -f .config.${DEV} ];then cp .config.${DEV} .config; \ + cp .config.${DEV} .config.old; \ + echo "Setting configuration to device: ${DEV}"; \ + else echo "No old device config found";mv .config .config.bak;fi + +############################################################# +# +# Cleanup and misc junk +# +############################################################# +root_clean: + @$(TRACE) root_clean + rm -rf $(TARGET_DIR) + +clean: + @$(TRACE) clean + $(MAKE) -C $(CONFIG) clean + rm -rf $(BUILD_DIR) $(BIN_DIR) $(TARGET_DIR) ${TOPDIR}/.cfg + rm -f ${TOPDIR}/package/*/info.mk + +cleankernel: + @$(TRACE) cleankernel + rm -rf $(TOOLCHAIN_BUILD_DIR)/linux* $(BUILD_DIR)/linux + +cleandir: + @$(TRACE) cleandir + $(MAKE) -C $(CONFIG) clean + rm -rf $(BUILD_DIR_PFX) $(BIN_DIR_PFX) $(TARGET_DIR_PFX) ${TOPDIR}/.cfg + rm -rf $(TOOLCHAIN_BUILD_DIR_PFX) $(STAGING_PARENT_PFX) $(TOOLS_BUILD_DIR) + rm -f .tmpconfig.h ${TOPDIR}/package/*/info.mk + +cleandevice: + @$(TRACE) cleandevice + $(MAKE) -C $(CONFIG) clean + rm -rf $(BUILD_DIR) $(BIN_DIR) $(TARGET_DIR) ${TOPDIR}/.cfg + rm -rf $(TOOLCHAIN_BUILD_DIR) $(STAGING_PARENT) + rm -f .tmpconfig.h ${TOPDIR}/package/*/info.mk + +distclean: + @$(TRACE) distclean + $(MAKE) -C $(CONFIG) clean + rm -rf $(BUILD_DIR_PFX) $(BIN_DIR_PFX) $(TARGET_DIR_PFX) $(DISTDIR) ${TOPDIR}/.cfg + rm -rf $(TOOLCHAIN_BUILD_DIR_PFX) $(STAGING_PARENT_PFX) $(TOOLS_BUILD_DIR) + rm -f .config* .tmpconfig.h ${TOPDIR}/package/*/info.mk + +else # ifeq ($(strip $(ADK_HAVE_DOT_CONFIG)),y) + +include $(TOPDIR)/prereq.mk + +all: menuconfig + @echo "Start the build with \"make\" or with \"make v\" to be verbose" + +# configuration +# --------------------------------------------------------------------------- + +$(CONFIG)/conf: + @$(MAKE) -C $(CONFIG) conf + +$(CONFIG)/mconf: + @$(MAKE) -C $(CONFIG) + +menuconfig: $(CONFIG)/mconf + @$(CONFIG)/mconf $(CONFIG_CONFIG_IN) + ${POSTCONFIG} + +_config: $(CONFIG)/conf + -@touch .config + @$(CONFIG)/conf ${W} $(CONFIG_CONFIG_IN) >/dev/null + ${POSTCONFIG} + +.NOTPARALLEL: _mconfig +_mconfig: ${CONFIG}/conf _mconfig2 _config +_mconfig2: ${CONFIG}/conf + @${CONFIG}/conf -M ${RCONFIG} >/dev/null + +distclean: + @$(MAKE) -C $(CONFIG) clean + rm -rf $(BUILD_DIR) $(TOOLS_BUILD_DIR) $(BIN_DIR) $(DISTDIR) ${TOPDIR}/.cfg + rm -rf $(TOOLCHAIN_BUILD_DIR) $(STAGING_PARENT) $(TARGET_DIR) + rm -f .config* .tmpconfig.h ${TOPDIR}/package/*/info.mk + +endif # ifeq ($(strip $(ADK_HAVE_DOT_CONFIG)),y) diff --git a/mk/buildhlp.mk b/mk/buildhlp.mk new file mode 100644 index 000000000..b6b70d67d --- /dev/null +++ b/mk/buildhlp.mk @@ -0,0 +1,98 @@ +# $Id$ +#- +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +ifneq ($(strip ${MASTER_SITES}),) +ifeq ($(strip ${DISTFILES}),) +DISTFILES:= ${PKG_NAME}-${PKG_VERSION}.tar.gz +endif +endif + +# This is where all package operation is done in +WRKDIR?= ${WRKDIR_BASE}/w-${PKG_NAME}-${PKG_VERSION}-${PKG_RELEASE} +# This is where source code is extracted and patched +WRKDIST?= ${WRKDIR}/${PKG_NAME}-${PKG_VERSION} +# This is where the configure script is seeked (localed) +WRKSRC?= ${WRKDIST} +# This is where configure, make and make install (fake) run from +WRKBUILD?= ${WRKSRC} +# This is where make install (fake) writes to +WRKINST?= ${WRKDIR}/fake-${ARCH}/root + +ifeq ($(strip ${NO_CHECKSUM}),) +_CHECKSUM_COOKIE= ${WRKDIR}/.checksum_done +else +_CHECKSUM_COOKIE= +endif + +post-extract: + +ifeq ($(strip ${NO_DISTFILES}),1) +${WRKDIST}/.extract_done: + rm -rf ${WRKDIST} ${WRKSRC} ${WRKBUILD} + mkdir -p ${WRKDIR} ${WRKDIST} + ${MAKE} do-extract + @${MAKE} post-extract + touch $@ + +fetch refetch checksum do-extract: + +__use_generic_patch_target:=42 +else ifneq ($(strip ${DISTFILES}),) +include ${TOPDIR}/mk/fetch.mk + +${WRKDIST}/.extract_done: ${_CHECKSUM_COOKIE} +ifeq (${_CHECKSUM_COOKIE},) + rm -rf ${WRKDIST} ${WRKSRC} ${WRKBUILD} +endif + ${EXTRACT_CMD} + @${MAKE} post-extract + touch $@ + +__use_generic_patch_target:=42 +else ifeq ($(strip ${_IN_PACKAGE}),1) +$(warning This package does not use the generic extraction and patch target; it's most likely to fail.) +endif + +ifeq ($(strip ${__use_generic_patch_target}),42) +post-patch: +${WRKDIST}/.prepared: ${WRKDIST}/.extract_done + [ ! -d ./patches ] || ${PREVENT_PATCH} ${PATCH} ${WRKDIST} ./patches \ + '{patch-!(*.orig),*.patch}' $(MAKE_TRACE) + [ ! -d ./extra ] || (cd extra; $(PREVENT_PATCH) cp -Rp . ${WRKDIST}/) \ + $(MAKE_TRACE) + @${MAKE} post-patch $(MAKE_TRACE) + touch $@ +endif + +update-patches: + @test ! -d ${WRKDIR}.orig || rm -rf ${WRKDIR}.orig + @test ! -d ${WRKDIR}.orig +ifeq ($(strip ${_IN_PACKAGE})$(strip ${_IN_CVTC}),1) + @$(MAKE) -s V=0 patch WRKDIR=${WRKDIR}.orig PREVENT_PATCH=: NO_CHECKSUM=1 +else + @$(MAKE) -s V=0 prepare WRKDIR=${WRKDIR}.orig PREVENT_PATCH=: NO_CHECKSUM=1 +endif + @# restore config.sub/config.guess + @for i in $$(find ${WRKDIR} -name config.sub);do \ + if [ -f $$i.bak ];then \ + mv $$i.bak $$i; \ + fi;\ + done + @for i in $$(find ${WRKDIR} -name config.guess);do \ + if [ -f $$i.bak ];then \ + mv $$i.bak $$i; \ + fi;\ + done + @toedit=$$(WRKDIST='${WRKDIST}' CURDIR=$$(pwd) \ + PATCH_LIST='patch-* *.patch' WRKDIR1='${WRKDIR}' \ + ${BASH} ${TOPDIR}/scripts/update-patches); \ + if [[ -n $$toedit && $$toedit != FAIL ]]; then \ + echo -n 'edit patches: '; read i; \ + cd patches && $${VISUAL:-$${EDITOR:-/usr/bin/vi}} $$toedit; \ + fi; \ + rm -rf ${WRKDIR}.orig; \ + [[ $$toedit != FAIL ]] + +.PHONY: update-patches diff --git a/mk/cpu.mk b/mk/cpu.mk new file mode 100644 index 000000000..8eb047bc9 --- /dev/null +++ b/mk/cpu.mk @@ -0,0 +1,23 @@ +# $Id$ +#- +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. +# +# optimization configure options for CPU features + +ifeq ($(DEVICE),alix1c) +CONFIGURE_CPU_OPTS:= --disable-ssse3 \ + --disable-sse \ + --enable-amd3dnow \ + --enable-amd3dnowext \ + --enable-mmx \ + --enable-mmx2 +else +CONFIGURE_CPU_OPTS:= --disable-ssse3 \ + --disable-sse \ + --disable-mmxext \ + --disable-amd3dnow \ + --disable-amd3dnowext \ + --disable-mmx \ + --disable-mmx2 +endif diff --git a/mk/fetch.mk b/mk/fetch.mk new file mode 100644 index 000000000..c4625ccee --- /dev/null +++ b/mk/fetch.mk @@ -0,0 +1,83 @@ +# $Id$ +#- +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. +#- + +ifneq ($(strip ${DIST_SUBDIR}),) +FULLDISTDIR?= ${DISTDIR}/${DIST_SUBDIR} +else +FULLDISTDIR?= ${DISTDIR} +endif + +FULLDISTFILES= $(patsubst %,${FULLDISTDIR}/%,${DISTFILES}) + +FETCH_STYLE?= auto +#pre-fetch: +do-fetch: +#post-fetch: +fetch: +# @${MAKE} pre-fetch +ifneq ($(filter auto,${FETCH_STYLE}),) + ${MAKE} ${FULLDISTFILES} +else + ${MAKE} do-fetch +endif +# @${MAKE} post-fetch + +refetch: + -rm -f ${FULLDISTFILES} + ${MAKE} fetch + +# XXX for now +_CHECKSUM_COOKIE?= ${WRKDIR}/.checksum_done +checksum: ${_CHECKSUM_COOKIE} +ifeq ($(strip ${NO_CHECKSUM}),) +${_CHECKSUM_COOKIE}: ${FULLDISTFILES} + rm -rf ${WRKDIR} + @OK=n; \ + (md5sum ${FULLDISTFILES}; echo exit) | while read sum name; do \ + if [[ $$sum = exit ]]; then \ + [[ $$OK = n ]] && echo >&2 "==> No distfile found!" || :; \ + [[ $$OK = 1 ]] || exit 1; \ + break; \ + fi; \ + if [[ $$sum = "$(strip ${PKG_MD5SUM})" ]]; then \ + [[ $$OK = 0 ]] || OK=1; \ + continue; \ + fi; \ + echo >&2 "==> Checksum mismatch for $${name##*/} (MD5)"; \ + echo >&2 ":---> should be '$(strip ${PKG_MD5SUM})'"; \ + echo >&2 ":---> really is '$$sum'"; \ + OK=0; \ + done + mkdir -p ${WRKDIR} + touch ${_CHECKSUM_COOKIE} +endif + +# GNU make's poor excuse for loops +define FETCH_template +$(1): + @fullname='$(1)'; \ + subname=$$$${fullname##$${DISTDIR}/}; \ + filename=$$$${fullname##*/}; \ + i='$${LOCAL_DISTDIR}'; \ + if [[ -n $$$$i && -e $$$$i/$$$$subname ]]; then \ + cd "$$$$i"; \ + echo pax -rw "$$$$subname" '$${DISTDIR}/'; \ + exec pax -rw "$$$$subname" '$${DISTDIR}/'; \ + fi; \ + mkdir -p "$$$${fullname%%/$$$$filename}"; \ + cd "$$$${fullname%%/$$$$filename}"; \ + for site in $${MASTER_SITES} $${MASTER_SITE_BACKUP}; do \ + : echo "$${FETCH_CMD} $$$$site$$$$filename"; \ + rm -f "$$$$filename"; \ + if $${FETCH_CMD} $$$$site$$$$filename; then \ + : check the size here; \ + [[ ! -e $$$$filename ]] || exit 0; \ + fi; \ + done; \ + exit 1 +endef + +$(foreach distfile,${FULLDISTFILES},$(eval $(call FETCH_template,$(distfile)))) diff --git a/mk/image.mk b/mk/image.mk new file mode 100644 index 000000000..4388dcaad --- /dev/null +++ b/mk/image.mk @@ -0,0 +1,69 @@ +# $Id$ +#- +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +imageprepare: kernel-install image-prepare-post + +image-prepare-post: + rng=/dev/arandom; test -e $$rng || rng=/dev/urandom; \ + dd if=$$rng bs=512 count=1 >>${TARGET_DIR}/etc/.rnd 2>/dev/null; \ + chmod 600 ${TARGET_DIR}/etc/.rnd + # Sanity checks + @cd ${TARGET_DIR}; ls=; ln=; li=; x=1; md5sum $$(find . -type f) | \ + sed -e "s/*//" | \ + while read sum name; do \ + inode=$$(ls -i "$$name"); \ + echo "$$sum $${inode%% *} $$name"; \ + done | sort | while read sum inode name; do \ + if [[ $$sum = $$ls ]]; then \ + [[ $$li = $$inode ]] && continue; \ + case $$x in \ + 1) echo 'WARNING: duplicate files found' \ + 'in filesystem! Please fix them.' >&2; \ + echo -n "> $$ln "; \ + ;; \ + 2) echo -n "> $$ln "; \ + ;; \ + 3) echo -n ' '; \ + ;; \ + esac; \ + echo -n "$$name"; \ + x=3; \ + else \ + case $$x in \ + 3) echo; \ + x=2; \ + ;; \ + esac; \ + fi; \ + ls=$$sum; \ + ln=$$name; \ + li=$$inode; \ + done + chmod 4511 ${TARGET_DIR}/bin/busybox + chmod 1777 ${TARGET_DIR}/tmp + +INITRAMFS= ${DEVICE}-${ARCH}-${FS} +ROOTFSSQUASHFS= ${DEVICE}-${ARCH}-${FS}.fimage +ROOTFSTARBALL= ${DEVICE}-${ARCH}-${FS}.tar.gz + +${BIN_DIR}/${ROOTFSTARBALL}: ${TARGET_DIR} + cd ${TARGET_DIR}; tar -cf - --owner=0 --group=0 . | gzip -n9 >$@ + +${BIN_DIR}/${INITRAMFS}: ${TARGET_DIR} + cd ${TARGET_DIR}; find . | sed -n '/^\.\//s///p' | sort | \ + cpio -R 0:0 --quiet -oC512 -Mdist -Hnewc | gzip -n9 >$@ + +${BIN_DIR}/${ROOTFSSQUASHFS}: ${TARGET_DIR} + PATH='${TARGET_PATH}' \ + mksquashfs ${TARGET_DIR} ${BUILD_DIR}/root.squashfs \ + -nopad -noappend -root-owned -le $(MAKE_TRACE) + # padding of images is required + cat ${BIN_DIR}/${DEVICE}-${ARCH}-kernel ${BUILD_DIR}/root.squashfs > \ + ${BUILD_DIR}/${ROOTFSSQUASHFS} + dd if=${BUILD_DIR}/${ROOTFSSQUASHFS} of=${BIN_DIR}/${ROOTFSSQUASHFS} \ + bs=4063232 conv=sync $(MAKE_TRACE) + +imageclean: + rm -f $(BIN_DIR)/$(DEVICE)-* diff --git a/mk/kernel-build.mk b/mk/kernel-build.mk new file mode 100644 index 000000000..c07e34c23 --- /dev/null +++ b/mk/kernel-build.mk @@ -0,0 +1,61 @@ +# $Id$ +#- +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(TOPDIR)/rules.mk +include $(TOPDIR)/mk/linux.mk +include ${TOPDIR}/mk/buildhlp.mk + +KERNEL_IDIR:=$(LINUX_BUILD_DIR)/kernel-ipkg + +$(TOOLCHAIN_BUILD_DIR)/linux-$(KERNEL_VERSION)/.patched: + $(TRACE) target/$(DEVICE)-kernel-patch + $(PATCH) $(TOOLCHAIN_BUILD_DIR)/linux-$(KERNEL_VERSION) ../linux/patches *.patch $(MAKE_TRACE) + $(PATCH) $(TOOLCHAIN_BUILD_DIR)/linux-$(KERNEL_VERSION) ../linux/patches/$(KERNEL_VERSION) *.patch $(MAKE_TRACE) + $(PATCH) $(TOOLCHAIN_BUILD_DIR)/linux-$(KERNEL_VERSION) ../$(DEVICE)/patches *.patch $(MAKE_TRACE) + touch $@ + +$(LINUX_DIR)/.prepared: $(TOOLCHAIN_BUILD_DIR)/linux-$(KERNEL_VERSION)/.patched + $(TRACE) target/$(DEVICE)-kernel-prepare + ln -sf $(TOOLCHAIN_BUILD_DIR)/linux-$(KERNEL_VERSION) $(LINUX_DIR) + mkdir -p $(LINUX_BUILD_DIR)/kmod-control + touch $@ + +$(LINUX_DIR)/.config: $(LINUX_DIR)/.prepared $(BUILD_DIR)/.kernelconfig + $(TRACE) target/$(DEVICE)-kernel-configure + for f in $(TARGETS);do if [ -f $$f ];then rm $$f;fi;done $(MAKE_TRACE) + $(CP) $(BUILD_DIR)/.kernelconfig $(LINUX_DIR)/.config + echo N | $(MAKE) -C $(LINUX_DIR) CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(ARCH) CC="$(TARGET_CC)" oldconfig $(MAKE_TRACE) + $(MAKE) -C $(LINUX_DIR) V=1 CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(ARCH) CC="$(TARGET_CC)" prepare scripts $(MAKE_TRACE) + touch -c $(LINUX_DIR)/.config + +$(LINUX_DIR)/vmlinux: $(LINUX_DIR)/.config + $(TRACE) target/$(DEVICE)-kernel-compile + $(MAKE) -C $(LINUX_DIR) V=1 CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(ARCH) CC="$(TARGET_CC)" $(MAKE_TRACE) + $(TRACE) target/$(DEVICE)-kernel-modules-install + rm -rf $(LINUX_BUILD_DIR)/modules + $(MAKE) -C "$(LINUX_DIR)" V=1 CROSS_COMPILE="$(KERNEL_CROSS)" ARCH=$(ARCH) DEPMOD=true INSTALL_MOD_PATH=$(LINUX_BUILD_DIR)/modules modules_install $(MAKE_TRACE) + $(TRACE) target/$(DEVICE)-create-packages + $(MAKE) $(KERNEL_IPKG) $(TARGETS) + touch -c $(LINUX_DIR)/vmlinux + +$(KERNEL_IPKG): + $(TRACE) target/$(DEVICE)-create-kernel-package + rm -rf $(KERNEL_IDIR) + @mkdir -p $(KERNEL_IDIR)/etc + ${BASH} ${SCRIPT_DIR}/make-ipkg-dir.sh ${KERNEL_IDIR} \ + ../linux/kernel.control ${DEVICE}-${KERNEL_VERSION} ${ARCH} + $(IPKG_BUILD) $(KERNEL_IDIR) $(PACKAGE_DIR) $(MAKE_TRACE) + +prepare: +compile: $(LINUX_DIR)/vmlinux +install: compile +ifneq ($(strip $(INSTALL_TARGETS)),) + $(TRACE) target/${DEVICE}-modules-install + $(IPKG) install $(INSTALL_TARGETS) $(MAKE_TRACE) +endif + +clean: + rm -rf $(LINUX_BUILD_DIR) + rm -f $(TARGETS) diff --git a/mk/kernel.mk b/mk/kernel.mk new file mode 100644 index 000000000..06f3ebde2 --- /dev/null +++ b/mk/kernel.mk @@ -0,0 +1,77 @@ +# $Id$ +#- +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + + +LINUX_KMOD_SUFFIX=ko +MODULES_SUBDIR := lib/modules/$(KERNEL_VERSION) +LINUX_BUILD_DIR := $(BUILD_DIR)/linux-$(ARCH)-$(DEVICE) +KMOD_BUILD_DIR := $(LINUX_BUILD_DIR)/linux-modules +MODULES_DIR := $(LINUX_BUILD_DIR)/modules/$(MODULES_SUBDIR) +TARGET_MODULES_DIR := $(LINUX_TARGET_DIR)/$(MODULES_SUBDIR) + +KERNEL_IPKG:=$(PACKAGE_DIR)/kernel_$(DEVICE)-$(KERNEL_VERSION)_$(ARCH).ipk +INSTALL_TARGETS:= $(KERNEL_IPKG) +NOINSTALL_TARGETS:= +TARGETS:= + +# KMOD_template +# +# Adds a target for creating a package containing +# the specified (kernel-provided) modules. +# Parameters: +# 1: the config symbol name (without leading 'ADK_[K,]PACKAGE_KMOD_') +# this _must_ be equal to the kernel config symbol name +# 2: the name for the package, should be unique +# 3: actual modules to add; absolute path inside $(MODULES_DIR) +# OMIT THE KERNEL-SPECIFIC EXTENSION! +# 4: order of module loading at system startup; the modules in $(3) are (in their order) +# added to this file, if $(6) is non-empty +# 5: the kmod packages this package depends on +# +define KMOD_template + +IDEPENDK_$(1):=kernel ($(DEVICE)-$(KERNEL_VERSION)) $(foreach pkg,$(5),", $(pkg)") + +PKG_$(1) := $(PACKAGE_DIR)/kmod-$(2)_$(DEVICE)-$(KERNEL_VERSION)-$(KERNEL_RELEASE)_$(ARCH).ipk +I_$(1) := $(KMOD_BUILD_DIR)/ipkg/$(2) + +ifeq ($$(ADK_KPACKAGE_KMOD_$(1)),m) +TARGETS+=$$(PKG_$(1)) +endif +ifeq ($$(ADK_KPACKAGE_KMOD_$(1)),y) +TARGETS+=$$(PKG_$(1)) +INSTALL_TARGETS+=$$(PKG_$(1)) +endif + +$$(PKG_$(1)): + rm -rf $$(I_$(1)) + echo "Package: kmod-$(2)" > $(LINUX_BUILD_DIR)/kmod-control/kmod-$(2).control + echo "Priority: optional" >> $(LINUX_BUILD_DIR)/kmod-control/kmod-$(2).control + echo "Section: sys" >> $(LINUX_BUILD_DIR)/kmod-control/kmod-$(2).control + echo "Description: kernel module $(2)" >> $(LINUX_BUILD_DIR)/kmod-control/kmod-$(2).control + ${BASH} ${SCRIPT_DIR}/make-ipkg-dir.sh $$(I_$(1)) \ + $(LINUX_BUILD_DIR)/kmod-control/kmod-$(2).control \ + $(DEVICE)-$(KERNEL_VERSION)-$(KERNEL_RELEASE) $(ARCH) + echo "Depends: $$(IDEPENDK_$(1))" >> $$(I_$(1))/CONTROL/control +ifneq ($(strip $(3)),) + mkdir -p $$(I_$(1))/lib/modules/$(KERNEL_VERSION) + $(CP) $(foreach mod,$(3),$(mod).$(LINUX_KMOD_SUFFIX)) $$(I_$(1))/lib/modules/$(KERNEL_VERSION) +ifneq ($(4),) + mkdir -p $$(I_$(1))/etc/modules.d + for module in $(notdir $(3)); do \ + echo $$$$module >> $$(I_$(1))/etc/modules.d/$(4)-$(2); \ + done + echo "#!/bin/sh" >> $$(I_$(1))/CONTROL/postinst + echo "if [ -z \"\$$$${IPKG_INSTROOT}\" ]; then" >> $$(I_$(1))/CONTROL/postinst + echo ". /etc/functions.sh" >> $$(I_$(1))/CONTROL/postinst + echo "load_modules /etc/modules.d/$(4)-$(2)" >> $$(I_$(1))/CONTROL/postinst + echo "fi" >> $$(I_$(1))/CONTROL/postinst + chmod 0755 $$(I_$(1))/CONTROL/postinst +endif +endif + $(IPKG_BUILD) $$(I_$(1)) $(PACKAGE_DIR) $(MAKE_TRACE) +endef + +include $(BUILD_DIR)/.kernelconfig diff --git a/mk/linux.mk b/mk/linux.mk new file mode 100644 index 000000000..e9d17e231 --- /dev/null +++ b/mk/linux.mk @@ -0,0 +1,11 @@ +# $Id$ +#- +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +PKG_NAME:= linux +PKG_VERSION:= $(KERNEL_VERSION) +PKG_RELEASE:= $(KERNEL_RELEASE) +PKG_MD5SUM= $(KERNEL_MD5SUM) +DISTFILES= $(PKG_NAME)-$(PKG_VERSION).tar.bz2 +MASTER_SITES= ${MASTER_SITE_KERNEL:=kernel/v2.6/} diff --git a/mk/mirrors.mk b/mk/mirrors.mk new file mode 100644 index 000000000..bbf41417a --- /dev/null +++ b/mk/mirrors.mk @@ -0,0 +1,147 @@ +# $Id$ +#- +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +MASTER_SITE_BACKUP?= ${MASTER_SITE_OPENADK} + +MASTER_SITE_OPENADK?= \ + http://www.openadk.org/distfiles/ \ + +MASTER_SITE_MIRBSD?= \ + http://www.mirbsd.org/MirOS/distfiles/ \ + http://pub.allbsd.org/MirOS/distfiles/ \ + +MASTER_SITE_KERNEL?= \ + http://www.de.kernel.org/pub/linux/ \ + http://www.fi.kernel.org/pub/linux/ \ + http://www.fr.kernel.org/pub/linux/ \ + http://www.kernel.org/pub/linux/ \ + +MASTER_SITE_XORG?= \ + http://ftp.gwdg.de/pub/x11/x.org/pub/X11R7.4/src/everything/ \ + http://xorg.freedesktop.org/releases/X11R7.4/src/everything/ \ + http://xorg.freedesktop.org/releases/individual/lib/ \ + +MASTER_SITE_GNU?= \ + http://ftp.gnu.org/gnu/ \ + ftp://ftp.gnu.org/gnu/ \ + ftp://ftp.funet.fi/pub/gnu/prep/ \ + ftp://mirrors.usc.edu/pub/gnu/ \ + ftp://ftp.cs.tu-berlin.de/pub/gnu/ \ + ftp://aeneas.mit.edu/pub/gnu/ \ + ftp://mirrors.dotsrc.org/gnu/ \ + ftp://ftp.wustl.edu/pub/gnu/ \ + ftp://ftp.kddilabs.jp/GNU/ \ + ftp://ftp.mirror.ac.uk/sites/ftp.gnu.org/gnu/ \ + ftp://sunsite.org.uk/package/gnu/ \ + ftp://ftp.informatik.hu-berlin.de/pub/gnu/ \ + ftp://ftp.rediris.es/mirror/gnu/gnu/ \ + ftp://ftp.cs.univ-paris8.fr/mirrors/ftp.gnu.org/ \ + ftp://ftp.chg.ru/pub/gnu/ \ + ftp://ftp.uvsq.fr/pub/gnu/ \ + ftp://ftp.sunet.se/pub/gnu/ \ + +MASTER_SITE_SOURCEFORGE?= \ + http://easynews.dl.sourceforge.net/sourceforge/ \ + http://puzzle.dl.sourceforge.net/sourceforge/ \ + http://optusnet.dl.sourceforge.net/sourceforge/ \ + http://heanet.dl.sourceforge.net/sourceforge/ \ + http://jaist.dl.sourceforge.net/sourceforge/ \ + http://nchc.dl.sourceforge.net/sourceforge/ \ + http://switch.dl.sourceforge.net/sourceforge/ \ + http://kent.dl.sourceforge.net/sourceforge/ \ + http://internap.dl.sourceforge.net/sourceforge/ \ + http://mesh.dl.sourceforge.net/sourceforge/ \ + http://ovh.dl.sourceforge.net/sourceforge/ \ + http://surfnet.dl.sourceforge.net/sourceforge/ \ + http://ufpr.dl.sourceforge.net/sourceforge/ \ + +MASTER_SITE_MYSQL?= \ + ftp://ftp.fu-berlin.de/unix/databases/mysql/ \ + http://sunsite.informatik.rwth-aachen.de/mysql/ \ + http://mysql.easynet.be/ \ + http://mysql.blic.net/ \ + http://mysql.online.bg/ \ + http://mysql.mirrors.cybercity.dk/ \ + http://mirrors.dotsrc.org/mysql/ \ + http://mysql.tonnikala.org/ \ + ftp://ftp.inria.fr/pub/MySQL/ \ + http://mirrors.ircam.fr/pub/mysql/ \ + http://mirrors.ee.teiath.gr/mysql/ \ + http://mysql.sote.hu/ \ + http://mysql.mirrors.crysys.hit.bme.hu/ \ + http://na.mirror.garr.it/mirrors/MySQL/ \ + http://mysql.bst.lt/ \ + http://mysql.proserve.nl/ \ + http://mirror.hostfuss.com/mysql/ \ + http://mysql.mirrors.webazilla.nl/ \ + http://mirror.dinpris.com/mysql/ \ + http://mysql.nfsi.pt/ \ + http://lisa.gov.pt/ftp/mysql/ \ + ftp://mirrors.fibernet.ro/1/MySQL/ \ + http://mysql.ran.ro/ \ + http://mysql.directnet.ru/ \ + ftp://ftp.dn.ru/pub/MySQL/ \ + http://mysql.dn.ru/ \ + http://mysql.mix.su/ \ + http://www.fastmirrors.org/mysql/ \ + http://mirrors.bevc.net/mysql/ \ + http://www.wsection.com/mysql/ \ + http://mysql.paknet.org/ \ + http://mysql.rediris.es/ \ + http://mysql.dataphone.se/ \ + http://mirror.switch.ch/ftp/mirror/mysql/ \ + ftp://ftp.solnet.ch/mirror/mysql/ \ + http://mysql.net.ua/ \ + ftp://ftp.tlk-l.net/pub/mirrors/mysql.com/ \ + http://mysql.infocom.ua/ \ + http://www.mirrorservice.org/sites/ftp.mysql.com/ \ + http://mirrors.dedipower.com/www.mysql.com/ \ + http://www.mirror.ac.uk/mirror/www.mysql.org/ \ + http://mysql.mirror.rafal.ca/ \ + http://mysql.serenitynet.com/ \ + ftp://mirror.mcs.anl.gov/pub/mysql/ \ + http://mirror.services.wisc.edu/mysql/ \ + http://mysql.orst.edu/ \ + http://mysql.he.net/ \ + http://mysql.mirrors.pair.com/ \ + http://mysql.mirror.redwire.net/ \ + http://mysql.mirrors.hoobly.com/ \ + http://mirror.trouble-free.net/mysql_mirror/ \ + http://mirrors.24-7-solutions.net/pub/mysql/ \ + http://www.stathy.com/mysql/ \ + http://mirror.x10.com/mirror/mysql/ \ + http://mysql.localhost.net.ar/ \ + http://mirrors.uol.com.br/pub/mysql/ \ + http://mysql.vision.cl/ \ + http://mysql.tecnoera.com/ \ + http://mysql.mirrors.arminco.com/ \ + http://mysqlmirror.netandhost.in/ \ + http://mirror.mysql-partners-jp.biz/ \ + http://ftp.iij.ad.jp/pub/db/mysql/ \ + http://mysql.oss.eznetsols.org/ \ + http://mysql.holywar.net/ \ + http://mysql.new21.com/ \ + http://mysql.byungsoo.net/ \ + http://mysql.isu.edu.tw/ \ + http://mysql.cdpa.nsysu.edu.tw/ \ + http://mysql.cs.pu.edu.tw/ \ + http://ftp.stu.edu.tw/pub/Unix/Database/Mysql/ \ + http://mysql.ntu.edu.tw/ \ + http://mysql.planetmirror.com/ \ + http://mysql.mirrors.ilisys.com.au/ \ + http://mysql.inspire.net.nz/ \ + http://mysql.mirror.ac.za/ \ + +MASTER_SITE_GNOME+= \ + ftp://ftp.acc.umu.se/pub/GNOME/sources/ \ + ftp://ftp.rpmfind.net/linux/gnome.org/sources/ \ + ftp://ftp.unina.it/pub/linux/GNOME/sources/ \ + ftp://ftp.belnet.be/mirror/ftp.gnome.org/sources/ \ + ftp://ftp.dit.upm.es/linux/gnome/sources/ \ + ftp://ftp.dataplus.se/pub/linux/gnome/sources/ \ + ftp://ftp.cse.buffalo.edu/pub/Gnome/sources/ \ + ftp://ftp.linux.org.uk/mirrors/ftp.gnome.org/sources/ \ + ftp://ftp.gnome.org/pub/GNOME/sources/ \ + diff --git a/mk/modules.mk b/mk/modules.mk new file mode 100644 index 000000000..5283d1ed7 --- /dev/null +++ b/mk/modules.mk @@ -0,0 +1,1254 @@ +# $Id$ +#- +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +# +# Ethernet network devices +# +$(eval $(call KMOD_template,NE2K_PCI,ne2k-pci,\ + $(MODULES_DIR)/kernel/drivers/net/8390 \ + $(MODULES_DIR)/kernel/drivers/net/ne2k-pci \ +,20)) + +$(eval $(call KMOD_template,E100,e100,\ + $(MODULES_DIR)/kernel/drivers/net/e100 \ +,20)) + +$(eval $(call KMOD_template,E1000,e1000,\ + $(MODULES_DIR)/kernel/drivers/net/e1000/e1000 \ +,20)) + +# +# Wireless network devices +# +$(eval $(call KMOD_template,MAC80211,mac80211,\ + $(MODULES_DIR)/kernel/net/wireless/cfg80211 \ + $(MODULES_DIR)/kernel/net/mac80211/mac80211 \ +,15, kmod-crypto-aes kmod-crypto-arc4 kmod-crypto-ecb kmod-crc32)) + +$(eval $(call KMOD_template,ATH5K,mac80211-ath5k,\ + $(MODULES_DIR)/kernel/drivers/net/wireless/ath5k/ath5k \ +,20, kmod-led-class)) + +$(eval $(call KMOD_template,RT2X00,mac80211-rt2x00,\ + $(MODULES_DIR)/kernel/drivers/net/wireless/rt2x00/rt2x00lib \ + $(MODULES_DIR)/kernel/drivers/net/wireless/rt2x00/rt2x00pci \ +,17)) + +$(eval $(call KMOD_template,RT2400PCI,mac80211-rt2400pci,\ + $(MODULES_DIR)/kernel/drivers/net/wireless/rt2x00/rt2400pci \ +,20, kmod-led-class kmod-mac80211-rt2x00)) + +$(eval $(call KMOD_template,RT2500PCI,mac80211-rt2500pci,\ + $(MODULES_DIR)/kernel/drivers/net/wireless/rt2x00/rt2500pci \ +,20, kmod-led-class kmod-mac80211-rt2x00)) + +$(eval $(call KMOD_template,RT61PCI,mac80211-rt61pci,\ + $(MODULES_DIR)/kernel/drivers/net/wireless/rt2x00/rt61pci \ +,20, kmod-led-class kmod-mac80211-rt2x00)) + +# +# Networking +# +$(eval $(call KMOD_template,ATM,atm,\ + $(MODULES_DIR)/kernel/net/atm/atm \ +,50)) + +$(eval $(call KMOD_template,BRIDGE,bridge,\ + $(MODULES_DIR)/kernel/net/llc/llc \ + $(MODULES_DIR)/kernel/net/bridge/bridge \ +,10)) + +$(eval $(call KMOD_template,NET_IPGRE,gre,\ + $(MODULES_DIR)/kernel/net/ipv4/ip_gre \ +,50)) + +$(eval $(call KMOD_template,NET_IPIP,ipip,\ + $(MODULES_DIR)/kernel/net/ipv4/tunnel4 \ + $(MODULES_DIR)/kernel/net/ipv4/ipip \ +,60)) + +$(eval $(call KMOD_template,IPV6,ipv6,\ + $(MODULES_DIR)/kernel/net/ipv6/ipv6 \ +,20)) + +$(eval $(call KMOD_template,IPV6_SIT,ipv6-sit,\ + $(MODULES_DIR)/kernel/net/ipv6/sit \ +,25)) + +$(eval $(call KMOD_template,PPP,ppp,\ + $(MODULES_DIR)/kernel/drivers/net/slhc \ + $(MODULES_DIR)/kernel/drivers/net/ppp_generic \ + $(MODULES_DIR)/kernel/drivers/net/ppp_async \ + $(MODULES_DIR)/kernel/drivers/net/pppox \ +,50)) + +$(eval $(call KMOD_template,MPPE,mppe,\ + $(MODULES_DIR)/kernel/drivers/net/ppp_mppe_mppc \ +,55)) + +$(eval $(call KMOD_template,PPPOATM,pppoatm,\ + $(MODULES_DIR)/kernel/net/atm/pppoatm \ +,60)) + +$(eval $(call KMOD_template,PPPOE,pppoe,\ + $(MODULES_DIR)/kernel/drivers/net/pppoe \ +,60)) + +$(eval $(call KMOD_template,TUN,tun,\ + $(MODULES_DIR)/kernel/drivers/net/tun \ +,20)) + +$(eval $(call KMOD_template,BONDING,bonding,\ + $(MODULES_DIR)/kernel/drivers/net/bonding/bonding \ +,20)) + +# +# Traffic scheduling +# +$(eval $(call KMOD_template,NET_SCH_CBQ,net-sched-cbq,\ + $(MODULES_DIR)/kernel/net/sched/sch_cbq \ +,40)) + +$(eval $(call KMOD_template,NET_SCH_HTB,net-sched-htb,\ + $(MODULES_DIR)/kernel/net/sched/sch_htb \ +,40)) + +$(eval $(call KMOD_template,NET_SCH_HFSC,net-sched-hfsc,\ + $(MODULES_DIR)/kernel/net/sched/sch_hfsc \ +,40)) + +$(eval $(call KMOD_template,NET_SCH_ATM,net-sched-atm,\ + $(MODULES_DIR)/kernel/net/sched/sch_atm \ +,40)) + +$(eval $(call KMOD_template,NET_SCH_PRIO,net-sched-prio,\ + $(MODULES_DIR)/kernel/net/sched/sch_prio \ +,40)) + +$(eval $(call KMOD_template,NET_SCH_RED,net-sched-red,\ + $(MODULES_DIR)/kernel/net/sched/sch_red \ +,40)) + +$(eval $(call KMOD_template,NET_SCH_SFQ,net-sched-sfq,\ + $(MODULES_DIR)/kernel/net/sched/sch_sfq \ +,40)) + +# busybox netapps crash, when module loaded +#$(eval $(call KMOD_template,NET_SCH_TEQL,net-sched-teql,\ +# $(MODULES_DIR)/kernel/net/sched/sch_teql \ +#,40)) + +$(eval $(call KMOD_template,NET_SCH_TBF,net-sched-tbf,\ + $(MODULES_DIR)/kernel/net/sched/sch_tbf \ +,40)) + +$(eval $(call KMOD_template,NET_SCH_GRED,net-sched-gred,\ + $(MODULES_DIR)/kernel/net/sched/sch_gred \ +,40)) + +$(eval $(call KMOD_template,NET_SCH_DSMARK,net-sched-dsmark,\ + $(MODULES_DIR)/kernel/net/sched/sch_dsmark \ +,40)) + +$(eval $(call KMOD_template,NET_SCH_INGRESS,net-sched-ingress,\ + $(MODULES_DIR)/kernel/net/sched/sch_ingress \ +,40)) + +# +# classifications +# +$(eval $(call KMOD_template,NET_CLS_BASIC,net-cls-basic,\ + $(MODULES_DIR)/kernel/net/sched/cls_basic \ +,40)) + +$(eval $(call KMOD_template,NET_CLS_TCINDEX,net-cls-tcindex,\ + $(MODULES_DIR)/kernel/net/sched/cls_tcindex \ +,40)) + +$(eval $(call KMOD_template,NET_CLS_ROUTE4,net-cls-route,\ + $(MODULES_DIR)/kernel/net/sched/cls_route \ +,40)) + +$(eval $(call KMOD_template,NET_CLS_FW,net-cls-fw,\ + $(MODULES_DIR)/kernel/net/sched/cls_fw \ +,40)) + +$(eval $(call KMOD_template,NET_CLS_U32,net-cls-u32,\ + $(MODULES_DIR)/kernel/net/sched/cls_u32 \ +,40)) + +# +# actions +# +$(eval $(call KMOD_template,NET_ACT_POLICE,net-act-police,\ + $(MODULES_DIR)/kernel/net/sched/act_police \ +,45)) + +$(eval $(cal |