Skip to content

Instantly share code, notes, and snippets.

@wiiaboo
Forked from rossy/Makefile
Last active May 25, 2016 22:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wiiaboo/b56661ced88adfa9f71c to your computer and use it in GitHub Desktop.
Save wiiaboo/b56661ced88adfa9f71c to your computer and use it in GitHub Desktop.
Makefile for ANGLE
VERSION = 2.1.9e54b5af8988
CXX ?= g++
AR ?= ar
RANLIB ?= ranlib
INSTALL ?= install
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
LIBDIR ?= $(PREFIX)/lib
INCLUDEDIR ?= $(PREFIX)/include
ifndef V
$(foreach VAR,CXX ASM AR RANLIB,\
$(eval override $(VAR) = @printf " %s\t%s\n" $(VAR) "$$@"; $($(VAR))))
endif
DEFS := -DUNICODE -D_UNICODE -DANGLE_ENABLE_D3D9 -DANGLE_ENABLE_D3D11 -DANGLE_ENABLE_OPENGL \
-DANGLE_ENABLE_VULKAN \
-DANGLE_TRANSLATOR_STATIC -DANGLE_ENABLE_HLSL -DANGLE_ENABLE_ESSL -DANGLE_ENABLE_GLSL \
-DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES -DLIBANGLE_IMPLEMENTATION -DGL_APICALL= \
-DEGLAPI= $(DEFS)
LIBEGL_DEFS = -DLIBEGL_IMPLEMENTATION
LIBGLESv2_DEFS = -DLIBGLESV2_IMPLEMENTATION
CPPFLAGS := -Isrc -Iinclude -Isrc/third_party/khronos $(CPPFLAGS)
CXXFLAGS := -std=c++11 -fpermissive -msse2 -O2 -Wno-deprecated-declarations \
-Wno-conversion-null $(CXXFLAGS)
DEPFLAGS = -MMD -MP
LIBGLESv2_LIBS = -ldxguid -ld3d9 -lopengl32 -lgdi32
LIBEGL_LIBS =
LIBGLESv2_LDFLAGS = -Wl,--out-implib,libGLESv2.dll.a
LIBEGL_LDFLAGS = -Wl,--out-implib,libEGL.dll.a
angle_translator_lib_sources = \
src/compiler/translator/BuiltInFunctionEmulator.o \
src/compiler/translator/Cache.o \
src/compiler/translator/CallDAG.o \
src/compiler/translator/CodeGen.o \
src/compiler/translator/Compiler.o \
src/compiler/translator/DeferGlobalInitializers.o \
src/compiler/translator/Diagnostics.o \
src/compiler/translator/DirectiveHandler.o \
src/compiler/translator/EmulatePrecision.o \
src/compiler/translator/FlagStd140Structs.o \
src/compiler/translator/ForLoopUnroll.o \
src/compiler/translator/InfoSink.o \
src/compiler/translator/Initialize.o \
src/compiler/translator/InitializeDll.o \
src/compiler/translator/InitializeParseContext.o \
src/compiler/translator/InitializeVariables.o \
src/compiler/translator/IntermNode.o \
src/compiler/translator/IntermTraverse.o \
src/compiler/translator/Intermediate.o \
src/compiler/translator/LoopInfo.o \
src/compiler/translator/Operator.o \
src/compiler/translator/ParseContext.o \
src/compiler/translator/PoolAlloc.o \
src/compiler/translator/PruneEmptyDeclarations.o \
src/compiler/translator/RecordConstantPrecision.o \
src/compiler/translator/RegenerateStructNames.o \
src/compiler/translator/RemovePow.o \
src/compiler/translator/RewriteDoWhile.o \
src/compiler/translator/ScalarizeVecAndMatConstructorArgs.o \
src/compiler/translator/SearchSymbol.o \
src/compiler/translator/SymbolTable.o \
src/compiler/translator/Types.o \
src/compiler/translator/UnfoldShortCircuitAST.o \
src/compiler/translator/ValidateGlobalInitializer.o \
src/compiler/translator/ValidateLimitations.o \
src/compiler/translator/ValidateMaxParameters.o \
src/compiler/translator/ValidateOutputs.o \
src/compiler/translator/ValidateSwitch.o \
src/compiler/translator/VariableInfo.o \
src/compiler/translator/VariablePacker.o \
src/compiler/translator/blocklayout.o \
src/compiler/translator/depgraph/DependencyGraph.o \
src/compiler/translator/depgraph/DependencyGraphBuilder.o \
src/compiler/translator/depgraph/DependencyGraphOutput.o \
src/compiler/translator/depgraph/DependencyGraphTraverse.o \
src/compiler/translator/glslang_lex.o \
src/compiler/translator/glslang_tab.o \
src/compiler/translator/intermOut.o \
src/compiler/translator/timing/RestrictFragmentShaderTiming.o \
src/compiler/translator/timing/RestrictVertexShaderTiming.o \
src/compiler/translator/util.o \
src/third_party/compiler/ArrayBoundsClamper.o
angle_translator_lib_essl_sources = \
src/compiler/translator/OutputESSL.o \
src/compiler/translator/TranslatorESSL.o
angle_translator_lib_glsl_sources = \
src/compiler/translator/BuiltInFunctionEmulatorGLSL.o \
src/compiler/translator/ExtensionGLSL.o \
src/compiler/translator/OutputGLSL.o \
src/compiler/translator/OutputGLSLBase.o \
src/compiler/translator/TranslatorGLSL.o \
src/compiler/translator/VersionGLSL.o
angle_translator_lib_hlsl_sources = \
src/compiler/translator/ArrayReturnValueToOutParameter.o \
src/compiler/translator/ASTMetadataHLSL.o \
src/compiler/translator/blocklayoutHLSL.o \
src/compiler/translator/BuiltInFunctionEmulatorHLSL.o \
src/compiler/translator/OutputHLSL.o \
src/compiler/translator/RemoveDynamicIndexing.o \
src/compiler/translator/RemoveSwitchFallThrough.o \
src/compiler/translator/RewriteElseBlocks.o \
src/compiler/translator/SeparateArrayInitialization.o \
src/compiler/translator/SeparateDeclarations.o \
src/compiler/translator/SeparateExpressionsReturningArrays.o \
src/compiler/translator/StructureHLSL.o \
src/compiler/translator/TextureFunctionHLSL.o \
src/compiler/translator/TranslatorHLSL.o \
src/compiler/translator/UnfoldShortCircuitToIf.o \
src/compiler/translator/UniformHLSL.o \
src/compiler/translator/UtilsHLSL.o
angle_preprocessor_sources = \
src/compiler/preprocessor/DiagnosticsBase.o \
src/compiler/preprocessor/DirectiveHandlerBase.o \
src/compiler/preprocessor/DirectiveParser.o \
src/compiler/preprocessor/ExpressionParser.o \
src/compiler/preprocessor/Input.o \
src/compiler/preprocessor/Lexer.o \
src/compiler/preprocessor/Macro.o \
src/compiler/preprocessor/MacroExpander.o \
src/compiler/preprocessor/Preprocessor.o \
src/compiler/preprocessor/Token.o \
src/compiler/preprocessor/Tokenizer.o
libangle_common_sources = \
src/common/Float16ToFloat32.o \
src/common/MemoryBuffer.o \
src/common/angleutils.o \
src/common/debug.o \
src/common/mathutil.o \
src/common/string_utils.o \
src/common/tls.o \
src/common/utilities.o
libangle_sources = \
src/common/event_tracer.o \
src/libANGLE/AttributeMap.o \
src/libANGLE/Buffer.o \
src/libANGLE/Caps.o \
src/libANGLE/Compiler.o \
src/libANGLE/Config.o \
src/libANGLE/Context.o \
src/libANGLE/ContextState.o \
src/libANGLE/Debug.o \
src/libANGLE/Device.o \
src/libANGLE/Display.o \
src/libANGLE/Error.o \
src/libANGLE/Fence.o \
src/libANGLE/Framebuffer.o \
src/libANGLE/FramebufferAttachment.o \
src/libANGLE/HandleAllocator.o \
src/libANGLE/Image.o \
src/libANGLE/ImageIndex.o \
src/libANGLE/IndexRangeCache.o \
src/libANGLE/Platform.o \
src/libANGLE/Program.o \
src/libANGLE/Query.o \
src/libANGLE/Renderbuffer.o \
src/libANGLE/ResourceManager.o \
src/libANGLE/Sampler.o \
src/libANGLE/Shader.o \
src/libANGLE/State.o \
src/libANGLE/Stream.o \
src/libANGLE/Surface.o \
src/libANGLE/Texture.o \
src/libANGLE/TransformFeedback.o \
src/libANGLE/Uniform.o \
src/libANGLE/VertexArray.o \
src/libANGLE/VertexAttribute.o \
src/libANGLE/angletypes.o \
src/libANGLE/formatutils.o \
src/libANGLE/queryconversions.o \
src/libANGLE/renderer/ContextImpl.o \
src/libANGLE/renderer/DeviceImpl.o \
src/libANGLE/renderer/DisplayImpl.o \
src/libANGLE/renderer/SurfaceImpl.o \
src/libANGLE/validationEGL.o \
src/libANGLE/validationES.o \
src/libANGLE/validationES2.o \
src/libANGLE/validationES3.o \
src/third_party/murmurhash/MurmurHash3.o
libangle_d3d_shared_sources = \
src/libANGLE/renderer/d3d/BufferD3D.o \
src/libANGLE/renderer/d3d/CompilerD3D.o \
src/libANGLE/renderer/d3d/copyimage.o \
src/libANGLE/renderer/d3d/DeviceD3D.o \
src/libANGLE/renderer/d3d/DisplayD3D.o \
src/libANGLE/renderer/d3d/DynamicHLSL.o \
src/libANGLE/renderer/d3d/EGLImageD3D.o \
src/libANGLE/renderer/d3d/formatutilsD3D.o \
src/libANGLE/renderer/d3d/FramebufferD3D.o \
src/libANGLE/renderer/d3d/HLSLCompiler.o \
src/libANGLE/renderer/d3d/ImageD3D.o \
src/libANGLE/renderer/d3d/IndexBuffer.o \
src/libANGLE/renderer/d3d/IndexDataManager.o \
src/libANGLE/renderer/d3d/loadimage.o \
src/libANGLE/renderer/d3d/loadimageSSE2.o \
src/libANGLE/renderer/d3d/loadimage_etc.o \
src/libANGLE/renderer/d3d/NativeWindowD3D.o \
src/libANGLE/renderer/d3d/ProgramD3D.o \
src/libANGLE/renderer/d3d/RenderbufferD3D.o \
src/libANGLE/renderer/d3d/RendererD3D.o \
src/libANGLE/renderer/d3d/RenderTargetD3D.o \
src/libANGLE/renderer/d3d/ShaderD3D.o \
src/libANGLE/renderer/d3d/ShaderExecutableD3D.o \
src/libANGLE/renderer/d3d/SurfaceD3D.o \
src/libANGLE/renderer/d3d/TextureD3D.o \
src/libANGLE/renderer/d3d/TransformFeedbackD3D.o \
src/libANGLE/renderer/d3d/VaryingPacking.o \
src/libANGLE/renderer/d3d/VertexBuffer.o \
src/libANGLE/renderer/d3d/VertexDataManager.o
libangle_d3d9_sources = \
src/libANGLE/renderer/d3d/d3d9/Blit9.o \
src/libANGLE/renderer/d3d/d3d9/Buffer9.o \
src/libANGLE/renderer/d3d/d3d9/Context9.o \
src/libANGLE/renderer/d3d/d3d9/DebugAnnotator9.o \
src/libANGLE/renderer/d3d/d3d9/Fence9.o \
src/libANGLE/renderer/d3d/d3d9/formatutils9.o \
src/libANGLE/renderer/d3d/d3d9/Framebuffer9.o \
src/libANGLE/renderer/d3d/d3d9/Image9.o \
src/libANGLE/renderer/d3d/d3d9/IndexBuffer9.o \
src/libANGLE/renderer/d3d/d3d9/NativeWindow9.o \
src/libANGLE/renderer/d3d/d3d9/Query9.o \
src/libANGLE/renderer/d3d/d3d9/Renderer9.o \
src/libANGLE/renderer/d3d/d3d9/renderer9_utils.o \
src/libANGLE/renderer/d3d/d3d9/RenderTarget9.o \
src/libANGLE/renderer/d3d/d3d9/ShaderExecutable9.o \
src/libANGLE/renderer/d3d/d3d9/StateManager9.o \
src/libANGLE/renderer/d3d/d3d9/SwapChain9.o \
src/libANGLE/renderer/d3d/d3d9/TextureStorage9.o \
src/libANGLE/renderer/d3d/d3d9/VertexBuffer9.o \
src/libANGLE/renderer/d3d/d3d9/VertexDeclarationCache.o
libangle_d3d11_sources = \
src/libANGLE/renderer/d3d/d3d11/Blit11.o \
src/libANGLE/renderer/d3d/d3d11/Buffer11.o \
src/libANGLE/renderer/d3d/d3d11/Clear11.o \
src/libANGLE/renderer/d3d/d3d11/Context11.o \
src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.o \
src/libANGLE/renderer/d3d/d3d11/dxgi_support_table.o \
src/libANGLE/renderer/d3d/d3d11/Fence11.o \
src/libANGLE/renderer/d3d/d3d11/formatutils11.o \
src/libANGLE/renderer/d3d/d3d11/Framebuffer11.o \
src/libANGLE/renderer/d3d/d3d11/Image11.o \
src/libANGLE/renderer/d3d/d3d11/IndexBuffer11.o \
src/libANGLE/renderer/d3d/d3d11/InputLayoutCache.o \
src/libANGLE/renderer/d3d/d3d11/load_functions_table_autogen.o \
src/libANGLE/renderer/d3d/d3d11/PixelTransfer11.o \
src/libANGLE/renderer/d3d/d3d11/Query11.o \
src/libANGLE/renderer/d3d/d3d11/Renderer11.o \
src/libANGLE/renderer/d3d/d3d11/renderer11_utils.o \
src/libANGLE/renderer/d3d/d3d11/RenderStateCache.o \
src/libANGLE/renderer/d3d/d3d11/RenderTarget11.o \
src/libANGLE/renderer/d3d/d3d11/ShaderExecutable11.o \
src/libANGLE/renderer/d3d/d3d11/StateManager11.o \
src/libANGLE/renderer/d3d/d3d11/StreamProducerNV12.o \
src/libANGLE/renderer/d3d/d3d11/SwapChain11.o \
src/libANGLE/renderer/d3d/d3d11/TextureStorage11.o \
src/libANGLE/renderer/d3d/d3d11/Trim11.o \
src/libANGLE/renderer/d3d/d3d11/texture_format_table_autogen.o \
src/libANGLE/renderer/d3d/d3d11/VertexBuffer11.o \
src/libANGLE/renderer/d3d/d3d11/VertexArray11.o
libangle_d3d11_win32_sources = \
src/libANGLE/renderer/d3d/d3d11/win32/NativeWindow11Win32.o \
src/third_party/systeminfo/SystemInfo.o
libangle_d3d11_winrt_sources = \
src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.o \
src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.o \
src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.o \
src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.o
libglesv2_sources = \
src/libGLESv2/entry_points_egl.o \
src/libGLESv2/entry_points_egl_ext.o \
src/libGLESv2/entry_points_gles_2_0.o \
src/libGLESv2/entry_points_gles_2_0_ext.o \
src/libGLESv2/entry_points_gles_3_0.o \
src/libGLESv2/global_state.o \
src/libGLESv2/libGLESv2.o
libangle_gl_sources = \
src/libANGLE/renderer/gl/BlitGL.o \
src/libANGLE/renderer/gl/BufferGL.o \
src/libANGLE/renderer/gl/CompilerGL.o \
src/libANGLE/renderer/gl/ContextGL.o \
src/libANGLE/renderer/gl/DisplayGL.o \
src/libANGLE/renderer/gl/FenceNVGL.o \
src/libANGLE/renderer/gl/FenceSyncGL.o \
src/libANGLE/renderer/gl/FramebufferGL.o \
src/libANGLE/renderer/gl/FunctionsGL.o \
src/libANGLE/renderer/gl/ProgramGL.o \
src/libANGLE/renderer/gl/QueryGL.o \
src/libANGLE/renderer/gl/RenderbufferGL.o \
src/libANGLE/renderer/gl/RendererGL.o \
src/libANGLE/renderer/gl/SamplerGL.o \
src/libANGLE/renderer/gl/ShaderGL.o \
src/libANGLE/renderer/gl/StateManagerGL.o \
src/libANGLE/renderer/gl/SurfaceGL.o \
src/libANGLE/renderer/gl/TextureGL.o \
src/libANGLE/renderer/gl/TransformFeedbackGL.o \
src/libANGLE/renderer/gl/VertexArrayGL.o \
src/libANGLE/renderer/gl/formatutilsgl.o \
src/libANGLE/renderer/gl/renderergl_utils.o
libangle_gl_wgl_sources = \
src/libANGLE/renderer/gl/wgl/DisplayWGL.o \
src/libANGLE/renderer/gl/wgl/DXGISwapChainWindowSurfaceWGL.o \
src/libANGLE/renderer/gl/wgl/FunctionsWGL.o \
src/libANGLE/renderer/gl/wgl/PbufferSurfaceWGL.o \
src/libANGLE/renderer/gl/wgl/WindowSurfaceWGL.o \
src/libANGLE/renderer/gl/wgl/wgl_utils.o
libangle_vulkan_sources = \
src/libANGLE/renderer/vulkan/BufferVk.o \
src/libANGLE/renderer/vulkan/CompilerVk.o \
src/libANGLE/renderer/vulkan/ContextVk.o \
src/libANGLE/renderer/vulkan/DeviceVk.o \
src/libANGLE/renderer/vulkan/DisplayVk.o \
src/libANGLE/renderer/vulkan/FenceNVVk.o \
src/libANGLE/renderer/vulkan/FenceSyncVk.o \
src/libANGLE/renderer/vulkan/FramebufferVk.o \
src/libANGLE/renderer/vulkan/ImageVk.o \
src/libANGLE/renderer/vulkan/ProgramVk.o \
src/libANGLE/renderer/vulkan/QueryVk.o \
src/libANGLE/renderer/vulkan/RenderbufferVk.o \
src/libANGLE/renderer/vulkan/RendererVk.o \
src/libANGLE/renderer/vulkan/SamplerVk.o \
src/libANGLE/renderer/vulkan/ShaderVk.o \
src/libANGLE/renderer/vulkan/SurfaceVk.o \
src/libANGLE/renderer/vulkan/TextureVk.o \
src/libANGLE/renderer/vulkan/TransformFeedbackVk.o \
src/libANGLE/renderer/vulkan/VertexArrayVk.o
LIBGLESv2_OBJ = \
src/compiler/translator/ShaderLang.o \
src/compiler/translator/ShaderVars.o \
$(angle_translator_lib_sources) \
$(angle_translator_lib_essl_sources) \
$(angle_translator_lib_glsl_sources) \
$(angle_translator_lib_hlsl_sources) \
$(angle_preprocessor_sources) \
$(libangle_common_sources) \
$(libangle_sources) \
$(libangle_d3d_shared_sources) \
$(libangle_d3d9_sources) \
$(libangle_d3d11_sources) \
$(libangle_d3d11_win32_sources) \
$(libglesv2_sources) \
$(libangle_gl_sources) \
$(libangle_gl_wgl_sources) \
$(libangle_vulkan_sources)
LIBGLESv2_DEP = $(LIBGLESv2_OBJ:.o=.d)
LIBEGL_OBJ = src/libEGL/libEGL.egl.o
LIBEGL_DEP = $(LIBEGL_OBJ:.o=.d)
TARGET = libEGL.dll
all: $(TARGET)
.PHONY: all
-include $(LIBGLESv2_DEP) $(LIBEGL_DEP)
src/id:
mkdir -p $@
src/id/commit.h: src/commit.h | src/id
printf '#define ANGLE_COMMIT_HASH "%s"\n' '$(shell git rev-parse --short=12 origin/master)' >$@
printf '#define ANGLE_COMMIT_HASH_SIZE 12\n' >>$@
printf '#define ANGLE_COMMIT_DATE "%s"\n' '$(shell git show -s --format=%ci origin/master)' >>$@
%.o: %.cpp src/id/commit.h
$(CXX) -c -o $@ $(CPPFLAGS) $(DEFS) $(LIBGLESv2_DEFS) $(CXXFLAGS) $(DEPFLAGS) $<
%.egl.o: %.cpp src/id/commit.h
$(CXX) -c -o $@ $(CPPFLAGS) $(DEFS) $(LIBEGL_DEFS) $(CXXFLAGS) $(DEPFLAGS) $<
libGLESv2.dll: $(LIBGLESv2_OBJ)
$(CXX) -shared -o $@ $(LDFLAGS) $(LIBGLESv2_LDFLAGS) $(LIBGLESv2_OBJ) $(LIBS) $(LIBGLESv2_LIBS)
libEGL.dll: libGLESv2.dll $(LIBEGL_OBJ)
$(CXX) -shared -o $@ $(LDFLAGS) $(LIBEGL_LDFLAGS) $(LIBEGL_OBJ) $(LIBS) $(LIBEGL_LIBS) libGLESv2.dll.a
clean:
-rm -f $(LIBGLESv2_OBJ) $(LIBGLESv2_DEP) $(LIBEGL_OBJ) $(LIBEGL_DEP)
-rm -f libGLESv2.dll libEGL.dll libGLESv2.dll.a libEGL.dll.a
-rm -f src/id/commit.h
-rmdir src/id
.PHONY: clean
install: $(TARGET)
$(INSTALL) -d $(INCLUDEDIR)/{EGL,GLES{2,3},GLSLANG,KHR,platform}
$(INSTALL) -d $(BINDIR)
$(INSTALL) -d $(LIBDIR)
$(INSTALL) -m 644 include/EGL/*.h $(INCLUDEDIR)/EGL
$(INSTALL) -m 644 include/GLES2/*.h $(INCLUDEDIR)/GLES2
$(INSTALL) -m 644 include/GLES3/*.h $(INCLUDEDIR)/GLES3
$(INSTALL) -m 644 include/GLSLANG/*.h $(INCLUDEDIR)/GLSLANG
$(INSTALL) -m 644 include/KHR/*.h $(INCLUDEDIR)/KHR
$(INSTALL) -m 644 include/platform/Platform.h $(INCLUDEDIR)/platform
$(INSTALL) -m 644 include/angle_gl.h $(INCLUDEDIR)
$(INSTALL) -m 644 libEGL.dll libGLESv2.dll $(BINDIR)
$(INSTALL) -m 644 libEGL.dll.a libGLESv2.dll.a $(LIBDIR)
uninstall:
-rm -f $(BINDIR)/lib{EGL,GLESv2}.dll
-rm -f $(LIBDIR)/lib{EGL,GLESv2}.dll.a
-rm -rf $(INCLUDEDIR)/{EGL,GLES{2,3},GLSLANG,KHR}
-rm -f $(INCLUDEDIR)/platform/Platform.h
-rm -f $(INCLUDEDIR)/angle_gl.h
.PHONY: install-dev uninstall
test: $(TARGET)
printf "#include <EGL/egl.h>\n#include <EGL/eglext.h>\nint main(int argc, char **argv)\n{ int x = EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE; return 0; }\n" > test.c
$(CC) test.c -Iinclude -o test.exe -L.
-rm -f test.{c,exe}
.PHONY: test
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment