4 # Irrlicht Engine 1.9.0
\r
11 # This will compile Irrlicht, create a static lib (libIrrlicht.a), and copy it
\r
12 # into the subdirectory lib/Linux. That's all.
\r
14 # If you want Irrlicht to be compiled as shared lib (libIrrlicht.so.versionnumber), then run:
\r
19 # If you want to compile in release mode run:
\r
23 # For cross-compilation for Win32 under Linux, just use the win32 targets. You have to set
\r
24 # at least CXX, CC, and AR to the proper binaries.
\r
26 # For compiling on MinGW you can run it with:
\r
30 # Or as MinGW by default has CC set to cc - but has no compiler by that name - you might have to do:
\r
33 #List of object files, separated based on engine architecture
\r
34 IRRMESHLOADER = CBSPMeshFileLoader.o CMD2MeshFileLoader.o CMD3MeshFileLoader.o CMS3DMeshFileLoader.o CB3DMeshFileLoader.o C3DSMeshFileLoader.o COgreMeshFileLoader.o COBJMeshFileLoader.o CColladaFileLoader.o CCSMLoader.o CDMFLoader.o CLMTSMeshFileLoader.o CMY3DMeshFileLoader.o COCTLoader.o CXMeshFileLoader.o CIrrMeshFileLoader.o CSTLMeshFileLoader.o CLWOMeshFileLoader.o CPLYMeshFileLoader.o CSMFMeshFileLoader.o CMeshTextureLoader.o
\r
35 IRRMESHWRITER = CColladaMeshWriter.o CIrrMeshWriter.o CSTLMeshWriter.o COBJMeshWriter.o CPLYMeshWriter.o CB3DMeshWriter.o
\r
36 IRRMESHOBJ = $(IRRMESHLOADER) $(IRRMESHWRITER) \
\r
37 CSkinnedMesh.o CBoneSceneNode.o CMeshSceneNode.o \
\r
38 CAnimatedMeshSceneNode.o CAnimatedMeshMD2.o CAnimatedMeshMD3.o \
\r
39 CQ3LevelMesh.o CQuake3ShaderSceneNode.o CAnimatedMeshHalfLife.o
\r
40 IRROBJ = CBillboardSceneNode.o CCameraSceneNode.o CDummyTransformationSceneNode.o CEmptySceneNode.o CGeometryCreator.o CLightSceneNode.o CMeshManipulator.o CMetaTriangleSelector.o COctreeSceneNode.o COctreeTriangleSelector.o CSceneCollisionManager.o CSceneManager.o CShadowVolumeSceneNode.o CSkyBoxSceneNode.o CSkyDomeSceneNode.o CTerrainSceneNode.o CTerrainTriangleSelector.o CVolumeLightSceneNode.o CCubeSceneNode.o CSphereSceneNode.o CTextSceneNode.o CTriangleBBSelector.o CTriangleSelector.o CWaterSurfaceSceneNode.o CMeshCache.o CDefaultSceneNodeAnimatorFactory.o CDefaultSceneNodeFactory.o CSceneLoaderIrr.o
\r
41 IRRPARTICLEOBJ = CParticleAnimatedMeshSceneNodeEmitter.o CParticleBoxEmitter.o CParticleCylinderEmitter.o CParticleMeshEmitter.o CParticlePointEmitter.o CParticleRingEmitter.o CParticleSphereEmitter.o CParticleAttractionAffector.o CParticleFadeOutAffector.o CParticleGravityAffector.o CParticleRotationAffector.o CParticleSystemSceneNode.o CParticleScaleAffector.o
\r
42 IRRANIMOBJ = CSceneNodeAnimatorCameraFPS.o CSceneNodeAnimatorCameraMaya.o CSceneNodeAnimatorCollisionResponse.o CSceneNodeAnimatorDelete.o CSceneNodeAnimatorFlyCircle.o CSceneNodeAnimatorFlyStraight.o CSceneNodeAnimatorFollowSpline.o CSceneNodeAnimatorRotation.o CSceneNodeAnimatorTexture.o
\r
43 IRRDRVROBJ = CNullDriver.o COpenGLCacheHandler.o COpenGLDriver.o COpenGLNormalMapRenderer.o COpenGLParallaxMapRenderer.o COpenGLShaderMaterialRenderer.o COpenGLSLMaterialRenderer.o COpenGLExtensionHandler.o \
\r
44 CD3D9Driver.o CD3D9HLSLMaterialRenderer.o CD3D9NormalMapRenderer.o CD3D9ParallaxMapRenderer.o CD3D9ShaderMaterialRenderer.o CD3D9Texture.o \
\r
45 COGLESDriver.o COGLESExtensionHandler.o COGLES2Driver.o COGLES2ExtensionHandler.o COGLES2FixedPipelineRenderer.o COGLES2MaterialRenderer.o COGLES2NormalMapRenderer.o COGLES2ParallaxMapRenderer.o COGLES2Renderer2D.o CWebGL1Driver.o \
\r
46 CGLXManager.o CWGLManager.o CEGLManager.o
\r
47 IRRIMAGEOBJ = CColorConverter.o CImage.o CImageLoaderBMP.o CImageLoaderDDS.o CImageLoaderJPG.o CImageLoaderPCX.o CImageLoaderPNG.o CImageLoaderPSD.o CImageLoaderPVR.o CImageLoaderTGA.o CImageLoaderPPM.o CImageLoaderWAL.o CImageLoaderRGB.o \
\r
48 CImageWriterBMP.o CImageWriterJPG.o CImageWriterPCX.o CImageWriterPNG.o CImageWriterPPM.o CImageWriterPSD.o CImageWriterTGA.o
\r
49 IRRVIDEOOBJ = CVideoModeList.o CFPSCounter.o $(IRRDRVROBJ) $(IRRIMAGEOBJ)
\r
50 IRRSWRENDEROBJ = CSoftwareDriver.o CSoftwareTexture.o CTRFlat.o CTRFlatWire.o CTRGouraud.o CTRGouraudWire.o CTRNormalMap.o \
\r
51 CTRStencilShadow.o CTRTextureFlat.o CTRTextureFlatWire.o CTRTextureGouraud.o CTRTextureGouraudAdd.o CTRTextureGouraudNoZ.o \
\r
52 CTRTextureGouraudWire.o CZBuffer.o CTRTextureGouraudVertexAlpha2.o CTRTextureGouraudNoZ2.o CTRTextureLightMap2_M2.o \
\r
53 CTRTextureLightMap2_M4.o CTRTextureLightMap2_M1.o CSoftwareDriver2.o CSoftwareTexture2.o CTRTextureGouraud2.o CTRGouraud2.o \
\r
54 CTRGouraudAlpha2.o CTRGouraudAlphaNoZ2.o CTRTextureDetailMap2.o CTRTextureGouraudAdd2.o CTRTextureGouraudAddNoZ2.o CTRTextureWire2.o \
\r
55 CTRTextureLightMap2_Add.o CTRTextureLightMapGouraud2_M4.o IBurningShader.o CTRTextureBlend.o CTRTextureGouraudAlpha.o \
\r
56 CTRTextureGouraudAlphaNoZ.o CDepthBuffer.o CBurningShader_Raster_Reference.o CTR_transparent_reflection_2_layer.o CTRGouraudNoZ2.o burning_shader_color.o
\r
57 IRRIOOBJ = CFileList.o CFileSystem.o CLimitReadFile.o CMemoryFile.o CReadFile.o CWriteFile.o CXMLReader.o CXMLWriter.o CWADReader.o CZipReader.o CPakReader.o CNPKReader.o CTarReader.o CMountPointReader.o irrXML.o CAttributes.o lzma/LzmaDec.o
\r
58 IRROTHEROBJ = CIrrDeviceSDL.o CIrrDeviceLinux.o CIrrDeviceConsole.o CIrrDeviceStub.o CIrrDeviceWin32.o CIrrDeviceFB.o CLogger.o COSOperator.o Irrlicht.o os.o leakHunter.o CProfiler.o utf8.o
\r
59 IRRGUIOBJ = CGUIButton.o CGUICheckBox.o CGUIComboBox.o CGUIContextMenu.o CGUIEditBox.o CGUIEnvironment.o CGUIFileOpenDialog.o CGUIFont.o CGUIImage.o CGUIInOutFader.o CGUIListBox.o CGUIMenu.o CGUIMeshViewer.o CGUIMessageBox.o CGUIModalScreen.o CGUIScrollBar.o CGUISpinBox.o CGUISkin.o CGUIStaticText.o CGUITabControl.o CGUITable.o CGUIToolBar.o CGUIWindow.o CGUIColorSelectDialog.o CDefaultGUIElementFactory.o CGUISpriteBank.o CGUIImageList.o CGUITreeView.o CGUIProfiler.o
\r
60 LIBAESGM = aesGladman/aescrypt.o aesGladman/aeskey.o aesGladman/aestab.o aesGladman/fileenc.o aesGladman/hmac.o aesGladman/prng.o aesGladman/pwd2key.o aesGladman/sha1.o aesGladman/sha2.o
\r
62 # Next variable is for additional scene nodes etc. of customized Irrlicht versions
\r
64 LINKOBJ = $(IRRMESHOBJ) $(IRROBJ) $(IRRPARTICLEOBJ) $(IRRANIMOBJ) \
\r
65 $(IRRVIDEOOBJ) $(IRRSWRENDEROBJ) $(IRRIOOBJ) $(IRROTHEROBJ) \
\r
66 $(IRRGUIOBJ) $(LIBAESGM) $(EXTRAOBJ)
\r
68 emscripten: EMSCRIPTEN=1
\r
73 CXXINCS = -I../../include
\r
74 CPPFLAGS += $(CXXINCS) -DIRRLICHT_EXPORTS=1
\r
75 CXXFLAGS += -Wall -pipe -fno-exceptions -fno-rtti
\r
76 #CXXFLAGS += -std=gnu++11 -U__STRICT_ANSI__
\r
78 CXXFLAGS += -g -D_DEBUG
\r
86 CXXFLAGS += -std=gnu++11 -U__STRICT_ANSI__
\r
91 CXXFLAGS += -s WASM=1
\r
97 sharedlib sharedlib_osx sharedlib_win32: LDFLAGS += -lz -ljpeg -lpng -lbz2
\r
99 sharedlib sharedlib_osx: CXXFLAGS += -fPIC
\r
100 sharedlib sharedlib_osx: CFLAGS += -fPIC
\r
103 ifeq ($(HOSTTYPE), x86_64)
\r
107 #Linux specific options
\r
108 staticlib sharedlib install: SYSTEM = Linux
\r
109 sharedlib install: SHARED_LIB = libIrrlicht.so
\r
110 sharedlib: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm
\r
111 staticlib sharedlib: CXXINCS += -I/usr/X11R6/include
\r
113 #OSX specific options
\r
114 staticlib_osx sharedlib_osx install_osx: SYSTEM = MacOSX
\r
115 staticlib_osx sharedlib_osx: IRROTHEROBJ += MacOSX/CIrrDeviceMacOSX.o MacOSX/OSXClipboard.o MacOSX/AppDelegate.o
\r
116 staticlib_osx sharedlib_osx: CXXINCS += -IMacOSX -I/usr/X11R6/include
\r
117 sharedlib_osx install_osx: SHARED_LIB = libIrrlicht.dylib
\r
118 staticlib_osx sharedlib_osx: LDFLAGS += --no-export-all-symbols --add-stdcall-alias
\r
119 sharedlib_osx: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm
\r
121 #sharedlib_osx: LDFLAGS += -framework cocoa -framework carbon -framework opengl -framework IOKit
\r
123 #Windows specific options
\r
124 IRRLICHT_DLL := ../../bin/Win32-gcc/Irrlicht.dll
\r
125 sharedlib_win32 staticlib_win32: SYSTEM = Win32-gcc
\r
126 sharedlib_win32: LDFLAGS += -lgdi32 -lopengl32 -ld3dx9d -lwinmm -Wl,--add-stdcall-alias
\r
127 #sharedlib_win32: LDFLAGS += -lSDL
\r
128 #choose either -DIRR_COMPILE_WITH_DX9_DEV_PACK or -DNO_IRR_COMPILE_WITH_DIRECT3D_9_ depending if you need dx9
\r
129 #sharedlib_win32 staticlib_win32: CPPFLAGS += -DIRR_COMPILE_WITH_DX9_DEV_PACK
\r
130 sharedlib_win32 staticlib_win32: CPPFLAGS += -DNO_IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_ -DNO_IRR_COMPILE_WITH_DIRECT3D_9_
\r
131 staticlib_win32: CPPFLAGS += -D_IRR_STATIC_LIB_
\r
133 #emscripten specific options
\r
134 staticlib_emscripten: SYSTEM = emscripten
\r
137 # You might want to disable features you don't need in Irrlicht here to reduce Irrlicht library.
\r
138 # This can also help to reduce the .js size when compiling for emscripten.
\r
139 # Note you can also disable the same features by modifying IrrCompileConfig.h which is slightly
\r
140 # safer as you have then the same setting when compiling Irrlicht and your project (but needs
\r
141 # modifying source-code while you can simply copy the Makefile and create your own settings)
\r
143 # xml - use a lot, but also takes a lot of space. Check if you have any formats using it.s
\r
144 #CXXFLAGS += -DNO_IRR_COMPILE_WITH_XML_
\r
145 # Get rid of encrypted zip files or bzip encrypted zip's or lzma encrypte zip's - or even all zip-file support.
\r
146 #CXXFLAGS += -DNO_IRR_COMPILE_WITH_ZIP_ENCRYPTION_ -DNO_IRR_COMPILE_WITH_BZIP2_ -DNO_IRR_COMPILE_WITH_LZMA_ -DNO_IRR_COMPILE_WITH_ZLIB_
\r
147 # Disable mesh writers
\r
148 #CXXFLAGS += -DNO_IRR_COMPILE_WITH_IRR_WRITER_ -DNO_IRR_COMPILE_WITH_COLLADA_WRITER_ -DNO_IRR_COMPILE_WITH_STL_WRITER_
\r
149 #CXXFLAGS += -DNO_IRR_COMPILE_WITH_OBJ_WRITER_ -DNO_IRR_COMPILE_WITH_PLY_WRITER_ -DNO_IRR_COMPILE_WITH_B3D_WRITER_
\r
150 # Disable image writers
\r
151 #CXXFLAGS += -DNO_IRR_COMPILE_WITH_BMP_WRITER_ -DNO_IRR_COMPILE_WITH_JPG_WRITER_ -DNO_IRR_COMPILE_WITH_PCX_WRITER_
\r
152 #CXXFLAGS += -DNO_IRR_COMPILE_WITH_PNG_WRITER_ -DNO_IRR_COMPILE_WITH_PPM_WRITER_ -DNO_IRR_COMPILE_WITH_TGA_WRITER_
\r
155 STATIC_LIB = libIrrlicht.a
\r
156 LIB_PATH = ../../lib/$(SYSTEM)
\r
157 INSTALL_DIR = /usr/local/lib
\r
159 VERSION = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_RELEASE)
\r
160 SHARED_FULLNAME = $(SHARED_LIB).$(VERSION)
\r
161 SONAME = $(SHARED_LIB).$(VERSION_MAJOR).$(VERSION_MINOR)
\r
163 ####################
\r
164 # All target, builds Irrlicht as static lib (libIrrlicht.a) and copies it into lib/Linux
\r
165 all linux : staticlib
\r
167 emscripten: staticlib_emscripten
\r
169 # Builds Irrlicht as shared lib (libIrrlicht.so.versionNumber) and copies it into lib/Linux
\r
170 sharedlib: $(LINKOBJ)
\r
171 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -shared -Wl,-soname,$(SONAME) -o $(SHARED_FULLNAME) $^ $(LDFLAGS)
\r
172 mkdir -p $(LIB_PATH)
\r
173 cp $(SHARED_FULLNAME) $(LIB_PATH)
\r
175 # Builds Irrlicht as static lib (libIrrlicht.a)
\r
176 $(STATIC_LIB): $(LINKOBJ)
\r
179 # Copies static lib into ../../lib/($SYSTEM)
\r
180 staticlib staticlib_osx staticlib_emscripten: $(STATIC_LIB)
\r
181 mkdir -p $(LIB_PATH)
\r
184 # Builds Irrlicht as dll (Irrlicht.dll) into ../../bin/Win32-gcc
\r
185 all_win32 win32: sharedlib_win32
\r
186 sharedlib_win32: $(IRRLICHT_DLL)
\r
187 ../../bin/Win32-gcc/Irrlicht.dll: $(LINKOBJ)
\r
188 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -shared -o $@ $^ $(LDFLAGS) -Wl,--out-implib,../../lib/Win32-gcc/$(STATIC_LIB)
\r
189 # Copies static lib into /lib/Win32-gcc
\r
190 staticlib_win32: $(STATIC_LIB)
\r
193 # Builds Irrlicht as shared lib (libIrrlicht.so.versionNumber) and copies it into /lib/MacOSX
\r
194 sharedlib_osx: $(LINKOBJ)
\r
195 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -dynamiclib -Wl,-install_name,$(SONAME) -o $(SHARED_FULLNAME) $^ $(LDFLAGS)
\r
196 cp $(SHARED_FULLNAME) $(LIB_PATH)
\r
198 # Installs Irrlicht if it was created as shared lib
\r
199 install install_osx:
\r
200 $(RM) -r $(INSTALL_DIR)/../include/irrlicht
\r
201 mkdir -p $(INSTALL_DIR)/../include/irrlicht
\r
202 cp ../../include/*.h $(INSTALL_DIR)/../include/irrlicht/
\r
203 cp $(LIB_PATH)/$(SHARED_FULLNAME) $(INSTALL_DIR)
\r
204 cd $(INSTALL_DIR) && ln -s -f $(SHARED_FULLNAME) $(SONAME)
\r
205 cd $(INSTALL_DIR) && ln -s -f $(SONAME) $(SHARED_LIB)
\r
206 # ldconfig -n $(INSTALL_DIR)
\r
209 ctags *.cpp ../../include/*.h *.h
\r
211 # Create dependency files for automatic recompilation
\r
213 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MM -MF $@ $<
\r
215 # Create dependency files for automatic recompilation
\r
217 $(CC) $(CPPFLAGS) $(CFLAGS) -MM -MF $@ $<
\r
219 # Create object files from objective-c code
\r
221 $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<
\r
223 ifneq ($(MAKECMDGOALS),clean)
\r
224 -include $(LINKOBJ:.o=.d)
\r
228 @echo "Available targets for Irrlicht"
\r
229 @echo " sharedlib: Build shared library Irrlicht.so for Linux"
\r
230 @echo " staticlib: Build static library Irrlicht.a for Linux"
\r
231 @echo " emscripten: Build static emscripen library on Linux"
\r
232 @echo " install: Copy shared library to /usr/local/lib"
\r
234 @echo " sharedlib_win32: Build shared library Irrlicht.dll for Windows"
\r
235 @echo " staticlib_win32: Build static library Irrlicht.a for Windows"
\r
237 @echo " clean: Clean up directory"
\r
239 # Cleans all temporary files and compilation results.
\r
241 $(RM) $(LINKOBJ) $(SHARED_FULLNAME) $(STATIC_LIB) $(LINKOBJ:.o=.d)
\r
243 .PHONY: all sharedlib staticlib sharedlib_win32 staticlib_win32 emscripten staticlib_emscripten help install clean
\r