diff --git a/Makefile.common.in b/Makefile.common.in new file mode 100644 index 0000000..412fd5a --- /dev/null +++ b/Makefile.common.in @@ -0,0 +1,96 @@ +# +# +# + +# Version +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +VERSIONHI = @VERSIONHI@ +VERSIONLO = @VERSIONLO@ +VERSIONP = @VERSIONP@ + +# Programs +SHELL = /bin/sh +CC = @CCACHE@ @CC@ +CPP = @CCACHE@ @CPP@ +CXX = @CCACHE@ @CXX@ +AR = @AR@ +RANLIB = @RANLIB@ +INSTALL = @INSTALL@ +YACC = @YACC@ +PYTHON = @PYTHON@ +LEX = @LEX@ +AWK = @AWK@ +STRIP = @STRIP@ +MAKEDEP = @MAKEDEP@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +includedir = @includedir@ +mandir = @mandir@ +man1dir = $(mandir)/man1 +man2dir = $(mandir)/man2 +infodir = @infodir@ +docdir = @docdir@ +DESTDIR = + +include_dir_suffix = @include_dir_suffix@ +lib_dir_suffix = @lib_dir_suffix@ + +# Modules to enable/disable +OPT_DISABLE_AVR = @OPT_DISABLE_AVR@ +OPT_DISABLE_DS390 = @OPT_DISABLE_DS390@ +OPT_DISABLE_DS400 = @OPT_DISABLE_DS400@ +OPT_DISABLE_HC08 = @OPT_DISABLE_HC08@ +OPT_DISABLE_S08 = @OPT_DISABLE_S08@ +OPT_DISABLE_MCS51 = @OPT_DISABLE_MCS51@ +OPT_DISABLE_PIC14 = @OPT_DISABLE_PIC14@ +OPT_DISABLE_PIC16 = @OPT_DISABLE_PIC16@ +OPT_DISABLE_XA51 = @OPT_DISABLE_XA51@ +OPT_DISABLE_Z80 = @OPT_DISABLE_Z80@ +OPT_DISABLE_Z180 = @OPT_DISABLE_Z180@ +OPT_DISABLE_R2K = @OPT_DISABLE_R2K@ +OPT_DISABLE_R3KA = @OPT_DISABLE_R3KA@ +OPT_DISABLE_TLCS90 = @OPT_DISABLE_TLCS90@ +OPT_DISABLE_GBZ80 = @OPT_DISABLE_GBZ80@ +OPT_DISABLE_STM8 = @OPT_DISABLE_STM8@ +OPT_DISABLE_PDK13 = @OPT_DISABLE_PDK13@ +OPT_DISABLE_PDK14 = @OPT_DISABLE_PDK14@ +OPT_DISABLE_PDK15 = @OPT_DISABLE_PDK15@ +OPT_DISABLE_PDK16 = @OPT_DISABLE_PDK16@ + +OPT_ENABLE_DOC = @OPT_ENABLE_DOC@ + +OPT_DISABLE_DEVICE_LIB = @OPT_DISABLE_DEVICE_LIB@ +OPT_DISABLE_PACKIHX = @OPT_DISABLE_PACKIHX@ +OPT_DISABLE_SDBINUTILS = @OPT_DISABLE_SDBINUTILS@ +OPT_DISABLE_SDCPP = @OPT_DISABLE_SDCPP@ +OPT_DISABLE_UCSIM = @OPT_DISABLE_UCSIM@ +OPT_DISABLE_NON_FREE = @OPT_DISABLE_NON_FREE@ + +SLIB = $(top_builddir)/support/util + +EXEEXT = @EXEEXT@ +transform = @program_transform_name@ + +# Flags + +DEFS += $(subs -DHAVE_CONFIG_H,,@DEFS@) +CPPFLAGS += @CPPFLAGS@ $(INCLUDEFLAGS) -I. -I$(top_builddir) -I$(srcdir)/$(SLIB) -I$(srcdir) +CFLAGS += @CFLAGS@ @WALL_FLAG@ +CXXFLAGS += @CXXFLAGS@ +LDFLAGS += @LDFLAGS@ + +EXTRALIBS += @LIBS@ + +# Shared settings between all the sub Makefiles +# Done here so that we don't have to start a Make from the top levelport +# directory. + +# Library compilation options +CLEANSPEC = *.lst *.asm *.sym *~ *.cdb *.dep *.rul + +OBJ = $(SOURCES:.c=.o) $(CXXSOURCES:.cc=.o) diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..f3b028d --- /dev/null +++ b/Makefile.in @@ -0,0 +1,317 @@ +# +# sdcc project main Makefile +# + +SHELL = /bin/sh + +VPATH = @srcdir@ +srcdir = @srcdir@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +EXEEXT = @EXEEXT@ + +include Makefile.common + +SDCC_LIBS = support/makebin +SDCC_SCRIPTS = support/scripts +SDCC_DOC = doc + +# Parts that are not normally compiled but need to be cleaned +SDCC_EXTRA = support/regression support/valdiag + +SDCC_PACKIHX = support/packihx +SDCC_SDBINUTILS = support/sdbinutils + +ifneq ($(OPT_DISABLE_HC08)$(OPT_DISABLE_S08), 11) +SDCC_AS += sdas/as6808 +SDCC_LD += sdcc-ld6808 +endif + +ifeq ($(OPT_DISABLE_STM8), 0) +SDCC_AS += sdas/asstm8 +SDCC_LD += sdcc-ldstm8 +endif + +ifneq ($(OPT_DISABLE_DS390)$(OPT_DISABLE_DS400), 11) +SDCC_AS += sdas/as8xcxxx +endif + +ifeq ($(OPT_DISABLE_MCS51), 0) +SDCC_AS += sdas/as8051 +SDCC_LD += sdcc-ld8051 +SDCC_MISC += debugger/mcs51 +endif + +ifneq ($(OPT_DISABLE_Z80)$(OPT_DISABLE_Z180), 11) +SDCC_AS += sdas/asz80 +SDCC_LD += sdcc-ldz80 +endif + +ifneq ($(OPT_DISABLE_R2K)$(OPT_DISABLE_R3KA), 11) +SDCC_AS += sdas/asrab +SDCC_LD += sdcc-ldz80 +endif + +ifeq ($(OPT_DISABLE_TLCS90), 0) +SDCC_AS += sdas/astlcs90 +endif + +ifeq ($(OPT_DISABLE_GBZ80), 0) +SDCC_AS += sdas/asgb +SDCC_LD += sdcc-ldgb +endif + +ifeq ($(OPT_DISABLE_PDK13), 0) +SDCC_AS += sdas/aspdk13 +SDCC_LD += sdcc-ldpdk +endif + +ifeq ($(OPT_DISABLE_PDK14), 0) +SDCC_AS += sdas/aspdk14 +SDCC_LD += sdcc-ldpdk +endif + +ifeq ($(OPT_DISABLE_PDK15), 0) +SDCC_AS += sdas/aspdk15 +SDCC_LD += sdcc-ldpdk +endif + +ifeq ($(OPT_DISABLE_PDK16), 0) +SDCC_AS += sdas/aspdk16 +SDCC_LD += sdcc-ldpdk +endif + + +ifeq ($(OPT_DISABLE_UCSIM), 0) +TARGETS += sdcc-misc +SDCC_MISC += sim/ucsim +PKGS += $(SDCC_MISC) +endif + +SDCC_BINUTILS = +ifeq ($(OPT_DISABLE_SDBINUTILS), 0) +TARGETS += sdcc-sdbinutils +PKGS += $(SDCC_SDBINUTILS) +SDBINUTILS_BINS = sdar$(EXEEXT) sdranlib$(EXEEXT) sdnm$(EXEEXT) sdobjcopy$(EXEEXT) +SDCC_BINUTILS = sdcc-sdbinutils +endif + +ifeq ($(OPT_DISABLE_DEVICE_LIB), 0) +TARGETS += sdcc-device-lib +PKGS += device/lib +ifeq ($(OPT_DISABLE_NON_FREE), 0) +PKGS += device/non-free/lib +endif +endif + +ifeq ($(OPT_DISABLE_PACKIHX), 0) +TARGETS += sdcc-packihx +PKGS += $(SDCC_PACKIHX) +endif + +ifeq ($(OPT_ENABLE_DOC), 1) +TARGETS += sdcc-doc +endif +# always install docs, which don't need to be built +PKGS += $(SDCC_DOC) + +ifeq ($(OPT_DISABLE_SDCPP), 0) +SDCC_LIBS += support/cpp +endif + +TARGETS += sdcc-libs sdcc-cc sdcc-device-inc sdcc-as sdcc-ld sdcc-scripts + +PKGS += $(SDCC_LIBS) src device/include +ifeq ($(OPT_DISABLE_NON_FREE), 0) +PKGS += device/non-free/include +endif +PKGS += $(SDCC_AS) sdas/linksrc $(SDCC_SCRIPTS) + +PORTS = $(shell cat ports.build) +ALLPORTS = $(shell cat ports.all) + +# Compiling entire program or any subproject +# ------------------------------------------ +all: checkconf sdcc + +tini: checkconf sdcc-tini + +sdcc-libs: sdcc-sdbinutils + for lib in $(SDCC_LIBS); do $(MAKE) -C $$lib; done + +sdcc-cc: sdcc-libs + $(MAKE) -C src + +sdcc-as: + $(foreach as, $(SDCC_AS), $(MAKE) -C $(as) &&) echo "Assemblers built successfully." + +sdcc-ld: + $(MAKE) -C sdas/linksrc $(SDCC_LD) + +sdcc-misc: + for misc in $(SDCC_MISC); do $(MAKE) -C $$misc ; done + +sdcc-scripts: + $(MAKE) -C $(SDCC_SCRIPTS) + +sdcc-packihx: + $(MAKE) -C $(SDCC_PACKIHX) + +sdcc-sdbinutils: + $(MAKE) -C $(SDCC_SDBINUTILS) + # in some cases (cygwin) the real binaries are in .libs + for bin in $(SDBINUTILS_BINS); do \ + if [ -f $(SDCC_SDBINUTILS)/binutils/.libs/$$bin ]; then \ + cp $(SDCC_SDBINUTILS)/binutils/.libs/$$bin bin; \ + else \ + cp $(SDCC_SDBINUTILS)/binutils/$$bin bin; \ + fi \ + done + +sdcc-device-inc: + $(MAKE) -C device/include +ifeq ($(OPT_DISABLE_NON_FREE), 0) + $(MAKE) -C device/non-free/include +endif + +sdcc-device-lib: sdcc-cc sdcc-as sdcc-ld $(SDCC_BINUTILS) + $(MAKE) -C device/lib +ifeq ($(OPT_DISABLE_NON_FREE), 0) + $(MAKE) -C device/non-free/lib +endif + +sdcc-device-tini: + $(MAKE) -C device/include +ifeq ($(OPT_DISABLE_NON_FREE), 0) + $(MAKE) -C device/non-free/include +endif + $(MAKE) -C device/lib model-ds390 model-ds400 + +# doc depends on latex and latex2html +sdcc-doc: + $(MAKE) -C doc + +sdcc: $(TARGETS) + +sdcc-tini: sdcc-cc sdcc-as sdcc-ld sdcc-device-tini sdcc-packihx + $(MAKE) -f main.mk all + +# Some interesting sub rules +sdcc-bin: sdcc-cc sdcc-as sdcc-ld sdcc-misc + +sdcc-base: sdcc-cc sdcc-as sdcc-ld + +# Compiling and installing everything and running test +# ---------------------------------------------------- +install: checkconf sdcc + $(MAKE) -f main.mk install + @for pkg in $(PKGS); do\ + $(MAKE) -C $$pkg install ;\ + done + +# Deleting all the installed files +# -------------------------------- +uninstall: + $(MAKE) -f main.mk uninstall + @for pkg in $(PKGS); do\ + $(MAKE) -C $$pkg uninstall ;\ + done + +# Deleting all files created by building the program +# -------------------------------------------------- +clean: + @echo "+ Cleaning root of the project..." + $(MAKE) -f $(srcdir)/clean.mk clean + @echo "+ Cleaning packages in their directories..." + for pkg in $(PKGS); do\ + $(MAKE) -C $$pkg PORTS="$(PORTS)" EXEEXT=$(EXEEXT) clean ;\ + done + +# Deleting all files created by configuring or building the program +# ----------------------------------------------------------------- +distclean: + @echo "+ DistCleaning packages using clean.mk..." + for pkg in $(PKGS); do\ + $(MAKE) -C $$pkg PORTS="$(PORTS)" EXEEXT=$(EXEEXT) distclean ;\ + done + for pkg in $(SDCC_EXTRA); do \ + $(MAKE) -C $$pkg distclean; \ + done + @echo "+ DistCleaning root of the project..." + $(MAKE) -f $(srcdir)/clean.mk distclean + +# Like clean but some files may still exist +# ----------------------------------------- +mostlyclean: clean + $(MAKE) -f $(srcdir)/clean.mk mostlyclean + for pkg in $(PKGS); do\ + $(MAKE) -C $$pkg PORTS="$(PORTS)" EXEEXT=$(EXEEXT) mostlyclean ;\ + done + +# Deleting everything that can reconstructed by this Makefile. It deletes +# everything deleted by distclean plus files created by bison, stc. +# ----------------------------------------------------------------------- +realclean: distclean + $(MAKE) -f $(srcdir)/clean.mk realclean + for pkg in $(PKGS); do\ + $(MAKE) -C $$pkg PORTS="$(PORTS)" EXEEXT=$(EXEEXT) realclean ;\ + done + +# Performing self-test +# -------------------- +check: + +# Performing installation test +# ---------------------------- +installcheck: + +# Creating dependencies +# --------------------- +dep: $(SDCC_LIBS) + $(MAKE) -f main.mk dep + @for pkg in $(PKGS); do\ + $(MAKE) -C $$pkg dep ;\ + done + +# My rules +# -------- +newer: distclean + @if [ -f start ]; then \ + tar cvf - \ + `find . -newer start -type f -print` |\ + gzip -9c >`date '+%m%d%H%M'`.tgz; \ + else \ + echo "start file not found.\n"; \ + exit 1; \ + fi + +putcopyright: + 'put(c)' -s $(STARTYEAR) *.cc *.h *.y *.l + +# Remaking configuration +# ---------------------- +configure: configure.in + $(SHELL) $(AUTOCONF) + +main.mk: $(srcdir)/main_in.mk $(srcdir)/configure.in config.status + $(SHELL) ./config.status + +Makefiles: makefiles + +makefiles: config.status + +config.status: configure + $(SHELL) ./config.status --recheck + +makefiles: + $(SHELL) ./config.status + +freshconf: main.mk + +checkconf: + @if [ -f devel ]; then\ + $(MAKE) freshconf;\ + fi + +# End of Makefile