summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
Diffstat (limited to 'mk')
-rw-r--r--mk/build.mk28
-rw-r--r--mk/buildhlp.mk5
-rw-r--r--mk/image.mk41
-rw-r--r--mk/kernel-build.mk8
-rw-r--r--mk/kernel-vars.mk10
-rw-r--r--mk/package.mk7
-rw-r--r--mk/pkg-bottom.mk4
-rw-r--r--mk/vars.mk27
8 files changed, 90 insertions, 40 deletions
diff --git a/mk/build.mk b/mk/build.mk
index de7ece082..7c8a697f8 100644
--- a/mk/build.mk
+++ b/mk/build.mk
@@ -113,7 +113,9 @@ ${TOPDIR}/package/Depends.mk: ${TOPDIR}/.config $(wildcard ${TOPDIR}/package/*/M
.NOTPARALLEL:
.PHONY: all world clean cleantarget cleandir distclean image_clean
-world: $(DISTDIR) $(BUILD_DIR) $(TARGET_DIR) $(PACKAGE_DIR)
+world:
+ mkdir -p $(DISTDIR) $(BUILD_DIR) $(TARGET_DIR) $(PACKAGE_DIR)/.stamps \
+ $(TOOLS_DIR) $(TOOLS_BUILD_DIR) $(TOOLCHAIN_BUILD_DIR)
${BASH} ${TOPDIR}/scripts/scan-pkgs.sh
${BASH} ${TOPDIR}/scripts/update-sys
${BASH} ${TOPDIR}/scripts/update-pkg
@@ -133,18 +135,6 @@ ifeq ($(ADK_TARGET_PACKAGE_IPKG),y)
${BASH} ${TOPDIR}/scripts/ipkg-make-index.sh . >Packages
endif
-$(DISTDIR):
- mkdir -p $(DISTDIR)
-
-$(BUILD_DIR):
- mkdir -p $(BUILD_DIR)
-
-$(TARGET_DIR):
- mkdir -p $(TARGET_DIR)
-
-$(PACKAGE_DIR):
- mkdir -p ${PACKAGE_DIR}/.stamps
-
${STAGING_TARGET_DIR} ${STAGING_TARGET_DIR}/etc ${STAGING_HOST_DIR}:
mkdir -p ${STAGING_TARGET_DIR}/{bin,etc,lib,usr/include} \
${STAGING_HOST_DIR}/{bin,lib}
@@ -192,7 +182,7 @@ switch:
kernelconfig:
cp $(TOPDIR)/target/$(ADK_TARGET_ARCH)/kernel.config $(BUILD_DIR)/linux/.config
- $(MAKE) -C $(BUILD_DIR)/linux/ ARCH=$(ARCH) menuconfig
+ ${KERNEL_MAKE_ENV} ${MAKE} ${KERNEL_MAKE_OPTS} -C $(BUILD_DIR)/linux menuconfig
cp $(BUILD_DIR)/linux/.config $(TOPDIR)/target/$(ADK_TARGET_ARCH)/kernel.config
# create a new package from package/.template
@@ -211,7 +201,7 @@ root_clean:
mkdir -p $(TARGET_DIR)
# Do a per-package clean here, too. This way stale headers and
-# libraries from cross_*/target/ get wiped away, which keeps
+# libraries from target_*/ get wiped away, which keeps
# future package build's configure scripts from returning false
# dependencies information.
@@ -221,7 +211,7 @@ clean:
for d in ${STAGING_PKG_DIR}; do \
for f in $$(ls $$d/[a-z]* 2>/dev/null); do \
while read file ; do \
- rm $$d/target/$$file 2>/dev/null; \
+ rm ${STAGING_TARGET_DIR}/$$file 2>/dev/null;\
done < $$f ; \
rm $$f ; \
done \
@@ -568,7 +558,6 @@ ${TOPDIR}/bin/tools/pkgmaker:
@$(HOSTCC) -Wall -g -o $@ tools/adk/pkgmaker.c tools/adk/sortfile.c tools/adk/strmap.c
${TOPDIR}/bin/tools/pkgrebuild:
- @mkdir -p $(TOPDIR)/bin/tools
@$(HOSTCC) -Wall -g -o $@ tools/adk/pkgrebuild.c tools/adk/strmap.c
package/Config.in.auto menu .menu: $(wildcard ${TOPDIR}/package/*/Makefile) ${TOPDIR}/bin/tools/pkgmaker ${TOPDIR}/bin/tools/pkgrebuild
@@ -576,10 +565,7 @@ package/Config.in.auto menu .menu: $(wildcard ${TOPDIR}/package/*/Makefile) ${TO
@$(TOPDIR)/bin/tools/pkgmaker
@:>.menu
-$(TOPDIR)/bin/tools:
- @mkdir -p $(TOPDIR)/bin/tools
-
-${TOPDIR}/bin/tools/depmaker: $(TOPDIR)/bin/tools
+${TOPDIR}/bin/tools/depmaker:
$(HOSTCC) -g -o $(TOPDIR)/bin/tools/depmaker $(TOPDIR)/tools/adk/depmaker.c
dep: $(TOPDIR)/bin/tools/depmaker
diff --git a/mk/buildhlp.mk b/mk/buildhlp.mk
index 35d4eebd0..2cb4f1714 100644
--- a/mk/buildhlp.mk
+++ b/mk/buildhlp.mk
@@ -24,7 +24,10 @@ else
_CHECKSUM_COOKIE=
endif
-post-extract:
+${PACKAGE_DIR}/.stamps:
+ @mkdir -p ${PACKAGE_DIR}/.stamps
+
+post-extract: ${PACKAGE_DIR}/.stamps
ifeq ($(strip ${NO_DISTFILES}),1)
${WRKDIST}/.extract_done:
diff --git a/mk/image.mk b/mk/image.mk
index c7f568c26..1bfc1f78b 100644
--- a/mk/image.mk
+++ b/mk/image.mk
@@ -1,6 +1,34 @@
# This file is part of the OpenADK project. OpenADK is copyrighted
# material, please see the LICENCE file in the top-level directory.
+# relative paths, like 'mksh' or '../usr/bin/foosh'
+ifeq (${ADK_BINSH_ASH},y)
+BINSH:=ash
+else ifeq (${ADK_BINSH_BASH},y)
+BINSH:=bash
+else ifeq (${ADK_BINSH_MKSH},y)
+BINSH:=mksh
+else ifeq (${ADK_BINSH_ZSH},y)
+BINSH:=zsh
+else
+$(error No /bin/sh configured!)
+endif
+
+# absolute paths
+ifeq (${ADK_ROOTSH_ASH},y)
+ROOTSH:=/bin/ash
+else ifeq (${ADK_ROOTSH_BASH},y)
+ROOTSH:=/bin/bash
+else ifeq (${ADK_ROOTSH_MKSH},y)
+ROOTSH:=/bin/mksh
+else ifeq (${ADK_ROOTSH_TCSH},y)
+ROOTSH:=/usr/bin/tcsh
+else ifeq (${ADK_ROOTSH_ZSH},y)
+ROOTSH:=/bin/zsh
+else
+$(error No login shell configured!)
+endif
+
imageprepare: image-prepare-post extra-install
# if an extra directory exist in TOPDIR, copy all content over the
@@ -19,6 +47,9 @@ image-prepare-post:
mkfontdir ${TARGET_DIR}/usr/share/fonts/X11/$${i}; \
done; \
fi
+ sed -i '/^root:/s!:/bin/sh$$!:${ROOTSH}!' ${TARGET_DIR}/etc/passwd
+ -rm -f ${TARGET_DIR}/bin/sh
+ ln -sf ${BINSH} ${TARGET_DIR}/bin/sh
KERNEL_PKGDIR:=$(LINUX_BUILD_DIR)/kernel-pkg
KERNEL_PKG:=$(PACKAGE_DIR)/kernel_$(KERNEL_VERSION)_$(CPU_ARCH).$(PKG_SUFFIX)
@@ -64,12 +95,16 @@ ${BUILD_DIR}/${INITRAMFS_PIGGYBACK}: ${TARGET_DIR}
sed "s#\(.*\)#:0:0::::::\1#" | sort | \
${TOOLS_DIR}/cpio -o -C512 -Hnewc -P >$@ 2>/dev/null
-${BIN_DIR}/${ROOTFSSQUASHFS}: ${TARGET_DIR}
+${BUILD_DIR}/root.squashfs: ${TARGET_DIR}
${STAGING_HOST_DIR}/bin/mksquashfs ${TARGET_DIR} \
${BUILD_DIR}/root.squashfs \
-nopad -noappend -root-owned $(MAKE_TRACE)
- cat ${BUILD_DIR}/${TARGET_KERNEL} ${BUILD_DIR}/root.squashfs > \
- ${BUILD_DIR}/${ROOTFSSQUASHFS}
+
+ifeq (,${CUSTOM_ROOTFSSQUASHFS_BUILD})
+${BIN_DIR}/${ROOTFSSQUASHFS}: ${BUILD_DIR}/root.squashfs
+ cat ${BUILD_DIR}/${TARGET_KERNEL} ${BUILD_DIR}/root.squashfs \
+ >${BUILD_DIR}/${ROOTFSSQUASHFS}
+endif
createinitramfs:
@-rm $(LINUX_DIR)/usr/initramfs_data.cpio* $(MAKE_TRACE)
diff --git a/mk/kernel-build.mk b/mk/kernel-build.mk
index ba3259b16..986eb9c29 100644
--- a/mk/kernel-build.mk
+++ b/mk/kernel-build.mk
@@ -21,16 +21,16 @@ $(LINUX_DIR)/.config: $(LINUX_DIR)/.prepared $(BUILD_DIR)/.kernelconfig $(TOPDIR
$(TRACE) target/$(ADK_TARGET_ARCH)-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) ${KERNEL_MAKE_OPTS} oldconfig $(MAKE_TRACE)
- $(MAKE) ${KERNEL_MAKE_OPTS} prepare scripts $(MAKE_TRACE)
+ echo N | ${KERNEL_MAKE_ENV} $(MAKE) ${KERNEL_MAKE_OPTS} oldconfig $(MAKE_TRACE)
+ ${KERNEL_MAKE_ENV} $(MAKE) ${KERNEL_MAKE_OPTS} prepare scripts $(MAKE_TRACE)
touch -c $(LINUX_DIR)/.config
$(LINUX_DIR)/vmlinux: $(LINUX_DIR)/.config
$(TRACE) target/$(ADK_TARGET_ARCH)-kernel-compile
- $(MAKE) ${KERNEL_MAKE_OPTS} -j${ADK_MAKE_JOBS} LOCALVERSION="" $(MAKE_TRACE)
+ ${KERNEL_MAKE_ENV} $(MAKE) ${KERNEL_MAKE_OPTS} -j${ADK_MAKE_JOBS} LOCALVERSION="" $(MAKE_TRACE)
$(TRACE) target/$(ADK_TARGET_ARCH)-kernel-modules-install
rm -rf $(LINUX_BUILD_DIR)/modules
- $(MAKE) ${KERNEL_MAKE_OPTS} DEPMOD=true \
+ ${KERNEL_MAKE_ENV} $(MAKE) ${KERNEL_MAKE_OPTS} DEPMOD=true \
INSTALL_MOD_PATH=$(LINUX_BUILD_DIR)/modules \
LOCALVERSION="" \
modules_install $(MAKE_TRACE)
diff --git a/mk/kernel-vars.mk b/mk/kernel-vars.mk
index 48b7023b5..f66b238e0 100644
--- a/mk/kernel-vars.mk
+++ b/mk/kernel-vars.mk
@@ -3,5 +3,13 @@
KERNEL_MAKE_OPTS:= -C "${LINUX_DIR}" V=1
ifneq ($(ADK_NATIVE),y)
-KERNEL_MAKE_OPTS+= CROSS_COMPILE="$(TARGET_CROSS)" ARCH=$(ARCH) CC="$(TARGET_CC)" HOSTCC="${HOSTCC}"
+KERNEL_MAKE_OPTS+= CROSS_COMPILE="$(TARGET_CROSS)" ARCH=$(ARCH) \
+ CC="$(TARGET_CC)" HOSTCC="${HOSTCC}" \
+ HOSTCFLAGS='${HOSTCFLAGS}'
endif
+
+ifeq (${ADK_TARGET_SYSTEM_LINKSYS_WRT54G},y)
+ADK_KCPPFLAGS+= -DBCM47XX_OVERRIDE_FLASHSIZE=0x400000
+endif
+
+KERNEL_MAKE_ENV+= KCPPFLAGS='${ADK_KCPPFLAGS}'
diff --git a/mk/package.mk b/mk/package.mk
index 3d7353a51..e42ced661 100644
--- a/mk/package.mk
+++ b/mk/package.mk
@@ -36,7 +36,8 @@ CONFIGURE_ARGS+= --enable-debug
endif
endif
-CONFIGURE_ENV+= CONFIG_SHELL='$(strip ${SHELL})' \
+CONFIGURE_ENV+= GCC_HONOUR_COPTS=s \
+ CONFIG_SHELL='$(strip ${SHELL})' \
CFLAGS='$(strip ${TCFLAGS})' \
CXXFLAGS='$(strip ${TCXXFLAGS})' \
CPPFLAGS='$(strip ${TCPPFLAGS})' \
@@ -142,6 +143,8 @@ IDIR_$(1)= $(WRKDIR)/fake-${CPU_ARCH}/pkg-$(2)
ifneq (${ADK_PACKAGE_$(1)}${DEVELOPER},)
ALL_IPKGS+= $$(IPKG_$(1))
ALL_IDIRS+= $${IDIR_$(1)}
+ALL_POSTINST+= $(2)-install
+$(2)-install:
endif
INFO_$(1)= $(PKG_STATE_DIR)/info/$(2).list
@@ -218,7 +221,7 @@ endif
find usr ! -type d 2>/dev/null | \
grep -v -e '^usr/share' -e '^usr/man' -e '^usr/info' -e '^usr/lib/libc.so' | \
tee '$${STAGING_PKG_DIR}/$(1)' | \
- $(TOPDIR)/bin/tools/cpio -padlmu '$${STAGING_TARGET_DIR}'
+ $(TOOLS_DIR)/cpio -padlmu '$${STAGING_TARGET_DIR}'
@cd '$${STAGING_TARGET_DIR}'; grep 'usr/lib/.*\.la$$$$' \
'$${STAGING_PKG_DIR}/$(1)' | while read fn; do \
chmod u+w $$$$fn; \
diff --git a/mk/pkg-bottom.mk b/mk/pkg-bottom.mk
index 122198e45..f91e1bb45 100644
--- a/mk/pkg-bottom.mk
+++ b/mk/pkg-bottom.mk
@@ -127,6 +127,7 @@ endif
pre-install:
do-install:
post-install:
+spkg-install: ${ALL_POSTINST}
${_FAKE_COOKIE}: ${_BUILD_COOKIE}
-rm -f ${_ALL_CONTROLS}
@mkdir -p '${STAGING_PKG_DIR}' ${WRKINST} '${STAGING_TARGET_DIR}/scripts'
@@ -145,6 +146,7 @@ else
@echo "Invalid INSTALL_STYLE '${INSTALL_STYLE}'" >&2
@exit 1
endif
+ env ${MAKE_ENV} ${MAKE} spkg-install $(MAKE_TRACE)
ifeq ($(ADK_NATIVE),)
@for a in ${WRKINST}/usr/{bin/*-config,lib/pkgconfig/*.pc}; do \
[[ -e $$a ]] || continue; \
@@ -168,7 +170,7 @@ endif
find usr ! -type d 2>/dev/null | \
grep -v -e '^usr/share' -e '^usr/man' -e '^usr/info' -e '^usr/lib/libc.so' | \
tee '${STAGING_PKG_DIR}/${PKG_NAME}' | \
- $(TOPDIR)/bin/tools/cpio -padlmu '${STAGING_TARGET_DIR}'
+ $(TOOLS_DIR)/cpio -padlmu '${STAGING_TARGET_DIR}'
@cd '${STAGING_TARGET_DIR}'; grep 'usr/lib/.*\.la$$' \
'${STAGING_PKG_DIR}/${PKG_NAME}' | while read fn; do \
chmod u+w $$fn; \
diff --git a/mk/vars.mk b/mk/vars.mk
index 25b285518..7828347d5 100644
--- a/mk/vars.mk
+++ b/mk/vars.mk
@@ -9,12 +9,24 @@ INSTALL_SCRIPT= install -m0755
MAKEFLAGS= $(EXTRA_MAKEFLAGS)
BUILD_USER= $(shell id -un)
BUILD_GROUP= $(shell id -gn)
+
+# target compiler settings
+TARGET_CPPFLAGS+= -I${STAGING_TARGET_DIR}/usr/include
+TARGET_LDFLAGS+= -Wl,-O2
ifneq ($(ADK_DEBUG),)
TARGET_DEBUGGING:= -g3 -fno-omit-frame-pointer
else
-TARGET_DEBUGGING:= -fomit-frame-pointer $(TARGET_OPTIMIZATION)
+TARGET_DEBUGGING:= $(TARGET_OPTIMIZATION) -fomit-frame-pointer
endif
TARGET_CFLAGS:= $(TARGET_CFLAGS_ARCH) $(TARGET_DEBUGGING) -fwrapv
+ifneq ($(ADK_TOOLCHAIN_GCC_USE_SSP),)
+TARGET_CFLAGS+= -fstack-protector
+TARGET_LDFLAGS+= -fstack-protector
+endif
+ifneq ($(ADK_TOOLCHAIN_GCC_USE_LTO),)
+TARGET_CFLAGS+= -flto
+TARGET_LDFLAGS+= -flto
+endif
BASE_DIR:= $(TOPDIR)
DISTDIR?= ${BASE_DIR}/dl
@@ -26,6 +38,9 @@ STAGING_HOST_DIR:= ${BASE_DIR}/host_${CPU_ARCH}_${ADK_TARGET_LIBC}
STAGING_HOST_DIR_PFX:= ${BASE_DIR}/host_*
STAGING_TARGET_DIR:= ${BASE_DIR}/target_${CPU_ARCH}_${ADK_TARGET_LIBC}
STAGING_TARGET_DIR_PFX:=${BASE_DIR}/target_*
+# relation from STAGING_HOST_DIR to STAGING_TARGET_DIR (for gcc to find
+# its sysroot while staying relocatable)
+STAGING_HOST2TARGET:= ../target_${CPU_ARCH}_${ADK_TARGET_LIBC}
TOOLCHAIN_BUILD_DIR= $(BASE_DIR)/toolchain_build_${CPU_ARCH}_${ADK_TARGET_LIBC}
TOOLCHAIN_BUILD_DIR_PFX=$(BASE_DIR)/toolchain_build_*
TOOLS_BUILD_DIR= $(BASE_DIR)/tools_build
@@ -50,8 +65,6 @@ endif
TARGET_CC:= ${TARGET_COMPILER_PREFIX}gcc
TARGET_CXX:= ${TARGET_COMPILER_PREFIX}g++
TARGET_LD:= ${TARGET_COMPILER_PREFIX}ld
-TARGET_CPPFLAGS+= -I${STAGING_TARGET_DIR}/usr/include
-TARGET_LDFLAGS+= -Wl,-O2
PATCH= ${BASH} $(SCRIPT_DIR)/patch.sh
SED:= sed -i -e
LINUX_DIR:= $(BUILD_DIR)/linux
@@ -102,19 +115,19 @@ EXTRACT_CMD= mkdir -p ${WRKDIR}; \
cd ${WRKDIR} && \
for file in ${FULLDISTFILES}; do case $$file in \
*.cpio) \
- cat $$file | $(TOPDIR)/bin/tools/cpio -i -d ;; \
+ cat $$file | $(TOOLS_DIR)/cpio -i -d ;; \
*.tar) \
tar -xf $$file ;; \
*.cpio.Z | *.cpio.gz | *.cgz | *.mcz) \
- gzip -dc $$file | $(TOPDIR)/bin/tools/cpio -i -d ;; \
+ gzip -dc $$file | $(TOOLS_DIR)/cpio -i -d ;; \
*.tar.Z | *.tar.gz | *.taz | *.tgz) \
gzip -dc $$file | tar -xf - ;; \
*.cpio.bz2 | *.cbz) \
- bzip2 -dc $$file | $(TOPDIR)/bin/tools/cpio -i -d ;; \
+ bzip2 -dc $$file | $(TOOLS_DIR)/cpio -i -d ;; \
*.tar.bz2 | *.tbz | *.tbz2) \
bzip2 -dc $$file | tar -xf - ;; \
*.zip) \
- cat $$file | $(TOPDIR)/bin/tools/cpio -ivd -H zip ;; \
+ cat $$file | $(TOOLS_DIR)/cpio -ivd -H zip ;; \
*.arm) \
cp $$file ${WRKDIR} ;; \
*) \