T-int fix
[neverball] / Makefile
index f5674ba..de2a853 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,21 +1,40 @@
-#-------------------------------------------------------------------------------
+
+#------------------------------------------------------------------------------
 
 VERSION := $(shell sh scripts/version.sh)
 ifeq ($(VERSION),unknown)
     $(warning Failed to obtain sane version for this build.)
 endif
 
+# Provide a target system hint for the Makefile.
+
+ifeq ($(shell uname), Darwin)
+    DARWIN := 1
+endif
+
 #------------------------------------------------------------------------------
+# Optional flags (CFLAGS, CPPFLAGS, ...)
 
-# Optional flags
-#CFLAGS := -Wall -g -ansi -pedantic
-CFLAGS := -Wall -O2 -ansi -pedantic
+ifeq ($(ENABLE_WII),1)
+    # libwiimote is NOT ANSI compliant
+    CFLAGS := -O2
+else
+    #CFLAGS := -Wall -g -ansi -pedantic
+    CFLAGS := -Wall -O2 -ansi -pedantic
+endif
 
+#------------------------------------------------------------------------------
 # Mandatory flags
+
+# Compiler...
+
+ALL_CFLAGS := $(CFLAGS)
+
+# Preprocessor...
+
 SDL_CPPFLAGS := $(shell sdl-config --cflags)
 PNG_CPPFLAGS := $(shell libpng-config --cflags)
 
-ALL_CFLAGS   := $(CFLAGS)
 ALL_CPPFLAGS := $(SDL_CPPFLAGS) $(PNG_CPPFLAGS) -Ishare \
     -DVERSION=\"$(VERSION)\"
 
@@ -25,49 +44,79 @@ else
     ALL_CPPFLAGS += -DENABLE_NLS=1
 endif
 
+ifeq ($(ENABLE_WII),1)
+    ALL_CPPFLAGS += -DENABLE_WII=1
+endif
+
+ifdef DARWIN
+    ALL_CPPFLAGS += -I/opt/local/include
+endif
+
 ALL_CPPFLAGS += $(CPPFLAGS)
 
 #------------------------------------------------------------------------------
+# Libraries
 
 SDL_LIBS := $(shell sdl-config --libs)
 PNG_LIBS := $(shell libpng-config --libs)
 
+# The  non-conditionalised values  below  are specific  to the  native
+# system. The native system of this Makefile is Linux (or GNU+Linux if
+# you prefer). Please be sure to  override ALL of them for each target
+# system in the conditional parts below.
+
+INTL_LIBS :=
+
+ifeq ($(ENABLE_WII),1)
+    TILT_LIBS := -lcwiimote -lbluetooth
+endif
+
+OGL_LIBS := -lGL -lm
+
 ifdef MINGW
-ifneq ($(ENABLE_NLS),0)
-       INTL_LIBS := -lintl -liconv
+    ifneq ($(ENABLE_NLS),0)
+        INTL_LIBS := -lintl -liconv
+    endif
+
+    TILT_LIBS :=
+    OGL_LIBS  := -lopengl32 -lm
 endif
-       OGL_LIBS  := -lopengl32 -lm
-       BASE_LIBS := -lSDL -lSDL_image $(INTL_LIBS)
-       ALL_LIBS  := $(SDL_LIBS) -lSDL_image $(INTL_LIBS) \
-               $(PNG_LIBS) -lSDL_ttf -lvorbisfile $(OGL_LIBS)
-else
-       OGL_LIBS  := -lGL -lm
-       BASE_LIBS := $(SDL_LIBS) -lSDL_image
-       ALL_LIBS  := $(BASE_LIBS) $(PNG_LIBS) -lSDL_ttf -lvorbisfile $(OGL_LIBS)
+
+ifdef DARWIN
+    ifneq ($(ENABLE_NLS),0)
+        INTL_LIBS := -lintl -liconv
+    endif
+
+    TILT_LIBS :=
+    OGL_LIBS  := -framework OpenGL
 endif
 
-#------------------------------------------------------------------------------
-# Quick hack by rlk to enable command-line building using macports
+BASE_LIBS := -ljpeg $(PNG_LIBS)
 
