]> git.lizzy.rs Git - irrlicht.git/blob - source/Irrlicht/Makefile
Throw out support for Bzip, LZMA and encrypted ZIPs
[irrlicht.git] / source / Irrlicht / Makefile
1 VERSION_MAJOR = 1\r
2 VERSION_MINOR = 9\r
3 VERSION_RELEASE = 0\r
4 # Irrlicht Engine 1.9.0\r
5 # Makefile for Linux\r
6 #\r
7 # To use, just run:\r
8 #\r
9 # make\r
10 #\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
13 #\r
14 # If you want Irrlicht to be compiled as shared lib (libIrrlicht.so.versionnumber), then run:\r
15 #\r
16 # make sharedlib\r
17 # make install\r
18 #\r
19 # If you want to compile in release mode run:\r
20 #\r
21 # make NDEBUG=1\r
22 #\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
25 #\r
26 # For compiling on MinGW you can run it with:\r
27 #\r
28 # make win32\r
29 #\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
31 # make CC=gcc win32\r
32 \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\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 \r
61 # Next variable is for additional scene nodes etc. of customized Irrlicht versions\r
62 EXTRAOBJ =\r
63 LINKOBJ = $(IRRMESHOBJ) $(IRROBJ) $(IRRPARTICLEOBJ) $(IRRANIMOBJ) \\r
64         $(IRRVIDEOOBJ) $(IRRSWRENDEROBJ) $(IRRIOOBJ) $(IRROTHEROBJ) \\r
65         $(IRRGUIOBJ) $(EXTRAOBJ)\r
66 \r
67 emscripten: EMSCRIPTEN=1\r
68 \r
69 ###############\r
70 #Compiler flags\r
71 \r
72 CXXINCS = -I../../include\r
73 CPPFLAGS += $(CXXINCS) -DIRRLICHT_EXPORTS=1\r
74 CXXFLAGS += -Wall -pipe -fno-exceptions -fno-rtti\r
75 #CXXFLAGS += -std=gnu++11 -U__STRICT_ANSI__\r
76 ifndef NDEBUG\r
77   CXXFLAGS += -g -D_DEBUG\r
78 else\r
79   CXXFLAGS += -O3\r
80 endif\r
81 ifdef PROFILE\r
82   CXXFLAGS += -pg\r
83 endif\r
84 ifdef EMSCRIPTEN\r
85   CXXFLAGS += -std=gnu++11 -U__STRICT_ANSI__\r
86   ifdef NDEBUG\r
87     CFLAGS := -O3\r
88   endif\r
89   ifdef WASM\r
90     CXXFLAGS += -s WASM=1\r
91   endif  \r
92 else\r
93   CFLAGS := -O3\r
94 endif\r
95 \r
96 sharedlib sharedlib_osx sharedlib_win32: LDFLAGS += -lz -ljpeg -lpng -lbz2\r
97 \r
98 sharedlib sharedlib_osx: CXXFLAGS += -fPIC\r
99 sharedlib sharedlib_osx: CFLAGS += -fPIC\r
100 \r
101 #multilib handling\r
102 ifeq ($(HOSTTYPE), x86_64)\r
103 LIBSELECT=64\r
104 endif\r
105 \r
106 #Linux specific options\r
107 staticlib sharedlib install: SYSTEM = Linux\r
108 sharedlib install: SHARED_LIB = libIrrlicht.so\r
109 sharedlib: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm\r
110 staticlib sharedlib: CXXINCS += -I/usr/X11R6/include\r
111 \r
112 #OSX specific options\r
113 staticlib_osx sharedlib_osx install_osx: SYSTEM = MacOSX\r
114 staticlib_osx sharedlib_osx: IRROTHEROBJ += MacOSX/CIrrDeviceMacOSX.o MacOSX/OSXClipboard.o MacOSX/AppDelegate.o\r
115 staticlib_osx sharedlib_osx: CXXINCS += -IMacOSX -I/usr/X11R6/include\r
116 sharedlib_osx install_osx: SHARED_LIB = libIrrlicht.dylib\r
117 staticlib_osx sharedlib_osx: LDFLAGS += --no-export-all-symbols --add-stdcall-alias\r
118 sharedlib_osx: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm\r
119 # for non-X11 app\r
120 #sharedlib_osx: LDFLAGS += -framework cocoa -framework carbon -framework opengl -framework IOKit\r
121 \r
122 #Windows specific options\r
123 IRRLICHT_DLL := ../../bin/Win32-gcc/Irrlicht.dll\r
124 sharedlib_win32 staticlib_win32: SYSTEM = Win32-gcc\r
125 sharedlib_win32: LDFLAGS += -lgdi32 -lopengl32 -ld3dx9d -lwinmm -Wl,--add-stdcall-alias\r
126 #sharedlib_win32: LDFLAGS += -lSDL\r
127 #choose either -DIRR_COMPILE_WITH_DX9_DEV_PACK or -DNO_IRR_COMPILE_WITH_DIRECT3D_9_ depending if you need dx9\r
128 #sharedlib_win32 staticlib_win32: CPPFLAGS += -DIRR_COMPILE_WITH_DX9_DEV_PACK\r
129 sharedlib_win32 staticlib_win32: CPPFLAGS += -DNO_IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_ -DNO_IRR_COMPILE_WITH_DIRECT3D_9_\r
130 staticlib_win32: CPPFLAGS += -D_IRR_STATIC_LIB_\r
131 \r
132 #emscripten specific options\r
133 staticlib_emscripten: SYSTEM = emscripten\r
134 \r
135 \r
136 # You might want to disable features you don't need in Irrlicht here to reduce Irrlicht library.\r
137 # This can also help to reduce the .js size when compiling for emscripten.\r
138 # Note you can also disable the same features by modifying IrrCompileConfig.h which is slightly \r
139 # safer as you have then the same setting when compiling Irrlicht and your project (but needs \r
140 # modifying source-code while you can simply copy the Makefile and create your own settings)\r
141 \r
142 # xml - use a lot, but also takes  a lot of space. Check if you have any formats using it.s\r
143 #CXXFLAGS += -DNO_IRR_COMPILE_WITH_XML_ \r
144 # Get rid of encrypted zip files or bzip encrypted zip's or lzma encrypte zip's - or even all zip-file support.\r
145 #CXXFLAGS += -DNO_IRR_COMPILE_WITH_ZIP_ENCRYPTION_ -DNO_IRR_COMPILE_WITH_BZIP2_ -DNO_IRR_COMPILE_WITH_LZMA_ -DNO_IRR_COMPILE_WITH_ZLIB_\r
146 # Disable mesh writers \r
147 #CXXFLAGS += -DNO_IRR_COMPILE_WITH_IRR_WRITER_ -DNO_IRR_COMPILE_WITH_COLLADA_WRITER_ -DNO_IRR_COMPILE_WITH_STL_WRITER_ \r
148 #CXXFLAGS += -DNO_IRR_COMPILE_WITH_OBJ_WRITER_ -DNO_IRR_COMPILE_WITH_PLY_WRITER_ -DNO_IRR_COMPILE_WITH_B3D_WRITER_\r
149 # Disable image writers\r
150 #CXXFLAGS += -DNO_IRR_COMPILE_WITH_BMP_WRITER_ -DNO_IRR_COMPILE_WITH_JPG_WRITER_ -DNO_IRR_COMPILE_WITH_PCX_WRITER_\r
151 #CXXFLAGS += -DNO_IRR_COMPILE_WITH_PNG_WRITER_ -DNO_IRR_COMPILE_WITH_PPM_WRITER_ -DNO_IRR_COMPILE_WITH_TGA_WRITER_\r
152 \r
153 \r
154 STATIC_LIB = libIrrlicht.a\r
155 LIB_PATH = ../../lib/$(SYSTEM)\r
156 INSTALL_DIR = /usr/local/lib\r
157 \r
158 VERSION = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_RELEASE)\r
159 SHARED_FULLNAME = $(SHARED_LIB).$(VERSION)\r
160 SONAME = $(SHARED_LIB).$(VERSION_MAJOR).$(VERSION_MINOR)\r
161 \r
162 ####################\r
163 # All target, builds Irrlicht as static lib (libIrrlicht.a) and copies it into lib/Linux\r
164 all linux : staticlib\r
165 \r
166 emscripten: staticlib_emscripten\r
167 \r
168 # Builds Irrlicht as shared lib (libIrrlicht.so.versionNumber) and copies it into lib/Linux\r
169 sharedlib: $(LINKOBJ)\r
170         $(CXX) $(CPPFLAGS) $(CXXFLAGS) -shared -Wl,-soname,$(SONAME) -o $(SHARED_FULLNAME) $^ $(LDFLAGS)\r
171         mkdir -p $(LIB_PATH)\r
172         cp $(SHARED_FULLNAME) $(LIB_PATH)\r
173 \r
174 # Builds Irrlicht as static lib (libIrrlicht.a)\r
175 $(STATIC_LIB): $(LINKOBJ)\r
176         $(AR) rs $@ $^\r
177 \r
178 # Copies static lib into ../../lib/($SYSTEM)\r
179 staticlib staticlib_osx staticlib_emscripten: $(STATIC_LIB)\r
180         mkdir -p $(LIB_PATH)\r
181         cp $^ $(LIB_PATH)\r
182 \r
183 # Builds Irrlicht as dll (Irrlicht.dll) into ../../bin/Win32-gcc\r
184 all_win32 win32: sharedlib_win32\r
185 sharedlib_win32: $(IRRLICHT_DLL)\r
186 ../../bin/Win32-gcc/Irrlicht.dll: $(LINKOBJ)\r
187         $(CXX) $(CPPFLAGS) $(CXXFLAGS) -shared -o $@ $^ $(LDFLAGS) -Wl,--out-implib,../../lib/Win32-gcc/$(STATIC_LIB)\r
188 # Copies static lib into /lib/Win32-gcc\r
189 staticlib_win32: $(STATIC_LIB)\r
190         cp $^ $(LIB_PATH)\r
191 \r
192 # Builds Irrlicht as shared lib (libIrrlicht.so.versionNumber) and copies it into /lib/MacOSX\r
193 sharedlib_osx: $(LINKOBJ)\r
194         $(CXX) $(CPPFLAGS) $(CXXFLAGS) -dynamiclib -Wl,-install_name,$(SONAME) -o $(SHARED_FULLNAME) $^ $(LDFLAGS)\r
195         cp $(SHARED_FULLNAME) $(LIB_PATH)\r
196 \r
197 # Installs Irrlicht if it was created as shared lib\r
198 install install_osx:\r
199         $(RM) -r $(INSTALL_DIR)/../include/irrlicht\r
200         mkdir -p $(INSTALL_DIR)/../include/irrlicht\r
201         cp ../../include/*.h $(INSTALL_DIR)/../include/irrlicht/\r
202         cp $(LIB_PATH)/$(SHARED_FULLNAME) $(INSTALL_DIR)\r
203         cd $(INSTALL_DIR) && ln -s -f $(SHARED_FULLNAME) $(SONAME)\r
204         cd $(INSTALL_DIR) && ln -s -f $(SONAME) $(SHARED_LIB)\r
205 #       ldconfig -n $(INSTALL_DIR)\r
206 \r
207 TAGS:\r
208         ctags *.cpp ../../include/*.h *.h\r
209 \r
210 # Create dependency files for automatic recompilation\r
211 %.d:%.cpp\r
212         $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MM -MF $@ $<\r
213 \r
214 # Create dependency files for automatic recompilation\r
215 %.d:%.c\r
216         $(CC) $(CPPFLAGS) $(CFLAGS) -MM -MF $@ $<\r
217 \r
218 # Create object files from objective-c code\r
219 %.o:%.mm\r
220         $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<\r
221 \r
222 ifneq ($(MAKECMDGOALS),clean)\r
223 -include $(LINKOBJ:.o=.d)\r
224 endif\r
225 \r
226 help:\r
227         @echo "Available targets for Irrlicht"\r
228         @echo " sharedlib: Build shared library Irrlicht.so for Linux"\r
229         @echo " staticlib: Build static library Irrlicht.a for Linux"\r
230         @echo " emscripten: Build static emscripen library on Linux"\r
231         @echo " install: Copy shared library to /usr/local/lib"\r
232         @echo ""\r
233         @echo " sharedlib_win32: Build shared library Irrlicht.dll for Windows"\r
234         @echo " staticlib_win32: Build static library Irrlicht.a for Windows"\r
235         @echo ""\r
236         @echo " clean: Clean up directory"\r
237 \r
238 # Cleans all temporary files and compilation results.\r
239 clean:\r
240         $(RM) $(LINKOBJ) $(SHARED_FULLNAME) $(STATIC_LIB) $(LINKOBJ:.o=.d)\r
241 \r
242 .PHONY: all sharedlib staticlib sharedlib_win32 staticlib_win32 emscripten staticlib_emscripten help install clean\r