199 lines
5.3 KiB
Makefile
199 lines
5.3 KiB
Makefile
# Top level Makefile for GBDK that combines the builds for sdcc,
|
|
# gbdk-lib, and gbdk-support
|
|
#
|
|
# 2001 Michael Hope <michaelh@juju.net.nz>
|
|
# $Id: Makefile,v 1.4 2001/11/04 18:43:51 michaelh Exp $
|
|
#
|
|
TOPDIR = $(shell pwd)
|
|
|
|
# Package name, used for tarballs and cvs
|
|
PKG = gbdk
|
|
# Version, used for tarballs
|
|
VER = 2.96a
|
|
# Short version, used for cvs tags
|
|
SHORTVER = 296
|
|
|
|
# Prefix to add to the standard tools. Usefull for a standard gcc
|
|
# cross-compile.
|
|
TOOLSPREFIX =
|
|
|
|
TARGETCC = $(TOOLSPREFIX)gcc
|
|
TARGETRANLIB = $(TOOLSPREFIX)ranlib
|
|
TARGETAR = $(TOOLSPREFIX)ar
|
|
TARGETCXX = $(TOOLSPREFIX)g++
|
|
TARGETSTRIP = $(TOOLSPREFIX)strip
|
|
# Add extra flags here. g++ 2.95.4 requires -fdollars-in-identifiers
|
|
TARGETCXXFLAGS =
|
|
|
|
# Directory containing the source to sdcc
|
|
SDCCDIR = $(TOPDIR)/sdcc
|
|
# Directory containing the source to gbdk-lib
|
|
GBDKLIBDIR = $(TOPDIR)/gbdk-lib
|
|
# Directory containing the source to gbdk-support
|
|
GBDKSUPPORTDIR = $(TOPDIR)/gbdk-support
|
|
|
|
# Base setup
|
|
# Extension to add to executables
|
|
EXEEXTENSION =
|
|
# Host operating system identifier. The one below should work for
|
|
# most systems.
|
|
HOSTOS = ppc-unknown-linux2.2
|
|
# Target operating system identifier. Used in the output zip name.
|
|
TARGETOS = ppc-unknown-linux2.2
|
|
|
|
# Directory that gbdk should finally end up in
|
|
TARGETDIR = /opt/gbdk
|
|
# Directory that gbdk for this target is built into.
|
|
BUILDDIR = $(TOPDIR)/build/$(TARGETOS)/gbdk
|
|
|
|
NOISELOG = $(TOPDIR)/noise.log
|
|
|
|
all: native-build
|
|
|
|
clean: sdcc-clean gbdk-support-clean gbdk-lib-clean
|
|
|
|
distclean: clean build-dir-clean
|
|
|
|
# Build rule for michaelh's machine to spin a release
|
|
sapphire-full-build: native-build binary cross-clean cross-linux-mingw32-build
|
|
|
|
# Cross-compilation targets
|
|
FIXUPMASKS = *.c *.h .bat *.s ChangeLog README
|
|
|
|
native-build: gbdk-build gbdk-install
|
|
|
|
cross-clean: sdcc-clean gbdk-support-clean
|
|
|
|
cross-build: gbdk-build gbdk-install cross-cleanup
|
|
|
|
cross-cleanup:
|
|
ifdef MSDOSLINEENDS
|
|
for i in $(FIXUPMASKS); do \
|
|
find $(BUILDDIR) -name $$i -exec unix2dos {} \; ; \
|
|
done
|
|
endif
|
|
|
|
cross-linux-mingw32-build:
|
|
$(MAKE) TARGETOS=i586-mingw32msvc \
|
|
TOOLSPREFIX=i586-mingw32msvc- \
|
|
EXEEXTENSION=.exe \
|
|
CROSSCOMPILING=1 \
|
|
MSDOSLINEENDS=1 \
|
|
TARGETDIR=/sdcc \
|
|
ARCHIVETYPE=zip \
|
|
cross-build gbdk-lib-examples-makefile binary
|
|
|
|
# Source code drop
|
|
src: clean
|
|
rm -rf gbdk
|
|
mkdir -p gbdk
|
|
cp -r Makefile sdcc gbdk-lib gbdk-support gbdk
|
|
rm -rf `find gbdk -name CVS`
|
|
tar czf gbdk-$(VER).tar.gz gbdk
|
|
|
|
# Base rules
|
|
gbdk-build: sdcc-build gbdk-support-build gbdk-lib-build
|
|
|
|
gbdk-install: sdcc-install gbdk-support-install gbdk-lib-install
|
|
|
|
# Directories
|
|
build-bin-dir:
|
|
mkdir -p $(BUILDDIR)/bin
|
|
|
|
build-dir-clean:
|
|
rm -r $(BUILDDIR)
|
|
|
|
# Setup rules
|
|
CVSFLAGS = -r $(PKG)-$(SHORTVER)
|
|
|
|
setup-from-local:
|
|
rm -rf sdcc gbdk-lib gbdk-support
|
|
ln -s ../sdcc
|
|
ln -s ../gbdk-lib
|
|
ln -s ../gbdk-support
|
|
|
|
setup-from-cvs:
|
|
cvs -d :pserver:anonymous@cvs.sdcc.sourceforge.net:/cvsroot/sdcc -q co $(CVSFLAGS) sdcc
|
|
cvs -d :pserver:anonymous@cvs.gbdk.sourceforge.net:/cvsroot/gbdk -q co $(CVSFLAGS) gbdk-lib
|
|
cvs -d :pserver:anonymous@cvs.gbdk.sourceforge.net:/cvsroot/gbdk -q co $(CVSFLAGS) gbdk-support
|
|
|
|
# Rules for sdcc
|
|
SDCCCONFIGUREFLAGS = \
|
|
--disable-mcs51-port \
|
|
--disable-avr-port \
|
|
--disable-ds390-port \
|
|
--disable-pic-port \
|
|
--disable-i186-port \
|
|
--disable-tlcs900h-port \
|
|
--disable-ucsim \
|
|
--disable-device-lib-build \
|
|
--disable-packihx
|
|
|
|
SDCCCONFIGUREFLAGS += \
|
|
--prefix=$(TARGETDIR) \
|
|
--program-suffix=$(EXEEXTENSION)
|
|
|
|
sdcc-build: $(SDCCDIR)/sdccconf.h
|
|
$(MAKE) -C $(SDCCDIR) SDCC_SUB_VERSION=$(PKG)-$(VER)
|
|
|
|
$(SDCCDIR)/sdccconf.h:
|
|
cd $(SDCCDIR); CC=$(TARGETCC) CXX=$(TARGETCXX) STRIP=$(TARGETSTRIP) RANLIB=$(TARGETRANLIB) CXXFLAGS=$(TARGETCXXFLAGS) ./configure $(SDCCCONFIGUREFLAGS) --host=$(HOSTOS)
|
|
|
|
sdcc-install: sdcc-build build-bin-dir
|
|
rm -fr tmp
|
|
$(MAKE) -C $(SDCCDIR) install prefix=$(TOPDIR)/tmp
|
|
cp tmp/bin/sdcc* tmp/bin/sdcpp* tmp/bin/link-* tmp/bin/as-* $(BUILDDIR)/bin
|
|
|
|
# PENDING: Hack below
|
|
sdcc-clean:
|
|
-$(MAKE) -C $(SDCCDIR) distclean
|
|
touch $(SDCCDIR)/doc/holder.pdf
|
|
|
|
# Rules for gbdk-support
|
|
gbdk-support-build:
|
|
$(MAKE) -C $(GBDKSUPPORTDIR)/lcc TOOLSPREFIX=$(TOOLSPREFIX) TARGETDIR=$(TARGETDIR)/
|
|
|
|
gbdk-support-install: gbdk-support-build build-bin-dir
|
|
cp $(GBDKSUPPORTDIR)/lcc/lcc $(BUILDDIR)/bin/lcc$(EXEEXTENSION)
|
|
$(TARGETSTRIP) $(BUILDDIR)/bin/lcc*
|
|
cp $(GBDKSUPPORTDIR)/README $(GBDKSUPPORTDIR)/ChangeLog $(BUILDDIR)
|
|
|
|
gbdk-support-clean:
|
|
$(MAKE) -C $(GBDKSUPPORTDIR)/lcc clean
|
|
|
|
# Rules for gbdk-lib
|
|
gbdk-lib-build:
|
|
ifndef CROSSCOMPILING
|
|
$(MAKE) -C $(GBDKLIBDIR)/libc PORTS=gbz80 PLATFORMS=gb SDCCLIB=$(SDCCDIR)
|
|
endif
|
|
|
|
gbdk-lib-install: gbdk-lib-build
|
|
cp -r $(GBDKLIBDIR)/libc $(GBDKLIBDIR)/include $(GBDKLIBDIR)/examples $(GBDKLIBDIR)/tools $(BUILDDIR)
|
|
rm -rf $(BUILDDIR)/lib
|
|
cp -r $(GBDKLIBDIR)/build $(BUILDDIR)/lib
|
|
|
|
gbdk-lib-clean:
|
|
$(MAKE) -C $(GBDKLIBDIR) clean
|
|
|
|
gbdk-lib-examples-makefile:
|
|
$(MAKE) -C $(BUILDDIR)/examples/gb make.bat
|
|
unix2dos $(BUILDDIR)/examples/gb/make.bat
|
|
|
|
# Final binary
|
|
binary: binary-tidyup
|
|
ifeq ($(ARCHIVETYPE),zip)
|
|
rm -f $(TOPDIR)/gbdk-$(VER)-$(TARGETOS).zip
|
|
cd $(BUILDDIR)/..; zip -9Xrq $(TOPDIR)/gbdk-$(VER)-$(TARGETOS).zip gbdk
|
|
else
|
|
rm -f $(TOPDIR)/gbdk-$(VER)-$(TARGETOS).tar.gz
|
|
cd $(BUILDDIR)/..; tar czf $(TOPDIR)/gbdk-$(VER)-$(TARGETOS).tar.gz gbdk
|
|
endif
|
|
|
|
binary-tidyup:
|
|
rm -rf `find $(BUILDDIR) -name CVS`
|
|
|
|
# Install
|
|
install: native-build
|
|
mkdir -p $(TARGETDIR)
|
|
cp -r $(BUILDDIR)/* $(TARGETDIR)
|