# # General OpenMCT Parameters # # Base packages BASEPACKAGES= packages/build/buildetc \ packages/base/busybox \ packages/lib/e2fsprogs \ packages/net/dropbear \ packages/net/nfsutils \ packages/net/tcpwrapper \ packages/net/portmap \ packages/net/samba2 \ packages/net/vsftpd \ packages/net/ntp \ packages/system/ethtool \ packages/system/mtd-tools \ packages/system/recovery \ packages/system/haserl \ packages/system/owi2 # packages/system/debootstrap \ # Filename for release IMAGERELEASEFILENAME=openmct-release # Target TARGET=mipsel-linux # Binaries ECHO=/bin/echo WGET=/usr/bin/wget -Nc --passive-ftp TAR=/bin/tar CP=/bin/cp MV=/bin/mv PATCH=/usr/bin/patch ZCAT=/bin/zcat GZIP=/bin/gzip MAKE=/usr/bin/make TOUCH=/usr/bin/touch LN=/bin/ln MKDIR=/bin/mkdir -p MKFSJFFS2=$(shell if [ -f /usr/bin/mkfs.jffs2 ]; then $(ECHO) /usr/bin/mkfs.jffs2; else $(ECHO) /usr/sbin/mkfs.jffs2; fi) MAKE=/usr/bin/make GCC=/usr/bin/gcc CHMOD=/bin/chmod PERL=/usr/bin/perl SVN=/usr/bin/svn # Directories ACTDIR=$(shell /bin/pwd) ifndef OPENMCT_DEVEL_PREFIX OPENMCT_DEVEL_PREFIX=$(ACTDIR) endif CONFIGDIR=configs CONFIGMCTDIR=$(CONFIGDIR)/mct PATCHDIR=$(ACTDIR)/patches BUILDDIR=$(OPENMCT_DEVEL_PREFIX)/build PACKAGEDIR=$(OPENMCT_DEVEL_PREFIX)/packages OUTPUTDIR=$(OPENMCT_DEVEL_PREFIX)/output TARGETDIR=$(OUTPUTDIR)/$(TARGET) ROOTDIR=$(OUTPUTDIR)/root NEWROOTDIR=$(OUTPUTDIR)/newroot JFFS2DIR=$(OUTPUTDIR)/jffs2 SCRIPTDIR=$(OPENMCT_DEVEL_PREFIX)/scripts SRCDIR=src INSTALLDIR=usr # Binaries STRIP=$(OUTPUTDIR)/$(TARGET)/bin/$(TARGET)-uclibc-sstrip # Cross Compiler Environment OPENMCT_CROSS_BUILD=y OPENMCT_CROSS_BASE=$(OUTPUTDIR)/$(TARGET) # OPENMCT_CROSS_BASE=/usr/openmct OPENMCT_CROSS_INCLUDE=$(OPENMCT_CROSS_BASE)/include OPENMCT_CROSS_LIB=$(OPENMCT_CROSS_BASE)/lib OPENMCT_CROSS_COMPILE=$(OPENMCT_CROSS_BASE)/bin/$(TARGET)-uclibc- # Info Files PATCHED=.patched CONFIG=.config DEPEND=.depend INSTALLED=.installed SOFTWAREVERSION=r$(shell $(SVN) info | grep "Revision" | cut -c11-) # Output Files VMLINUXBIN=vmlinux.bin KERNEL=$(VMLINUXBIN).gz ROOT=root.bin JFFS2=jffs2.bin MCT_MODIFY=mct_modify MKSQUASHFS=mksquashfs # Options ROOTOPTS=-le -all-root VAROPTS=-U # Scripts PATCHSOURCE=$(SCRIPTDIR)/patch-source.sh MAKESYMLINKS=$(SCRIPTDIR)/make-symlinks.sh REMOVESYMLINKS=$(SCRIPTDIR)/remove-symlinks.sh SUBSTITUTE=$(SCRIPTDIR)/substitute.sh REMOVESVN=$(SCRIPTDIR)/remove-svn.sh CLEANUPROOT=$(SCRIPTDIR)/cleanup-root.sh DEPMOD=$(SCRIPTDIR)/depmod.pl UNAME=$(SCRIPTDIR)/uname.sh # tar options TAROPT=--strip-components=1 ifndef CONFIGUREENV # default configure environment arguments CONFIGUREENV=CC=$(OPENMCT_CROSS_COMPILE)gcc CXX=$(OPENMCT_CROSS_COMPILE)g++ CFLAGS="-Os" CXXFLAGS="-Os" endif ifdef DOWNLOAD # get filename from download url FILENAME=$(shell basename $(DOWNLOAD)) # set suffix SUFFIX=$(shell (echo $(FILENAME) | sed -e 's/.*\.\(.*\)$/\1//' | tr '[A-Z]' '[a-z]')) endif ifndef BUILD BUILD=$(MAKEENV) $(MAKE) $(MAKEARGS) endif ifndef CLEAN CLEAN=$(RM) -rf $(SRCDIR) endif ifndef EXTRACT EXTRACT=$(TAR) -C $(SRCDIR) $(TAROPT) $(TARMODE) $(FILENAME) endif ifndef EXTRACTPOST EXTRACTPOST= endif ifndef PREFIX PREFIX=/ endif ifeq ($(SUFFIX),z) TARMODE=-xzf endif ifeq ($(SUFFIX),gz) TARMODE=-xzf endif ifeq ($(SUFFIX),tgz) TARMODE=-xzf endif ifeq ($(SUFFIX),bz2) TARMODE=-xjf endif ifndef CONFIGUREARGS CONFIGUREARGS=--prefix=$(PREFIX) --host=$(TARGET) endif do-all: do-prepare do-depends $(FILENAME) $(SRCDIR) $(SRCDIR)$(SRCDIRSUFFIX)/$(CONFIG) do-build do-install # default do-depends target ifdef DEPENDSON do-depends: @$(ECHO) -e "\033[1;33mDEPENDENCIES \033[1;32m$(FILENAME)\033[0m" @$(foreach package,$(DEPENDSON),$(MAKE) -C $(OPENMCT_DEVEL_PREFIX)/$(package) OPENMCT_DEVEL_PREFIX=$(OPENMCT_DEVEL_PREFIX)/ do-all ; ) else do-depends: @$(ECHO) -e "\033[1;33mNO DEPENDENCIES\033[0m" endif # default do-download target ifdef DOWNLOAD $(FILENAME): @$(ECHO) -e "\033[1;33mDOWNLOAD \033[1;32m$(FILENAME)\033[0m" @$(WGET) $(DOWNLOAD) else $(FILENAME): @$(ECHO) -e "\033[1;33mNO DOWNLOAD\033[0m" endif # default do-extract target ifdef DOWNLOAD $(SRCDIR): $(FILENAME) @if [ ! -d $(SRCDIR) ]; then \ $(ECHO) -e "\033[1;33mCREATE \033[1;32m$(SRCDIR)\033[0m" && \ $(MKDIR) $(SRCDIR) ; \ fi @$(ECHO) -e "\033[1;33mUNPACK \033[1;32m$(FILENAME)\033[0m" @$(EXTRACT) @$(EXTRACTPOST) @if [ -d $(PATCHDIR) ]; then \ $(ECHO) -e "\033[1;33mPATCH \033[1;32m$(FILENAME)\033[0m" ; \ $(PATCHSOURCE) $(SRCDIR) $(PATCHDIR) *.patch ; \ fi else $(SRCDIR): endif # default do-configure target $(SRCDIR)$(SRCDIRSUFFIX)/$(CONFIG): @$(ECHO) -e "\033[1;33mCONFIGURE \033[1;32m$(FILENAME)\033[0m" @if [ -f configs/config.cache ]; then \ cd $(SRCDIR)$(SRCDIRSUFFIX) && $(CONFIGUREENV) \ ./configure --cache-file=$(ACTDIR)/configs/config.cache && \ cd $(ACTDIR) ; \ elif [ -f $(SRCDIR)$(SRCDIRSUFFIX)/configure ]; then \ cd $(SRCDIR)$(SRCDIRSUFFIX) && $(CONFIGUREENV) \ ./configure $(CONFIGUREARGS) && \ cd $(ACTDIR) ; \ elif [ -f $(SRCDIR)$(SRCDIRSUFFIX)/Configure ]; then \ cd $(SRCDIR)$(SRCDIRSUFFIX) && $(CONFIGUREENV) \ ./Configure $(CONFIGUREARGS) && \ cd $(ACTDIR) ; \ elif [ -f configs/config ]; then \ cp configs/config $(SRCDIR)/.config && \ cd $(SRCDIR)$(SRCDIRSUFFIX) && $(MAKE) oldconfig && \ cd $(ACTDIR) ; \ fi $(TOUCH) $(SRCDIR)$(SRCDIRSUFFIX)/$(CONFIG) # default prepare (for autotools packages for example) do-prepare: $(SRCDIR) @$(ECHO) -e "\033[1;33mPREPARE \033[1;32m$(FILENAME)\033[0m" @$(PREPARE) # default do-build target do-build: $(SRCDIR) @$(ECHO) -e "\033[1;33mBUILD \033[1;32m$(FILENAME)\033[0m" @cd $(SRCDIR)$(SRCDIRSUFFIX) && $(BUILD) && cd $(ACTDIR) # default do-install target do-install: $(SRCDIR) @$(ECHO) -e "\033[1;33mINSTALL \033[1;32m$(FILENAME)\033[0m" @$(INSTALL) # default do-uninstall target do-uninstall: @$(ECHO) -e "\033[1;33mUNINSTALL \033[1;32m$(FILENAME)\033[0m" @$(UNINSTALL) do-clean: @if [ -d $(SRCDIR) ]; then \ $(ECHO) -e "\033[1;33mREMOVE \033[1;32m$(SRCDIR)\033[0m" ; \ $(CLEAN) ; \ fi @if [ -f $(CONFIG) ]; then \ $(RM) $(CONFIG) ; \ fi @if [ -f $(PATCHED) ]; then \ $(RM) $(PATCHED) ; \ fi @if [ -f $(CONFIG) ]; then \ $(RM) $(CONFIG) ; \ fi do-distclean: do-clean @if [ -f $(FILENAME) ]; then \ $(ECHO) -e "\033[1;33mREMOVE \033[1;32m$(FILENAME)\033[0m" ; \ $(RM) $(FILENAME) $(DOWNLOADED) ; \ fi do-package: @if [ -d $(INSTALLDIR) ]; then \ $(ECHO) -e "\033[1;33mCREATE PACKAGE \033[1;32m$(OPENMCT_PACKAGE)\033[0m" ; \ $(TAR) cfz $(OPENMCT_PACKAGE) $(INSTALLDIR) ; \ fi