1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
|
# Makefile to get and build all the parts of GBDK
CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
else if [ -x /bin/bash ]; then echo /bin/bash; \
else echo sh; fi ; fi)
TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
BUILD = $(TOPDIR)/build/sdcc
SDCCLIB = $(BUILD)
CVSFLAGS = -z5
CVS = cvs
SVNFLAGS =
SVN = svn
DIR = .
VER = 2.2.1
# Used as a branch name.
SHORTVER = 221
# Options:
# linux-linux Building on Linux, targeting Linux
# linux-ming32 Building on Linux, targeting mingw32 based win32
# cygwin-mingw32 Building via cygwin on win32, targeting mingw32
COMPILE_MODE = linux-mingw32
SDCC_OR_GBDK = sdcc
ROOT_GBDK = :pserver:anonymous@cvs.gbdk.sourceforge.net:/cvsroot/gbdk
ROOT_SDCC = https://sdcc.svn.sourceforge.net/svnroot/sdcc
ifeq ($(COMPILE_MODE),linux-linux)
# For Linux
SE =
E =
SDCC_ROOT = /usr/lib/$(SDCC_OR_GBDK)
endif
ifeq ($(COMPILE_MODE),linux-mingw32)
# For mingw32 hosted on Linux
# Tools name prefix
TNP = i386-mingw32-
# Source extension - what the gcc generated files have appended
SE =
# Dest extenstion - what extension we want them to have.
E = .exe
SDCC_ROOT = /$(SDCC_OR_GBDK)
# Set to cross to bypass the detection
CROSS_LIBGC = 1
endif
ifeq ($(COMPILE_MODE),cygwin-mingw32)
# For mingw32 on win32
# Source extension - what the gcc generated files have appended
SE = .exe
# Dest extenstion - what extension we want them to have.
SDCC_ROOT = /$(SDCC_OR_GBDK)
endif
all: logged_in dist
clean:
for i in sdcc gbdk-lib gbdk-support/lcc; do make -C $$i clean; done
rm -f *~
rm -rf $(BUILD) gbdk-lib gbdk-support sdcc logged_in
update: logged_in
cd $(DIR); svn $(SVNFLAGS) co $(ROOT_SDCC)/branches/sdcc-$(SHORTVER)/sdcc sdcc
cd $(DIR); cvs $(CVSFLAGS) -d$(ROOT_GBDK) co -r sdcc-$(SHORTVER) gbdk-lib
cd $(DIR); cvs $(CVSFLAGS) -d$(ROOT_GBDK) co -r sdcc-$(SHORTVER) gbdk-support
_sdcc: sdcc-bin sdcc-misc sdcc-lib sdcc-doc
tidy:
find $(BUILD) -name "CVS" -exec rm -rf \;
find $(BUILD) -name ".svn" -exec rm -rf \;
find $(BUILD)/lib -name "*.asm" -exec rm -rf \;
-$(TNP)strip $(BUILD)/bin/*
sdcc-bin: sdcc/sdccconf.h
make -C sdcc sdcc-bin CROSS_LIBGC=$(CROSS_LIBGC)
mkdir -p $(BUILD)/bin
for i in \
sdcc sdcpp link-z80 as-z80 aslink asx8051; \
do cp sdcc/bin/$$i$(SE) $(BUILD)/bin/$$i$(E); done
sdcc-misc: sdcc/sdccconf.h
make -C sdcc sdcc-misc CROSS_LIBGC=$(CROSS_LIBGC)
mkdir -p $(BUILD)/bin
for i in \
sdcdb; \
do cp sdcc/bin/$$i$(SE) $(BUILD)/bin/$$i$(E); done
cp sdcc/sim/ucsim/s51.src/s51$(E) $(BUILD)/bin
cp sdcc/sim/ucsim/z80.src/sz80$(E) $(BUILD)/bin
cp sdcc/sim/ucsim/avr.src/savr$(E) $(BUILD)/bin
cp sdcc/debugger/mcs51/*.el $(BUILD)/bin
sdcc-doc:
(cd sdcc; tar cf - doc) | (cd $(BUILD); tar xf -)
cp sdcc/README sdcc/COPYING $(BUILD)
mkdir -p $(BUILD)/sim
for i in COPYING INSTALL README TODO; \
do cp sdcc/sim/ucsim/$$i $(BUILD)/sim; done
(cd sdcc/sim/ucsim; tar cf - doc) | (cd $(BUILD)/sim; tar xf -)
sdcc-lib: sdcc-lib-z80 sdcc-lib-gen
mkdir -p $(BUILD)/lib
(cd sdcc/device/lib; tar cf - small large) | (cd $(BUILD)/lib; tar xf -)
(cd sdcc/device; tar cf - examples include) | (cd $(BUILD); tar xf -)
sdcc-lib-z80:
make -C gbdk-lib/libc SDCCLIB=$(BUILD) PORTS=z80 PLATFORMS=consolez80
(cd gbdk-lib/build; tar cf - consolez80 z80) | (cd $(BUILD)/lib; tar xf -)
mkdir -p $(BUILD)/include/gbdk-lib
(cd gbdk-lib/include; tar cf - .) | (cd $(BUILD)/include/gbdk-lib; tar xf -)
sdcc-lib-gen:
make -C sdcc sdcc-device
lcc:
make -C gbdk-support/lcc SDCCLIB=$(SDCC_ROOT)/ TNP=$(TNP)
cp gbdk-support/lcc/lcc$(SE) $(BUILD)/bin/lcc$(E)
sdcc/sdccconf.h: sdcc/configure
ifdef TNP
cd sdcc; \
export CCC=$(TNP)c++; \
export RANLIB=$(TNP)ranlib; \
export CC=$(TNP)gcc; \
./configure --datarootdir=$(SDCC_ROOT)
echo $$CCC
else
cd sdcc; ./configure --datarootdir=$(SDCC_ROOT)
endif
dist: _sdcc lcc tidy
zdist: dist
tar czf gbdk-$(VER).tar.gz gbdk
logged_in:
cvs -d$(ROOT_GBDK) login
cvs -d$(ROOT_SDCC) login
touch logged_in
make -f build.mak update
|