view Makefile @ 33:8b2b0677eb99

Build system changes for SDL/Win32 cross-build via MinGW hosted on Linux.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 24 May 2010 00:22:37 +0300
parents 78235ee17b69
children 678924af9149
line wrap: on
line source

### Global settings
CFLAGS += -W -Wall -O3
LDFLAGS +=
MINGW_PATH=/usr/local/i386-mingw32

### 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 re-build: 'make all'"; \
	echo "To reconfigure: 'make clean' and 'make <target>'"; \
	fi

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

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

### Build sub targets	
all:
	@for subdir in $(SUBDIRS); do if ! $(MAKE) -C "$$subdir"; then echo "Make returned $?"; exit 1; fi; 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 PATH="$(MINGW_PATH)/bin:/usr/bin:/bin" BINEXT=".exe" CC="gcc" \
	XTARGET="$@" XCFLAGS="-DDRIVE_SDL `$(MINGW_PATH)/bin/sdl-config --cflags`" \
	XLDFLAGS="-s -L$(MINGW_PATH)/lib/ `$(MINGW_PATH)/bin/sdl-config --libs` -lwinmm" && \
	$(MAKE) all

.dummy: