207 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			207 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| # ======================================================================= #
 | |
| #                          ACK CONFIGURATION                              #
 | |
| #                      (Edit this before building)                        #
 | |
| # ======================================================================= #
 | |
| 
 | |
| # What platform to build for by default?
 | |
| 
 | |
| DEFAULT_PLATFORM = pc86
 | |
| 
 | |
| # Where should the ACK put its temporary files?
 | |
| 
 | |
| ACK_TEMP_DIR = /tmp
 | |
| 
 | |
| # Where is the ACK going to be installed, eventually? If you don't want to
 | |
| # install it and just want to run the ACK from the build directory
 | |
| # (/tmp/ack-build/staging, by default), leave this as $(INSDIR).
 | |
| 
 | |
| #PREFIX = /usr/local
 | |
| PREFIX = $(INSDIR)
 | |
| 
 | |
| # Where do you want to put the object files used when building?
 | |
| 
 | |
| BUILDDIR = $(ACK_TEMP_DIR)/ack-build
 | |
| 
 | |
| # What build flags do you want to use?
 | |
| 
 | |
| CFLAGS = -g
 | |
| LDFLAGS = 
 | |
| 
 | |
| # Various commands.
 | |
| 
 | |
| AR = ar
 | |
| CC = gcc
 | |
| 
 | |
| # ======================================================================= #
 | |
| #                         END OF CONFIGURATION                            #
 | |
| # ======================================================================= #
 | |
| 
 | |
| # You shouldn't need to change anything below this point unless you are
 | |
| # actually developing ACK.
 | |
| 
 | |
| OBJDIR = $(abspath $(BUILDDIR)/obj)
 | |
| BINDIR = $(abspath $(BUILDDIR)/bin)
 | |
| LIBDIR = $(abspath $(BUILDDIR)/lib)
 | |
| INCDIR = $(abspath $(BUILDDIR)/include)
 | |
| INSDIR = $(abspath $(BUILDDIR)/staging)
 | |
| 
 | |
| PLATIND = $(INSDIR)/share/ack
 | |
| PLATDEP = $(INSDIR)/lib/ack
 | |
| 
 | |
| MAKECMDGOALS ?= +ack
 | |
| BUILD_FILES = $(shell find * -name build.lua)
 | |
| 
 | |
| NINJA := $(shell which ninja)
 | |
| ifneq ($(findstring +, $(MAKECMDGOALS)),)
 | |
| ifneq ($(NINJA),)
 | |
| 
 | |
| $(MAKECMDGOALS): $(BUILDDIR)/build.ninja $(BUILDDIR)/rules.ninja
 | |
| 	@ninja -f $(BUILDDIR)/build.ninja $(MAKECMDGOALS)
 | |
| 
 | |
| $(BUILDDIR)/build.ninja: Makefile
 | |
| 	@mkdir -p $(BUILDDIR)
 | |
| 	echo "OBJDIR = $(OBJDIR)" > $@
 | |
| 	echo "BINDIR = $(BINDIR)" >> $@
 | |
| 	echo "LIBDIR = $(LIBDIR)" >> $@
 | |
| 	echo "INCDIR = $(INCDIR)" >> $@
 | |
| 	echo "INSDIR = $(INSDIR)" >> $@
 | |
| 	echo "PLATIND = $(PLATIND)" >> $@
 | |
| 	echo "PLATDEP = $(PLATDEP)" >> $@
 | |
| 	echo "AR = $(AR)" >> $@
 | |
| 	echo "CC = $(CC)" >> $@
 | |
| 	echo "subninja $(BUILDDIR)/rules.ninja" >> $@
 | |
| 
 | |
| else
 | |
| 
 | |
| $(MAKECMDGOALS): $(BUILDDIR)/rules.mk
 | |
| 	make -r -f $(BUILDDIR)/rules.mk $@ \
 | |
| 		$(MAKEFLAGS) \
 | |
| 		OBJDIR=$(OBJDIR) \
 | |
| 		BINDIR=$(BINDIR) \
 | |
| 		LIBDIR=$(LIBDIR) \
 | |
| 		INCDIR=$(INCDIR) \
 | |
| 		INSDIR=$(INSDIR) \
 | |
| 		PLATIND=$(PLATIND) \
 | |
| 		PLATDEP=$(PLATDEP) \
 | |
| 		AR=$(AR) \
 | |
| 		CC=$(CC)
 | |
| 
 | |
| endif
 | |
| endif
 | |
| 
 | |
| $(BUILDDIR)/rules.ninja: first/ackbuilder.lua $(BUILD_FILES)
 | |
| 	@mkdir -p $(BUILDDIR)
 | |
| 	@lua5.2 first/ackbuilder.lua first/build.lua build.lua --ninja > $(BUILDDIR)/rules.ninja
 | |
| 
 | |
| $(BUILDDIR)/rules.mk: first/ackbuilder.lua $(BUILD_FILES)
 | |
