@@ -9,67 +9,119 @@ PROJECT_ROOT = .
99INCLUDE_DIR = $(PROJECT_ROOT ) /include
1010SRC_DIR = $(PROJECT_ROOT ) /src
1111
12+ # --- PostgreSQL Parser Variables ---
1213PGSQL_PARSER_SRC_DIR = $(SRC_DIR ) /pgsql_parser
1314PGSQL_PARSER_INCLUDE_DIR = $(INCLUDE_DIR ) /pgsql_parser
15+ PGSQL_TARGET_LIB_NAME = pgsqlparser
16+ PGSQL_TARGET_LIB = $(PROJECT_ROOT ) /lib$(PGSQL_TARGET_LIB_NAME ) .a
17+ PGSQL_EXAMPLE_EXE = $(PROJECT_ROOT ) /pgsql_example
1418
15- TARGET_LIB_NAME = pgsqlparser
16- TARGET_LIB = $( PROJECT_ROOT ) /lib $( TARGET_LIB_NAME ) .a
17- EXAMPLE_EXE = $( PROJECT_ROOT ) /pgsql_example
19+ PGSQL_BISON_C_FILE = pgsql_parser.tab.c
20+ PGSQL_BISON_H_FILE = pgsql_parser.tab.h
21+ PGSQL_FLEX_C_FILE = pgsql_lexer.yy.c
1822
19- PGSQL_BISON_PARSER_C_FILE = pgsql_parser.tab.c
20- PGSQL_BISON_PARSER_H_FILE = pgsql_parser.tab.h
21- PGSQL_FLEX_LEXER_C_FILE = pgsql_lexer.yy.c
22-
23- PGSQL_BISON_PARSER_C = $(PGSQL_PARSER_SRC_DIR ) /$(PGSQL_BISON_PARSER_C_FILE )
24- PGSQL_BISON_PARSER_H = $(PGSQL_PARSER_SRC_DIR ) /$(PGSQL_BISON_PARSER_H_FILE )
25- PGSQL_FLEX_LEXER_C = $(PGSQL_PARSER_SRC_DIR ) /$(PGSQL_FLEX_LEXER_C_FILE )
23+ PGSQL_BISON_C = $(PGSQL_PARSER_SRC_DIR ) /$(PGSQL_BISON_C_FILE )
24+ PGSQL_BISON_H = $(PGSQL_PARSER_SRC_DIR ) /$(PGSQL_BISON_H_FILE )
25+ PGSQL_FLEX_C = $(PGSQL_PARSER_SRC_DIR ) /$(PGSQL_FLEX_C_FILE )
2626
2727PGSQL_LIB_OBJS = \
28- $(PGSQL_BISON_PARSER_C :.c=.o ) \
29- $(PGSQL_FLEX_LEXER_C :.c=.o ) \
28+ $(PGSQL_BISON_C :.c=.o ) \
29+ $(PGSQL_FLEX_C :.c=.o ) \
3030 $(PGSQL_PARSER_SRC_DIR ) /pgsql_parser.o
31+ PGSQL_EXAMPLE_OBJS = $(PROJECT_ROOT ) /examples/main_pgsql_example.o
32+
33+ # --- MySQL Parser Variables ---
34+ MYSQL_PARSER_SRC_DIR = $(SRC_DIR ) /mysql_parser
35+ MYSQL_PARSER_INCLUDE_DIR = $(INCLUDE_DIR ) /mysql_parser
36+ MYSQL_TARGET_LIB_NAME = mysqlparser
37+ MYSQL_TARGET_LIB = $(PROJECT_ROOT ) /lib$(MYSQL_TARGET_LIB_NAME ) .a
38+ MYSQL_EXAMPLE_EXE = $(PROJECT_ROOT ) /mysql_example
39+
40+ MYSQL_BISON_C_FILE = mysql_parser.tab.c
41+ MYSQL_BISON_H_FILE = mysql_parser.tab.h
42+ MYSQL_FLEX_C_FILE = mysql_lexer.yy.c
43+
44+ MYSQL_BISON_C = $(MYSQL_PARSER_SRC_DIR ) /$(MYSQL_BISON_C_FILE )
45+ MYSQL_BISON_H = $(MYSQL_PARSER_SRC_DIR ) /$(MYSQL_BISON_H_FILE )
46+ MYSQL_FLEX_C = $(MYSQL_PARSER_SRC_DIR ) /$(MYSQL_FLEX_C_FILE )
47+
48+ MYSQL_LIB_OBJS = \
49+ $(MYSQL_BISON_C:.c=.o ) \
50+ $(MYSQL_FLEX_C:.c=.o ) \
51+ $(MYSQL_PARSER_SRC_DIR ) /mysql_parser.o
52+ MYSQL_EXAMPLE_OBJS = $(PROJECT_ROOT ) /examples/main_mysql_example.o
3153
32- EXAMPLE_OBJS = $(PROJECT_ROOT ) /examples/main_pgsql_example.o
3354
34- .PHONY : all clean examples
55+ .PHONY : all clean examples pgsql mysql
3556
36- all : $( TARGET_LIB ) examples
57+ all : pgsql mysql examples
3758
38- examples : $(EXAMPLE_EXE )
59+ pgsql : $(PGSQL_TARGET_LIB )
60+ mysql : $(MYSQL_TARGET_LIB )
3961
40- $(TARGET_LIB ) : $(PGSQL_LIB_OBJS )
62+ examples : $(PGSQL_EXAMPLE_EXE ) $(MYSQL_EXAMPLE_EXE )
63+
64+ # --- PostgreSQL Rules ---
65+ $(PGSQL_TARGET_LIB ) : $(PGSQL_LIB_OBJS )
4166 ar rcs $@ $(PGSQL_LIB_OBJS )
4267 @echo " Created library $@ "
4368
44- $(EXAMPLE_EXE ) : $(EXAMPLE_OBJS ) $(TARGET_LIB )
45- $(LINKER ) $(CXXFLAGS ) -o $@ $(EXAMPLE_OBJS ) -L$(PROJECT_ROOT ) -l$(TARGET_LIB_NAME )
46- @echo " Created example $@ "
69+ $(PGSQL_EXAMPLE_EXE ) : $(PGSQL_EXAMPLE_OBJS ) $(PGSQL_TARGET_LIB )
70+ $(LINKER ) $(CXXFLAGS ) -o $@ $(PGSQL_EXAMPLE_OBJS ) -L$(PROJECT_ROOT ) -l$(PGSQL_TARGET_LIB_NAME )
71+ @echo " Created PostgreSQL example $@ "
4772
48- $(PGSQL_BISON_PARSER_H ) $(PGSQL_BISON_PARSER_C ) : $(PGSQL_PARSER_SRC_DIR ) /pgsql_parser.y $(PGSQL_PARSER_INCLUDE_DIR ) /pgsql_ast.h $(PGSQL_PARSER_INCLUDE_DIR ) /pgsql_parser.h
73+ $(PGSQL_BISON_H ) $(PGSQL_BISON_C ) : $(PGSQL_PARSER_SRC_DIR ) /pgsql_parser.y $(PGSQL_PARSER_INCLUDE_DIR ) /pgsql_ast.h $(PGSQL_PARSER_INCLUDE_DIR ) /pgsql_parser.h
4974 cd $(PGSQL_PARSER_SRC_DIR ) && bison -d -v --report=all pgsql_parser.y
5075
51- $(PGSQL_FLEX_LEXER_C ) : $(PGSQL_PARSER_SRC_DIR ) /pgsql_lexer.l $(PGSQL_BISON_PARSER_H )
52- cd $(PGSQL_PARSER_SRC_DIR ) && flex -o $(PGSQL_FLEX_LEXER_C_FILE ) pgsql_lexer.l
76+ $(PGSQL_FLEX_C ) : $(PGSQL_PARSER_SRC_DIR ) /pgsql_lexer.l $(PGSQL_BISON_H )
77+ cd $(PGSQL_PARSER_SRC_DIR ) && flex -o $(PGSQL_FLEX_C_FILE ) pgsql_lexer.l
5378
54- # Rule to compile Bison-generated file (pgsql_parser.tab.c) AS C++
55- $(PGSQL_BISON_PARSER_C:.c =.o): $(PGSQL_BISON_PARSER_C ) $(PGSQL_BISON_PARSER_H ) $(PGSQL_PARSER_INCLUDE_DIR ) /pgsql_parser.h
79+ $(PGSQL_PARSER_SRC_DIR ) /pgsql_parser.tab.o : $(PGSQL_BISON_C ) $(PGSQL_BISON_H ) $(PGSQL_PARSER_INCLUDE_DIR ) /pgsql_parser.h
5680 $(CXX ) $(CXXFLAGS ) $(CPPFLAGS ) -c $< -o $@
5781
58- # Rule to compile Flex-generated file (pgsql_lexer.yy.c) AS C++
59- $(PGSQL_FLEX_LEXER_C:.c =.o): $(PGSQL_FLEX_LEXER_C ) $(PGSQL_BISON_PARSER_H ) $(PGSQL_PARSER_INCLUDE_DIR ) /pgsql_parser.h
82+ $(PGSQL_PARSER_SRC_DIR ) /pgsql_lexer.yy.o : $(PGSQL_FLEX_C ) $(PGSQL_BISON_H ) $(PGSQL_PARSER_INCLUDE_DIR ) /pgsql_parser.h
6083 $(CXX ) $(CXXFLAGS ) $(CPPFLAGS ) -c $< -o $@
6184
62- # Rule to compile pgsql_parser.cpp (C++ file)
63- $(PGSQL_PARSER_SRC_DIR ) /pgsql_parser.o : $(PGSQL_PARSER_SRC_DIR ) /pgsql_parser.cpp $(PGSQL_PARSER_INCLUDE_DIR ) /pgsql_parser.h $(PGSQL_PARSER_INCLUDE_DIR ) /pgsql_ast.h $(PGSQL_BISON_PARSER_H )
85+ $(PGSQL_PARSER_SRC_DIR ) /pgsql_parser.o : $(PGSQL_PARSER_SRC_DIR ) /pgsql_parser.cpp $(PGSQL_PARSER_INCLUDE_DIR ) /pgsql_parser.h $(PGSQL_PARSER_INCLUDE_DIR ) /pgsql_ast.h $(PGSQL_BISON_H )
6486 $(CXX ) $(CXXFLAGS ) $(CPPFLAGS ) -c $< -o $@
6587
6688$(PROJECT_ROOT ) /examples/main_pgsql_example.o : $(PROJECT_ROOT ) /examples/main_pgsql_example.cpp $(PGSQL_PARSER_INCLUDE_DIR ) /pgsql_parser.h $(PGSQL_PARSER_INCLUDE_DIR ) /pgsql_ast.h
6789 $(CXX ) $(CXXFLAGS ) $(CPPFLAGS ) -c $< -o $@
6890
91+ # --- MySQL Rules ---
92+ $(MYSQL_TARGET_LIB ) : $(MYSQL_LIB_OBJS )
93+ ar rcs $@ $(MYSQL_LIB_OBJS )
94+ @echo " Created library $@ "
95+
96+ $(MYSQL_EXAMPLE_EXE ) : $(MYSQL_EXAMPLE_OBJS ) $(MYSQL_TARGET_LIB )
97+ $(LINKER ) $(CXXFLAGS ) -o $@ $(MYSQL_EXAMPLE_OBJS ) -L$(PROJECT_ROOT ) -l$(MYSQL_TARGET_LIB_NAME )
98+ @echo " Created MySQL example $@ "
99+
100+ $(MYSQL_BISON_H ) $(MYSQL_BISON_C ) : $(MYSQL_PARSER_SRC_DIR ) /mysql_parser.y $(MYSQL_PARSER_INCLUDE_DIR ) /mysql_ast.h $(MYSQL_PARSER_INCLUDE_DIR ) /mysql_parser.h
101+ cd $(MYSQL_PARSER_SRC_DIR ) && bison -d -v --report=all -o $(MYSQL_BISON_C_FILE ) --defines=$(MYSQL_BISON_H_FILE ) mysql_parser.y
102+
103+ $(MYSQL_FLEX_C ) : $(MYSQL_PARSER_SRC_DIR ) /mysql_lexer.l $(MYSQL_BISON_H )
104+ cd $(MYSQL_PARSER_SRC_DIR ) && flex -o $(MYSQL_FLEX_C_FILE ) mysql_lexer.l
105+
106+ $(MYSQL_PARSER_SRC_DIR ) /mysql_parser.tab.o : $(MYSQL_BISON_C ) $(MYSQL_BISON_H ) $(MYSQL_PARSER_INCLUDE_DIR ) /mysql_parser.h
107+ $(CXX ) $(CXXFLAGS ) $(CPPFLAGS ) -c $< -o $@
108+
109+ $(MYSQL_PARSER_SRC_DIR ) /mysql_lexer.yy.o : $(MYSQL_FLEX_C ) $(MYSQL_BISON_H ) $(MYSQL_PARSER_INCLUDE_DIR ) /mysql_parser.h
110+ $(CXX ) $(CXXFLAGS ) $(CPPFLAGS ) -c $< -o $@
111+
112+ $(MYSQL_PARSER_SRC_DIR ) /mysql_parser.o : $(MYSQL_PARSER_SRC_DIR ) /mysql_parser.cpp $(MYSQL_PARSER_INCLUDE_DIR ) /mysql_parser.h $(MYSQL_PARSER_INCLUDE_DIR ) /mysql_ast.h $(MYSQL_BISON_H )
113+ $(CXX ) $(CXXFLAGS ) $(CPPFLAGS ) -c $< -o $@
114+
115+ $(PROJECT_ROOT ) /examples/main_mysql_example.o : $(PROJECT_ROOT ) /examples/main_mysql_example.cpp $(MYSQL_PARSER_INCLUDE_DIR ) /mysql_parser.h $(MYSQL_PARSER_INCLUDE_DIR ) /mysql_ast.h
116+ $(CXX ) $(CXXFLAGS ) $(CPPFLAGS ) -c $< -o $@
117+
118+
69119clean :
70- rm -f $(TARGET_LIB ) $(EXAMPLE_EXE )
71- rm -f $(PGSQL_LIB_OBJS ) $(EXAMPLE_OBJS )
72- rm -f $(PGSQL_BISON_PARSER_C ) $(PGSQL_BISON_PARSER_H ) $(PGSQL_FLEX_LEXER_C )
120+ rm -f $(PGSQL_TARGET_LIB ) $(PGSQL_EXAMPLE_EXE ) $(MYSQL_TARGET_LIB ) $(MYSQL_EXAMPLE_EXE )
121+ rm -f $(PGSQL_LIB_OBJS ) $(PGSQL_EXAMPLE_OBJS ) $(MYSQL_LIB_OBJS ) $(MYSQL_EXAMPLE_OBJS )
122+ rm -f $(PGSQL_BISON_C ) $(PGSQL_BISON_H ) $(PGSQL_FLEX_C )
123+ rm -f $(MYSQL_BISON_C ) $(MYSQL_BISON_H ) $(MYSQL_FLEX_C )
73124 rm -f $(PGSQL_PARSER_SRC_DIR ) /pgsql_parser.output $(PGSQL_PARSER_SRC_DIR ) /pgsql_parser.report
74- rm -f $(PGSQL_PARSER_SRC_DIR ) /lex.backup
125+ rm -f $(MYSQL_PARSER_SRC_DIR ) /mysql_parser.output $(MYSQL_PARSER_SRC_DIR ) /mysql_parser.report
126+ rm -f $(PGSQL_PARSER_SRC_DIR ) /lex.backup $(MYSQL_PARSER_SRC_DIR ) /lex.backup
75127 @echo " Cleaned up project."
0 commit comments