]> git.lizzy.rs Git - irrlicht.git/blob - source/Irrlicht/Makefile
77e8d761d0e30671a8dfbd8d7227b0dead926163
[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 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
61 \r
62 # Next variable is for additional scene nodes etc. of customized Irrlicht versions\r
63 EXTRAOBJ =\r
64 LINKOBJ = $(IRRMESHOBJ) $(IRROBJ) $(IRRPARTICLEOBJ) $(IRRANIMOBJ) \\r
65         $(IRRVIDEOOBJ) $(IRRSWRENDEROBJ) $(IRRIOOBJ) $(IRROTHEROBJ) \\r
66         $(IRRGUIOBJ) $(LIBAESGM) $(EXTRAOBJ)\r
67 \r
68 emscripten: EMSCRIPTEN=1\r
69 \r
70 ###############\r
71 #Compiler flags\r
72 \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
77 ifndef NDEBUG\r
78   CXXFLAGS += -g -D_DEBUG\r
79 else\r
80   CXXFLAGS += -O3\r
81 endif\r
82 ifdef PROFILE\r
83   CXXFLAGS += -pg\r
84 endif\r
85 ifdef EMSCRIPTEN\r
86   CXXFLAGS += -std=gnu++11 -U__STRICT_ANSI__\r
87   ifdef NDEBUG\r
88     CFLAGS := -O3\r
89   endif\r
90   ifdef WASM\r
91     CXXFLAGS += -s WASM=1\r
92   endif  \r
93 else\r
94   CFLAGS := -O3\r
95 endif\r
96 \r
97 sharedlib sharedlib_osx sharedlib_win32: LDFLAGS += -lz -ljpeg -lpng -lbz2\r
98 \r
99 sharedlib sharedlib_osx: CXXFLAGS += -fPIC\r
100 sharedlib sharedlib_osx: CFLAGS += -fPIC\r
101 \r
102 #multilib handling\r
103 ifeq ($(HOSTTYPE), x86_64)\r
104 LIBSELECT=64\r
105 endif\r
106 \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
112 \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
120 # for non-X11 app\r
121 #sharedlib_osx: LDFLAGS += -framework cocoa -framework carbon -framework opengl -framework IOKit\r
122 \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
132 \r
133 #emscripten specific options\r
134 staticlib_emscripten: SYSTEM = emscripten\r
135 \r
136 \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
142 \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
153 \r
154 \r
155 STATIC_LIB = libIrrlicht.a\r
156 LIB_PATH = ../../lib/$(SYSTEM)\r
157 INSTALL_DIR = /usr/local/lib\r
158 \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
162 \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
166 \r
167 emscripten: staticlib_emscripten\r
168 \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
174 \r
175 # Builds Irrlicht as static lib (libIrrlicht.a)\r
176 $(STATIC_LIB): $(LINKOBJ)\r
177         $(AR) rs $@ $^\r
178 \r
179 # Copies static lib into ../../lib/($SYSTEM)\r
180 staticlib staticlib_osx staticlib_emscripten: $(STATIC_LIB)\r
181         mkdir -p $(LIB_PATH)\r
182         cp $^ $(LIB_PATH)\r
183 \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
191         cp $^ $(LIB_PATH)\r
192 \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
197 \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
207 \r
208 TAGS:\r
209         ctags *.cpp ../../include/*.h *.h\r
210 \r
211 # Create dependency files for automatic recompilation\r
212 %.d:%.cpp\r
213         $(CXX) $(CPPFLAGS) $(CXXFLAGS) -MM -MF $@ $<\r
214 \r
215 # Create dependency files for automatic recompilation\r
216 %.d:%.c\r
217         $(CC) $(CPPFLAGS) $(CFLAGS) -MM -MF $@ $<\r
218 \r
219 # Create object files from objective-c code\r
220 %.o:%.mm\r
221         $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<\r
222 \r
223 ifneq ($(MAKECMDGOALS),clean)\r
224 -include $(LINKOBJ:.o=.d)\r
225 endif\r
226 \r
227 help:\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
233         @echo ""\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
236         @echo ""\r
237         @echo " clean: Clean up directory"\r
238 \r
239 # Cleans all temporary files and compilation results.\r
240 clean:\r
241         $(RM) $(LINKOBJ) $(SHARED_FULLNAME) $(STATIC_LIB) $(LINKOBJ:.o=.d)\r
242 \r
243 .PHONY: all sharedlib staticlib sharedlib_win32 staticlib_win32 emscripten staticlib_emscripten help install clean\r