rnd-20001128-1-src
[rocksndiamonds.git] / src / Makefile
1 #=============================================================================#
2 # Makefile for Rocks'n'Diamonds                                               #
3 # (c) 1995-2000 Holger Schemel, info@artsoft.org                              #
4 #=============================================================================#
5
6 ifndef PLATFORM                 # platform not specified -- try auto detection
7 ifdef COMSPEC
8 PLATFORM = msdos
9 else
10 PLATFORM = unix
11 endif
12 endif
13
14 ifdef X11_PATH                  # path to X11 specified by top level Makefile
15 XINC_PATH = $(X11_PATH)/include
16 XLIB_PATH = $(X11_PATH)/lib
17 X11_INCL = -I$(XINC_PATH)
18 X11_LIBS = -L$(XLIB_PATH)
19 endif
20
21
22 ifeq ($(PLATFORM),msdos)        # MS-DOS native compiling
23
24 RM = del
25 PROGNAME = ../rocks.exe
26
27 SYS_CFLAGS = -DTARGET_X11
28 SYS_LDFLAGS = -s -lalleg
29
30 else                            # Unix or cross-compiling for MS-DOS and Win32
31
32 RM = rm -f
33 PROGNAME = ../rocksndiamonds
34
35 ifeq ($(PLATFORM),solaris)
36 EXTRA_LDFLAGS = -lnsl -lsocket -R$(XLIB_PATH)
37 PLATFORM = unix
38 endif
39
40 ifeq ($(PLATFORM),unix)
41 PROFILING = -pg
42 endif
43
44 ifeq ($(PLATFORM),cross-msdos)
45 PROGNAME = ../rocks.exe
46 TARGET = allegro
47 endif
48
49 ifeq ($(PLATFORM),cross-win32)
50 PROGNAME = ../rocksndiamonds.exe
51 TARGET = sdl
52 endif
53
54 ifeq ($(TARGET),x11)
55 SYS_CFLAGS  = -DTARGET_X11 $(X11_INCL)
56 SYS_LDFLAGS = $(X11_LIBS) -lX11
57 endif
58
59 ifeq ($(TARGET),sdl)
60 SYS_CFLAGS  = -DTARGET_SDL $(shell sdl-config --cflags)
61 SYS_LDFLAGS = -lSDL_image -lSDL_mixer $(shell sdl-config --libs)
62 endif
63
64 ifeq ($(TARGET),allegro)
65 SYS_CFLAGS = -DTARGET_X11 -I$(CROSS_PATH_MSDOS)/include
66 SYS_LDFLAGS = -lalleg
67 endif
68
69 endif                           # (PLATFORM != msdos)
70
71
72 ifdef RO_GAME_DIR               # path to read-only game data specified
73 CONFIG_RO_GAME_DIR = -DRO_GAME_DIR="\"$(RO_GAME_DIR)\""
74 endif
75
76 ifdef RW_GAME_DIR               # path to writable game data specified
77 CONFIG_RW_GAME_DIR = -DRW_GAME_DIR="\"$(RW_GAME_DIR)\""
78 endif
79
80 ifdef SCORE_ENTRIES             # number of score entries per player specified
81 CONFIG_SCORE_ENTRIES = -D$(SCORE_ENTRIES)
82 endif
83
84 CONFIG_GAME_DIR = $(CONFIG_RO_GAME_DIR) $(CONFIG_RW_GAME_DIR)
85
86
87 CONFIG = $(CONFIG_GAME_DIR) $(CONFIG_SCORE_ENTRIES) $(JOYSTICK)
88 DEBUG = -DDEBUG -g
89
90 OPTIONS = $(DEBUG) -Wall                        # only for debugging purposes
91 # OPTIONS = $(DEBUG) -O3 -Wall                  # only for debugging purposes
92 # OPTIONS = $(DEBUG) -Wall -ansi -pedantic      # only for debugging purposes
93 # OPTIONS = -O3 -Wall -ansi -pedantic
94 # OPTIONS = -O3 -Wall
95 # OPTIONS = -O3
96 # OPTIONS = -DSYSV -Ae                          # may be needed for HP-UX
97
98 CFLAGS = $(OPTIONS) $(SYS_CFLAGS) $(CONFIG)
99 LDFLAGS = $(SYS_LDFLAGS) $(EXTRA_LDFLAGS) -lm
100
101 SRCS =  main.c          \
102         init.c          \
103         events.c        \
104         tools.c         \
105         screens.c       \
106         misc.c          \
107         game.c          \
108         editor.c        \
109         buttons.c       \
110         files.c         \
111         tape.c          \
112         sound.c         \
113         joystick.c      \
114         cartoons.c      \
115         random.c        \
116         pcx.c           \
117         image.c         \
118         network.c       \
119         netserv.c       \
120         msdos.c         \
121         system.c        \
122         x11.c           \
123         sdl.c
124
125 OBJS =  main.o          \
126         init.o          \
127         events.o        \
128         tools.o         \
129         screens.o       \
130         misc.o          \
131         game.o          \
132         editor.o        \
133         buttons.o       \
134         files.o         \
135         tape.o          \
136         sound.o         \
137         joystick.o      \
138         cartoons.o      \
139         random.o        \
140         pcx.o           \
141         image.o         \
142         network.o       \
143         netserv.o       \
144         msdos.o         \
145         system.o        \
146         x11.o           \
147         sdl.o
148
149 all:    $(PROGNAME)
150
151 $(PROGNAME):    $(OBJS)
152         $(CC) $(PROFILING) $(OBJS) $(LDFLAGS) -o $(PROGNAME)
153
154 .c.o:
155         $(CC) $(PROFILING) $(CFLAGS) -c $*.c
156
157 clean:
158         $(RM) *.o
159         $(RM) ../*.exe
160         $(RM) $(PROGNAME)
161
162
163 #-----------------------------------------------------------------------------#
164 # development only stuff                                                      #
165 #-----------------------------------------------------------------------------#
166
167 depend:
168         for i in $(SRCS); do $(CPP) $(CFLAGS) -M $$i; done > .depend
169
170 ifeq (.depend,$(wildcard .depend))
171 include .depend
172 endif