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