DEVICE = /dev/sdb PARTITION = $(DEVICE)3 MOUNT_POINT = /mnt/temp BASE_DIR = /home/arrakis LOCAL_BASE = $(MOUNT_POINT)$(BASE_DIR) NAME = arrakis RELEASEDIR = $(NAME) OBJS = main.o platform.o music.o tools.o sprite.o triangle.o geometry.o fade.o OBJS += scenemgr.o demo.o OBJS += water.o landscape.o sky.o ground.o rain.o intro.o dawn.o clouds.o parallax.o planet.o rotozoom.o flash.o end.o ifeq ($(TARGET),) TARGET = debug endif ifeq ($(TARGET),debug) PREFIX = SUFFIX = -debug CFLAGS = -Wall -g -DSDL -DSDL_MUSIC LDFLAGS = -lSDL -lm -lpthread OBJS += platform_sdl.o endif ifeq ($(TARGET),generic) PREFIX = SUFFIX = -generic CFLAGS = -Wall -DSDL -DSDL_MUSIC -O2 LDFLAGS = -lSDL -lm OBJS += platform_sdl.o endif ifeq ($(TARGET),linux) PREFIX = SUFFIX = -linux-x86 CFLAGS = -Wall -DSDL -DSDL_MUSIC -O2 LDFLAGS = -lSDL -lm -lpthread OBJS += platform_sdl.o endif ifeq ($(TARGET),win32) PREFIX = i686-w64-mingw32- SUFFIX = -win32.exe CFLAGS = -Wall -DSDL -DSDL_MUSIC -DWIN32 -DNO_SUMMARY -O2 LDFLAGS = -lSDL -lm -Wl,--subsystem=windows OBJS += platform_sdl.o endif ifeq ($(TARGET),render) PREFIX = SUFFIX = -render CFLAGS = -Wall -DRENDER -g LDFLAGS = -lm -g OBJS += platform_render.o endif ifeq ($(TARGET),gp2x) PREFIX = gp2x- SUFFIX = .gpe CFLAGS = -Wall -O2 -DGP2X -DSDL_MUSIC -I/usr/local/gp2xdev/include LDFLAGS = -lm -L/usr/local/gp2xdev/lib -lpthread -lSDL -static OBJS += platform_gp2x.o endif ifeq ($(TARGET),ipod) PREFIX = arm-uclinux- LDPREFIX = arm-elf- SUFFIX = -ipod CFLAGS = -Wall -O2 -DIPOD -DOSS -mcpu=arm7tdmi -msoft-float LDFLAGS = -lm -elf2flt OBJS += platform_ipod.o endif ifneq ($(DEBUG),) CFLAGS += -D_DEBUG endif LDPREFIX ?= $(PREFIX) CC = $(PREFIX)gcc LD = $(LDPREFIX)gcc BINARY = $(NAME)$(SUFFIX) all: data $(BINARY) test: all ./$(BINARY) -1 data: make -C data $(BINARY): $(OBJS) $(LD) -o $(BINARY) $(OBJS) $(LDFLAGS) strip: $(BINARY) $(PREFIX)strip $(BINARY) upx --ultra-brute $(BINARY) || true clean: rm -f *.o $(BINARY) *.gdb distclean: clean rm -f $(NAME)-* $(NAME).tgz $(NAME)-src.tgz rm -rf $(RELEASEDIR) make -C data clean mount: test -d $(MOUNT_POINT)/home || sudo mount $(PARTITION) $(MOUNT_POINT) umount: sudo umount $(PARTITION) sudo eject $(DEVICE) install: all mount mkdir -p $(LOCAL_BASE) cp $(BINARY) $(FILES) $(LOCAL_BASE) make -C data install rm -f $(MOUNT_POINT)/sbin/d echo '#!/bin/sh' >$(MOUNT_POINT)/sbin/d echo cd $(BASE_DIR) '&&' ./$(BINARY) >>$(MOUNT_POINT)/sbin/d chmod +x $(MOUNT_POINT)/sbin/d reinstall: make TARGET=ipod clean all sudo make TARGET=ipod install umount ifeq ($(TARGET),render) render: all ./$(BINARY) | ffmpeg -y -f rawvideo -pixel_format rgba -video_size 256x132 -framerate 30 -i - -i data/adpcm_output.wav -vf crop=176:132:0:0,scale=352:264:flags=neighbor,format=pix_fmts=yuv420p,setsar=1 -c:v libx264 -profile:v baseline -level:v 2.0 -refs:v 4 -crf:v 12 -preset:v veryslow -c:a aac -b:a 64k arrakis.mp4 else render: make TARGET=render clean render endif source: $(NAME)-src.tgz $(NAME)-src.tgz: distclean tar czvf $@ data/ *.c *.h \ Makefile $(NAME).nfo readme.txt release: rm -rf $(RELEASEDIR)/ mkdir -p $(RELEASEDIR)/data/ cp $(NAME).nfo readme.txt $(RELEASEDIR)/ make -C data RELEASEDIR=$(RELEASEDIR) release make TARGET=ipod clean all cp $(NAME)-ipod $(RELEASEDIR)/ #make TARGET=gp2x clean all #gp2x-strip $(NAME).gpe #cp $(NAME).gpe $(RELEASEDIR)/ make TARGET=linux clean all strip cp $(NAME)-linux-x86 $(RELEASEDIR)/ make TARGET=win32 clean all strip cp $(NAME)-win32.exe SDL.dll $(RELEASEDIR)/ rm -f $(RELEASEDIR).tgz tar czf $(RELEASEDIR).tgz $(RELEASEDIR)/ .PHONY: all strip data clean distclean install reinstall release source mount umount