From b5dcb7128d7d235b66b4d9be879d26364dd1e3e9 Mon Sep 17 00:00:00 2001 From: Beoran Date: Tue, 1 May 2012 20:13:09 +0200 Subject: First cmake build system. Works on Linux. --- CMakeLists.txt | 124 +++++++++++++++++++++++++++++++++++++++++++++ INSTALL | 14 +++-- Makefile | 41 --------------- Makefile.orig | 41 +++++++++++++++ build/.gitkeep | 0 mrblib/CMakeLists.txt | 35 +++++++++++++ mrblib/Makefile | 73 -------------------------- mrblib/Makefile.orig | 73 ++++++++++++++++++++++++++ src/CMakeLists.txt | 23 +++++++++ src/Makefile | 64 ----------------------- src/Makefile.orig | 64 +++++++++++++++++++++++ tools/mrbc/CMakeLists.txt | 7 +++ tools/mrbc/Makefile | 67 ------------------------ tools/mrbc/Makefile.orig | 67 ++++++++++++++++++++++++ tools/mruby/CMakeLists.txt | 7 +++ tools/mruby/Makefile | 77 ---------------------------- tools/mruby/Makefile.orig | 77 ++++++++++++++++++++++++++++ 17 files changed, 527 insertions(+), 327 deletions(-) create mode 100644 CMakeLists.txt delete mode 100644 Makefile create mode 100644 Makefile.orig create mode 100644 build/.gitkeep create mode 100644 mrblib/CMakeLists.txt delete mode 100644 mrblib/Makefile create mode 100644 mrblib/Makefile.orig create mode 100644 src/CMakeLists.txt delete mode 100644 src/Makefile create mode 100644 src/Makefile.orig create mode 100644 tools/mrbc/CMakeLists.txt delete mode 100644 tools/mrbc/Makefile create mode 100644 tools/mrbc/Makefile.orig create mode 100644 tools/mruby/CMakeLists.txt delete mode 100644 tools/mruby/Makefile create mode 100644 tools/mruby/Makefile.orig diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..752222db0 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,124 @@ +# +# Cmake build system for muby by beoran@rubyforhe.org, 2012. +# Released under the same license as mruby. +# +# NOTE: the original Makefile build system had a few hacks in them, +# whch I didn't duplicate. In stead the build logic is like this: +# 1) First libritevm_object is built +# 2) From this libritevm_static.a is built. +# 2) Then mrbc is built and linked with libritevm_static.a . +# 4) Then libmrblib_object is builtfrom are built from the rb files in +# the mrblib subdirectory +# 5) Then libmrblib_object & libritevm_object are linked together into +# a single library libmrubylib_static.a +# 6) Finally, mruby is built and linked with libmrubylib_static.a +# +# As a result, applications that embed mruby will have to link against +# libmrubylib_static.a only.. +# +# TODO: make this work on windows too, support build options to generate +# mrbconf.h, etc... +# + +# Setup +# Need at least cmake version 2.8.8 +cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR) +if(COMMAND cmake_policy) + cmake_policy(SET CMP0003 NEW) + cmake_policy(SET CMP0015 NEW) +endif(COMMAND cmake_policy) + +# Set the project name, we use only plain C. +project(MRUBY C) + +# C compiler flags. +set(CMAKE_C_FLAGS "-Wall -g") +# should use -O3 if it's a release build.bin/mrb + + +# Version of mruby, useful for versoning .so and .dll files. +set(MRUBY_VERSION 1.0.0) +string(REGEX MATCH "^[0-9]+[.][0-9]+" MRUBY_SOVERSION ${MRUBY_VERSION}) +string(REPLACE "." "" MRUBY_DLL_SHORTVER ${MRUBY_SOVERSION}) + +# Search in the `cmake' directory for additional CMake modules if needed. +list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) + +# Search for C header files in these directories. +include_directories(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/src) + +# Search for libaries too link tools with here: +link_directories("lib") +link_directories("mrblib") + +# put binaries that get built in bin +set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) +# Put libraries that get built into `lib'. +set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) + +if(NOT IPHONE) +option(SHARED "Build shared libraries" on) +set(BUILD_SHARED_LIBS ${SHARED}) # actual CMake variable +endif(NOT IPHONE) + +# On some 64-bit platforms, libraries should be installed into `lib64' +# instead of `lib'. Set this to 64 to do that. +set(LIB_SUFFIX "" CACHE STRING "Suffix for 'lib' directories, e.g. '64'") + +set(FRAMEWORK_INSTALL_PREFIX "/Library/Frameworks" CACHE STRING + "Directory in which to install Mac OS X frameworks") + +# Options (none yet). + +# Set up compilers. + +include(CheckCSourceCompiles) + +# Begin tests + +include(CheckFunctionExists) +include(CheckIncludeFiles) +include(CheckLibraryExists) +include(CheckSymbolExists) +include(CheckTypeSize) +include(FindPkgConfig) +include(TestBigEndian) + + +# lib Libraries that mruby uses itself (just libm) +set(MRUBY_LIBS m) + +# Compile the sources to make libritevm +add_subdirectory("src") + +# compile the compiler tool +add_subdirectory("tools/mrbc") + +# compile libmrblib +add_subdirectory("mrblib") + +# generate final library +add_library(mrubylib_static STATIC + $ $) +add_library(mrubylib SHARED + $ $) + +install(TARGETS mrubylib mrubylib_static + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib) + +# compile the interpreter tool +add_subdirectory("tools/mruby") + +# for make install, install the header files +install(FILES include/mruby.h DESTINATION include) +install(FILES include/mrbconf.h DESTINATION include) +install(DIRECTORY include/mruby DESTINATION include) +# For now, also install header files in src dir to ${PREFIX}include/mruby +file(GLOB SRC_HEADERS src/*.h) +install (FILES ${SRC_HEADERS} DESTINATION include/mruby) + + + + + diff --git a/INSTALL b/INSTALL index 92851c86d..0aae03655 100644 --- a/INSTALL +++ b/INSTALL @@ -1,17 +1,21 @@ * Prerequisites 1. Make sure you have bison (http://www.gnu.org/software/bison/) installed in your system. + 2 Make sure you have cmake (http://www.cmake.org version 2.8.8 or + later installed). + * Compilation and Installation - 1. Run make in the top directory. - + 1. Run cmake . ; make ; make install in the top directory. + + This command will create the following directories and store libraries and binaries files into them. - * bin - * lib - * include + * /usr/local/bin + * /usr/local/lib + * /usr/local/include If an error occurs when compiling mruby, it will be helpful for others if you send a detailed report to the developers that includes the error log, machine, diff --git a/Makefile b/Makefile deleted file mode 100644 index fc22089a9..000000000 --- a/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# makefile discription. -# basic build file for mruby - -# compiler, linker (gcc) -CC = gcc -LL = gcc -DEBUG_MODE = 1 -ifeq ($(DEBUG_MODE),1) -CFLAGS = -g -O3 -else -CFLAGS = -O3 -endif -ALL_CFLAGS = -Wall -Werror-implicit-function-declaration $(CFLAGS) -ifeq ($(OS),Windows_NT) - MAKE_FLAGS = --no-print-directory CC=$(CC) LL=$(LL) ALL_CFLAGS='$(ALL_CFLAGS)' -else - MAKE_FLAGS = --no-print-directory CC='$(CC)' LL='$(LL)' ALL_CFLAGS='$(ALL_CFLAGS)' -endif - -############################## -# generic build targets, rules - -.PHONY : all -all : - @$(MAKE) -C src $(MAKE_FLAGS) - @$(MAKE) -C mrblib $(MAKE_FLAGS) - @$(MAKE) -C tools/mruby $(MAKE_FLAGS) - @$(MAKE) -C tools/mirb $(MAKE_FLAGS) - -# mruby test -.PHONY : test -test : all - @$(MAKE) -C test $(MAKE_FLAGS) - -# clean up -.PHONY : clean -clean : - @$(MAKE) clean -C src $(MAKE_FLAGS) - @$(MAKE) clean -C tools/mruby $(MAKE_FLAGS) - @$(MAKE) clean -C tools/mirb $(MAKE_FLAGS) - @$(MAKE) clean -C test $(MAKE_FLAGS) diff --git a/Makefile.orig b/Makefile.orig new file mode 100644 index 000000000..fc22089a9 --- /dev/null +++ b/Makefile.orig @@ -0,0 +1,41 @@ +# makefile discription. +# basic build file for mruby + +# compiler, linker (gcc) +CC = gcc +LL = gcc +DEBUG_MODE = 1 +ifeq ($(DEBUG_MODE),1) +CFLAGS = -g -O3 +else +CFLAGS = -O3 +endif +ALL_CFLAGS = -Wall -Werror-implicit-function-declaration $(CFLAGS) +ifeq ($(OS),Windows_NT) + MAKE_FLAGS = --no-print-directory CC=$(CC) LL=$(LL) ALL_CFLAGS='$(ALL_CFLAGS)' +else + MAKE_FLAGS = --no-print-directory CC='$(CC)' LL='$(LL)' ALL_CFLAGS='$(ALL_CFLAGS)' +endif + +############################## +# generic build targets, rules + +.PHONY : all +all : + @$(MAKE) -C src $(MAKE_FLAGS) + @$(MAKE) -C mrblib $(MAKE_FLAGS) + @$(MAKE) -C tools/mruby $(MAKE_FLAGS) + @$(MAKE) -C tools/mirb $(MAKE_FLAGS) + +# mruby test +.PHONY : test +test : all + @$(MAKE) -C test $(MAKE_FLAGS) + +# clean up +.PHONY : clean +clean : + @$(MAKE) clean -C src $(MAKE_FLAGS) + @$(MAKE) clean -C tools/mruby $(MAKE_FLAGS) + @$(MAKE) clean -C tools/mirb $(MAKE_FLAGS) + @$(MAKE) clean -C test $(MAKE_FLAGS) diff --git a/build/.gitkeep b/build/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/mrblib/CMakeLists.txt b/mrblib/CMakeLists.txt new file mode 100644 index 000000000..30881c611 --- /dev/null +++ b/mrblib/CMakeLists.txt @@ -0,0 +1,35 @@ +# build mrblib +# need custom commands +# Compile C source from merged mruby source + +file(GLOB MRBLIB_SRC_RB "*.rb") + +# generate the a single rubu file from all the existing ones. +add_custom_command(OUTPUT mrblib.rbtmp +COMMAND cat ${MRBLIB_SRC_RB} > mrblib.rbtmp +DEPENDS ${MRBLIB_SRC_RB} +) + +# generate the intermediate representation in C +add_custom_command(OUTPUT mrblib_irep.c +COMMAND echo -B mrblib_irep -o mrblib_irep.c mrblib.rbtmp +COMMAND mrbc -Bmrblib_irep -omrblib_irep.c mrblib.rbtmp +DEPENDS mrblib.rbtmp +) + +# finally generate the library's c file +add_custom_command(OUTPUT mrblib.c +COMMAND cat init_mrblib.c mrblib_irep.c > mrblib.c +DEPENDS init_mrblib.c mrblib_irep.c +) + +# only use this C file to generate mrblib. +set(MRBLIB_SRC_C mrblib.c) +# add_library(mrblib_static STATIC ${MRBLIB_SRC_C}) +add_library(mrblib_object OBJECT ${MRBLIB_SRC_C}) +# target_link_libraries(mrblib ritevm ${MRUBY_LIBS}) +# target_link_libraries(mrblib_static ritevm_static ${MRUBY_LIBS}) +# install(TARGETS mrblib mrblib_static +# LIBRARY DESTINATION lib +# ARCHIVE DESTINATION lib) + diff --git a/mrblib/Makefile b/mrblib/Makefile deleted file mode 100644 index d22c4509f..000000000 --- a/mrblib/Makefile +++ /dev/null @@ -1,73 +0,0 @@ -# makefile discription. -# basic build file for mruby library (Ruby part) - -# project-specific macros -# extension of the executable-file is modifiable(.exe .out ...) -BASEDIR = . -TARGET := mrblib -MLIB := $(TARGET).o -CLIB := $(TARGET).c -DLIB := $(TARGET).ctmp -RLIB := $(TARGET).rbtmp -DEPLIB := $(TARGET).d -MRB1 := $(BASEDIR)/*.rb -MRBS := $(MRB1) -LIBR0 := ../lib/libmruby_core.a -LIBR := ../lib/libmruby.a - -# C compiler (gcc) -CC = gcc -LL = gcc -AR = ar -DEBUG_MODE = 1 -ifeq ($(DEBUG_MODE),1) -CFLAGS = -g -else -CFLAGS = -O3 -endif -INCLUDES = -I../src -I../include -ALL_CFLAGS = -Wall -Werror-implicit-function-declaration $(CFLAGS) -ifeq ($(OS),Windows_NT) - MAKE_FLAGS = CC=$(CC) LL=$(LL) ALL_CFLAGS="$(ALL_CFLAGS)" -else - MAKE_FLAGS = CC='$(CC)' LL='$(LL)' ALL_CFLAGS='$(ALL_CFLAGS)' -endif - -# mruby compiler -ifeq ($(OS),Windows_NT) -MRBC = ../bin/mrbc.exe -else -MRBC = ../bin/mrbc -endif - -############################## -# generic build targets, rules - -.PHONY : all -all : $(LIBR) - -# update libmruby.a -$(LIBR) : $(MLIB) $(LIBR0) - cp $(LIBR0) $(LIBR) - $(AR) r $(LIBR) $(MLIB) - -# Compile mrblib source -$(MLIB) : $(CLIB) - $(CC) $(ALL_CFLAGS) -MMD $(INCLUDES) -c $(CLIB) -o $(MLIB) - -# Compile C source from merged mruby source -$(CLIB) : $(RLIB) $(MRBC) - $(MRBC) -Bmrblib_irep -o$(DLIB) $(RLIB); cat init_$(TARGET).c $(DLIB) > $@ - -$(MRBC) : ../src/opcode.h ../src/codegen.c ../src/parse.y - $(MAKE) -C ../tools/mrbc $(MAKE_FLAGS) - -# merge mruby sources -$(RLIB) : $(MRBS) - cat $? > $@ - -# clean up -.PHONY : clean -clean : - @echo "make: removing targets, objects and depend files of `pwd`" - -rm -f $(MRBC) $(MLIB) $(CLIB) $(RLIB) $(DLIB) $(DEPLIB) $(LIBR) diff --git a/mrblib/Makefile.orig b/mrblib/Makefile.orig new file mode 100644 index 000000000..d22c4509f --- /dev/null +++ b/mrblib/Makefile.orig @@ -0,0 +1,73 @@ +# makefile discription. +# basic build file for mruby library (Ruby part) + +# project-specific macros +# extension of the executable-file is modifiable(.exe .out ...) +BASEDIR = . +TARGET := mrblib +MLIB := $(TARGET).o +CLIB := $(TARGET).c +DLIB := $(TARGET).ctmp +RLIB := $(TARGET).rbtmp +DEPLIB := $(TARGET).d +MRB1 := $(BASEDIR)/*.rb +MRBS := $(MRB1) +LIBR0 := ../lib/libmruby_core.a +LIBR := ../lib/libmruby.a + +# C compiler (gcc) +CC = gcc +LL = gcc +AR = ar +DEBUG_MODE = 1 +ifeq ($(DEBUG_MODE),1) +CFLAGS = -g +else +CFLAGS = -O3 +endif +INCLUDES = -I../src -I../include +ALL_CFLAGS = -Wall -Werror-implicit-function-declaration $(CFLAGS) +ifeq ($(OS),Windows_NT) + MAKE_FLAGS = CC=$(CC) LL=$(LL) ALL_CFLAGS="$(ALL_CFLAGS)" +else + MAKE_FLAGS = CC='$(CC)' LL='$(LL)' ALL_CFLAGS='$(ALL_CFLAGS)' +endif + +# mruby compiler +ifeq ($(OS),Windows_NT) +MRBC = ../bin/mrbc.exe +else +MRBC = ../bin/mrbc +endif + +############################## +# generic build targets, rules + +.PHONY : all +all : $(LIBR) + +# update libmruby.a +$(LIBR) : $(MLIB) $(LIBR0) + cp $(LIBR0) $(LIBR) + $(AR) r $(LIBR) $(MLIB) + +# Compile mrblib source +$(MLIB) : $(CLIB) + $(CC) $(ALL_CFLAGS) -MMD $(INCLUDES) -c $(CLIB) -o $(MLIB) + +# Compile C source from merged mruby source +$(CLIB) : $(RLIB) $(MRBC) + $(MRBC) -Bmrblib_irep -o$(DLIB) $(RLIB); cat init_$(TARGET).c $(DLIB) > $@ + +$(MRBC) : ../src/opcode.h ../src/codegen.c ../src/parse.y + $(MAKE) -C ../tools/mrbc $(MAKE_FLAGS) + +# merge mruby sources +$(RLIB) : $(MRBS) + cat $? > $@ + +# clean up +.PHONY : clean +clean : + @echo "make: removing targets, objects and depend files of `pwd`" + -rm -f $(MRBC) $(MLIB) $(CLIB) $(RLIB) $(DLIB) $(DEPLIB) $(LIBR) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 000000000..b25711ae3 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,23 @@ +# Build the C files in the mruby src directory + +cmake_minimum_required(VERSION 2.6) +if(CMAKE_VERSION VERSION_GREATER "2.8.0") + cmake_policy(SET CMP0012 OLD) +endif() + +find_package(BISON) +BISON_TARGET(mruby parse.y ${CMAKE_CURRENT_BINARY_DIR}/parse.c) + +# configure_file("config.in.h" "config.h") +file(GLOB MRUBY_SRC_C "*.c") +add_library(ritevm_object OBJECT ${MRUBY_SRC_C}) +add_library(ritevm_static STATIC $) +add_library(ritevm SHARED $) + + +# target_link_libraries(ritevm ${MRUBY_LIBS}) +# target_link_libraries(ritevm_static ${MRUBY_LIBS}) +# install(TARGETS ritevm ritevm_static +# LIBRARY DESTINATION lib +# ARCHIVE DESTINATION lib) + diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index 14485041d..000000000 --- a/src/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# makefile discription. -# 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 -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 - -# compiler, linker (gcc) -CC = gcc -LL = gcc -AR = ar -YACC = bison - -DEBUG_MODE = 1 -ifeq ($(DEBUG_MODE),1) -CFLAGS = -g -O3 -else -CFLAGS = -O3 -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 complie -$(OBJY) : $(YC) - $(CC) $(ALL_CFLAGS) -MMD $(INCLUDES) -c $(YC) -o $(OBJY) - -# yacc complie -$(YC) : $(YSRC) - $(YACC) -o $(YC) $(YSRC) - -# 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/Makefile.orig b/src/Makefile.orig new file mode 100644 index 000000000..14485041d --- /dev/null +++ b/src/Makefile.orig @@ -0,0 +1,64 @@ +# makefile discription. +# 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 +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 + +# compiler, linker (gcc) +CC = gcc +LL = gcc +AR = ar +YACC = bison + +DEBUG_MODE = 1 +ifeq ($(DEBUG_MODE),1) +CFLAGS = -g -O3 +else +CFLAGS = -O3 +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 complie +$(OBJY) : $(YC) + $(CC) $(ALL_CFLAGS) -MMD $(INCLUDES) -c $(YC) -o $(OBJY) + +# yacc complie +$(YC) : $(YSRC) + $(YACC) -o $(YC) $(YSRC) + +# 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/tools/mrbc/CMakeLists.txt b/tools/mrbc/CMakeLists.txt new file mode 100644 index 000000000..073ac1743 --- /dev/null +++ b/tools/mrbc/CMakeLists.txt @@ -0,0 +1,7 @@ +# builds tools/mrbc +file(GLOB MRBC_SRC_C "*.c") +add_executable(mrbc ${MRBC_SRC_C}) +target_link_libraries(mrbc ritevm_static ${MRUBY_LIBS}) +install(TARGETS mrbc RUNTIME DESTINATION bin) + + diff --git a/tools/mrbc/Makefile b/tools/mrbc/Makefile deleted file mode 100644 index 9ecda4a59..000000000 --- a/tools/mrbc/Makefile +++ /dev/null @@ -1,67 +0,0 @@ -# makefile discription. -# basic build file for mruby-compiler - -# project-specific macros -# extension of the executable-file is modifiable(.exe .out ...) -BASEDIR := ../../src -TARGET := ../../bin/mrbc -LIBR := ../../lib/libmruby_core.a -ifeq ($(OS),Windows_NT) -EXE := $(TARGET).exe -else -EXE := $(TARGET) -endif -EXCEPT1 := -OBJ0 := $(patsubst %.c,%.o,$(wildcard $(BASEDIR)/../tools/mrbc/*.c)) -#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 := $(OBJ0) - -# libraries, includes -LIBS = -lm -INCLUDES = -I$(BASEDIR) -I$(BASEDIR)/../include - -# compiler, linker (gcc) -CC = gcc -LL = gcc -YACC = bison -DEBUG_MODE = 1 -ifeq ($(DEBUG_MODE),1) -CFLAGS = -g -O3 -else -CFLAGS = -O3 -endif -ALL_CFLAGS = -Wall -Werror-implicit-function-declaration $(CFLAGS) -ifeq ($(OS),Windows_NT) - MAKE_FLAGS = CC=$(CC) LL=$(LL) ALL_CFLAGS="$(ALL_CFLAGS)" -else - MAKE_FLAGS = CC='$(CC)' LL='$(LL)' ALL_CFLAGS='$(ALL_CFLAGS)' -endif - -############################## -# generic build targets, rules - -.PHONY : all -all : $(EXE) - -# executable constructed using linker from object files -$(EXE) : $(OBJS) $(LIBR) - $(LL) -o $@ $(OBJS) $(LIBR) $(LIBS) - --include $(OBJS:.o=.d) - -# objects compiled from source -$(OBJS) : %.o : %.c - $(CC) $(ALL_CFLAGS) -MMD $(INCLUDES) -c $< -o $@ - -# C library compile -$(LIBR) : - @$(MAKE) -C $(BASEDIR) $(MAKE_FLAGS) - -# clean up -.PHONY : clean -clean : - @echo "make: removing targets, objects and depend files of `pwd`" - -rm -f $(EXE) $(OBJS) - -rm -f $(OBJS:.o=.d) diff --git a/tools/mrbc/Makefile.orig b/tools/mrbc/Makefile.orig new file mode 100644 index 000000000..9ecda4a59 --- /dev/null +++ b/tools/mrbc/Makefile.orig @@ -0,0 +1,67 @@ +# makefile discription. +# basic build file for mruby-compiler + +# project-specific macros +# extension of the executable-file is modifiable(.exe .out ...) +BASEDIR := ../../src +TARGET := ../../bin/mrbc +LIBR := ../../lib/libmruby_core.a +ifeq ($(OS),Windows_NT) +EXE := $(TARGET).exe +else +EXE := $(TARGET) +endif +EXCEPT1 := +OBJ0 := $(patsubst %.c,%.o,$(wildcard $(BASEDIR)/../tools/mrbc/*.c)) +#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 := $(OBJ0) + +# libraries, includes +LIBS = -lm +INCLUDES = -I$(BASEDIR) -I$(BASEDIR)/../include + +# compiler, linker (gcc) +CC = gcc +LL = gcc +YACC = bison +DEBUG_MODE = 1 +ifeq ($(DEBUG_MODE),1) +CFLAGS = -g -O3 +else +CFLAGS = -O3 +endif +ALL_CFLAGS = -Wall -Werror-implicit-function-declaration $(CFLAGS) +ifeq ($(OS),Windows_NT) + MAKE_FLAGS = CC=$(CC) LL=$(LL) ALL_CFLAGS="$(ALL_CFLAGS)" +else + MAKE_FLAGS = CC='$(CC)' LL='$(LL)' ALL_CFLAGS='$(ALL_CFLAGS)' +endif + +############################## +# generic build targets, rules + +.PHONY : all +all : $(EXE) + +# executable constructed using linker from object files +$(EXE) : $(OBJS) $(LIBR) + $(LL) -o $@ $(OBJS) $(LIBR) $(LIBS) + +-include $(OBJS:.o=.d) + +# objects compiled from source +$(OBJS) : %.o : %.c + $(CC) $(ALL_CFLAGS) -MMD $(INCLUDES) -c $< -o $@ + +# C library compile +$(LIBR) : + @$(MAKE) -C $(BASEDIR) $(MAKE_FLAGS) + +# clean up +.PHONY : clean +clean : + @echo "make: removing targets, objects and depend files of `pwd`" + -rm -f $(EXE) $(OBJS) + -rm -f $(OBJS:.o=.d) diff --git a/tools/mruby/CMakeLists.txt b/tools/mruby/CMakeLists.txt new file mode 100644 index 000000000..ab0e3acc1 --- /dev/null +++ b/tools/mruby/CMakeLists.txt @@ -0,0 +1,7 @@ +# builds tools/mrbc +file(GLOB MRUBYBIN_SRC_C "*.c") +add_executable(mruby ${MRUBYBIN_SRC_C}) +target_link_libraries(mruby mrubylib_static ${MRUBY_LIBS}) +install(TARGETS mruby RUNTIME DESTINATION bin) + + diff --git a/tools/mruby/Makefile b/tools/mruby/Makefile deleted file mode 100644 index 052aa93d6..000000000 --- a/tools/mruby/Makefile +++ /dev/null @@ -1,77 +0,0 @@ -# makefile discription. -# basic build file for mruby executable - -# project-specific macros -# extension of the executable-file is modifiable(.exe .out ...) -BASEDIR = ../../src -TARGET := ../../bin/mruby -LIBR := ../../lib/libmruby.a -ifeq ($(OS),Windows_NT) -EXE := $(TARGET).exe -else -EXE := $(TARGET) -endif -OBJ0 := $(patsubst %.c,%.o,$(wildcard $(BASEDIR)/../tools/mruby/*.c)) -#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 := $(OBJ0) - -# ext libraries -#EXT1 := $(patsubst %.c,%.o,$(wildcard $(BASEDIR)/../ext/socket/*.c)) -EXTS := $(EXT1) - -# libraries, includes -LIBS = -lm -INCLUDES = -I$(BASEDIR) -I$(BASEDIR)/../include - -# compiler, linker (gcc) -CC = gcc -LL = gcc -YACC = bison -DEBUG_MODE = 1 -ifeq ($(DEBUG_MODE),1) -CFLAGS = -g -O3 -else -CFLAGS = -O3 -endif -ALL_CFLAGS = -Wall -Werror-implicit-function-declaration $(CFLAGS) -ifeq ($(OS),Windows_NT) - MAKE_FLAGS = CC=$(CC) LL=$(LL) ALL_CFLAGS="$(ALL_CFLAGS)" -else - MAKE_FLAGS = CC='$(CC)' LL='$(LL)' ALL_CFLAGS='$(ALL_CFLAGS)' -endif - -############################## -# generic build targets, rules - -.PHONY : all -all : $(LIBR) $(EXE) - -# executable constructed using linker from object files -$(EXE) : $(LIBR) $(OBJS) $(EXTS) - $(LL) -o $@ $(CFLAGS) $(OBJS) $(LIBR) $(EXTS) $(LIBS) - --include $(OBJS:.o=.d) - -# objects compiled from source -$(OBJS) : %.o : %.c - $(CC) $(ALL_CFLAGS) -MMD $(INCLUDES) -c $< -o $@ - -# C library compile -$(LIBR) : - @$(MAKE) -C $(BASEDIR) $(MAKE_FLAGS) - -# mruby library compile -# extend libraries complile -$(EXTS) : %.o : %.c - $(CC) $(ALL_CFLAGS) -MMD $(INCLUDES) -c $< -o $@ - -# clean up -.PHONY : clean #cleandep -clean : - $(MAKE) clean -C ../../mrblib $(MAKE_FLAGS) - $(MAKE) clean -C ../mrbc $(MAKE_FLAGS) - @echo "make: removing targets, objects and depend files of `pwd`" - -rm -f $(EXE) $(OBJS) - -rm -f $(OBJS:.o=.d) diff --git a/tools/mruby/Makefile.orig b/tools/mruby/Makefile.orig new file mode 100644 index 000000000..052aa93d6 --- /dev/null +++ b/tools/mruby/Makefile.orig @@ -0,0 +1,77 @@ +# makefile discription. +# basic build file for mruby executable + +# project-specific macros +# extension of the executable-file is modifiable(.exe .out ...) +BASEDIR = ../../src +TARGET := ../../bin/mruby +LIBR := ../../lib/libmruby.a +ifeq ($(OS),Windows_NT) +EXE := $(TARGET).exe +else +EXE := $(TARGET) +endif +OBJ0 := $(patsubst %.c,%.o,$(wildcard $(BASEDIR)/../tools/mruby/*.c)) +#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 := $(OBJ0) + +# ext libraries +#EXT1 := $(patsubst %.c,%.o,$(wildcard $(BASEDIR)/../ext/socket/*.c)) +EXTS := $(EXT1) + +# libraries, includes +LIBS = -lm +INCLUDES = -I$(BASEDIR) -I$(BASEDIR)/../include + +# compiler, linker (gcc) +CC = gcc +LL = gcc +YACC = bison +DEBUG_MODE = 1 +ifeq ($(DEBUG_MODE),1) +CFLAGS = -g -O3 +else +CFLAGS = -O3 +endif +ALL_CFLAGS = -Wall -Werror-implicit-function-declaration $(CFLAGS) +ifeq ($(OS),Windows_NT) + MAKE_FLAGS = CC=$(CC) LL=$(LL) ALL_CFLAGS="$(ALL_CFLAGS)" +else + MAKE_FLAGS = CC='$(CC)' LL='$(LL)' ALL_CFLAGS='$(ALL_CFLAGS)' +endif + +############################## +# generic build targets, rules + +.PHONY : all +all : $(LIBR) $(EXE) + +# executable constructed using linker from object files +$(EXE) : $(LIBR) $(OBJS) $(EXTS) + $(LL) -o $@ $(CFLAGS) $(OBJS) $(LIBR) $(EXTS) $(LIBS) + +-include $(OBJS:.o=.d) + +# objects compiled from source +$(OBJS) : %.o : %.c + $(CC) $(ALL_CFLAGS) -MMD $(INCLUDES) -c $< -o $@ + +# C library compile +$(LIBR) : + @$(MAKE) -C $(BASEDIR) $(MAKE_FLAGS) + +# mruby library compile +# extend libraries complile +$(EXTS) : %.o : %.c + $(CC) $(ALL_CFLAGS) -MMD $(INCLUDES) -c $< -o $@ + +# clean up +.PHONY : clean #cleandep +clean : + $(MAKE) clean -C ../../mrblib $(MAKE_FLAGS) + $(MAKE) clean -C ../mrbc $(MAKE_FLAGS) + @echo "make: removing targets, objects and depend files of `pwd`" + -rm -f $(EXE) $(OBJS) + -rm -f $(OBJS:.o=.d) -- cgit v1.2.3