oolite/GNUmakefile

453 lines
14 KiB
Makefile
Executable File

include $(GNUSTEP_MAKEFILES)/common.make
include config.make
vpath %.m src/SDL:src/Core:src/Core/Entities:src/Core/Materials:src/Core/Scripting:src/Core/OXPVerifier:src/Core/Debug
vpath %.h src/SDL:src/Core:src/Core/Entities:src/Core/Materials:src/Core/Scripting:src/Core/OXPVerifier:src/Core/Debug:src/Core/MiniZip
vpath %.c src/SDL:src/Core:src/BSDCompat:src/Core/Debug:src/Core/MiniZip
GNUSTEP_INSTALLATION_DIR = $(GNUSTEP_USER_ROOT)
ifeq ($(GNUSTEP_HOST_OS),mingw32)
GNUSTEP_OBJ_DIR_NAME := $(GNUSTEP_OBJ_DIR_NAME).win
endif
GNUSTEP_OBJ_DIR_BASENAME := $(GNUSTEP_OBJ_DIR_NAME)
HOST_ARCH := $(shell echo $(GNUSTEP_HOST_CPU) | sed -e s/i.86/x86/ -e s/amd64/x86_64/ )
ifeq ($(GNUSTEP_HOST_OS),mingw32)
vpath %.rc src/SDL/OOResourcesWin
# ifeq ($(GNUSTEP_HOST_CPU),x86_64)
# WIN_DEPS_DIR = deps/Windows-deps/x86_64
# else
# WIN_DEPS_DIR = deps/Windows-deps/x86
# endif
WIN_DEPS_DIR = deps/Windows-deps/$(HOST_ARCH)
JS_INC_DIR = $(WIN_DEPS_DIR)/JS32ECMAv5/include
# JS_LIB_DIR = $(WIN_DEPS_DIR)/JS32ECMAv5/lib
ifeq ($(debug),yes)
JS_IMPORT_LIBRARY = js32ECMAv5dbg
else
JS_IMPORT_LIBRARY = js32ECMAv5
endif
ADDITIONAL_INCLUDE_DIRS = -I$(WIN_DEPS_DIR)/include -I$(JS_INC_DIR) -Isrc/SDL -Isrc/Core -Isrc/BSDCompat -Isrc/Core/Scripting -Isrc/Core/Materials -Isrc/Core/Entities -Isrc/Core/OXPVerifier -Isrc/Core/Debug -Isrc/Core/Tables -Isrc/Core/MiniZip
ADDITIONAL_OBJC_LIBS = -L$(WIN_DEPS_DIR)/lib -lglu32 -lopengl32 -lopenal32.dll -lpng14.dll -lmingw32 -lSDLmain -lSDL -lvorbisfile.dll -lvorbis.dll -lz -lgnustep-base -l$(JS_IMPORT_LIBRARY) -lwinmm -mwindows
ADDITIONAL_CFLAGS = -DWIN32 -DNEED_STRLCPY `sdl-config --cflags` -mtune=generic
# note the vpath stuff above isn't working for me, so adding src/SDL and src/Core explicitly
ADDITIONAL_OBJCFLAGS = -DLOADSAVEGUI -DWIN32 -DXP_WIN -Wno-import -std=gnu99 `sdl-config --cflags` -mtune=generic
ifneq ($(HOST_ARCH),x86_64)
ADDITIONAL_LDFLAGS += -Wl,--large-address-aware
# else
# ADDITIONAL_LDFLAGS +=
endif
# oolite_LIB_DIRS += -L$(GNUSTEP_LOCAL_ROOT)/lib -L$(WIN_DEPS_DIR)/lib -L$(JS_LIB_DIR)
ifeq ($(ESPEAK),yes)
ADDITIONAL_OBJC_LIBS += -lespeak.dll
ADDITIONAL_OBJCFLAGS +=-DHAVE_LIBESPEAK=1
GNUSTEP_OBJ_DIR_NAME := $(GNUSTEP_OBJ_DIR_NAME).spk
endif
else
LIBJS_DIR = deps/Linux-deps/$(HOST_ARCH)/mozilla
LIBJS_INC_DIR = deps/Linux-deps/$(HOST_ARCH)/mozilla/include
# Uncomment the following lines if you want to build JS from source. Ensure the relevant changes are performed in Makefile too
# ifeq ($(debug),yes)
# LIBJS_DIR = deps/mozilla/js/src/build-debug
# else
# LIBJS_DIR = deps/mozilla/js/src/build-release
# endif
# LIBJS_INC_DIR = $(LIBJS_DIR)/dist/include
ifeq ($(debug),yes)
LIBJS = jsdbg_static
# By default we don't share the debug version of JS library
# If you want to debug into JS, ensure a libjsdbg_static.a exists into $(LIBJS_DIR)
else
LIBJS = js_static
endif
ifeq ($(use_deps),yes)
OOLITE_SHARED_LIBS = -Ldeps/Linux-deps/$(HOST_ARCH)/lib_linker
endif
ADDITIONAL_INCLUDE_DIRS = -I$(LIBJS_INC_DIR) -Isrc/SDL -Isrc/Core -Isrc/BSDCompat -Isrc/Core/Scripting -Isrc/Core/Materials -Isrc/Core/Entities -Isrc/Core/OXPVerifier -Isrc/Core/Debug -Isrc/Core/Tables -Isrc/Core/MiniZip -Ideps/Linux-deps/include
ADDITIONAL_OBJC_LIBS = $(OOLITE_SHARED_LIBS) -lGLU -lGL -lX11 -lSDL -lgnustep-base -L$(LIBJS_DIR) -l$(LIBJS) -lopenal -lz -lvorbisfile -lpng `nspr-config --libs` -lstdc++
ADDITIONAL_OBJCFLAGS = -Wall -std=gnu99 -DLOADSAVEGUI -DLINUX -DXP_UNIX -Wno-import `sdl-config --cflags` `nspr-config --cflags`
ADDITIONAL_CFLAGS = -Wall -DLINUX -DNEED_STRLCPY `sdl-config --cflags` `nspr-config --cflags`
ifeq ($(ESPEAK),yes)
ADDITIONAL_OBJC_LIBS += -lespeak
ADDITIONAL_OBJCFLAGS += -DHAVE_LIBESPEAK=1
GNUSTEP_OBJ_DIR_NAME := $(GNUSTEP_OBJ_DIR_NAME).spk
endif
# oolite_LIB_DIRS += -L$(LIBJS_LIB_DIR) -L/usr/X11R6/lib/
ifeq ($(OO_JAVASCRIPT_TRACE),yes)
ADDITIONAL_OBJCFLAGS += -DMOZ_TRACE_JSCALLS=1
endif
endif
ifeq ($(profile),yes)
ADDITIONAL_CFLAGS += -g -pg
ADDITIONAL_OBJCFLAGS += -g -pg
endif
ifeq ($(debug),yes)
ADDITIONAL_CFLAGS += -g -O0
ADDITIONAL_OBJCFLAGS += -g -O0
GNUSTEP_OBJ_DIR_NAME := $(GNUSTEP_OBJ_DIR_NAME).dbg
ADDITIONAL_CFLAGS += -DDEBUG -DOO_DEBUG -DOO_CHECK_GL_HEAVY=1
ADDITIONAL_OBJCFLAGS += -DDEBUG -DOO_DEBUG -DOO_CHECK_GL_HEAVY=1
endif
# these are common settings for both test and deployment release configurations
ifeq ($(NO_SHADERS),yes)
ADDITIONAL_CFLAGS += -DNO_SHADERS=1
ADDITIONAL_OBJCFLAGS += -DNO_SHADERS=1
endif
ifeq ($(FEATURE_REQUEST_5496),yes)
ADDITIONAL_CFLAGS += -DFEATURE_REQUEST_5496=1
ADDITIONAL_OBJCFLAGS += -DFEATURE_REQUEST_5496=1
endif
# DEPLOYMENT_RELEASE_CONFIGURATION value is passed from Makefile. Note that the deployment release settings
# are forced, while test release settings are adjustable.
ifeq ($(DEPLOYMENT_RELEASE_CONFIGURATION),yes)
ADDITIONAL_CFLAGS += -DNDEBUG
ADDITIONAL_OBJCFLAGS += -DNDEBUG
ADDITIONAL_CFLAGS += -DOO_CHECK_GL_HEAVY=0
ADDITIONAL_OBJCFLAGS += -DOO_CHECK_GL_HEAVY=0
ADDITIONAL_CFLAGS += -DOO_EXCLUDE_DEBUG_SUPPORT=1
ADDITIONAL_OBJCFLAGS += -DOO_EXCLUDE_DEBUG_SUPPORT=1
ADDITIONAL_CFLAGS += -DOO_OXP_VERIFIER_ENABLED=0
ADDITIONAL_OBJCFLAGS += -DOO_OXP_VERIFIER_ENABLED=0
ADDITIONAL_CFLAGS += -DOO_LOCALIZATION_TOOLS=0
ADDITIONAL_OBJCFLAGS += -DOO_LOCALIZATION_TOOLS=0
ADDITIONAL_CFLAGS += -DDEBUG_GRAPHVIZ=0
ADDITIONAL_OBJCFLAGS += -DDEBUG_GRAPHVIZ=0
ADDITIONAL_CFLAGS += -DOO_FOV_INFLIGHT_CONTROL_ENABLED=0
ADDITIONAL_OBJCFLAGS += -DOO_FOV_INFLIGHT_CONTROL_ENABLEDD=0
else
ifeq ($(BUILD_WITH_DEBUG_FUNCTIONALITY),no)
ADDITIONAL_CFLAGS += -DNDEBUG
ADDITIONAL_OBJCFLAGS += -DNDEBUG
endif
ifeq ($(OO_CHECK_GL_HEAVY),yes)
ADDITIONAL_CFLAGS += -DOO_CHECK_GL_HEAVY=1
ADDITIONAL_OBJCFLAGS += -DOO_CHECK_GL_HEAVY=1
endif
ifeq ($(OO_EXCLUDE_DEBUG_SUPPORT),yes)
ADDITIONAL_CFLAGS += -DOO_EXCLUDE_DEBUG_SUPPORT=1
ADDITIONAL_OBJCFLAGS += -DOO_EXCLUDE_DEBUG_SUPPORT=1
endif
ifeq ($(OO_OXP_VERIFIER_ENABLED),yes)
ADDITIONAL_CFLAGS += -DOO_OXP_VERIFIER_ENABLED=1
ADDITIONAL_OBJCFLAGS += -DOO_OXP_VERIFIER_ENABLED=1
endif
ifeq ($(OO_LOCALIZATION_TOOLS),yes)
ADDITIONAL_CFLAGS += -DOO_LOCALIZATION_TOOLS=1
ADDITIONAL_OBJCFLAGS += -DOO_LOCALIZATION_TOOLS=1
endif
ifeq ($(DEBUG_GRAPHVIZ),yes)
ADDITIONAL_CFLAGS += -DDEBUG_GRAPHVIZ=1
ADDITIONAL_OBJCFLAGS += -DDEBUG_GRAPHVIZ=1
endif
ifeq ($(OO_FOV_INFLIGHT_CONTROL_ENABLED),yes)
ADDITIONAL_CFLAGS += -DOO_FOV_INFLIGHT_CONTROL_ENABLED=1
ADDITIONAL_OBJCFLAGS += -DOO_FOV_INFLIGHT_CONTROL_ENABLED=1
endif
endif
ifeq ($(SNAPSHOT_BUILD), yes)
ADDITIONAL_CFLAGS += -DSNAPSHOT_BUILD -DOOLITE_SNAPSHOT_VERSION=\"$(VERSION_STRING)\"
ADDITIONAL_OBJCFLAGS += -DSNAPSHOT_BUILD -DOOLITE_SNAPSHOT_VERSION=\"$(VERSION_STRING)\"
endif
OBJC_PROGRAM_NAME = oolite
oolite_C_FILES = \
legacy_random.c \
strlcpy.c \
OOTCPStreamDecoder.c \
OOPlanetData.c \
ioapi.c \
unzip.c
ifeq ($(GNUSTEP_HOST_OS),mingw32)
oolite_WINDRES_FILES = \
OOResourcesWin.rc
endif
OOLITE_DEBUG_FILES = \
OODebugMonitor.m \
OODebugStandards.m \
OODebugSupport.m \
OODebugTCPConsoleClient.m \
OOJSConsole.m \
OOProfilingStopwatch.m \
OOTCPStreamDecoderAbstractionLayer.m
OOLITE_ENTITY_FILES = \
DockEntity.m \
DustEntity.m \
Entity.m \
OOEntityWithDrawable.m \
OOParticleSystem.m \
PlanetEntity.m \
PlayerEntity.m \
PlayerEntityContracts.m \
PlayerEntityControls.m \
PlayerEntityLegacyScriptEngine.m \
PlayerEntityLoadSave.m \
PlayerEntityScriptMethods.m \
PlayerEntitySound.m \
PlayerEntityStickMapper.m \
PlayerEntityStickProfile.m \
ProxyPlayerEntity.m \
OOBreakPatternEntity.m \
ShipEntity.m \
ShipEntityAI.m \
ShipEntityScriptMethods.m \
SkyEntity.m \
StationEntity.m \
OOSunEntity.m \
WormholeEntity.m \
OOLightParticleEntity.m \
OOFlasherEntity.m \
OOExhaustPlumeEntity.m \
OOSparkEntity.m \
OOECMBlastEntity.m \
OOPlanetEntity.m \
OOPlasmaShotEntity.m \
OOPlasmaBurstEntity.m \
OOFlashEffectEntity.m \
OOExplosionCloudEntity.m \
ShipEntityLoadRestore.m \
OOLaserShotEntity.m \
OOQuiriumCascadeEntity.m \
OORingEffectEntity.m \
OOVisualEffectEntity.m \
OOWaypointEntity.m
OOLITE_GRAPHICS_DRAWABLE_FILES = \
OODrawable.m \
OOPlanetDrawable.m \
OOMesh.m
OOLITE_GRAPHICS_MATERIAL_FILES = \
OOMaterialSpecifier.m \
OOBasicMaterial.m \
OODefaultShaderSynthesizer.m \
OOMaterial.m \
OONullTexture.m \
OOPlanetTextureGenerator.m \
OOStandaloneAtmosphereGenerator.m \
OOPNGTextureLoader.m \
OOShaderMaterial.m \
OOShaderProgram.m \
OOShaderUniform.m \
OOShaderUniformMethodType.m \
OOSingleTextureMaterial.m \
OOTexture.m \
OOConcreteTexture.m \
OOTextureGenerator.m \
OOTextureLoader.m \
OOPixMap.m \
OOTextureScaling.m \
OOPixMapChannelOperations.m \
OOMultiTextureMaterial.m \
OOMaterialConvenienceCreators.m \
OOCombinedEmissionMapGenerator.m \
OOPixMapTextureLoader.m
OOLITE_GRAPHICS_MISC_FILES = \
OOCrosshairs.m \
OODebugGLDrawing.m \
OOGraphicsResetManager.m \
OOOpenGL.m \
OOOpenGLStateManager.m \
OOOpenGLExtensionManager.m \
OOOpenGLMatrixManager.m \
OOProbabilisticTextureManager.m \
OOSkyDrawable.m \
OOTextureSprite.m \
OOPolygonSprite.m \
OOConvertCubeMapToLatLong.m
OOLITE_MATHS_FILES = \
CollisionRegion.m \
OOMeshToOctreeConverter.m \
Octree.m \
OOHPVector.m \
OOMatrix.m \
OOQuaternion.m \
OOVector.m \
OOVoxel.m
OOLITE_OXP_VERIFIER_FILES = \
OOAIStateMachineVerifierStage.m \
OOCheckDemoShipsPListVerifierStage.m \
OOCheckEquipmentPListVerifierStage.m \
OOCheckJSSyntaxVerifierStage.m \
OOCheckPListSyntaxVerifierStage.m \
OOCheckRequiresPListVerifierStage.m \
OOCheckShipDataPListVerifierStage.m \
OOFileScannerVerifierStage.m \
OOModelVerifierStage.m \
OOOXPVerifier.m \
OOOXPVerifierStage.m \
OOPListSchemaVerifier.m \
OOTextureVerifierStage.m
OOLITE_RSRC_MGMT_FILES = \
OldSchoolPropertyListWriting.m \
OOCache.m \
OOCacheManager.m \
OOConvertSystemDescriptions.m \
OOOXZManager.m \
OOPListParsing.m \
OOSystemDescriptionManager.m \
ResourceManager.m \
TextureStore.m
OOLITE_SCRIPTING_FILES = \
EntityOOJavaScriptExtensions.m \
OOJavaScriptEngine.m \
OOJSEngineTimeManagement.m \
OOJSEngineDebuggerHelpers.m \
OOConstToJSString.m \
OOJSCall.m \
OOJSClock.m \
OOJSDock.m \
OOJSEntity.m \
OOJSEquipmentInfo.m \
OOJSExhaustPlume.m \
OOJSFlasher.m \
OOJSFunction.m \
OOJSGlobal.m \
OOJSInterfaceDefinition.m \
OOJSManifest.m \
OOJSMission.m \
OOJSMissionVariables.m \
OOJSOolite.m \
OOJSPlanet.m \
OOJSPlayer.m \
OOJSPlayerShip.m \
OOJSPopulatorDefinition.m \
OOJSQuaternion.m \
OOJSScript.m \
OOJSShip.m \
OOJSShipGroup.m \
OOJSSound.m \
OOJSSoundSource.m \
OOJSSpecialFunctions.m \
OOJSStation.m \
OOJSSun.m \
OOJSSystem.m \
OOJSSystemInfo.m \
OOJSTimer.m \
OOJSVisualEffect.m \
OOJSVector.m \
OOJSWorldScripts.m \
OOJSWormhole.m \
OOJSWaypoint.m \
OOLegacyScriptWhitelist.m \
OOPListScript.m \
OOScript.m \
OOScriptTimer.m \
OOJSFrameCallbacks.m \
OOJSFont.m
OOLITE_SOUND_FILES = \
OOOpenALController.m \
OOMusicController.m \
OOSoundSource.m \
OOSoundSourcePool.m \
OOALMusic.m \
OOALSound.m \
OOALSoundChannel.m \
OOALSoundMixer.m \
OOALSoundDecoder.m \
OOALBufferedSound.m \
OOALStreamedSound.m
OOLITE_UI_FILES = \
GuiDisplayGen.m \
HeadUpDisplay.m \
OOEncodingConverter.m
OO_UTILITY_FILES = \
Comparison.m \
NSDataOOExtensions.m \
NSDictionaryOOExtensions.m \
NSFileManagerOOExtensions.m \
NSMutableDictionaryOOExtensions.m \
NSScannerOOExtensions.m \
NSStringOOExtensions.m \
NSThreadOOExtensions.m \
NSNumberOOExtensions.m \
OOAsyncQueue.m \
OOAsyncWorkManager.m \
OOCollectionExtractors.m \
OOColor.m \
OOConstToString.m \
OOCPUInfo.m \
OOEntityFilterPredicate.m \
OOExcludeObjectEnumerator.m \
OOFilteringEnumerator.m \
OOIsNumberLiteral.m \
OOLogging.m \
OOLogHeader.m \
OOLogOutputHandler.m \
OOPriorityQueue.m \
OOProbabilitySet.m \
OOShipGroup.m \
OOStringExpander.m \
OOStringParsing.m \
OOWeakReference.m \
OOWeakSet.m \
OOXMLExtensions.m \
OODeepCopy.m \
OORegExpMatcher.m \
NSObjectOOExtensions.m
OOLITE_MISC_FILES = \
AI.m \
AIGraphViz.m \
GameController.m \
GameController+SDLFullScreen.m \
OOJoystickManager.m \
OOJoystickProfile.m \
OOSDLJoystickManager.m \
main.m \
MyOpenGLView.m \
OOCharacter.m \
OOCocoa.m \
OOCommodities.m \
OOCommodityMarket.m \
OOEquipmentType.m \
OOMouseInteractionMode.m \
OORoleSet.m \
OOShipLibraryDescriptions.m \
OOShipRegistry.m \
OOSpatialReference.m \
OOTrumble.m \
Universe.m
oolite_OBJC_FILES = \
$(OOLITE_DEBUG_FILES) \
$(OOLITE_ENTITY_FILES) \
$(OOLITE_GRAPHICS_DRAWABLE_FILES) \
$(OOLITE_GRAPHICS_MATERIAL_FILES) \
$(OOLITE_GRAPHICS_MISC_FILES) \
$(OOLITE_MATHS_FILES) \
$(OOLITE_OXP_VERIFIER_FILES) \
$(OOLITE_RSRC_MGMT_FILES) \
$(OOLITE_SCRIPTING_FILES) \
$(OOLITE_SOUND_FILES) \
$(OOLITE_UI_FILES) \
$(OO_UTILITY_FILES) \
$(OOLITE_MISC_FILES)
include $(GNUSTEP_MAKEFILES)/objc.make
include GNUmakefile.postamble