summaryrefslogtreecommitdiffstats
path: root/src/glsl/Makefile
blob: 91e4d2e05dd352b57bc9f0e818ab63d1bb0b955c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#src/glsl/pp/Makefile

TOP = ../..

include $(TOP)/configs/current

LIBNAME = glsl

C_SOURCES = \
	glcpp/glcpp.c \
	glcpp/glcpp-lex.c \
	glcpp/glcpp-parse.c \
	glcpp/pp.c \
	glcpp/xtalloc.c

CXX_SOURCES = \
	ast_expr.cpp \
	ast_function.cpp \
	ast_to_hir.cpp \
	ast_type.cpp \
	builtin_function.cpp \
	glsl_lexer.cpp \
	glsl_parser.cpp \
	glsl_parser_extras.cpp \
	glsl_types.cpp \
	hir_field_selection.cpp \
	ir_basic_block.cpp \
	ir_clone.cpp \
	ir_constant_expression.cpp \
	ir_constant_folding.cpp \
	ir_constant_variable.cpp \
	ir_copy_propagation.cpp \
	ir.cpp \
	ir_dead_code.cpp \
	ir_dead_code_local.cpp \
	ir_expression_flattening.cpp \
	ir_function_can_inline.cpp \
	ir_function.cpp \
	ir_function_inlining.cpp \
	ir_hierarchical_visitor.cpp \
	ir_hv_accept.cpp \
	ir_if_simplification.cpp \
	ir_print_visitor.cpp \
	ir_reader.cpp \
	ir_swizzle_swizzle.cpp \
	ir_validate.cpp \
	ir_variable.cpp \
	ir_vec_index_to_swizzle.cpp \
	linker.cpp \
	s_expression.cpp

LIBS = \
	$(TOP)/src/glsl/libglsl.a \
	$(shell pkg-config --libs talloc)

APPS = glsl_compiler
GLSL2_C_SOURCES = \
	../mesa/shader/hash_table.c \
	../mesa/shader/symbol_table.c
GLSL2_CXX_SOURCES = \
	main.cpp

GLSL2_OBJECTS = \
	$(GLSL2_C_SOURCES:.c=.o) \
	$(GLSL2_CXX_SOURCES:.cpp=.o)

### Basic defines ###

OBJECTS = \
	$(C_SOURCES:.c=.o) \
	$(CXX_SOURCES:.cpp=.o)

INCLUDES = \
	-I. \
	-I../mesa \
	-I../mapi \
	-I../mesa/shader \
	$(LIBRARY_INCLUDES)


##### TARGETS #####

default: depend lib$(LIBNAME).a $(APPS)

lib$(LIBNAME).a: $(OBJECTS) Makefile $(TOP)/src/glsl/Makefile.template
	$(MKLIB) -cplusplus -o $(LIBNAME) -static $(OBJECTS)

depend: $(CXX_SOURCES) $(GLSL2_CXX_SOURCES) $(GLSL2_C_SOURCES)
	rm -f depend
	touch depend
	$(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $@ 2> /dev/null

# Remove .o and backup files
clean:
	rm -f $(OBJECTS) lib$(LIBNAME).a depend depend.bak
	-rm -f $(APPS)

# Dummy target
install:
	@echo -n ""


##### RULES #####

glsl_compiler: $(GLSL2_OBJECTS) libglsl.a
	$(APP_CXX) $(INCLUDES) $(CFLAGS) $(LDFLAGS) $(GLSL2_OBJECTS) $(LIBS) -o $@

.cpp.o:
	$(CXX) -c $(INCLUDES) $(CXXFLAGS) $(LIBRARY_DEFINES) $< -o $@

.c.o:
	$(CC) -c $(INCLUDES) $(CFLAGS) $(LIBRARY_DEFINES) $< -o $@

glsl_lexer.cpp: glsl_lexer.lpp
	flex --never-interactive --outfile="$@"  $<

glsl_parser.cpp: glsl_parser.ypp
	bison -v -o "$@" --defines=glsl_parser.h $<

glcpp/glcpp-lex.c: glcpp/glcpp-lex.l
	flex --never-interactive --outfile="$@" $<

glcpp/glcpp-parse.c: glcpp/glcpp-parse.y
	bison -v -o "$@" --defines=glcpp/glcpp-parse.h $<

builtin_function.cpp: builtins/*/*
	./builtins/tools/generate_builtins.pl > builtin_function.cpp

-include depend