diff options
author | Nowar Gu <nowar100@gmail.com> | 2011-07-05 15:45:04 +0800 |
---|---|---|
committer | Nowar Gu <nowar100@gmail.com> | 2011-07-05 15:45:04 +0800 |
commit | 3e688d7a44544ebf88f465d9f106ff96c9487e59 (patch) | |
tree | cb71f146830c86c1552b62e887451c98a80171a9 | |
parent | ec14e1f3eee88971aa4321b1ea9a48863dec1875 (diff) | |
download | gdk-3e688d7a44544ebf88f465d9f106ff96c9487e59.tar.gz |
Add building rule.
Now we can use $(info ...) to check whether the rules
is correct or not, but still not run practically.
-rw-r--r-- | build/core/build-local.mk | 13 | ||||
-rw-r--r-- | build/core/build-modules.mk | 44 | ||||
-rw-r--r-- | samples/hello-llvm/jni/Android-portable.mk | 2 | ||||
-rw-r--r-- | samples/hello-llvm/jni/test.cpp (renamed from samples/hello-llvm/jni/test.c) | 8 |
4 files changed, 62 insertions, 5 deletions
diff --git a/build/core/build-local.mk b/build/core/build-local.mk index 65d0ca4..6520a00 100644 --- a/build/core/build-local.mk +++ b/build/core/build-local.mk @@ -1,5 +1,7 @@ # TODO(Nowar): Let it more smart GDK_PROJECT_ROOT := $(shell pwd) +GDK_PROJECT_OBJ := $(GDK_PROJECT_ROOT)/obj/llvm +GDK_PROJECT_OUT := $(GDK_PROJECT_ROOT)/res/raw GDK_ROOT := $(GDK_PROJECT_ROOT)/../.. ifeq ($(NDK_ROOT),) @@ -20,7 +22,14 @@ ALL_BITCODE_MODULES := -include $(GDK_PROJECT_ROOT)/jni/Android-portable.mk # The first rule -all: bitcode_modules +all: clean bitcode_modules + +# TODO(Nowar): Do a real cleanup. +clean: +$(info rm -rf $(GDK_PROJECT_OBJ)) +$(info rm -rf $(GDK_PROJECT_OUT)/*.bc) +$(info mkdir -p $(GDK_PROJECT_OBJ)) +$(info mkdir -p $(GDK_PROJECT_OUT)) bitcode_modules: $(ALL_BITCODE_MODULES) @@ -33,4 +42,4 @@ include $(GDK_ROOT)/build/core/build-modules.mk # Trasnfer the control to NDK # # ############################################################################ -include $(NDK_ROOT)/build/core/build-local.mk +#include $(NDK_ROOT)/build/core/build-local.mk diff --git a/build/core/build-modules.mk b/build/core/build-modules.mk index f42a6ab..d3e3ae7 100644 --- a/build/core/build-modules.mk +++ b/build/core/build-modules.mk @@ -1,4 +1,44 @@ -# TODO(Nowar): Take out per each and build it. +# TODO(Nowar): Make codes below work. + +# +# $1: c source file name +# $2: bc file name +# $3: LOCAL_MODULE +# +define compile-c-to-bc +$(info $(BITCODE_CC) $(BITCODE_MODULE.$(3).PATH)/$(1) $(BITCODE_MODULE.$(3).CFLAGS) -o $(GDK_PROJECT_OBJ)/$(2)) +endef + +# +# $1: c++ source file name +# $2: bc file name +# $3: LOCAL_MODULE +# +define compile-cpp-to-bc +$(info $(BITCODE_CPP) $(BITCODE_MODULE,$(3).PATH)/$(1) $(BITCODE_MODULE.$(3).CPPFLAGS) -o $(GDK_PROJECT_OBJ)/$(2)) +endef + +# +# $1: source file names +# $2: LOCAL_MODULE +# +# TODO(Nowar): How could we separate C++ from C source? +# FIXME(Nowar): Handle C++ case +define cmd-build-source +$(foreach gdk_source, $(1),\ + $(call compile-c-to-bc,$(gdk_source),$(gdk_source:%.c=%.bc),$(2))\ +) +endef + +# +# $1: bc obj files name +# $2: LOCAL_MODULE +# +define cmd-link-bc +$(info $(BITCODE_LD) $(patsubst %.c,$(GDK_PROJECT_OBJ)/%.bc,$(1)) -o $(GDK_PROJECT_OUT)/lib$(2).bc) +endef + $(foreach gdk_module, $(ALL_BITCODE_MODULES),\ - $(info Android GDK: Compile $(BITCODE_MODULE.$(gdk_module).SRC_FILES) of LOCAL_MODULE $(gdk_module))\ + $(call cmd-build-source,$(BITCODE_MODULE.$(gdk_module).SRC_FILES),$(gdk_module))\ + $(call cmd-link-bc,$(BITCODE_MODULE.$(gdk_module).SRC_FILES),$(gdk_module))\ ) diff --git a/samples/hello-llvm/jni/Android-portable.mk b/samples/hello-llvm/jni/Android-portable.mk index fb75899..7d0062a 100644 --- a/samples/hello-llvm/jni/Android-portable.mk +++ b/samples/hello-llvm/jni/Android-portable.mk @@ -4,7 +4,7 @@ include $(CLEAR_VARS) LOCAL_MODULE := hello_llvm LOCAL_CFLAGS := -D NUM=7788 -LOCAL_SRC_FILES := hello_llvm.c test.c +LOCAL_SRC_FILES := hello_llvm.c test.cpp include $(BUILD_BITCODE) diff --git a/samples/hello-llvm/jni/test.c b/samples/hello-llvm/jni/test.cpp index 3af2201..bca7f1f 100644 --- a/samples/hello-llvm/jni/test.c +++ b/samples/hello-llvm/jni/test.cpp @@ -2,6 +2,14 @@ #define NUM 5566 #endif +#ifdef __cplusplus +extern "C" { +#endif + int test_func2() { return NUM; } + +#ifdef __cplusplus +} +#endif |