1#
2# Modification History
3#
4# 2006-June-27    Jason Rohrer
5# Created.  Condensed from X86 and PPC makefiles in Transcend project.
6#
7# 2007-April-23    Jason Rohrer
8# Removed unneeded libraries.
9#
10
11
12##
13# The common GnuLinux portion of Makefiles.
14# Should not be made manually---used by configure to build Makefiles.
15##
16
17
18PLATFORM_COMPILE_FLAGS = ${CXXFLAGS} -I${LOCALBASE}/include -I${LOCALBASE}/include -DLINUX
19
20
21# various GL and X windows  librariesneeded for linux
22# also need portaudio library (which in turn needs pthreads)
23PLATFORM_LINK_FLAGS = -L${LOCALBASE}/lib -L${LOCALBASE}/lib -lGL -lglut -lGLU -lX11 -lXi -lXext -lXmu -pthread -lportaudio
24
25
26# All platforms but OSX support g++ and need no linker hacks
27GXX = ${CXX}
28LINK_FLAGS =
29
30
31
32##
33# Platform-specific minorGems file path prefixes
34##
35
36PLATFORM = Linux
37PLATFORM_PATH = linux
38
39TIME_PLATFORM = Unix
40TIME_PLATFORM_PATH = unix
41
42DIRECTORY_PLATFORM = Unix
43DIRECTORY_PLATFORM_PATH = unix
44#
45# Modification History
46#
47# 2004-April-30    Jason Rohrer
48# Created.  Modified from MUTE source.
49#
50# 2005-August-29    Jason Rohrer
51# Added optimization options.
52#
53# 2007-April-23    Jason Rohrer
54# Upgraded to latest minorGems dependency format.
55#
56
57
58##
59# The common portion of all Makefiles.
60# Should not be made manually---used by configure to build Makefiles.
61##
62
63
64
65EXE_LINKER = ${GXX}
66
67RANLIB = ranlib
68LIBRARY_LINKER = ar
69
70
71DEBUG_ON_FLAG = -g #-DDEBUG_MEMORY
72DEBUG_OFF_FLAG =
73
74DEBUG_FLAG = ${DEBUG_OFF_FLAG}
75
76
77PROFILE_ON_FLAG = -pg -a -DUSE_GPROF_THREADS
78PROFILE_OFF_FLAG =
79
80PROFILE_FLAG = ${PROFILE_OFF_FLAG}
81
82
83OPTIMIZE_ON_FLAG = -O9
84OPTIMIZE_OFF_FLAG =
85
86OPTIMIZE_FLAG = ${OPTIMIZE_ON_FLAG}
87
88
89PORT_AUDIO_PATH = ${ROOT_PATH}/minorGems/sound/portaudio
90
91
92# common to all platforms
93SOCKET_UDP_PLATFORM_PATH = unix
94SOCKET_UDP_PLATFORM = Unix
95
96
97
98COMPILE_FLAGS = -Wall ${PLATFORM_COMPILE_FLAGS} -I${ROOT_PATH}
99
100
101COMPILE = ${GXX} ${COMPILE_FLAGS} -c
102EXE_LINK = ${EXE_LINKER} ${COMPILE_FLAGS} ${LINK_FLAGS}
103LIBRARY_LINK = ${LIBRARY_LINKER} cru
104
105
106#
107# Generic:
108#
109# Map all .cpp C++ and C files into .o object files
110#
111# $@   represents the name.o file
112# $<   represents the name.cpp file
113#
114.cpp.o:
115	${COMPILE} -o $@ $<
116.c.o:
117	${COMPILE} -o $@ $<
118
119
120
121
122
123
124#
125# Modification History
126#
127# 2004-November-19    Jason Rohrer
128# Copied from Primrose source.
129#
130# 2004-November-21    Jason Rohrer
131# Added multi-source downloader.
132#
133# 2004-December-13    Jason Rohrer
134# Added socket manager.
135#
136# 2005-February-4    Jason Rohrer
137# Added ScreenGL.
138#
139# 2005-February-21    Jason Rohrer
140# Added SingleTextureGL.
141#
142# 2006-November-21    Jason Rohrer
143# Added PNGImageConverter.
144#
145
146
147##
148# The common portion of Makefiles for all targets that use minorGems,
149# supplying variable definitions for minorGems.
150#
151# Should not be made manually---used by project-specific configure scripts to
152# build Makefiles.
153##
154
155
156# This file is intended to be included in another makefile.
157# The following variables need to be defined:
158#
159# ROOT_PATH   the path to the directory containing the minorGems directory
160# PLATFORM_PATH
161# PLATFORM
162# DIRECTORY_PLATFORM_PATH
163# DIRECTORY_PLATFORM
164# TIME_PLATFORM_PATH
165# TIME_PLATFORM
166# SOCKET_UDP_PLATFORM_PATH
167# SOCKET_UDP_PLATFORM
168
169
170# Makefile Usage:
171# -- Include this file
172# -- Define your project-specific targets and rules
173# -- Include Makefile.minorGems_targets
174
175
176
177
178PLATFORM_DIRECTORY = ${ROOT_PATH}/minorGems/io/file/${DIRECTORY_PLATFORM_PATH}/Directory${DIRECTORY_PLATFORM}
179
180PLATFORM_TIME = ${ROOT_PATH}/minorGems/system/${TIME_PLATFORM_PATH}/Time${TIME_PLATFORM}
181
182PLATFORM_HOST_ADDRESS = ${ROOT_PATH}/minorGems/network/${PLATFORM_PATH}/HostAddress${PLATFORM}
183
184PLATFORM_SOCKET = ${ROOT_PATH}/minorGems/network/${PLATFORM_PATH}/Socket${PLATFORM}
185
186PLATFORM_SOCKET_CLIENT = ${ROOT_PATH}/minorGems/network/${PLATFORM_PATH}/SocketClient${PLATFORM}
187
188PLATFORM_SOCKET_SERVER = ${ROOT_PATH}/minorGems/network/${PLATFORM_PATH}/SocketServer${PLATFORM}
189
190PLATFORM_SOCKET_UDP = ${ROOT_PATH}/minorGems/network/${SOCKET_UDP_PLATFORM_PATH}/SocketUDP${SOCKET_UDP_PLATFORM}
191
192
193PLATFORM_TYPE_IO = ${ROOT_PATH}/minorGems/io/${PLATFORM_PATH}/TypeIO${PLATFORM}
194
195PLATFORM_THREAD = ${ROOT_PATH}/minorGems/system/${PLATFORM_PATH}/Thread${PLATFORM}
196
197PLATFORM_MUTEX_LOCK = ${ROOT_PATH}/minorGems/system/${PLATFORM_PATH}/MutexLock${PLATFORM}
198
199PLATFORM_BINARY_SEMAPHORE = ${ROOT_PATH}/minorGems/system/${PLATFORM_PATH}/BinarySemaphore${PLATFORM}
200
201
202
203##
204# Header, source, and object files.
205##
206
207SIMPLE_VECTOR_H = ${ROOT_PATH}/minorGems/util/SimpleVector.h
208
209OUTPUT_STREAM_H = ${ROOT_PATH}/minorGems/io/OutputStream.h
210INPUT_STREAM_H = ${ROOT_PATH}/minorGems/io/InputStream.h
211
212
213HOST_ADDRESS_H = ${ROOT_PATH}/minorGems/network/HostAddress.h
214HOST_ADDRESS_CPP = ${PLATFORM_HOST_ADDRESS}.cpp
215HOST_ADDRESS_O = ${PLATFORM_HOST_ADDRESS}.o
216
217SOCKET_H = ${ROOT_PATH}/minorGems/network/Socket.h
218SOCKET_CPP = ${PLATFORM_SOCKET}.cpp
219SOCKET_O = ${PLATFORM_SOCKET}.o
220
221SOCKET_CLIENT_H = ${ROOT_PATH}/minorGems/network/SocketClient.h
222SOCKET_CLIENT_CPP = ${PLATFORM_SOCKET_CLIENT}.cpp
223SOCKET_CLIENT_O = ${PLATFORM_SOCKET_CLIENT}.o
224
225SOCKET_SERVER_H = ${ROOT_PATH}/minorGems/network/SocketServer.h
226SOCKET_SERVER_CPP = ${PLATFORM_SOCKET_SERVER}.cpp
227SOCKET_SERVER_O = ${PLATFORM_SOCKET_SERVER}.o
228
229SOCKET_UDP_H = ${ROOT_PATH}/minorGems/network/SocketUDP.h
230SOCKET_UDP_CPP = ${PLATFORM_SOCKET_UDP}.cpp
231SOCKET_UDP_O = ${PLATFORM_SOCKET_UDP}.o
232
233
234SOCKET_STREAM_H = ${ROOT_PATH}/minorGems/network/SocketStream.h
235
236NETWORK_FUNCTION_LOCKS = ${ROOT_PATH}/minorGems/network/NetworkFunctionLocks
237NETWORK_FUNCTION_LOCKS_H = ${NETWORK_FUNCTION_LOCKS}.h
238NETWORK_FUNCTION_LOCKS_CPP = ${NETWORK_FUNCTION_LOCKS}.cpp
239NETWORK_FUNCTION_LOCKS_O = ${NETWORK_FUNCTION_LOCKS}.o
240
241SOCKET_MANAGER = ${ROOT_PATH}/minorGems/network/SocketManager
242SOCKET_MANAGER_H = ${SOCKET_MANAGER}.h
243SOCKET_MANAGER_CPP = ${SOCKET_MANAGER}.cpp
244SOCKET_MANAGER_O = ${SOCKET_MANAGER}.o
245
246PATH_H = ${ROOT_PATH}/minorGems/io/file/Path.h
247PATH_CPP = ${ROOT_PATH}/minorGems/io/file/${PLATFORM_PATH}/Path${PLATFORM}.cpp
248PATH_O = ${ROOT_PATH}/minorGems/io/file/${PLATFORM_PATH}/Path${PLATFORM}.o
249
250
251FILE_H = ${ROOT_PATH}/minorGems/io/file/File.h
252FILE_OUTPUT_STREAM_H = ${ROOT_PATH}/minorGems/io/file/FileOutputStream.h
253FILE_INPUT_STREAM_H = ${ROOT_PATH}/minorGems/io/file/FileInputStream.h
254
255DIRECTORY_H = ${ROOT_PATH}/minorGems/io/file/Directory.h
256DIRECTORY_CPP = ${PLATFORM_DIRECTORY}.cpp
257DIRECTORY_O = ${PLATFORM_DIRECTORY}.o
258
259
260TYPE_IO_H = ${ROOT_PATH}/minorGems/io/TypeIO.h
261TYPE_IO_CPP = ${PLATFORM_TYPE_IO}.cpp
262TYPE_IO_O = ${PLATFORM_TYPE_IO}.o
263
264
265TIME_H = ${ROOT_PATH}/minorGems/system/Time.h
266TIME_CPP = ${PLATFORM_TIME}.cpp
267TIME_O = ${PLATFORM_TIME}.o
268
269THREAD_H = ${ROOT_PATH}/minorGems/system/Thread.h
270THREAD_CPP = ${PLATFORM_THREAD}.cpp
271THREAD_O = ${PLATFORM_THREAD}.o
272
273MUTEX_LOCK_H = ${ROOT_PATH}/minorGems/system/MutexLock.h
274MUTEX_LOCK_CPP = ${PLATFORM_MUTEX_LOCK}.cpp
275MUTEX_LOCK_O = ${PLATFORM_MUTEX_LOCK}.o
276
277
278BINARY_SEMAPHORE_H = ${ROOT_PATH}/minorGems/system/BinarySemaphore.h
279BINARY_SEMAPHORE_CPP = ${PLATFORM_BINARY_SEMAPHORE}.cpp
280BINARY_SEMAPHORE_O = ${PLATFORM_BINARY_SEMAPHORE}.o
281
282
283SEMAPHORE_H = ${ROOT_PATH}/minorGems/system/Semaphore.h
284
285APP_LOG_H = ${ROOT_PATH}/minorGems/util/log/AppLog.h
286APP_LOG_CPP = ${ROOT_PATH}/minorGems/util/log/AppLog.cpp
287APP_LOG_O = ${ROOT_PATH}/minorGems/util/log/AppLog.o
288
289PRINT_LOG_H = ${ROOT_PATH}/minorGems/util/log/PrintLog.h
290PRINT_LOG_CPP = ${ROOT_PATH}/minorGems/util/log/PrintLog.cpp
291PRINT_LOG_O = ${ROOT_PATH}/minorGems/util/log/PrintLog.o
292
293
294FILE_LOG_H = ${ROOT_PATH}/minorGems/util/log/FileLog.h
295FILE_LOG_CPP = ${ROOT_PATH}/minorGems/util/log/FileLog.cpp
296FILE_LOG_O = ${ROOT_PATH}/minorGems/util/log/FileLog.o
297
298
299LOG_H = ${ROOT_PATH}/minorGems/util/log/Log.h
300LOG_CPP = ${ROOT_PATH}/minorGems/util/log/Log.cpp
301LOG_O = ${ROOT_PATH}/minorGems/util/log/Log.o
302
303
304PRINT_UTILS_H = ${ROOT_PATH}/minorGems/util/printUtils.h
305PRINT_UTILS_CPP = ${ROOT_PATH}/minorGems/util/printUtils.cpp
306PRINT_UTILS_O = ${ROOT_PATH}/minorGems/util/printUtils.o
307
308
309WEB_CLIENT_H = ${ROOT_PATH}/minorGems/network/web/WebClient.h
310WEB_CLIENT_CPP = ${ROOT_PATH}/minorGems/network/web/WebClient.cpp
311WEB_CLIENT_O = ${ROOT_PATH}/minorGems/network/web/WebClient.o
312
313URL_UTILS_H = ${ROOT_PATH}/minorGems/network/web/URLUtils.h
314URL_UTILS_CPP = ${ROOT_PATH}/minorGems/network/web/URLUtils.cpp
315URL_UTILS_O = ${ROOT_PATH}/minorGems/network/web/URLUtils.o
316
317MIME_TYPER = ${ROOT_PATH}/minorGems/network/web/MimeTyper
318MIME_TYPER_H = ${MIME_TYPER}.h
319MIME_TYPER_CPP = ${MIME_TYPER}.cpp
320MIME_TYPER_O = ${MIME_TYPER}.o
321
322
323WEB_SERVER_PATH = ${ROOT_PATH}/minorGems/network/web/server
324
325WEB_SERVER = ${WEB_SERVER_PATH}/WebServer
326WEB_SERVER_H = ${WEB_SERVER}.h
327WEB_SERVER_CPP = ${WEB_SERVER}.cpp
328WEB_SERVER_O = ${WEB_SERVER}.o
329
330REQUEST_HANDLING_THREAD = ${WEB_SERVER_PATH}/RequestHandlingThread
331REQUEST_HANDLING_THREAD_H = ${REQUEST_HANDLING_THREAD}.h
332REQUEST_HANDLING_THREAD_CPP = ${REQUEST_HANDLING_THREAD}.cpp
333REQUEST_HANDLING_THREAD_O = ${REQUEST_HANDLING_THREAD}.o
334
335THREAD_HANDLING_THREAD = ${WEB_SERVER_PATH}/ThreadHandlingThread
336THREAD_HANDLING_THREAD_H = ${THREAD_HANDLING_THREAD}.h
337THREAD_HANDLING_THREAD_CPP = ${THREAD_HANDLING_THREAD}.cpp
338THREAD_HANDLING_THREAD_O = ${THREAD_HANDLING_THREAD}.o
339
340CONNECTION_PERMISSION_HANDLER = ${WEB_SERVER_PATH}/ConnectionPermissionHandler
341CONNECTION_PERMISSION_HANDLER_H = ${CONNECTION_PERMISSION_HANDLER}.h
342CONNECTION_PERMISSION_HANDLER_CPP = ${CONNECTION_PERMISSION_HANDLER}.cpp
343CONNECTION_PERMISSION_HANDLER_O = ${CONNECTION_PERMISSION_HANDLER}.o
344
345STOP_SIGNAL_THREAD = ${ROOT_PATH}/minorGems/system/StopSignalThread
346STOP_SIGNAL_THREAD_H = ${STOP_SIGNAL_THREAD}.h
347STOP_SIGNAL_THREAD_CPP = ${STOP_SIGNAL_THREAD}.cpp
348STOP_SIGNAL_THREAD_O = ${STOP_SIGNAL_THREAD}.o
349
350FINISHED_SIGNAL_THREAD = ${ROOT_PATH}/minorGems/system/FinishedSignalThread
351FINISHED_SIGNAL_THREAD_H = ${FINISHED_SIGNAL_THREAD}.h
352FINISHED_SIGNAL_THREAD_CPP = ${FINISHED_SIGNAL_THREAD}.cpp
353FINISHED_SIGNAL_THREAD_O = ${FINISHED_SIGNAL_THREAD}.o
354
355FINISHED_SIGNAL_THREAD_MANAGER = ${ROOT_PATH}/minorGems/system/FinishedSignalThreadManager
356FINISHED_SIGNAL_THREAD_MANAGER_H = ${FINISHED_SIGNAL_THREAD_MANAGER}.h
357FINISHED_SIGNAL_THREAD_MANAGER_CPP = ${FINISHED_SIGNAL_THREAD_MANAGER}.cpp
358FINISHED_SIGNAL_THREAD_MANAGER_O = ${FINISHED_SIGNAL_THREAD_MANAGER}.o
359
360
361
362
363
364STRING_BUFFER_OUTPUT_STREAM_H = ${ROOT_PATH}/minorGems/util/StringBufferOutputStream.h
365STRING_BUFFER_OUTPUT_STREAM_CPP = ${ROOT_PATH}/minorGems/util/StringBufferOutputStream.cpp
366STRING_BUFFER_OUTPUT_STREAM_O = ${ROOT_PATH}/minorGems/util/StringBufferOutputStream.o
367
368
369XML_UTILS_H = ${ROOT_PATH}/minorGems/formats/xml/XMLUtils.h
370XML_UTILS_CPP = ${ROOT_PATH}/minorGems/formats/xml/XMLUtils.cpp
371XML_UTILS_O = ${ROOT_PATH}/minorGems/formats/xml/XMLUtils.o
372
373
374HTML_UTILS_H = ${ROOT_PATH}/minorGems/formats/html/HTMLUtils.h
375HTML_UTILS_CPP = ${ROOT_PATH}/minorGems/formats/html/HTMLUtils.cpp
376HTML_UTILS_O = ${ROOT_PATH}/minorGems/formats/html/HTMLUtils.o
377
378
379SETTINGS_MANAGER_H = ${ROOT_PATH}/minorGems/util/SettingsManager.h
380SETTINGS_MANAGER_CPP = ${ROOT_PATH}/minorGems/util/SettingsManager.cpp
381SETTINGS_MANAGER_O = ${ROOT_PATH}/minorGems/util/SettingsManager.o
382
383TRANSLATION_MANAGER_H = ${ROOT_PATH}/minorGems/util/TranslationManager.h
384TRANSLATION_MANAGER_CPP = ${ROOT_PATH}/minorGems/util/TranslationManager.cpp
385TRANSLATION_MANAGER_O = ${ROOT_PATH}/minorGems/util/TranslationManager.o
386
387
388STRING_UTILS = ${ROOT_PATH}/minorGems/util/stringUtils
389STRING_UTILS_H = ${STRING_UTILS}.h
390STRING_UTILS_CPP = ${STRING_UTILS}.cpp
391STRING_UTILS_O = ${STRING_UTILS}.o
392
393
394SHA1 = ${ROOT_PATH}/minorGems/crypto/hashes/sha1
395SHA1_H = ${SHA1}.h
396SHA1_CPP = ${SHA1}.cpp
397SHA1_O = ${SHA1}.o
398
399
400
401
402MEMORY_TRACK_H = ${ROOT_PATH}/minorGems/util/development/memory/MemoryTrack.h
403MEMORY_TRACK_CPP = ${ROOT_PATH}/minorGems/util/development/memory/MemoryTrack.cpp
404MEMORY_TRACK_O = ${ROOT_PATH}/minorGems/util/development/memory/MemoryTrack.o
405
406
407DEBUG_MEMORY = ${ROOT_PATH}/minorGems/util/development/memory/debugMemory
408DEBUG_MEMORY_H = ${DEBUG_MEMORY}.h
409DEBUG_MEMORY_CPP = ${DEBUG_MEMORY}.cpp
410DEBUG_MEMORY_O = ${DEBUG_MEMORY}.o
411
412
413# variable pointing to both necessary .o files for memory tracking
414MEMORY_TRACKER_O = ${MEMORY_TRACK_O} ${DEBUG_MEMORY_O}
415
416
417# p2p parts
418
419HOST_CATCHER = ${ROOT_PATH}/minorGems/network/p2pParts/HostCatcher
420HOST_CATCHER_H = ${HOST_CATCHER}.h
421HOST_CATCHER_CPP = ${HOST_CATCHER}.cpp
422HOST_CATCHER_O = ${HOST_CATCHER}.o
423
424OUTBOUND_CHANNEL = ${ROOT_PATH}/minorGems/network/p2pParts/OutboundChannel
425OUTBOUND_CHANNEL_H = ${OUTBOUND_CHANNEL}.h
426OUTBOUND_CHANNEL_CPP = ${OUTBOUND_CHANNEL}.cpp
427OUTBOUND_CHANNEL_O = ${OUTBOUND_CHANNEL}.o
428
429DUPLICATE_MESSAGE_DETECTOR = ${ROOT_PATH}/minorGems/network/p2pParts/DuplicateMessageDetector
430DUPLICATE_MESSAGE_DETECTOR_H = ${DUPLICATE_MESSAGE_DETECTOR}.h
431DUPLICATE_MESSAGE_DETECTOR_CPP = ${DUPLICATE_MESSAGE_DETECTOR}.cpp
432DUPLICATE_MESSAGE_DETECTOR_O = ${DUPLICATE_MESSAGE_DETECTOR}.o
433
434PROTOCOL_UTILS = ${ROOT_PATH}/minorGems/network/p2pParts/protocolUtils
435PROTOCOL_UTILS_H = ${PROTOCOL_UTILS}.h
436PROTOCOL_UTILS_CPP = ${PROTOCOL_UTILS}.cpp
437PROTOCOL_UTILS_O = ${PROTOCOL_UTILS}.o
438
439MESSAGE_PER_SECOND_LIMITER = ${ROOT_PATH}/minorGems/network/p2pParts/MessagePerSecondLimiter
440MESSAGE_PER_SECOND_LIMITER_H = ${MESSAGE_PER_SECOND_LIMITER}.h
441MESSAGE_PER_SECOND_LIMITER_CPP = ${MESSAGE_PER_SECOND_LIMITER}.cpp
442MESSAGE_PER_SECOND_LIMITER_O = ${MESSAGE_PER_SECOND_LIMITER}.o
443
444MULTI_SOURCE_DOWNLOADER = ${ROOT_PATH}/minorGems/network/p2pParts/MultiSourceDownloader
445MULTI_SOURCE_DOWNLOADER_H = ${MULTI_SOURCE_DOWNLOADER}.h
446MULTI_SOURCE_DOWNLOADER_CPP = ${MULTI_SOURCE_DOWNLOADER}.cpp
447MULTI_SOURCE_DOWNLOADER_O = ${MULTI_SOURCE_DOWNLOADER}.o
448
449
450
451
452
453
454ENCODING_UTILS = ${ROOT_PATH}/minorGems/formats/encodingUtils
455ENCODING_UTILS_H = ${ENCODING_UTILS}.h
456ENCODING_UTILS_CPP = ${ENCODING_UTILS}.cpp
457ENCODING_UTILS_O = ${ENCODING_UTILS}.o
458
459
460
461
462SCREEN_GL = ${ROOT_PATH}/minorGems/graphics/openGL/ScreenGL
463SCREEN_GL_H = ${SCREEN_GL}.h
464SCREEN_GL_CPP = ${SCREEN_GL}.cpp
465SCREEN_GL_O = ${SCREEN_GL}.o
466
467
468
469SINGLE_TEXTURE_GL = ${ROOT_PATH}/minorGems/graphics/openGL/SingleTextureGL
470SINGLE_TEXTURE_GL_H = ${SINGLE_TEXTURE_GL}.h
471SINGLE_TEXTURE_GL_CPP = ${SINGLE_TEXTURE_GL}.cpp
472SINGLE_TEXTURE_GL_O = ${SINGLE_TEXTURE_GL}.o
473
474
475
476PNG_IMAGE_CONVERTER = ${ROOT_PATH}/minorGems/graphics/converters/PNGImageConverter
477PNG_IMAGE_CONVERTER_H = ${PNG_IMAGE_CONVERTER}.h
478PNG_IMAGE_CONVERTER_CPP = ${PNG_IMAGE_CONVERTER}.cpp
479PNG_IMAGE_CONVERTER_O = ${PNG_IMAGE_CONVERTER}.o#
480# Modification History
481#
482# 2006-June-27    Jason Rohrer
483# Created.  Copied from Transcend.
484#
485
486
487##
488# The portion of game2 Makefiles common to all platforms.
489#
490# Should not be made manually---used by game2/configure to build Makefiles.
491##
492
493
494
495
496ROOT_PATH = ../..
497
498USER_INTERFACE_PATH = userInterface
499SOUND_PATH = sound
500
501
502
503LAYER_SOURCE = \
504 glCommon.cpp \
505 features.cpp\
506 game.cpp \
507 World.cpp \
508 Plant.cpp \
509 PlantLeaf.cpp \
510 PlantFlower.cpp \
511 Fruit.cpp \
512 Gardener.cpp \
513 Portal.cpp \
514 GardenerAI2.cpp \
515 FlyingObject.cpp \
516 emotionIcons.cpp \
517 landscape.cpp \
518 SoilMap.cpp \
519 Seeds.cpp \
520 Genetics.cpp \
521 GardenerGenetics.cpp \
522 PlantGenetics.cpp \
523 PortalLayerGenetics.cpp \
524 ImmortalGenetics.cpp \
525 ${USER_INTERFACE_PATH}/ButtonBase.cpp \
526 ${USER_INTERFACE_PATH}/PlantButton.cpp \
527 ${USER_INTERFACE_PATH}/PlotButton.cpp \
528 ${USER_INTERFACE_PATH}/WaterButton.cpp \
529 ${USER_INTERFACE_PATH}/PoisonButton.cpp \
530 ${USER_INTERFACE_PATH}/HarvestButton.cpp \
531 ${USER_INTERFACE_PATH}/EmotionButton.cpp \
532 ${USER_INTERFACE_PATH}/PauseButton.cpp \
533 ${USER_INTERFACE_PATH}/RestartButton.cpp \
534 ${USER_INTERFACE_PATH}/QuitButton.cpp \
535 ${USER_INTERFACE_PATH}/TextDisplay.cpp \
536 ${USER_INTERFACE_PATH}/ObjectSelector.cpp \
537 ${USER_INTERFACE_PATH}/EatButton.cpp \
538 ${USER_INTERFACE_PATH}/GiftButton.cpp \
539 ${USER_INTERFACE_PATH}/DiscardButton.cpp \
540 ${USER_INTERFACE_PATH}/MateButton.cpp \
541 ${USER_INTERFACE_PATH}/FollowButton.cpp \
542 ${USER_INTERFACE_PATH}/TexturedPanel.cpp \
543 ${USER_INTERFACE_PATH}/NextTutorialButton.cpp \
544 ${USER_INTERFACE_PATH}/TextBlockGL.cpp \
545 ${SOUND_PATH}/MusicNoteWaveTable.cpp \
546 ${SOUND_PATH}/MusicPart.cpp \
547 ${SOUND_PATH}/MusicPlayer.cpp \
548 ${SOUND_PATH}/SoundPlayer.cpp \
549 ${SOUND_PATH}/SoundSamples.cpp \
550 ${SOUND_PATH}/SoundEffectsBank.cpp \
551
552
553LAYER_OBJECTS = ${LAYER_SOURCE:.cpp=.o}
554
555NEEDED_MINOR_GEMS_OBJECTS = \
556 ${SCREEN_GL_O} \
557 ${SINGLE_TEXTURE_GL_O} \
558 ${TYPE_IO_O} \
559 ${STRING_UTILS_O} \
560 ${STRING_BUFFER_OUTPUT_STREAM_O} \
561 ${PATH_O} \
562 ${TIME_O} \
563 ${THREAD_O} \
564 ${MUTEX_LOCK_O} \
565 ${PNG_IMAGE_CONVERTER_O} \
566 ${TRANSLATION_MANAGER_O}
567
568
569
570
571TEST_SOURCE =
572TEST_OBJECTS = ${TEST_SOURCE:.cpp=.o}
573
574
575
576DEPENDENCY_FILE = Makefile.dependencies
577
578
579# targets
580
581all: Cultivation
582clean:
583	rm -f ${DEPENDENCY_FILE} ${LAYER_OBJECTS} ${TEST_OBJECTS} ${NEEDED_MINOR_GEMS_OBJECTS} Cultivation
584
585
586
587
588Cultivation: ${LAYER_OBJECTS} ${NEEDED_MINOR_GEMS_OBJECTS}
589	${EXE_LINK} -o Cultivation ${LAYER_OBJECTS} ${NEEDED_MINOR_GEMS_OBJECTS} ${PLATFORM_LINK_FLAGS}
590
591# add this on Unix to support JPEG video frame output
592# -ljpeg ${ROOT_PATH}/minorGems/graphics/converters/unix/JPEGImageConverterUnix.cpp
593
594
595
596
597# sed command for fixing up the dependencies generated by g++
598# g++ (pre-3.0) leaves the path off of the .o target
599# look for a .o file at the beginning of a line (in other words, one
600# without a path), and replace it with the full-path version.
601# This should be compatible with g++ 3.0, since we only replace .o names
602# that occur at the beginning of a line (using the "^" modifier)
603
604GAME_2_SED_FIX_COMMAND = sed ' \
605s/^ButtonBase.o/$${USER_INTERFACE_PATH}\/ButtonBase.o/; \
606s/^PlantButton.o/$${USER_INTERFACE_PATH}\/PlantButton.o/; \
607s/^PlotButton.o/$${USER_INTERFACE_PATH}\/PlotButton.o/; \
608s/^WaterButton.o/$${USER_INTERFACE_PATH}\/WaterButton.o/; \
609s/^PoisonButton.o/$${USER_INTERFACE_PATH}\/PoisonButton.o/; \
610s/^HarvestButton.o/$${USER_INTERFACE_PATH}\/HarvestButton.o/; \
611s/^EmotionButton.o/$${USER_INTERFACE_PATH}\/EmotionButton.o/; \
612s/^PauseButton.o/$${USER_INTERFACE_PATH}\/PauseButton.o/; \
613s/^RestartButton.o/$${USER_INTERFACE_PATH}\/RestartButton.o/; \
614s/^QuitButton.o/$${USER_INTERFACE_PATH}\/QuitButton.o/; \
615s/^TextDisplay.o/$${USER_INTERFACE_PATH}\/TextDisplay.o/; \
616s/^ObjectSelector.o/$${USER_INTERFACE_PATH}\/ObjectSelector.o/; \
617s/^EatButton.o/$${USER_INTERFACE_PATH}\/EatButton.o/; \
618s/^GiftButton.o/$${USER_INTERFACE_PATH}\/GiftButton.o/; \
619s/^DiscardButton.o/$${USER_INTERFACE_PATH}\/DiscardButton.o/; \
620s/^MateButton.o/$${USER_INTERFACE_PATH}\/MateButton.o/; \
621s/^FollowButton.o/$${USER_INTERFACE_PATH}\/FollowButton.o/; \
622s/^TexturedPanel.o/$${USER_INTERFACE_PATH}\/TexturedPanel.o/; \
623s/^NextTutorialButton.o/$${USER_INTERFACE_PATH}\/NextTutorialButton.o/; \
624s/^TextBlockGL.o/$${USER_INTERFACE_PATH}\/TextBlockGL.o/; \
625s/^MusicNoteWaveTable.o/$${SOUND_PATH}\/MusicNoteWaveTable.o/; \
626s/^MusicPart.o/$${SOUND_PATH}\/MusicPart.o/; \
627s/^MusicPlayer.o/$${SOUND_PATH}\/MusicPlayer.o/; \
628s/^SoundPlayer.o/$${SOUND_PATH}\/SoundPlayer.o/; \
629s/^SoundSamples.o/$${SOUND_PATH}\/SoundSamples.o/; \
630'
631
632
633
634
635
636# build the dependency file
637${DEPENDENCY_FILE}: ${LAYER_SOURCE} ${TEST_SOURCE}
638	rm -f ${DEPENDENCY_FILE}
639	${COMPILE} -MM ${LAYER_SOURCE} ${TEST_SOURCE} >> ${DEPENDENCY_FILE}.temp
640	cat ${DEPENDENCY_FILE}.temp | ${GAME_2_SED_FIX_COMMAND} >> ${DEPENDENCY_FILE}
641	rm -f ${DEPENDENCY_FILE}.temp
642
643include ${DEPENDENCY_FILE}
644
645
646
647
648
649
650#
651# Modification History
652#
653# 2004-November-19    Jason Rohrer
654# Copied from Primrose source.
655#
656# 2004-November-21    Jason Rohrer
657# Added multi-source downloader.
658#
659# 2004-December-13    Jason Rohrer
660# Added socket manager.
661#
662# 2005-February-4    Jason Rohrer
663# Added ScreenGL.
664#
665# 2005-February-21    Jason Rohrer
666# Added SingleTextureGL.
667#
668# 2006-April-24    Jason Rohrer
669# Added conditional compilation of files that depend on OpenGL/GLUT.
670#
671# 2006-November-21    Jason Rohrer
672# Added PNGImageConverter.
673#
674# 2007-April-23    Jason Rohrer
675# Changed to make compilation of all objects individually conditional using
676# NEEDED_MINOR_GEMS_OBJECTS variable.
677#
678
679
680
681##
682# The common portion of Makefiles for all targets that use minorGems,
683# supplying target dependencies for minorGems targets.
684#
685#
686# Should not be made manually---used by project-specific configure scripts to
687# build Makefiles.
688##
689
690
691# Makefile Usage (these must be in your Makefile in the following order):
692# -- Include Makefile.minorGems
693# -- List the desired minorGems objects in NEEDED_MINOR_GEMS_OBJECTS
694#    Example:
695#      NEEDED_MINOR_GEMS_OBJECTS = \
696#       ${SOCKET_O} \
697#       ${SOCKET_CLIENT_O} \
698#       ${SOCKET_SERVER_O} \
699#       ${HOST_ADDRESS_O}
700# -- Define your project-specific targets and rules
701# -- Include this file
702
703
704
705
706
707##
708# Dependencies for minorGems objects.
709##
710
711
712# first, take the object list and turn it into a source list
713MINOR_GEMS_SOURCE = ${NEEDED_MINOR_GEMS_OBJECTS:.o=.cpp}
714
715
716# Here is what the old, manual list looked like, for reference:
717#
718# MINOR_GEMS_SOURCE = \
719#  ${HOST_ADDRESS_CPP} \
720#  ${SOCKET_CPP} \
721#  ${SOCKET_SERVER_CPP} \
722#  ${SOCKET_CLIENT_CPP} \
723#  ${SOCKET_UDP_CPP} \
724#  ${NETWORK_FUNCTION_LOCKS_CPP} \
725#  ${SOCKET_MANAGER_CPP} \
726#  ${PATH_CPP} \
727#  ${DIRECTORY_CPP} \
728#  ${TYPE_IO_CPP} \
729#  ${TIME_CPP} \
730#  ${THREAD_CPP} \
731#  ${MUTEX_LOCK_CPP} \
732#  ${BINARY_SEMAPHORE_CPP} \
733#  ${APP_LOG_CPP} \
734#  ${PRINT_LOG_CPP} \
735#  ${FILE_LOG_CPP} \
736#  ${LOG_CPP} \
737#  ${PRINT_UTILS_CPP} \
738#  ${WEB_CLIENT_CPP} \
739#  ${URL_UTILS_CPP} \
740#  ${MIME_TYPER_CPP} \
741#  ${STRING_BUFFER_OUTPUT_STREAM_CPP} \
742#  ${XML_UTILS_CPP} \
743#  ${HTML_UTILS_CPP} \
744#  ${SETTINGS_MANAGER_CPP} \
745#  ${TRANSLATION_MANAGER_CPP} \
746#  ${STRING_UTILS_CPP} \
747#  ${SHA1_CPP} \
748#  ${MEMORY_TRACK_CPP} \
749#  ${DEBUG_MEMORY_CPP} \
750#  ${HOST_CATCHER_CPP} \
751#  ${OUTBOUND_CHANNEL_CPP} \
752#  ${DUPLICATE_MESSAGE_DETECTOR_CPP} \
753#  ${PROTOCOL_UTILS_CPP} \
754#  ${MESSAGE_PER_SECOND_LIMITER_CPP} \
755#  ${MULTI_SOURCE_DOWNLOADER_CPP} \
756#  ${ENCODING_UTILS_CPP} \
757#  ${WEB_SERVER_CPP} \
758#  ${REQUEST_HANDLING_THREAD_CPP} \
759#  ${THREAD_HANDLING_THREAD_CPP} \
760#  ${CONNECTION_PERMISSION_HANDLER_CPP} \
761#  ${STOP_SIGNAL_THREAD_CPP} \
762#  ${FINISHED_SIGNAL_THREAD_CPP} \
763#  ${FINISHED_SIGNAL_THREAD_MANAGER_CPP} \
764#  ${OPEN_GL_CPP_FILES} \
765#  ${PNG_IMAGE_CONVERTER_CPP}
766
767
768
769# next, generate dependencies using g++
770
771
772# sed command for fixing up the dependencies generated by g++
773# g++ (pre-3.0) leaves the path off of the .o target
774# look for a .o file at the beginning of a line (in other words, one
775# without a path), and replace it with the full-path version.
776# This should be compatible with g++ 3.0, since we only replace .o names
777# that occur at the beginning of a line (using the "^" modifier)
778
779# Split into two parts because sed (on certain platforms) cannot process
780# a string of commands as one long argument
781
782MINOR_GEMS_SED_FIX_COMMAND_A = sed ' \
783s/^HostAddress.*\.o/$${HOST_ADDRESS_O}/; \
784s/^SocketServer.*\.o/$${SOCKET_SERVER_O}/; \
785s/^SocketClient.*\.o/$${SOCKET_CLIENT_O}/; \
786s/^SocketUDP.*\.o/$${SOCKET_UDP_O}/; \
787s/^SocketManager.*\.o/$${SOCKET_MANAGER_O}/; \
788s/^Socket.*\.o/$${SOCKET_O}/; \
789s/^NetworkFunctionLocks.*\.o/$${NETWORK_FUNCTION_LOCKS_O}/; \
790s/^Path.*\.o/$${PATH_O}/; \
791s/^Directory.*\.o/$${DIRECTORY_O}/; \
792s/^TypeIO.*\.o/$${TYPE_IO_O}/; \
793s/^Time.*\.o/$${TIME_O}/; \
794s/^MutexLock.*\.o/$${MUTEX_LOCK_O}/; \
795s/^BinarySemaphore.*\.o/$${BINARY_SEMAPHORE_O}/; \
796s/^AppLog.*\.o/$${APP_LOG_O}/; \
797s/^PrintLog.*\.o/$${PRINT_LOG_O}/; \
798s/^FileLog.*\.o/$${FILE_LOG_O}/; \
799s/^Log.*\.o/$${LOG_O}/; \
800s/^PrintUtils.*\.o/$${PRINT_UTILS_O}/; \
801s/^WebClient.*\.o/$${WEB_CLIENT_O}/; \
802s/^URLUtils.*\.o/$${URL_UTILS_O}/; \
803s/^MimeTyper.*\.o/$${MIME_TYPER_O}/; \
804s/^StringBufferOutputStream.*\.o/$${STRING_BUFFER_OUTPUT_STREAM_O}/; \
805s/^XMLUtils.*\.o/$${XML_UTILS_O}/; \
806s/^HTMLUtils.*\.o/$${HTML_UTILS_O}/; \
807s/^SettingsManager.*\.o/$${SETTINGS_MANAGER_O}/; \
808s/^TranslationManager.*\.o/$${TRANSLATION_MANAGER_O}/; \
809s/^stringUtils.*\.o/$${STRING_UTILS_O}/; \
810s/^sha1.*\.o/$${SHA1_O}/; \
811'
812
813MINOR_GEMS_SED_FIX_COMMAND_B = sed ' \
814s/^MemoryTrack.*\.o/$${MEMORY_TRACK_O}/; \
815s/^DebugMemory.*\.o/$${DEBUG_MEMORY_O}/; \
816s/^HostCatcher.*\.o/$${HOST_CATCHER_O}/; \
817s/^OutboundChannel.*\.o/$${OUTBOUND_CHANNEL_O}/; \
818s/^DuplicateMessageDetector.*\.o/$${DUPLICATE_MESSAGE_DETECTOR_O}/; \
819s/^protocolUtils.*\.o/$${PROTOCOL_UTILS_O}/; \
820s/^MessagePerSecondLimiter.*\.o/$${MESSAGE_PER_SECOND_LIMITER_O}/; \
821s/^MultiSourceDownloader.*\.o/$${MULTI_SOURCE_DOWNLOADER_O}/; \
822s/^encodingUtils.*\.o/$${ENCODING_UTILS_O}/; \
823s/^WebServer.*\.o/$${WEB_SERVER_O }/; \
824s/^RequestHandlingThread.*\.o/$${REQUEST_HANDLING_THREAD_O}/; \
825s/^ThreadHandlingThread.*\.o/$${THREAD_HANDLING_THREAD_O}/; \
826s/^Thread.*\.o/$${THREAD_O}/; \
827s/^ConnectionPermissionHandler.*\.o/$${CONNECTION_PERMISSION_HANDLER_O}/; \
828s/^StopSignalThread.*\.o/$${STOP_SIGNAL_THREAD_O}/; \
829s/^FinishedSignalThreadManager.*\.o/$${FINISHED_SIGNAL_THREAD_MANAGER_O}/; \
830s/^FinishedSignalThread.*\.o/$${FINISHED_SIGNAL_THREAD_O}/; \
831s/^ScreenGL.*\.o/$${SCREEN_GL_O}/; \
832s/^SingleTextureGL.*\.o/$${SINGLE_TEXTURE_GL_O}/; \
833s/^PNGImageConverter.*\.o/$${PNG_IMAGE_CONVERTER_O}/; \
834'
835
836
837
838MINOR_GEMS_DEPENDENCY_FILE = Makefile.minorGems_dependencies
839
840
841# build the dependency file
842
843${MINOR_GEMS_DEPENDENCY_FILE}: ${MINOR_GEMS_SOURCE}
844	rm -f ${MINOR_GEMS_DEPENDENCY_FILE}
845	${COMPILE} -I${ROOT_PATH} -MM ${MINOR_GEMS_SOURCE} >> ${MINOR_GEMS_DEPENDENCY_FILE}.temp
846	cat ${MINOR_GEMS_DEPENDENCY_FILE}.temp | ${MINOR_GEMS_SED_FIX_COMMAND_A} | ${MINOR_GEMS_SED_FIX_COMMAND_B} >> ${MINOR_GEMS_DEPENDENCY_FILE}
847	rm -f ${MINOR_GEMS_DEPENDENCY_FILE}.temp
848
849include ${MINOR_GEMS_DEPENDENCY_FILE}
850
851
852
853
854
855
856