view Makefile @ 23:c3622b53a23e

Clean up the build system.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 23 May 2010 22:59:25 +0300
parents acb5694e93d9
children 78235ee17b69
line wrap: on
line source

### Global settings
CFLAGS=-g -W -Wall -O3
LDFLAGS=

### Subdirectories to build
SUBDIRS=pwplib peluce nykyaeka oldchsool pwpzax

### Show some help
help:
	@if test ! -f config.mak; then \
	echo "PWPLib build system"; \
	echo "Usage: make <target>"; \
	echo ""; \
	echo "sdl        - LibSDL video/audio for POSIX style systems"; \
	echo "unix       - Terminal only POSIX style systems"; \
	echo "linux      - Like unix, but with Linux console and OSS audio support"; \
	echo "hpux       - HP-UX (untested now)"; \
	echo "sdl-win32  - LibSDL for Win32, cross compilation via MinGW toolchain"; \
	echo "sdl-win64  - Like above, but for Win64 via MinGW64"; \
	echo ""; \
	else \
	echo "Configured as:"; \
	cat config.mak; \
	echo "To build: 'make all'"; \
	echo "To reconfigure: 'make clean' or 'make <target>'"; \
	fi

endianchk: endianchk.c
	$(CC) -o $@ $<

config.mak:
	@echo "" > $@
	@echo "# Build target: $(XTARGET)" >> $@
	@echo "CC=$(CC)" >> $@
	@echo "CFLAGS=$(CFLAGS) $(XCFLAGS)" >> $@
	@echo "LDFLAGS=$(LDFLAGS) $(XLDFLAGS)" >> $@
	@echo "" >> $@

### Build sub targets	
all:
	@for subdir in $(SUBDIRS); do $(MAKE) -C "$$subdir"; done

pwplib.a:
	$(MAKE) -C pwplib

clean:
	@for subdir in $(SUBDIRS); do $(MAKE) -C "$$subdir" clean; done
	$(RM) config.mak endianchk

### Major targets
unix: endianchk
	$(RM) config.mak && endianflags=`./endianchk` && \
	$(MAKE) config.mak XTARGET="$@" XCFLAGS="-DUNIX $$endianflags" XLDFLAGS="-lm" && \
	$(MAKE) all

hpux:
	$(RM) config.mak && \
	$(MAKE) config.mak XTARGET="$@" XCFLAGS="-DUNIX -DBIG_ENDIAN -DDRIVE_HPUX" XLDFLAGS="-lm" && \
	$(MAKE) all

linux: endianchk
	$(RM) config.mak && endianflags=`./endianchk` && \
	$(MAKE) config.mak XTARGET="$@" XCFLAGS="-DUNIX -DDRIVE_LINUXCON -DDRIVE_OSS $$endianflags" XLDFLAGS="-lm" && \
	$(MAKE) all

sdl: endianchk
	$(RM) config.mak && endianflags=`./endianchk` && \
	$(MAKE) config.mak XTARGET="$@" XCFLAGS="-DUNIX -DDRIVE_SDL $$endianflags `sdl-config --cflags`" XLDFLAGS="`sdl-config --libs` -lm" && \
	$(MAKE) all

sdl-win32: endianchk
	$(RM) config.mak && \
	$(MAKE) config.mak CC=i586-mingw32msvc-gcc AR=i586-mingw32msvc-ar \
	XTARGET="$@" XCFLAGS="-DUNIX -DDRIVE_SDL `sdl-config --cflags`" XLDFLAGS="`sdl-config --libs`" && \
	$(MAKE) all

.dummy: