Home | History | Annotate | Download | only in program
      1 # Copyright 2012 Intel Corporation
      2 #
      3 # Permission is hereby granted, free of charge, to any person obtaining a
      4 # copy of this software and associated documentation files (the "Software"),
      5 # to deal in the Software without restriction, including without limitation
      6 # the rights to use, copy, modify, merge, publish, distribute, sublicense,
      7 # and/or sell copies of the Software, and to permit persons to whom the
      8 # Software is furnished to do so, subject to the following conditions:
      9 #
     10 # The above copyright notice and this permission notice shall be included
     11 # in all copies or substantial portions of the Software.
     12 #
     13 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     14 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     15 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     16 # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     17 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
     18 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
     19 # DEALINGS IN THE SOFTWARE.
     20 
     21 LOCAL_PATH := $(call my-dir)
     22 
     23 define local-l-to-c
     24 	@mkdir -p $(dir $@)
     25 	@echo "Mesa Lex: $(PRIVATE_MODULE) <= $<"
     26 	$(hide) $(LEX) -o$@ $<
     27 endef
     28 
     29 define mesa_local-y-to-c-and-h
     30 	@mkdir -p $(dir $@)
     31 	@echo "Mesa Yacc: $(PRIVATE_MODULE) <= $<"
     32 	$(hide) $(YACC) -o $@ -p "_mesa_program_" $<
     33 endef
     34 
     35 # ----------------------------------------------------------------------
     36 # libmesa_program.a
     37 # ----------------------------------------------------------------------
     38 
     39 # Import the following variables:
     40 #     PROGRAM_FILES
     41 include $(MESA_TOP)/src/mesa/Makefile.sources
     42 
     43 include $(CLEAR_VARS)
     44 
     45 LOCAL_MODULE := libmesa_program
     46 LOCAL_MODULE_CLASS := STATIC_LIBRARIES
     47 LOCAL_STATIC_LIBRARIES := libmesa_nir \
     48 	libmesa_glsl
     49 
     50 intermediates := $(call local-generated-sources-dir)
     51 
     52 # TODO(chadv): In Makefile.sources, move these vars to a different list so we can
     53 # remove this kludge.
     54 generated_sources_basenames := \
     55 	lex.yy.c \
     56 	program_parse.tab.c \
     57 	program_parse.tab.h
     58 
     59 LOCAL_SRC_FILES := \
     60 	$(filter-out $(generated_sources_basenames),$(subst program/,,$(PROGRAM_FILES))) \
     61 	$(subst program/,,$(PROGRAM_NIR_FILES))
     62 
     63 LOCAL_GENERATED_SOURCES := \
     64 	$(addprefix $(intermediates)/program/,$(generated_sources_basenames))
     65 
     66 $(intermediates)/program/program_parse.tab.c: $(LOCAL_PATH)/program_parse.y
     67 	$(mesa_local-y-to-c-and-h)
     68 
     69 $(intermediates)/program/program_parse.tab.h: $(intermediates)/program/program_parse.tab.c
     70 	@
     71 
     72 $(intermediates)/program/lex.yy.c: $(LOCAL_PATH)/program_lexer.l
     73 	$(local-l-to-c)
     74 
     75 LOCAL_C_INCLUDES := \
     76 	$(MESA_TOP)/src/mapi \
     77 	$(MESA_TOP)/src/mesa \
     78 	$(MESA_TOP)/src/compiler/nir \
     79 	$(MESA_TOP)/src/gallium/auxiliary \
     80 	$(MESA_TOP)/src/gallium/include
     81 
     82 LOCAL_EXPORT_C_INCLUDE_DIRS := $(intermediates)
     83 
     84 LOCAL_GENERATED_SOURCES += $(MESA_GEN_NIR_H) \
     85 	$(MESA_GEN_GLSL_H)
     86 
     87 include $(MESA_COMMON_MK)
     88 include $(BUILD_STATIC_LIBRARY)
     89