| 	@mkdir -p $(BUILDDIR)
 | |
| 	@lua5.2 first/ackbuilder.lua first/build.lua build.lua --make > $(BUILDDIR)/rules.mk
 | |
| 
 | |
| clean:
 | |
| 	@rm -rf $(BUILDDIR)
 | |
| 
 | |
| #
 | |
| #CC = gcc
 | |
| #AR = ar
 | |
| #RM = rm -f
 | |
| #CP = cp
 | |
| #
 | |
| #hide = @
 | |
| #
 | |
| #CFLAGS += \
 | |
| #	-I$(INCDIR) \
 | |
| #	-Imodules/h \
 | |
| #	-Ih
 | |
| #
 | |
| #LDFLAGS +=
 | |
| #
 | |
| #ACKFLAGS = -Ih
 | |
| #
 | |
| #all: installables
 | |
| #
 | |
| #.DELETE_ON_ERROR:
 | |
| #
 | |
| #include first/core.mk
 | |
| #
 | |
| #include modules/src/object/build.mk
 | |
| #include modules/src/alloc/build.mk
 | |
| #include modules/src/input/build.mk
 | |
| #include modules/src/idf/build.mk
 | |
| #include modules/src/system/build.mk
 | |
| #include modules/src/string/build.mk
 | |
| #include modules/src/print/build.mk
 | |
| #include modules/src/flt_arith/build.mk
 | |
| #include modules/src/em_code/build.mk
 | |
| #include modules/src/em_mes/build.mk
 | |
| #include modules/src/read_em/build.mk
 | |
| #
 | |
| #include util/amisc/build.mk
 | |
| #include util/cmisc/build.mk
 | |
| #include util/ack/build.mk
 | |
| #include util/LLgen/build.mk
 | |
| #include util/data/build.mk
 | |
| #include util/opt/build.mk
 | |
| #include util/ncgg/build.mk
 | |
| #include util/arch/build.mk
 | |
| #include util/misc/build.mk
 | |
| #include util/led/build.mk
 | |
| #include util/topgen/build.mk
 | |
| #include util/ego/build.mk
 | |
| #
 | |
| #include lang/cem/build.mk
 | |
| #include lang/basic/build.mk
 | |
| #include lang/pc/build.mk
 | |
| #include lang/m2/build.mk
 | |
| #
 | |
| #include mach/proto/as/build.mk
 | |
| #include mach/proto/ncg/build.mk
 | |
| #include mach/proto/top/build.mk
 | |
| #
 | |
| #include plat/linux/liblinux/build.mk
 | |
| #
 | |
| #include mach/i80/build.mk
 | |
| #include mach/i386/build.mk
 | |
| #include mach/i86/build.mk
 | |
| #include mach/m68020/build.mk
 | |
| ## include mach/powerpc/build.mk
 | |
| #include mach/vc4/build.mk
 | |
| #
 | |
| #include plat/build.mk
 | |
| #include plat/pc86/build.mk
 | |
| #include plat/cpm/build.mk
 | |
| #include plat/linux386/build.mk
 | |
| #include plat/linux68k/build.mk
 | |
| ## include plat/linuxppc/build.mk
 | |
| #include plat/rpi/build.mk
 | |
| #
 | |
| #.PHONY: installables
 | |
| #installables: $(INSTALLABLES)
 | |
| #	@echo ""
 | |
| #	@echo "Build completed successfully."
 | |
| #
 | |
| #.PHONY: install
 | |
| #install: installables
 | |
| #	@echo INSTALLING into $(PREFIX)
 | |
| #	$(hide) tar cf - -C $(INSDIR) . | tar xvf - -C $(PREFIX)
 | |
| #
 | |
| #.PHONY: clean
 | |
| #clean:
 | |
| #	@echo CLEAN
 | |
| #	$(hide) $(RM) $(CLEANABLES)
 | |
| #
 | |
| #$(INCDIR)/local.h:
 | |
| #	@echo LOCAL
 | |
| #	@mkdir -p $(dir $@)
 | |
| #	$(hide) echo '#define VERSION 3' > $@
 | |
| #	$(hide) echo '#define ACKM "$(DEFAULT_PLATFORM)"' >> $@
 | |
| #	$(hide) echo '#define BIGMACHINE 1' >> $@
 | |
| #	$(hide) echo '#define SYS_5' >> $@
 | |
| #
 | |
| #$(INCDIR)/em_path.h:
 | |
| #	@echo EM_PATH
 | |
| #	@mkdir -p $(dir $@)
 | |
| #	$(hide) echo '#define TMP_DIR "$(ACK_TEMP_DIR)"' > $@
 | |
| #	$(hide) echo '#define EM_DIR "$(PREFIX)"' >> $@
 | |
| #	$(hide) echo '#define ACK_PATH "share/ack/descr"' >> $@
 | |
| #
 | |
| #-include $(DEPENDS)
 |