-ifeq ($(shell uname), Darwin)
-        ALL_CFLAGS += -I/opt/local/include
-        OGL_LIBS = -framework OpenGL
-       ALL_LIBS  := -lintl -liconv $(BASE_LIBS) $(PNG_LIBS) -lSDL_ttf -lvorbisfile $(OGL_LIBS)
+ifdef DARWIN
+    BASE_LIBS += -L/opt/local/lib
 endif
 
+ALL_LIBS := $(SDL_LIBS) $(BASE_LIBS) $(TILT_LIBS) $(INTL_LIBS) -lSDL_ttf \
+    -lvorbisfile $(OGL_LIBS)
+
 #------------------------------------------------------------------------------
 
 ifdef MINGW
-    EXT  := .exe
-    WINE := wine
+    EXT := .exe
 endif
 
-#------------------------------------------------------------------------------
-
 MAPC_TARG := mapc$(EXT)
 BALL_TARG := neverball$(EXT)
 PUTT_TARG := neverputt$(EXT)
 
+ifdef MINGW
+    MAPC := $(WINE) ./$(MAPC_TARG)
+else
+    MAPC := ./$(MAPC_TARG)
+endif
+
+
 #------------------------------------------------------------------------------
 
 MAPC_OBJS := \
@@ -88,6 +137,7 @@ BALL_OBJS := \
        share/part.o        \
        share/back.o        \
        share/geom.o        \
+       share/ball.o        \
        share/gui.o         \
        share/base_config.o \
        share/config.o      \
@@ -95,6 +145,9 @@ BALL_OBJS := \
        share/state.o       \
        share/audio.o       \
        share/text.o        \
+       share/sync.o        \
+       share/tilt.o        \
+       share/common.o      \
        ball/hud.o          \
        ball/mode.o         \
        ball/game.o         \
@@ -132,6 +185,7 @@ PUTT_OBJS := \
        share/solid_gl.o    \
        share/part.o        \
        share/geom.o        \
+       share/ball.o        \
        share/back.o        \
        share/base_config.o \
        share/config.o      \
@@ -140,6 +194,7 @@ PUTT_OBJS := \
        share/state.o       \
        share/gui.o         \
        share/text.o        \
+       share/sync.o        \
        putt/hud.o          \
        putt/game.o         \
        putt/hole.o         \
@@ -162,7 +217,7 @@ SOLS := $(MAPS:%.map=%.sol)
        $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) -o $@ -c $<
 
 %.sol : %.map $(MAPC_TARG)
-       $(WINE) ./$(MAPC_TARG) $< data
+       $(MAPC) $< data
 
 #------------------------------------------------------------------------------
 
@@ -177,6 +232,12 @@ $(PUTT_TARG) : $(PUTT_OBJS)
 $(MAPC_TARG) : $(MAPC_OBJS)
        $(CC) $(ALL_CFLAGS) -o $(MAPC_TARG) $(MAPC_OBJS) $(LDFLAGS) $(BASE_LIBS)
 
+# Work around some extremely helpful sdl-config scripts.
+
+ifdef MINGW
+$(MAPC_TARG) : ALL_CPPFLAGS := $(ALL_CPPFLAGS) -Umain
+endif
+
 sols : $(SOLS)
 
 locales :
@@ -227,7 +288,7 @@ TEXT_DOCS := \
 
 TXT_DOCS := $(TEXT_DOCS:%=%.txt)
 
-#-----------------------------------------------------------------------------
+#------------------------------------------------------------------------------
 
 .PHONY: setup
 setup: $(INSTALLER)
@@ -243,7 +304,7 @@ clean-setup: clean
        find data -name "*.txt" -exec $(FROMDOS) {} \;
        $(MAKE) -C tools EXT=$(EXT) clean
 
-#-----------------------------------------------------------------------------
+#------------------------------------------------------------------------------
 
 .PHONY: install-dlls
 install-dlls: install-dlls.sh
@@ -260,7 +321,7 @@ install-dlls.sh:
        @echo --------------------------------------------------------
        @exit 1
 
-#-----------------------------------------------------------------------------
+#------------------------------------------------------------------------------
 
 .PHONY: convert-text-files
 convert-text-files: $(TXT_DOCS)
@@ -270,7 +331,7 @@ convert-text-files: $(TXT_DOCS)
        $(CP) $< $@
        $(TODOS) $@
 
-#-----------------------------------------------------------------------------
+#------------------------------------------------------------------------------
 
 .PHONY: tools
 tools: