Mesa (master): glapi: add glapi_gen.mk to help header generation

Chia-I Wu olv at kemper.freedesktop.org
Sat Aug 13 00:14:40 PDT 2011


Module: Mesa
Branch: master
Commit: 786e5a2fb47e39c67a342eb22d84c665d058ee10
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=786e5a2fb47e39c67a342eb22d84c665d058ee10

Author: Chia-I Wu <olv at lunarg.com>
Date:   Mon Aug  8 10:40:12 2011 +0900

glapi: add glapi_gen.mk to help header generation

glapi_gen.mk is supposed to be included by glapi users to simplify
header generation.  This commit also makes es1api, es2api, and
shared-glapi use it.

Reviewed-by: Brian Paul <brianp at vmware.com>

[olv: updated after reviewing to prefix all variables in glapi_gen.mk by
 glapi_gen]

---

 src/mapi/es1api/Makefile        |   25 +++++++++++----------
 src/mapi/glapi/gen/glapi_gen.mk |   44 +++++++++++++++++++++++++++++++++++++++
 src/mapi/shared-glapi/Makefile  |    9 +++----
 3 files changed, 61 insertions(+), 17 deletions(-)

diff --git a/src/mapi/es1api/Makefile b/src/mapi/es1api/Makefile
index aef6948..da5aa45 100644
--- a/src/mapi/es1api/Makefile
+++ b/src/mapi/es1api/Makefile
@@ -34,8 +34,6 @@ ESAPI = $(ES)api
 
 GLAPI := $(TOP)/src/mapi/glapi
 MAPI := $(TOP)/src/mapi/mapi
-# directory for generated sources/headers
-GEN := glapi
 
 esapi_CPPFLAGS := \
 	-I$(TOP)/include \
@@ -50,7 +48,7 @@ esapi_CPPFLAGS += -DMAPI_MODE_BRIDGE
 esapi_LIB_DEPS := -L$(TOP)/$(LIB_DIR) -l$(GLAPI_LIB) $(esapi_LIB_DEPS)
 
 .PHONY: default
