root/floppyfw-3.0/Makefile @ 265

Revision 265, 10.9 kB (checked in by root, 11 months ago)

3.0.11, now with USB serial modules.

Line 
1 
2# Makefile for floppyfw.
3# As you can see, this is based on the buildroot/busybox/uClibc Make system.
4#
5# Changes are Copyright (C) 2003-2004 Thomas Lundquist <thomasez@zelow.no>
6#
7
8# Makefile for a simple busybox/uClibc root filesystem
9#
10# Copyright (C) 2001-2003 Erik Andersen <andersen@codepoet.org>
11# Copyright (C) 2002 by Tim Riker <Tim@Rikers.org>
12#
13# This program is free software; you can redistribute it and/or modify
14# it under the terms of the GNU Library General Public License as
15# published by the Free Software Foundation; either version 2 of the
16# License, or (at your option) any later version.
17#
18# This program is distributed in the hope that it will be useful, but
19# WITHOUT ANY WARRANTY; without even the implied warranty of
20# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21# Library General Public License for more details.
22#
23# You should have received a copy of the GNU Library General Public
24# License along with this program; if not, write to the Free Software
25# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
26# USA
27
28# $Id: Makefile,v 1.31 2005/12/07 19:50:42 thomasez Exp $
29
30#############################################################
31#
32# EDIT this stuff to suit your system and preferences
33#
34# Use := when possible to get precomputation, thereby
35# speeding up the build process.
36#
37#############################################################
38
39# Which version of floppyfw is this?
40FLOPPYFW_VERSION=3.0.11
41
42# What sortof target system shall we compile this for?
43ARCH:=i386
44#ARCH:=arm
45#ARCH:=mips
46#ARCH:=mipsel
47#ARCH:=powerpc
48#ARCH:=sh4
49#ARCH:=cris
50#ARCH:=m68k
51#ARCH:=v850
52#ARCH:=sparc
53#ARCH:=sh64
54#ARCH:=whatever
55
56# If you want to add FPU/MATH emulation, set this to true;
57# (Not properly tested yet.)
58EMULATE_FPU=false
59
60# Command used to download source code
61WGET:=wget --passive-ftp
62
63# Optimize toolchain for which type of CPU?
64# WARNING!!!  CURRENTLY BROKEN!!! LEAVE IT AS $(ARCH)!!!
65OPTIMIZE_FOR_CPU=$(ARCH)
66# WARNING!!!  CURRENTLY BROKEN!!! LEAVE IT AS $(ARCH)!!!
67#OPTIMIZE_FOR_CPU=i486
68#OPTIMIZE_FOR_CPU=strongarm
69#OPTIMIZE_FOR_CPU=whatever
70
71TARGET_OPTIMIZATION=-Os
72TARGET_DEBUGGING= #-g
73
74# Any additional gcc options you may want to include....
75EXTRA_GCC_CONFIG_OPTIONS=
76
77# For SMP machines some stuff can be run in parallel
78# This one sets j<amount of CPUs> but it may be just as good or even better
79# with amount +1
80# JLEVEL=-j$(shell expr $(shell grep -i -c '^processor[[:space:]]*:[[:space:]]*[0-9]\+' /proc/cpuinfo) \+ 1)
81# Or if running distcc:
82# JLEVEL=-j5
83
84# Sourceforge-mirror:
85SF_HOST=superb-east
86SF_MIRROR=http://$(SF_HOST).dl.sourceforge.net
87
88# NICs you want in the nics.ffw module package separated by a space.
89# If you want options to the module, put them in a () after the module.
90NIC_MODULES=3c509 3c59x 8139cp 8139too e100 e1000 pcnet32 r8169 ne ne2k-pci forcedeth tulip via-rhine
91
92#############################################################
93#
94# The list of stuff to build for the target filesystem
95#
96#############################################################
97
98TARGETS+=uclibc
99
100# Probably a good thing even if you choose not to patch anything.
101# This target only unpacks. The linux target does the patching.
102TARGETS+=patch-o-matic
103
104# POM-patches to add:
105# I could have used base but some of the patches has a problem.
106# It's alot here, probably not so smart, cut back later.
107POM_PATCHES=h323-conntrack-nat quake3-conntrack-nat connlimit dstlimit pptp-conntrack-nat directx8-conntrack-nat time cuseeme-nat rtsp-conntrack iprange random ipp2p mms-conntrack-nat connrate msnp-conntrack-nat nth sip-conntrack-nat set expire psd TARPIT
108
109# After switching to a newer p-o-m;
110#
111# Did not apply cleanly: dropped-table tproxy
112#
113# Did not compile cleanly:
114#   policy: (ipt_policy.c:15:22: net/xfrm.h: No such file or directory)
115#
116#   osf: (extensions/libipt_osf.c: In function `help':
117#   extensions/libipt_osf.c:46: warning: too many arguments for format
118#   extensions/libipt_osf.c: In function `parse':
119#   extensions/libipt_osf.c:107: error: `IPT_OSF_CONNECTOR' undeclared (first use in this function)
120#   extensions/libipt_osf.c:107: error: (Each undeclared identifier is reported only once
121#   )
122#
123# Missing: string
124
125# IPTABLES_MODULES: this is a result of the patches you have chosen above and
126# also the included modules in the kernel (also check the kernel config.)
127# This works the same way as NIC_MODULES.
128# If you want options to the module, put them in a () after the module.
129IPTABLES_MODULES=ip_conntrack arp_tables iptable_filter arptable_filter iptable_mangle ipt_state ipt_MASQUERADE ipt_SET ipt_DSCP ipt_REJECT ipt_DSCP ipt_ECN ipt_LOG ipt_MARK ipt_REDIRECT ipt_TCPMSS ipt_TOS ipt_ULOG ipt_conntrack ipt_connlimit ipt_dscp ipt_ecn ipt_helper ipt_length ipt_limit ipt_mac ipt_mark ipt_physdev ipt_pkttype ipt_tcpmss ipt_tos ipt_ttl ipt_unclean ip_conntrack_ftp ip_nat_ftp ip_conntrack_irc(ports=6666,6667,6668,7000) ip_nat_irc sch_htb ip_conntrack_h323 ip_conntrack_mms ip_nat_mms ip_conntrack_rtsp ip_conntrack_pptp ip_conntrack_quake3 ipt_iprange ipt_multiport ip_nat_proto_gre ipt_ipp2p ipt_time
130
131#ipt_MIRROR
132#ip_queue
133#ipt_string
134#ip_nat_tftp
135#ip_conntrack_tftp
136#ip_nat_amanda
137#ip_conntrack_amanda
138
139TARGETS+=linux
140
141TARGETS+=busybox
142USE_BUSYBOX_SNAPSHOT=false
143
144TARGETS+=iptables
145
146TARGETS+=ipset
147
148TARGETS+=iproute2
149
150TARGETS+=dnsmasq
151
152TARGETS+=bridgeutils
153
154# TARGETS+=modutils
155
156TARGETS+=pppd
157
158TARGETS+=pppoe
159
160TARGETS+=pcmcia
161
162TARGETS+=wireless-tools
163
164TARGETS+=dropbear
165
166TARGETS+=ethtool
167
168# This one will be installed in add.ffw, alas, the floppy base itself and
169# not it's own package.
170#TARGETS+=mii-diag
171
172TARGETS+=e3
173
174TARGETS+=noip2
175
176TARGETS+=nanotop
177
178TARGETS+=wsmenu
179
180TARGETS+=lpd-p910nd
181
182# TARGETS+=openntpd
183
184# These needs to be tested.
185TARGETS+=siproxd
186TARGETS+=ucarp
187TARGETS+=lineserv
188TARGETS+=tcpdump
189TARGETS+=madwifi
190TARGETS+=muninlite
191TARGETS+=micro_proxy
192# TARGETS+=quagga
193
194# The hostap target will add patches to the kernel and build a hostap.ffw
195# package with hostapd, hostap-driver and wpa_supplicant and hostap-utils
196# if you set it here.
197# TARGETS+=hostap
198# TARGETS+=hostap-utils
199
200# Not yet
201# TARGETS+=ebtables
202
203# And at last:
204TARGETS+=module-packages
205TARGETS+=floppy
206
207#############################################################
208#
209# You should probably leave this stuff alone unless you know
210# what you are doing.
211#
212#############################################################
213
214TARGET_CFLAGS=$(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) $(TARGET_SOFT_FLOAT)
215# TARGET_CC=distcc gcc
216TARGET_CC=gcc
217TARGET_CX=g++
218
219HOSTCC:=distcc gcc
220BASE_DIR:=${shell pwd}
221SOURCE_DIR:=$(BASE_DIR)/sources
222SCRIPTS_DIR:=$(BASE_DIR)/scripts
223CONFIG_DIR:=$(BASE_DIR)/configs
224LICENSES_DIR:=$(BASE_DIR)/licenses
225MODULES_BASE_DIR:=$(BASE_DIR)/modules
226MODULES_DIR:=$(MODULES_BASE_DIR)/2.4-std
227DL_DIR:=$(BASE_DIR)/downloads
228PATCH_DIR=$(BASE_DIR)/patches
229PACKAGES_DIR=$(BASE_DIR)/packages
230PACKAGES_INI_DIR=$(PACKAGES_DIR)/scripts
231PACKAGES_SKELETON_DIR=$(PACKAGES_DIR)/skeleton
232INITRD_DIR=$(BASE_DIR)/initrd
233INITRD_MASTER=$(INITRD_DIR)/master
234ADD_DIR=$(BASE_DIR)/add
235ADD_MASTER=$(ADD_DIR)/master
236
237TMP_DIR=$(BASE_DIR)/tmp
238
239# Need another name maybe?
240BUILD_DIR:=$(BASE_DIR)/build_$(ARCH)$(ARCH_FPU_SUFFIX)
241
242TARFLAGS=--format oldgnu
243
244#TAR_VERBOSE=--verbose
245RM=rm -f
246
247# This may be a problem to use but I'll try.
248# --strip-unneeded
249STRIP=strip --strip-unneeded -g --remove-section=.comment --remove-section=.note
250STRIP_KMOD=strip --strip-debug --remove-section=.comment --remove-section=.note
251STRIP=$(STRIP_KMOD) --strip-unneeded
252
253SSTRIP=$(shell command type sstrip >/dev/null 2>&1 && echo sstrip || echo $(STRIP))
254
255#DEPMOD=(cd $(LINUX_DIR); \
256#       /sbin/depmod -ae -F System.map -b $(MODULES_DIR) -r $(LINUX_VERSION))
257
258DEPMOD=([ -d $(MODULES_DIR)/lib/modules/$(LINUX_VERSION) ] && \
259        $(BASE_DIR)/perl/depmod.pl -n \
260                -b $(MODULES_DIR)/lib/modules/$(LINUX_VERSION)/ \
261                -k $(LINUX_DIR)/vmlinux \
262                > $(LINUX_MODULES_DEP) )
263
264# SED=/bin/sed -i -e
265SED=/usr/bin/perl -p -i -e
266LZMAD=lzmacat
267LZMAC=lzmacomp
268MAKE=/usr/bin/make $(JLEVEL)
269HOST_ARCH:=$(shell $(HOSTCC) -dumpmachine | sed -e s'/-.*//' \
270        -e 's/sparc.*/sparc/' \
271        -e 's/arm.*/arm/g' \
272        -e 's/m68k.*/m68k/' \
273        -e 's/ppc/powerpc/g' \
274        -e 's/v850.*/v850/g' \
275        -e 's/sh[234]/sh/' \
276        -e 's/mips-.*/mips/' \
277        -e 's/mipsel-.*/mipsel/' \
278        -e 's/cris.*/cris/' \
279        -e 's/i[3-9]86/i386/' \
280        )
281
282GNU_HOST_NAME:=$(HOST_ARCH)-pc-linux-gnu
283
284all:   world
285
286TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
287TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS))
288TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
289
290world: $(ADD_MASTER) $(INITRD_MASTER) $(DL_DIR) $(TMP_DIR) $(BUILD_DIR) $(PACKAGES_DIR) $(TARGETS)
291
292.PHONY: all world clean dirclean distclean source $(TARGETS) \
293        $(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE)
294
295include makefiles/*.mk
296
297#############################################################
298#
299# staging and target directories do NOT list these as
300# dependancies anywhere else
301#
302#############################################################
303$(TMP_DIR):
304        mkdir -p $(TMP_DIR)
305
306$(DL_DIR):
307        mkdir -p $(DL_DIR)
308
309$(BUILD_DIR):
310        mkdir -p $(BUILD_DIR)
311
312$(PACKAGES_DIR):
313        mkdir -p $(PACKAGES_DIR)
314
315$(MODULES_BASE_DIR):
316        mkdir -p $(MODULES_BASE_DIR)
317
318$(MODULES_DIR):
319        mkdir -p $(MODULES_DIR)
320
321$(ADD_MASTER):
322        cp -a $(ADD_DIR)/skeleton $(ADD_MASTER)
323        -find $(ADD_MASTER) -type d -name CVS -exec $(RM) -r {} \; > /dev/null 2>&1
324        -find $(ADD_MASTER) -type d -name .svn -exec $(RM) -r {} \; > /dev/null 2>&1
325
326$(INITRD_MASTER):
327        cp -a $(INITRD_DIR)/skeleton $(INITRD_MASTER)
328        -find $(INITRD_MASTER) -type d -name CVS -exec $(RM) -r {} \; > /dev/null 2>&1
329        -find $(INITRD_MASTER) -type d -name .svn -exec $(RM) -r {} \; > /dev/null 2>&1
330
331source: $(TARGETS_SOURCE)
332
333#############################################################
334#
335# Cleanup and misc junk
336#
337# Fix later.. (yeah!)
338#
339#############################################################
340clean: $(TARGETS_CLEAN)
341        $(RM) -r $(INITRD_MASTER) $(ADD_MASTER)
342
343dirclean: $(TARGETS_DIRCLEAN)
344        $(RM) -r $(INITRD_MASTER) $(ADD_MASTER)
345
346distclean:
347        $(RM) -r $(DL_DIR) $(BUILD_DIR)
348
349veryclean:
350        $(RM) -r $(INITRD_MASTER)
351        $(RM) -r $(INITRD_DIR)/initrd.sq
352        $(RM) -r $(ADD_MASTER)
353        $(RM) $(ADD_DIR)/*.ffw $(ADD_DIR)/*.bz2
354        $(RM) -r $(BUILD_DIR)
355        $(RM) -r $(MODULES_BASE_DIR)
356        # Should have the skeleton or packages somewhere else.
357        $(RM) $(PACKAGES_DIR)/*.ffw $(PACKAGES_DIR)/*.bz2
358        $(RM) -r isoimage*
359        $(RM) -r soekris.tar.bz2
360        $(RM) -r flash.tar.bz2
361        # Dangerous..
362        $(RM) -r floppy*
363
364sourceball: 
365        $(RM) -r $(BUILD_DIR)
366        set -e; \
367        cd ..; \
368        $(RM) buildroot.tar.bz2; \
369        tar -cvf buildroot.tar buildroot; \
370        bzip2 -9 buildroot.tar
371
372list-targets:
373        @(echo "DIRS:"; \
374                for t in $(TMP_DIR) $(DL_DIR) $(BUILD_DIR) \
375                $(MODULES_BASE_DIR) $(MODULES_DIR) \
376                $(ADD_MASTER) $(INITRD_MASTER) $(PACKAGES_DIR); do \
377                echo -e "\t$$t"; \
378          done \
379        )
380        @echo "TARGETS:"
381        @(for t in $(TARGETS); do \
382                echo -e "\t$$t"; \
383          done \
384        )
385        @echo "TARGETS_SOURCE:"
386        @(for t in $(TARGETS_SOURCE); do \
387                echo -e "\t$$t"; \
388          done \
389        )
390        @echo "TARGETS_CLEAN:"
391        @(for t in $(TARGETS_CLEAN); do \
392                echo -e "\t$$t"; \
393          done \
394        )
395        @echo "TARGETS_DIRCLEAN:"
396        @(for t in $(TARGETS_DIRCLEAN); do \
397                echo -e "\t$$t"; \
398          done \
399        )
Note: See TracBrowser for help on using the browser.