root/floppyfw-3.0/Makefile

Revision 273, 11.3 KB (checked in by root, 7 months ago)

Various fixes I should have synced earlier and one new feature (!).

Now it will attept to save and then use the last address it got from the DHCP server through reboots.

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.15
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=voxel
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
141# It's a externally compiled module but should be in the base.
142# It's not, for now. It's big and too buggy.
143# read makefiles/realtek-81xxx-driver.README for information about it.
144TARGETS+=realtek-81xxx-driver
145
146TARGETS+=busybox
147USE_BUSYBOX_SNAPSHOT=false
148
149TARGETS+=iptables
150
151TARGETS+=ipset
152
153TARGETS+=iproute2
154
155TARGETS+=dnsmasq
156
157TARGETS+=bridgeutils
158
159# TARGETS+=modutils
160
161TARGETS+=pppd
162
163TARGETS+=pppoe
164
165TARGETS+=pcmcia
166
167TARGETS+=wireless-tools
168
169
170TARGETS+=dropbear
171
172TARGETS+=ethtool
173
174# This one will be installed in add.ffw, alas, the floppy base itself and
175# not it's own package.
176#TARGETS+=mii-diag
177
178TARGETS+=e3
179
180TARGETS+=noip2
181
182TARGETS+=nanotop
183
184TARGETS+=wsmenu
185
186TARGETS+=lpd-p910nd
187
188# TARGETS+=openntpd
189
190# These needs to be tested.
191TARGETS+=siproxd
192TARGETS+=ucarp
193TARGETS+=lineserv
194TARGETS+=tcpdump
195TARGETS+=madwifi
196TARGETS+=muninlite
197TARGETS+=micro_proxy
198# TARGETS+=quagga
199# TARGETS+=openssl
200# TARGETS+=openvpn
201
202# The hostap target will add patches to the kernel and build a hostap.ffw
203# package with hostapd, hostap-driver and wpa_supplicant and hostap-utils
204# if you set it here.
205# TARGETS+=hostap
206# TARGETS+=hostap-utils
207
208# Not yet
209# TARGETS+=ebtables
210
211# And at last:
212TARGETS+=module-packages
213TARGETS+=floppy
214
215#############################################################
216#
217# You should probably leave this stuff alone unless you know
218# what you are doing.
219#
220#############################################################
221
222TARGET_CFLAGS=$(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) $(TARGET_SOFT_FLOAT)
223# TARGET_CC=distcc gcc
224TARGET_CC=gcc
225TARGET_CX=g++
226
227#TARGET_CONFIGURE_OPTS=--host=$(ARCH)-ucblic-linux --target=$(ARCH)-uclibc-linux
228CONFIGURE_OPTS=--target=$(ARCH)-uclibc-linux
229
230HOSTCC:=distcc gcc
231BASE_DIR:=${shell pwd}
232SOURCE_DIR:=$(BASE_DIR)/sources
233SCRIPTS_DIR:=$(BASE_DIR)/scripts
234CONFIG_DIR:=$(BASE_DIR)/configs
235LICENSES_DIR:=$(BASE_DIR)/licenses
236MODULES_BASE_DIR:=$(BASE_DIR)/modules
237MODULES_DIR:=$(MODULES_BASE_DIR)/2.4-std
238DL_DIR:=$(BASE_DIR)/downloads
239PATCH_DIR=$(BASE_DIR)/patches
240PACKAGES_DIR=$(BASE_DIR)/packages
241PACKAGES_INI_DIR=$(PACKAGES_DIR)/scripts
242PACKAGES_SKELETON_DIR=$(PACKAGES_DIR)/skeleton
243INITRD_DIR=$(BASE_DIR)/initrd
244INITRD_MASTER=$(INITRD_DIR)/master
245ADD_DIR=$(BASE_DIR)/add
246ADD_MASTER=$(ADD_DIR)/master
247
248TMP_DIR=$(BASE_DIR)/tmp
249
250# Need another name maybe?
251BUILD_DIR:=$(BASE_DIR)/build_$(ARCH)$(ARCH_FPU_SUFFIX)
252
253TARFLAGS=--format oldgnu
254
255#TAR_VERBOSE=--verbose
256RM=rm -f
257
258# This may be a problem to use but I'll try.
259# --strip-unneeded
260STRIP=strip --strip-unneeded -g --remove-section=.comment --remove-section=.note
261STRIP_KMOD=strip --strip-debug --remove-section=.comment --remove-section=.note
262STRIP=$(STRIP_KMOD) --strip-unneeded
263
264SSTRIP=$(shell command type sstrip >/dev/null 2>&1 && echo sstrip || echo $(STRIP))
265
266#DEPMOD=(cd $(LINUX_DIR); \
267#       /sbin/depmod -ae -F System.map -b $(MODULES_DIR) -r $(LINUX_VERSION))
268
269DEPMOD=([ -d $(MODULES_DIR)/lib/modules/$(LINUX_VERSION) ] && \
270        $(BASE_DIR)/perl/depmod.pl -n \
271                -b $(MODULES_DIR)/lib/modules/$(LINUX_VERSION)/ \
272                -k $(LINUX_DIR)/vmlinux \
273                > $(LINUX_MODULES_DEP) )
274
275# SED=/bin/sed -i -e
276SED=/usr/bin/perl -p -i -e
277LZMAD=lzmacat
278LZMAC=lzmacomp
279MAKE=/usr/bin/make $(JLEVEL)
280HOST_ARCH:=$(shell $(HOSTCC) -dumpmachine | sed -e s'/-.*//' \
281        -e 's/sparc.*/sparc/' \
282        -e 's/arm.*/arm/g' \
283        -e 's/m68k.*/m68k/' \
284        -e 's/ppc/powerpc/g' \
285        -e 's/v850.*/v850/g' \
286        -e 's/sh[234]/sh/' \
287        -e 's/mips-.*/mips/' \
288        -e 's/mipsel-.*/mipsel/' \
289        -e 's/cris.*/cris/' \
290        -e 's/i[3-9]86/i386/' \
291        )
292
293GNU_HOST_NAME:=$(HOST_ARCH)-pc-linux-gnu
294
295all:   world
296
297TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
298TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS))
299TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
300
301world: $(ADD_MASTER) $(INITRD_MASTER) $(DL_DIR) $(TMP_DIR) $(BUILD_DIR) $(PACKAGES_DIR) $(TARGETS)
302
303.PHONY: all world clean dirclean distclean source $(TARGETS) \
304        $(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE)
305
306include makefiles/*.mk
307
308#############################################################
309#
310# staging and target directories do NOT list these as
311# dependancies anywhere else
312#
313#############################################################
314$(TMP_DIR):
315        mkdir -p $(TMP_DIR)
316
317$(DL_DIR):
318        mkdir -p $(DL_DIR)
319
320$(BUILD_DIR):
321        mkdir -p $(BUILD_DIR)
322
323$(PACKAGES_DIR):
324        mkdir -p $(PACKAGES_DIR)
325
326$(MODULES_BASE_DIR):
327        mkdir -p $(MODULES_BASE_DIR)
328
329$(MODULES_DIR):
330        mkdir -p $(MODULES_DIR)
331
332$(ADD_MASTER):
333        cp -a $(ADD_DIR)/skeleton $(ADD_MASTER)
334        -find $(ADD_MASTER) -type d -name CVS -exec $(RM) -r {} \; > /dev/null 2>&1
335        -find $(ADD_MASTER) -type d -name .svn -exec $(RM) -r {} \; > /dev/null 2>&1
336
337$(INITRD_MASTER):
338        cp -a $(INITRD_DIR)/skeleton $(INITRD_MASTER)
339        -find $(INITRD_MASTER) -type d -name CVS -exec $(RM) -r {} \; > /dev/null 2>&1
340        -find $(INITRD_MASTER) -type d -name .svn -exec $(RM) -r {} \; > /dev/null 2>&1
341
342source: $(TARGETS_SOURCE)
343
344#############################################################
345#
346# Cleanup and misc junk
347#
348# Fix later.. (yeah!)
349#
350#############################################################
351clean: $(TARGETS_CLEAN)
352        $(RM) -r $(INITRD_MASTER) $(ADD_MASTER) 
353
354dirclean: $(TARGETS_DIRCLEAN)
355        $(RM) -r $(INITRD_MASTER) $(ADD_MASTER) 
356
357distclean:
358        $(RM) -r $(DL_DIR) $(BUILD_DIR)
359
360veryclean:
361        $(RM) -r $(INITRD_MASTER) 
362        $(RM) -r $(INITRD_DIR)/initrd.sq
363        $(RM) -r $(ADD_MASTER) 
364        $(RM) $(ADD_DIR)/*.ffw $(ADD_DIR)/*.bz2
365        $(RM) -r $(BUILD_DIR)
366        $(RM) -r $(MODULES_BASE_DIR)
367        # Should have the skeleton or packages somewhere else.
368        $(RM) $(PACKAGES_DIR)/*.ffw $(PACKAGES_DIR)/*.bz2
369        $(RM) -r isoimage*
370        $(RM) -r soekris.tar.bz2
371        $(RM) -r flash.tar.bz2
372        # Dangerous..
373        $(RM) -r floppy*
374
375sourceball:
376        $(RM) -r $(BUILD_DIR)
377        set -e; \
378        cd ..; \
379        $(RM) buildroot.tar.bz2; \
380        tar -cvf buildroot.tar buildroot; \
381        bzip2 -9 buildroot.tar
382
383list-targets:
384        @(echo "DIRS:"; \
385                for t in $(TMP_DIR) $(DL_DIR) $(BUILD_DIR) \
386                $(MODULES_BASE_DIR) $(MODULES_DIR) \
387                $(ADD_MASTER) $(INITRD_MASTER) $(PACKAGES_DIR); do \
388                echo -e "\t$$t"; \
389          done \
390        )
391        @echo "TARGETS:"
392        @(for t in $(TARGETS); do \
393                echo -e "\t$$t"; \
394          done \
395        )
396        @echo "TARGETS_SOURCE:"
397        @(for t in $(TARGETS_SOURCE); do \
398                echo -e "\t$$t"; \
399          done \
400        )
401        @echo "TARGETS_CLEAN:"
402        @(for t in $(TARGETS_CLEAN); do \
403                echo -e "\t$$t"; \
404          done \
405        )
406        @echo "TARGETS_DIRCLEAN:"
407        @(for t in $(TARGETS_DIRCLEAN); do \
408                echo -e "\t$$t"; \
409          done \
410        )
Note: See TracBrowser for help on using the browser.