Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. # src/mesa/Makefile
  2.  
  3. TOP = ../..
  4. include $(TOP)/configs/current
  5.  
  6. MESA_LIBS := libmesa.a
  7. DEPENDS := depend
  8.  
  9. ifeq ($(GLES_OVERLAY),1)
  10. ES1_LIBS := libes1gallium.a
  11. ES2_LIBS := libes2gallium.a
  12. DEPENDS += depend.es1 depend.es2
  13. endif
  14.  
  15. MESA_OBJ_DIR := .
  16. ES1_OBJ_DIR := objs-es1
  17. ES2_OBJ_DIR := objs-es2
  18.  
  19.  
  20. include sources.mak
  21.  
  22. # adjust object dirs
  23. ES1_OBJECTS := $(addprefix $(ES1_OBJ_DIR)/, $(MESA_OBJECTS))
  24. ES2_OBJECTS := $(addprefix $(ES2_OBJ_DIR)/, $(MESA_OBJECTS))
  25. MESA_OBJECTS := $(addprefix $(MESA_OBJ_DIR)/, $(MESA_OBJECTS))
  26.  
  27. ES1_GALLIUM_OBJECTS := $(addprefix $(ES1_OBJ_DIR)/, $(MESA_GALLIUM_OBJECTS))
  28. ES2_GALLIUM_OBJECTS := $(addprefix $(ES2_OBJ_DIR)/, $(MESA_GALLIUM_OBJECTS))
  29. MESA_GALLIUM_OBJECTS := $(addprefix $(MESA_OBJ_DIR)/, $(MESA_GALLIUM_OBJECTS))
  30.  
  31. # define preprocessor flags
  32. MESA_CPPFLAGS := $(API_DEFINES) $(DEFINES)
  33. ES1_CPPFLAGS := -DFEATURE_ES1=1 $(DEFINES)
  34. ES2_CPPFLAGS := -DFEATURE_ES2=1 $(DEFINES)
  35.  
  36. # append include dirs
  37. MESA_CPPFLAGS += $(INCLUDE_DIRS)
  38. ES1_CPPFLAGS += -I$(TOP)/src/mapi/es1api $(INCLUDE_DIRS)
  39. ES2_CPPFLAGS += -I$(TOP)/src/mapi/es2api $(INCLUDE_DIRS)
  40.  
  41. # tidy compiler flags
  42. CFLAGS := $(filter-out $(DEFINES), $(CFLAGS))
  43. CXXFLAGS := $(filter-out $(DEFINES), $(CXXFLAGS))
  44.  
  45. # LLVM is needed for the state tracker
  46. MESA_CFLAGS := $(LLVM_CFLAGS)
  47. ES1_CFLAGS := $(LLVM_CFLAGS)
  48. ES2_CFLAGS := $(LLVM_CFLAGS)
  49.  
  50. define mesa-cc-c
  51.         @mkdir -p $(dir $@)
  52.         $(CC) -c -o $@ $< $($(1)_CPPFLAGS) $($(1)_CFLAGS) $(CFLAGS)
  53. endef
  54.  
  55. define mesa-cxx-c
  56.         @mkdir -p $(dir $@)
  57.         $(CXX) -c -o $@ $< $($(1)_CPPFLAGS) $($(1)_CFLAGS) $(CXXFLAGS)
  58. endef
  59.  
  60. $(MESA_OBJ_DIR)/%.o: %.c
  61.         $(call mesa-cc-c,MESA)
  62.  
  63. $(MESA_OBJ_DIR)/%.o: %.cpp
  64.         $(call mesa-cxx-c,MESA)
  65.  
  66. $(MESA_OBJ_DIR)/%.o: %.S
  67.         $(call mesa-cc-c,MESA)
  68.  
  69. $(ES1_OBJ_DIR)/%.o: %.c
  70.         $(call mesa-cc-c,ES1)
  71.  
  72. $(ES1_OBJ_DIR)/%.o: %.cpp
  73.         $(call mesa-cxx-c,ES1)
  74.  
  75. $(ES1_OBJ_DIR)/%.o: %.S
  76.         $(call mesa-cc-c,ES1)
  77.  
  78. $(ES2_OBJ_DIR)/%.o: %.c
  79.         $(call mesa-cc-c,ES2)
  80.  
  81. $(ES2_OBJ_DIR)/%.o: %.cpp
  82.         $(call mesa-cxx-c,ES2)
  83.  
  84. $(ES2_OBJ_DIR)/%.o: %.S
  85.         $(call mesa-cc-c,ES2)
  86.  
  87.  
  88. # Default: build dependencies, then asm_subdirs, GLSL built-in lib,
  89. # then convenience libs (.a) and finally the device drivers:
  90. default: $(DEPENDS) asm_subdirs \
  91.         $(MESA_LIBS) $(ES1_LIBS) $(ES2_LIBS) driver_subdirs
  92.  
  93. main/api_exec_es1.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py
  94.         $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES1.1 > $@
  95.  
  96. main/api_exec_es2.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py
  97.         $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES2.0 > $@
  98.  
  99. ######################################################################
  100. # Helper libraries used by many drivers:
  101.  
  102. # Make archive of core mesa object files
  103. libmesa.a: $(MESA_OBJECTS)
  104.         @ $(MKLIB) -o mesa -static $(MESA_OBJECTS)
  105.  
  106. libes1.a: $(ES1_OBJECTS) $(GLSL_LIBS)
  107.         @$(MKLIB) -o es1 -static $(ES1_OBJECTS) $(GLSL_LIBS)
  108.  
  109. libes2.a: $(ES2_OBJECTS) $(GLSL_LIBS)
  110.         @$(MKLIB) -o es2 -static $(ES2_OBJECTS) $(GLSL_LIBS)
  111.  
  112. # Make archive of subset of core mesa object files for gallium
  113. libmesagallium.a: $(MESA_GALLIUM_OBJECTS) $(GLSL_LIBS)
  114.         @ $(MKLIB) -o mesagallium -static $(MESA_GALLIUM_OBJECTS) $(GLSL_LIBS)
  115.  
  116. libes1gallium.a: $(ES1_GALLIUM_OBJECTS) $(GLSL_LIBS)
  117.         @$(MKLIB) -o es1gallium -static $(ES1_GALLIUM_OBJECTS) $(GLSL_LIBS)
  118.  
  119. libes2gallium.a: $(ES2_GALLIUM_OBJECTS) $(GLSL_LIBS)
  120.         @$(MKLIB) -o es2gallium -static $(ES2_GALLIUM_OBJECTS) $(GLSL_LIBS)
  121.  
  122. ######################################################################
  123. # Device drivers
  124. driver_subdirs: $(MESA_LIBS)
  125.         @ (cd drivers && $(MAKE))
  126.  
  127.  
  128. ######################################################################
  129. # Assembly subdirs
  130. asm_subdirs:
  131.         @ if echo "$(ASM_FLAGS)" | grep -q USE_X86_ASM ; then \
  132.                 (cd x86 && $(MAKE)) || exit 1 ; \
  133.         fi
  134.         @ if echo "$(ASM_FLAGS)" | grep -q USE_X86_64_ASM ; then \
  135.                 (cd x86 && $(MAKE)) || exit 1 ; \
  136.                 (cd x86-64 && $(MAKE)) || exit 1 ; \
  137.         fi
  138.  
  139.  
  140. ######################################################################
  141. # Dependency generation
  142.  
  143. depend: $(ALL_SOURCES)
  144.         @ echo "running $(MKDEP)"
  145.         @ touch depend
  146.         @$(MKDEP) $(MKDEP_OPTIONS) -p$(MESA_OBJ_DIR)/ $(MESA_CPPFLAGS) \
  147.                 $(ALL_SOURCES) > /dev/null 2>/dev/null
  148.  
  149. depend.es1: $(ALL_SOURCES)
  150.         @echo "running $(MKDEP) for ES1"
  151.         @touch $@
  152.         @$(MKDEP) $(MKDEP_OPTIONS) -f$@ -p$(ES1_OBJ_DIR)/ $(ES1_CPPFLAGS) \
  153.                 $(ALL_SOURCES) > /dev/null 2>/dev/null
  154.  
  155. depend.es2: $(ALL_SOURCES)
  156.         @echo "running $(MKDEP) for ES2"
  157.         @touch $@
  158.         @$(MKDEP) $(MKDEP_OPTIONS) -f$@ -p$(ES2_OBJ_DIR)/ $(ES2_CPPFLAGS) \
  159.                 $(ALL_SOURCES) > /dev/null 2>/dev/null
  160.  
  161. ######################################################################
  162. # Installation rules
  163.  
  164. # this isn't fleshed out yet but is probably the way to go in the future
  165. new_install:
  166.         (cd drivers && $(MAKE) install)
  167.  
  168.  
  169. # XXX replace this with new_install above someday
  170. install: default
  171.         @for driver in $(DRIVER_DIRS) ; do \
  172.           case "$$driver" in \
  173.             osmesa) if [ "$(DRIVER_DIRS)" = osmesa ]; then \
  174.                       $(MAKE) install-headers install-osmesa || exit 1 ; \
  175.                     else \
  176.                       $(MAKE) install-osmesa || exit 1 ; \
  177.                     fi ;; \
  178.             dri)    $(MAKE) install-libgl install-dri || exit 1 ;; \
  179.             *)      $(MAKE) install-libgl || exit 1 ;; \
  180.           esac ; \
  181.         done
  182.  
  183. pcedit = \
  184.         -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \
  185.         -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \
  186.         -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \
  187.         -e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' \
  188.  
  189.  
  190. gl_pcedit = sed \
  191.         $(pcedit) \
  192.         -e 's,@GL_PC_REQ_PRIV@,$(GL_PC_REQ_PRIV),' \
  193.         -e 's,@GL_PC_LIB_PRIV@,$(GL_PC_LIB_PRIV),' \
  194.         -e 's,@GL_PC_CFLAGS@,$(GL_PC_CFLAGS),' \
  195.         -e 's,@GL_LIB@,$(GL_LIB),'
  196.  
  197. gl.pc: gl.pc.in
  198.         $(gl_pcedit) $< > $@
  199.  
  200. osmesa_pcedit = sed \
  201.         $(pcedit) \
  202.         -e 's,@OSMESA_LIB@,$(OSMESA_LIB),' \
  203.         -e 's,@OSMESA_PC_REQ@,$(OSMESA_PC_REQ),' \
  204.         -e 's,@OSMESA_PC_LIB_PRIV@,$(OSMESA_PC_LIB_PRIV),'
  205.  
  206. osmesa.pc: osmesa.pc.in
  207.         $(osmesa_pcedit) $< > $@
  208.  
  209. install-headers:
  210.         $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL
  211.         $(INSTALL) -m 644 $(TOP)/include/GL/*.h \
  212.                 $(DESTDIR)$(INSTALL_INC_DIR)/GL
  213.  
  214. install-libgl: default gl.pc install-headers
  215.         $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
  216.         $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
  217.         $(MINSTALL) $(TOP)/$(LIB_DIR)/$(GL_LIB_GLOB) \
  218.                 $(DESTDIR)$(INSTALL_LIB_DIR)
  219.         $(INSTALL) -m 644 gl.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
  220.  
  221. install-osmesa: default osmesa.pc
  222.         $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
  223.         $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
  224.         $(MINSTALL) $(TOP)/$(LIB_DIR)/$(OSMESA_LIB_GLOB) \
  225.                 $(DESTDIR)$(INSTALL_LIB_DIR)
  226.         $(INSTALL) -m 644 osmesa.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
  227.  
  228. install-dri: default
  229.         cd drivers/dri && $(MAKE) install
  230.  
  231.  
  232.  
  233. # Emacs tags
  234. tags:
  235.         etags `find . -name \*.[ch]` $(TOP)/include/GL/*.h
  236.  
  237. clean-es1:
  238.         -rm -f $(ES1_LIBS)
  239.         -rm -rf $(ES1_OBJ_DIR)
  240.         -rm -f depend.es1 depend.es1.bak
  241.  
  242. clean-es2:
  243.         -rm -f $(ES2_LIBS)
  244.         -rm -rf $(ES2_OBJ_DIR)
  245.         -rm -f depend.es2 depend.es2.bak
  246.  
  247. clean: clean-es1 clean-es2
  248.         -rm -f */*.o
  249.         -rm -f */*/*.o
  250.         -rm -f depend depend.bak libmesa.a libmesagallium.a
  251.         -rm -f drivers/*/*.o
  252.         -rm -f *.pc
  253.         -@cd drivers/dri && $(MAKE) clean
  254.         -@cd drivers/x11 && $(MAKE) clean
  255.         -@cd drivers/osmesa && $(MAKE) clean
  256.         -@cd x86 && $(MAKE) clean
  257.         -@cd x86-64 && $(MAKE) clean
  258.  
  259.  
  260. -include $(DEPENDS)
  261.