-default: depend $(TOP)/$(LIB_DIR)/$(esapi_LIB_NAME)
+default: depend $(TOP)/$(LIB_DIR)/$(esapi_LIB_NAME) main/dispatch.h main/remap_helper.h
 
 $(TOP)/$(LIB_DIR)/$(esapi_LIB_NAME): $(esapi_OBJECTS)
 	$(MKLIB) -o $(esapi_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
@@ -68,13 +66,17 @@ lib$(ESAPI).a: $(esapi_OBJECTS)
 $(esapi_OBJECTS): %.o: $(MAPI)/%.c
 	$(CC) -c $(esapi_CPPFLAGS) $(CFLAGS) $< -o $@
 
-$(esapi_SOURCES): | glapi-stamp
+$(esapi_SOURCES): glapi_mapi_tmp.h
 
-.PHONY: glapi-stamp
-glapi-stamp:
-	@# generate sources/headers
-	@$(MAKE) -C $(GLAPI)/gen-es $(ES)
-	@touch $@
+include $(GLAPI)/gen/glapi_gen.mk
+glapi_mapi_tmp.h: $(GLAPI)/gen/gl_and_es_API.xml $(glapi_gen_mapi_deps)
+	$(call glapi_gen_mapi,$<,$(ESAPI))
+
+main/dispatch.h: $(GLAPI)/gen/gl_and_es_API.xml $(glapi_gen_dispatch_deps)
+	$(call glapi_gen_dispatch,$<,$(ES))
+
+main/remap_helper.h: $(GLAPI)/gen/gl_and_es_API.xml $(glapi_gen_remap_deps)
+	$(call glapi_gen_remap,$<,$(ES))
 
 .PHONY: clean
 clean:
@@ -83,9 +85,8 @@ clean:
 	-rm -f lib$(ESAPI).a
 	-rm -f $(esapi_OBJECTS)
 	-rm -f depend depend.bak
-	-rm -f glapi-stamp
-	@# clean generated sources/headers
-	@$(MAKE) -C $(GLAPI)/gen-es clean-$(ES)
+	-rm -f glapi_mapi_tmp.h
+	-rm -rf main
 
 pcedit = \
 	-e 's, at INSTALL_DIR@,$(INSTALL_DIR),' \
diff --git a/src/mapi/glapi/gen/glapi_gen.mk b/src/mapi/glapi/gen/glapi_gen.mk
new file mode 100644
index 0000000..c7fa7c0
--- /dev/null
+++ b/src/mapi/glapi/gen/glapi_gen.mk
@@ -0,0 +1,44 @@
+# Helpers for glapi header generation
+
+ifndef TOP
+$(error TOP must be defined.)
+endif
+
+glapi_gen_common_deps := \
+	$(wildcard $(TOP)/src/mapi/glapi/gen/*.xml) \
+	$(wildcard $(TOP)/src/mapi/glapi/gen/*.py)
+
+glapi_gen_mapi_script := $(TOP)/src/mapi/mapi/mapi_abi.py
+glapi_gen_mapi_deps := \
+	$(glapi_gen_mapi_script) \
+	$(glapi_gen_common_deps)
+
+# $(1): path to an XML file
+# $(2): name of the printer
+define glapi_gen_mapi
+ at mkdir -p $(dir $@)
+$(PYTHON2) $(PYTHON_FLAGS) $(glapi_gen_mapi_script) \
+	--mode lib --printer $(2) $(1) > $@
+endef
+
+glapi_gen_dispatch_script := $(TOP)/src/mapi/glapi/gen/gl_table.py
+glapi_gen_dispatch_deps := $(glapi_gen_common_deps)
+
+# $(1): path to an XML file
+# $(2): empty, es1, or es2 for entry point filtering
+define glapi_gen_dispatch
+ at mkdir -p $(dir $@)
+$(PYTHON2) $(PYTHON_FLAGS) $(glapi_gen_dispatch_script) \
+	-f $(1) -m remap_table $(if $(2),-c $(2),) > $@
+endef
+
+glapi_gen_remap_script := $(TOP)/src/mapi/glapi/gen/remap_helper.py
+glapi_gen_remap_deps := $(glapi_gen_common_deps)
+
+# $(1): path to an XML file
+# $(2): empty, es1, or es2 for entry point filtering
+define glapi_gen_remap
+ at mkdir -p $(dir $@)
+$(PYTHON2) $(PYTHON_FLAGS) $(glapi_gen_remap_script) \
+	-f $(1) $(if $(2),-c $(2),) > $@
+endef
diff --git a/src/mapi/shared-glapi/Makefile b/src/mapi/shared-glapi/Makefile
index c928f82..3de864d 100644
--- a/src/mapi/shared-glapi/Makefile
+++ b/src/mapi/shared-glapi/Makefile
@@ -34,17 +34,16 @@ $(glapi_OBJECTS): %.o: $(MAPI)/%.c
 
 $(glapi_SOURCES): glapi_mapi_tmp.h
 
-.PHONY: glapi_mapi_tmp.h
-glapi_mapi_tmp.h:
-	@$(MAKE) -C $(GLAPI)/gen-es shared-glapi
+include $(GLAPI)/gen/glapi_gen.mk
+glapi_mapi_tmp.h: $(GLAPI)/gen/gl_and_es_API.xml $(glapi_gen_mapi_deps)
+	$(call glapi_gen_mapi,$<,shared-glapi)
 
 .PHONY: clean
 clean:
 	-rm -f $(TOP)/$(LIB_DIR)/$(GLAPI_LIB_NAME)
 	-rm -f $(glapi_OBJECTS)
 	-rm -f depend depend.bak
-	@# clean generated sources/headers
-	@$(MAKE) -C $(GLAPI)/gen-es clean-shared-glapi
+	-rm -f glapi_mapi_tmp.h
 
 install:
 	$(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)



More information about the mesa-commit mailing list