diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-01-02 09:54:05 -0800 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-01-02 09:54:05 -0800 |
| commit | 65901c3dbdc6ee38acdfaa6c29d8d4bdd575a6be (patch) | |
| tree | b79aa703ef7c528896c4f1be8280d0691314008b /src | |
| parent | a48fc0d7952ad1f10ae777637269fe6a3f9ad0a2 (diff) | |
| parent | 7c469c0b9dadd1de09fed18c3e5cc551012c38c1 (diff) | |
| download | mruby-65901c3dbdc6ee38acdfaa6c29d8d4bdd575a6be.tar.gz mruby-65901c3dbdc6ee38acdfaa6c29d8d4bdd575a6be.zip | |
Merge pull request #679 from masuidrive/merge_to_cruby_building_script
Rebuild CRuby based building script without Makefile
Diffstat (limited to 'src')
| -rw-r--r-- | src/CMakeLists.txt | 11 | ||||
| -rw-r--r-- | src/Makefile | 71 | ||||
| -rw-r--r-- | src/lex.def | 100 | ||||
| -rw-r--r-- | src/mruby_core.rake | 25 |
4 files changed, 74 insertions, 133 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt deleted file mode 100644 index 4a6aeee2c..000000000 --- a/src/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -# build the core mruby C files - -find_package(BISON) -bison_target(mruby parse.y "${CMAKE_CURRENT_BINARY_DIR}/parse.c") - -file(GLOB MRUBY_SRC_C "*.c") -list(APPEND MRUBY_SRC_C "${CMAKE_CURRENT_BINARY_DIR}/parse.c") - -add_library(mruby_object OBJECT ${MRUBY_SRC_C} ${BISON_mruby_OUTPUTS}) - -# vim: ts=2 sts=2 sw=2 et diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index de9a4e6e3..000000000 --- a/src/Makefile +++ /dev/null @@ -1,71 +0,0 @@ -# Makefile description. -# basic build file for mruby library - -# project-specific macros -# extension of the executable-file is modifiable(.exe .out ...) -BASEDIR = . -TARGET := ../lib/libmruby_core.a -YSRC := $(BASEDIR)/parse.y -YC := $(BASEDIR)/y.tab.c -KWD := $(BASEDIR)/keywords -LDEF := $(BASEDIR)/lex.def -EXCEPT1 := $(YC) $(BASEDIR)/minimain.c -OBJY := $(patsubst %.c,%.o,$(YC)) -OBJ1 := $(patsubst %.c,%.o,$(filter-out $(EXCEPT1),$(wildcard $(BASEDIR)/*.c))) -#OBJ2 := $(patsubst %.c,%.o,$(wildcard $(BASEDIR)/ext/regex/*.c)) -#OBJ3 := $(patsubst %.c,%.o,$(wildcard $(BASEDIR)/ext/enc/*.c)) -OBJS := $(OBJ1) $(OBJ2) $(OBJ3) - -# libraries, includes -INCLUDES = -I$(BASEDIR) -I$(BASEDIR)/../include - -ifeq ($(strip $(COMPILE_MODE)),) - # default compile option - COMPILE_MODE = debug -endif - -ifeq ($(COMPILE_MODE),debug) - CFLAGS = -g -O3 -else ifeq ($(COMPILE_MODE),release) - CFLAGS = -O3 -else ifeq ($(COMPILE_MODE),small) - CFLAGS = -Os -endif - -ALL_CFLAGS = -Wall -Werror-implicit-function-declaration $(CFLAGS) - - -############################## -# generic build targets, rules - -.PHONY : all -all : $(TARGET) - -# executable constructed using linker from object files -$(TARGET) : $(OBJS) $(OBJY) - $(AR) r $@ $(OBJS) $(OBJY) - --include $(OBJS:.o=.d) $(OBJY:.o=.d) - -# objects compiled from source -$(OBJS) : %.o : %.c - $(CC) $(ALL_CFLAGS) -MMD $(INCLUDES) -c $< -o $@ - -# parser compile -$(OBJY) : $(YC) $(LDEF) - $(CC) $(ALL_CFLAGS) -MMD $(INCLUDES) -c $(YC) -o $(OBJY) - -# yacc compile -$(YC) : $(YSRC) - $(YACC) -o $(YC) $(YSRC) - -$(LDEF) : $(KWD) - gperf -L ANSI-C -C -p -j1 -i 1 -g -o -t -N mrb_reserved_word -k'1,3,$$' $(KWD) > $(LDEF) - -# clean up -.PHONY : clean #cleandep -clean : - @echo "make: removing targets, objects and depend files of `pwd`" - -$(RM_F) $(TARGET) $(OBJS) $(OBJY) $(YC) - -$(RM_F) $(OBJS:.o=.d) $(OBJY:.o=.d) - -$(RM_F) $(patsubst %.c,%.o,$(EXCEPT1)) $(patsubst %.c,%.d,$(EXCEPT1)) diff --git a/src/lex.def b/src/lex.def index b5106350d..5223aac1b 100644 --- a/src/lex.def +++ b/src/lex.def @@ -1,5 +1,5 @@ -/* ANSI-C code produced by gperf version 3.0.3 */ -/* Command-line: gperf -L ANSI-C -C -p -j1 -i 1 -g -o -t -N mrb_reserved_word -k'1,3,$' ./keywords */ +/* ANSI-C code produced by gperf version 3.0.4 */ +/* Command-line: gperf -L ANSI-C -C -p -j1 -i 1 -g -o -t -N mrb_reserved_word -k'1,3,$' src/keywords */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ @@ -28,13 +28,13 @@ #error "gperf generated tables don't work with this execution character set. Please report a bug to <[email protected]>." #endif -#line 1 "./keywords" +#line 1 "src/keywords" struct kwtable {const char *name; int id[2]; enum mrb_lex_state_enum state;}; const struct kwtable *mrb_reserved_word(const char *, unsigned int); static const struct kwtable *reserved_word(const char *, unsigned int); #define mrb_reserved_word(str, len) reserved_word(str, len) -#line 8 "./keywords" +#line 8 "src/keywords" struct kwtable; #define TOTAL_KEYWORDS 40 @@ -44,12 +44,10 @@ struct kwtable; #define MAX_HASH_VALUE 50 /* maximum key range = 43, duplicates = 0 */ -#ifdef __GNUC__ -__inline -#else -#ifdef __cplusplus +#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__cplusplus) || defined(__GNUC_STDC_INLINE__) inline -#endif +#elif defined(__GNUC__) +__inline #endif static unsigned int hash (register const char *str, register unsigned int len) @@ -100,7 +98,7 @@ hash (register const char *str, register unsigned int len) #ifdef __GNUC__ __inline -#ifdef __GNUC_STDC_INLINE__ +#if defined __GNUC_STDC_INLINE__ || defined __GNUC_GNU_INLINE__ __attribute__ ((__gnu_inline__)) #endif #endif @@ -110,87 +108,87 @@ mrb_reserved_word (register const char *str, register unsigned int len) static const struct kwtable wordlist[] = { {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 18 "./keywords" +#line 18 "src/keywords" {"break", {keyword_break, keyword_break}, EXPR_MID}, -#line 23 "./keywords" +#line 23 "src/keywords" {"else", {keyword_else, keyword_else}, EXPR_BEG}, -#line 33 "./keywords" +#line 33 "src/keywords" {"nil", {keyword_nil, keyword_nil}, EXPR_END}, -#line 26 "./keywords" +#line 26 "src/keywords" {"ensure", {keyword_ensure, keyword_ensure}, EXPR_BEG}, -#line 25 "./keywords" +#line 25 "src/keywords" {"end", {keyword_end, keyword_end}, EXPR_END}, -#line 42 "./keywords" +#line 42 "src/keywords" {"then", {keyword_then, keyword_then}, EXPR_BEG}, -#line 34 "./keywords" +#line 34 "src/keywords" {"not", {keyword_not, keyword_not}, EXPR_ARG}, -#line 27 "./keywords" +#line 27 "src/keywords" {"false", {keyword_false, keyword_false}, EXPR_END}, -#line 40 "./keywords" +#line 40 "src/keywords" {"self", {keyword_self, keyword_self}, EXPR_END}, -#line 24 "./keywords" +#line 24 "src/keywords" {"elsif", {keyword_elsif, keyword_elsif}, EXPR_VALUE}, -#line 37 "./keywords" +#line 37 "src/keywords" {"rescue", {keyword_rescue, modifier_rescue}, EXPR_MID}, -#line 43 "./keywords" +#line 43 "src/keywords" {"true", {keyword_true, keyword_true}, EXPR_END}, -#line 46 "./keywords" +#line 46 "src/keywords" {"until", {keyword_until, modifier_until}, EXPR_VALUE}, -#line 45 "./keywords" +#line 45 "src/keywords" {"unless", {keyword_unless, modifier_unless}, EXPR_VALUE}, -#line 39 "./keywords" +#line 39 "src/keywords" {"return", {keyword_return, keyword_return}, EXPR_MID}, -#line 21 "./keywords" +#line 21 "src/keywords" {"def", {keyword_def, keyword_def}, EXPR_FNAME}, -#line 16 "./keywords" +#line 16 "src/keywords" {"and", {keyword_and, keyword_and}, EXPR_VALUE}, -#line 22 "./keywords" +#line 22 "src/keywords" {"do", {keyword_do, keyword_do}, EXPR_BEG}, -#line 49 "./keywords" +#line 49 "src/keywords" {"yield", {keyword_yield, keyword_yield}, EXPR_ARG}, -#line 28 "./keywords" +#line 28 "src/keywords" {"for", {keyword_for, keyword_for}, EXPR_VALUE}, -#line 44 "./keywords" +#line 44 "src/keywords" {"undef", {keyword_undef, keyword_undef}, EXPR_FNAME}, -#line 35 "./keywords" +#line 35 "src/keywords" {"or", {keyword_or, keyword_or}, EXPR_VALUE}, -#line 30 "./keywords" +#line 30 "src/keywords" {"in", {keyword_in, keyword_in}, EXPR_VALUE}, -#line 47 "./keywords" +#line 47 "src/keywords" {"when", {keyword_when, keyword_when}, EXPR_VALUE}, -#line 38 "./keywords" +#line 38 "src/keywords" {"retry", {keyword_retry, keyword_retry}, EXPR_END}, -#line 29 "./keywords" +#line 29 "src/keywords" {"if", {keyword_if, modifier_if}, EXPR_VALUE}, -#line 19 "./keywords" +#line 19 "src/keywords" {"case", {keyword_case, keyword_case}, EXPR_VALUE}, -#line 36 "./keywords" +#line 36 "src/keywords" {"redo", {keyword_redo, keyword_redo}, EXPR_END}, -#line 32 "./keywords" +#line 32 "src/keywords" {"next", {keyword_next, keyword_next}, EXPR_MID}, -#line 41 "./keywords" +#line 41 "src/keywords" {"super", {keyword_super, keyword_super}, EXPR_ARG}, -#line 31 "./keywords" +#line 31 "src/keywords" {"module", {keyword_module, keyword_module}, EXPR_VALUE}, -#line 17 "./keywords" +#line 17 "src/keywords" {"begin", {keyword_begin, keyword_begin}, EXPR_BEG}, -#line 11 "./keywords" +#line 11 "src/keywords" {"__LINE__", {keyword__LINE__, keyword__LINE__}, EXPR_END}, -#line 12 "./keywords" +#line 12 "src/keywords" {"__FILE__", {keyword__FILE__, keyword__FILE__}, EXPR_END}, -#line 10 "./keywords" +#line 10 "src/keywords" {"__ENCODING__", {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END}, -#line 14 "./keywords" +#line 14 "src/keywords" {"END", {keyword_END, keyword_END}, EXPR_END}, -#line 15 "./keywords" +#line 15 "src/keywords" {"alias", {keyword_alias, keyword_alias}, EXPR_FNAME}, -#line 13 "./keywords" +#line 13 "src/keywords" {"BEGIN", {keyword_BEGIN, keyword_BEGIN}, EXPR_END}, {""}, -#line 20 "./keywords" +#line 20 "src/keywords" {"class", {keyword_class, keyword_class}, EXPR_CLASS}, {""}, {""}, -#line 48 "./keywords" +#line 48 "src/keywords" {"while", {keyword_while, modifier_while}, EXPR_VALUE} }; @@ -208,5 +206,5 @@ mrb_reserved_word (register const char *str, register unsigned int len) } return 0; } -#line 50 "./keywords" +#line 50 "src/keywords" diff --git a/src/mruby_core.rake b/src/mruby_core.rake new file mode 100644 index 000000000..bc84ed6d9 --- /dev/null +++ b/src/mruby_core.rake @@ -0,0 +1,25 @@ +dir = File.dirname(__FILE__).sub(%r|^\./|, '') + +MRuby.each_target do + lex_def = "#{dir}/lex.def" + objs = Dir.glob("src/*.{c}").map { |f| f.pathmap("#{build_dir}/%X.o") } + ["#{build_dir}/#{dir}/y.tab.o"] + self.libmruby << objs + + file "#{build_dir}/lib/libmruby_core.a" => objs do |t| + archive t.name, 'r', t.prerequisites + end + + # Parser + file "#{build_dir}/#{dir}/y.tab.c" => ["#{dir}/parse.y"] do |t| + run_yacc t.name, t.prerequisites.first + end + + file "#{build_dir}/#{dir}/y.tab.o" => ["#{build_dir}/#{dir}/y.tab.c", lex_def] do |t| + compile_c t.name, t.prerequisites.first, [], dir + end + + # Lexical analyzer + file lex_def => "#{dir}/keywords" do |t| + run_gperf t.name, t.prerequisites.first + end +end |
