Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Basic app done

  • Loading branch information...
commit 92e37e8d10223f7d5aa80311b07d255894441ba6 0 parents
@ntavish authored
465 Makefile
@@ -0,0 +1,465 @@
+# openFrameworks universal makefile
+#
+# make help : shows this message
+# make Debug: makes the application with debug symbols
+# make Release: makes the app with optimizations
+# make: the same as make Release
+# make CleanDebug: cleans the Debug target
+# make CleanRelease: cleans the Release target
+# make clean: cleans everything
+#
+#
+# this should work with any OF app, just copy any example
+# change the name of the folder and it should compile
+# only .cpp support, don't use .c files
+# it will look for files in any folder inside the application
+# folder except that in the EXCLUDE_FROM_SOURCE variable
+# it doesn't autodetect include paths yet
+# add the include paths in the USER_CFLAGS variable
+# using the gcc syntax: -Ipath
+#
+# to add addons to your application, edit the addons.make file
+# in this directory and add the names of the addons you want to
+# include
+#
+# edit the following vars to customize the makefile
+
+include config.make
+
+ifeq ($(findstring Android,$(MAKECMDGOALS)),Android)
+ include $(OF_ROOT)/libs/openFrameworksCompiled/project/android/paths.make
+ ARCH = android
+ ifeq ($(shell uname),Darwin)
+ HOST_PLATFORM = darwin-x86
+ else
+ HOST_PLATFORM = linux-x86
+ endif
+endif
+
+ifeq ($(ARCH),android)
+ COMPILER_OPTIMIZATION = $(ANDROID_COMPILER_OPTIMIZATION)
+ NDK_PLATFORM = android-8
+else
+ COMPILER_OPTIMIZATION = $(USER_COMPILER_OPTIMIZATION)
+endif
+
+
+
+
+# you shouldn't modify anything below this line
+
+
+SHELL = /bin/sh
+ifneq ($(ARCH),android)
+ CXX = g++
+ ARCH = $(shell uname -m)
+ ifeq ($(ARCH),x86_64)
+ LIBSPATH=linux64
+ else
+ LIBSPATH=linux
+ endif
+else
+ ifeq ($(findstring Release_arm7,$(MAKECMDGOALS)),Release_arm7)
+ LIBSPATH =android/armeabi-v7a
+ else
+ LIBSPATH =android/armeabi
+ endif
+ TOOLCHAIN=arm-linux-androideabi-4.4.3
+ TOOLCHAIN_PATH=$(NDK_ROOT)/toolchains/$(TOOLCHAIN)/prebuilt/$(HOST_PLATFORM)/bin/
+ ANDROID_PREFIX=arm-linux-androideabi-
+ CC=$(NDK_ROOT)/toolchains/$(TOOLCHAIN)/prebuilt/$(HOST_PLATFORM)/bin/$(ANDROID_PREFIX)gcc
+ CXX=$(NDK_ROOT)/toolchains/$(TOOLCHAIN)/prebuilt/$(HOST_PLATFORM)/bin/$(ANDROID_PREFIX)g++
+ AR=$(NDK_ROOT)/toolchains/$(TOOLCHAIN)/prebuilt/$(HOST_PLATFORM)/bin/$(ANDROID_PREFIX)ar
+ SYSROOT=$(NDK_ROOT)/platforms/$(NDK_PLATFORM)/arch-arm/
+ CFLAGS += -nostdlib --sysroot=$(SYSROOT) -fno-short-enums
+ CFLAGS += -I"$(NDK_ROOT)/platforms/$(NDK_PLATFORM)/arch-arm/usr/include" -I"$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/include/" -I"$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/libs/armeabi/include"
+ CFLAGS += -DANDROID
+endif
+
+NODEPS = clean
+SED_EXCLUDE_FROM_SRC = $(shell echo $(EXCLUDE_FROM_SOURCE) | sed "s/,\(.*\)/,\1,/g" | sed "s/\([^,]*\),/ .\/\1%/g")
+ALL_SOURCES_DIRS = $(shell find . -type d)
+SOURCE_DIRS = $(filter-out $(SED_EXCLUDE_FROM_SRC), $(ALL_SOURCES_DIRS))
+SOURCES = $(shell find $(SOURCE_DIRS) -maxdepth 1 -mindepth 1 -name "*.cpp" -or -name "*.c" -or -name "*.cc")
+OBJFILES = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(SOURCES))))
+
+ifneq (,$(USER_SOURCE_DIR))
+ USER_SOURCES = $(shell find $(USER_SOURCE_DIR) -name "*.cpp" -or -name "*.c" -or -name "*.cc")
+ USER_OBJFILES = $(subst $(USER_SOURCE_DIR)/, ,$(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(USER_SOURCES)))))
+endif
+
+APPNAME = $(shell basename `pwd`)
+CORE_INCLUDES = $(shell find $(OF_ROOT)/libs/openFrameworks/ -type d)
+CORE_INCLUDE_FLAGS = $(addprefix -I,$(CORE_INCLUDES))
+INCLUDES = $(shell find $(OF_ROOT)/libs/*/include -type d | grep -v glu | grep -v quicktime | grep -v poco)
+INCLUDES_FLAGS = $(addprefix -I,$(INCLUDES))
+INCLUDES_FLAGS += -I$(OF_ROOT)/libs/poco/include
+ifeq ($(ARCH),android)
+ INCLUDES_FLAGS += -I$(OF_ROOT)/libs/glu/include_android
+else
+ INCLUDES_FLAGS += -I$(OF_ROOT)/libs/glu/include
+ INCLUDES_FLAGS += $(shell pkg-config glew gstreamer-0.10 gstreamer-video-0.10 gstreamer-base-0.10 libudev --cflags)
+ #check if gtk exists and add it
+ GTK = $(shell pkg-config gtk+-2.0 --exists; echo $$?)
+ ifeq ($(GTK),0)
+ CFLAGS += $(shell pkg-config gtk+-2.0 --cflags) -DOF_USING_GTK
+ SYSTEMLIBS += $(shell pkg-config gtk+-2.0 --libs)
+ endif
+
+ #check if mpg123 exists and add it
+ MPG123 = $(shell pkg-config libmpg123 --exists; echo $$?)
+ ifeq ($(MPG123),0)
+ CFLAGS += -DOF_USING_MPG123
+ SYSTEMLIBS += -lmpg123
+ endif
+endif
+LIB_STATIC = $(shell ls $(OF_ROOT)/libs/*/lib/$(LIBSPATH)/*.a 2> /dev/null | grep -v openFrameworksCompiled | grep -v Poco)
+LIB_SHARED = $(shell ls $(OF_ROOT)/libs/*/lib/$(LIBSPATH)/*.so 2> /dev/null | grep -v openFrameworksCompiled | sed "s/.*\\/lib\([^/]*\)\.so/-l\1/")
+LIB_STATIC += $(OF_ROOT)/libs/poco/lib/$(LIBSPATH)/libPocoNet.a $(OF_ROOT)/libs/poco/lib/$(LIBSPATH)/libPocoXML.a $(OF_ROOT)/libs/poco/lib/$(LIBSPATH)/libPocoUtil.a $(OF_ROOT)/libs/poco/lib/$(LIBSPATH)/libPocoFoundation.a
+LIB_PATHS_FLAGS = $(shell ls -d $(OF_ROOT)/libs/*/lib/$(LIBSPATH) | sed "s/\(\.*\)/-L\1/")
+
+CFLAGS += -Wall -fexceptions
+CFLAGS += -I.
+CFLAGS += $(INCLUDES_FLAGS)
+CFLAGS += $(CORE_INCLUDE_FLAGS)
+
+
+
+ifeq ($(ARCH),android)
+ LDFLAGS = --sysroot=$(SYSROOT) -nostdlib -L"$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/libs/armeabi"
+ SYSTEMLIBS += -lstdc++ -lsupc++ -lgcc -lz -lGLESv1_CM -llog -ldl -lm -lc
+else
+ LDFLAGS = -Wl,-rpath=./libs
+ SYSTEMLIBS += $(shell pkg-config jack glew gstreamer-0.10 gstreamer-video-0.10 gstreamer-base-0.10 gstreamer-app-0.10 libudev cairo --libs)
+ SYSTEMLIBS += -lglut -lGL -lasound -lopenal -lsndfile -lvorbis -lFLAC -logg -lfreeimage -lGLU
+endif
+
+
+ifeq ($(findstring addons.make,$(wildcard *.make)),addons.make)
+ ifneq ($(ARCH),android)
+ ADDONS = $(shell cat addons.make | grep -v ofxAndroid)
+ else
+ ADDONS = $(shell cat addons.make)
+ endif
+
+ ifneq ($(strip $(ADDONS)),)
+ ADDONS_REL_DIRS = $(addsuffix /src, $(ADDONS))
+ ADDONS_LIBS_REL_DIRS = $(addsuffix /libs, $(ADDONS))
+ ADDONS_DIRS = $(addprefix $(OF_ROOT)/addons/, $(ADDONS_REL_DIRS) )
+ ADDONS_LIBS_DIRS = $(addprefix $(OF_ROOT)/addons/, $(ADDONS_LIBS_REL_DIRS) )
+ ADDONS_BIN_LIBS_DIRS = $(addsuffix /*/lib/$(LIBSPATH), $(ADDONS_LIBS_DIRS) )
+
+ ADDONS_INCLUDES = $(ADDONS_DIRS)
+ ADDONS_INCLUDES = $(ADDONS_LIBS_DIRS)
+ ADDONS_INCLUDES += $(shell find $(ADDONS_DIRS) -type d 2> /dev/null)
+ ADDONS_INCLUDES += $(shell find $(ADDONS_LIBS_DIRS) -type d 2> /dev/null)
+ ADDONSCFLAGS = $(addprefix -I,$(ADDONS_INCLUDES))
+
+ ifeq ($(findstring libsorder.make,$(shell find $(ADDONS_BIN_LIBS_DIRS) -name libsorder.make 2> /dev/null)),libsorder.make)
+ ADDONS_LIBS_W_ORDER = $(shell cat $(shell find $(ADDONS_BIN_LIBS_DIRS) -name libsorder.make 2> /dev/null))
+ EXCLUDE_LIBS_FILTER = $(addprefix %,$(addsuffix .a,$(ADDONS_LIBS_W_ORDER)))
+ ADDONS_LIBS_STATICS = $(filter-out $(EXCLUDE_LIBS_FILTER), $(shell find $(ADDONS_BIN_LIBS_DIRS) -name *.a))
+ ADDONS_LIBS_STATICS += $(addprefix -l, $(ADDONS_LIBS_W_ORDER))
+ ADDONS_LIBS_STATICS += $(addprefix -L, $(shell find $(ADDONS_BIN_LIBS_DIRS) -name libsorder.make 2> /dev/null | sed s/libsorder.make//g))
+ else
+ ADDONS_LIBS_STATICS = $(shell find $(ADDONS_BIN_LIBS_DIRS) -name *.a 2> /dev/null)
+ endif
+
+ ADDONS_LIBS_SHARED = $(shell find $(ADDONS_BIN_LIBS_DIRS) -name *.so 2> /dev/null)
+ ADDONSLIBS = $(ADDONS_LIBS_STATICS)
+ ADDONSLIBS += $(ADDONS_LIBS_SHARED)
+
+
+ ADDONS_SOURCES = $(shell find $(ADDONS_DIRS) -name "*.cpp" -or -name "*.c" 2> /dev/null)
+ ADDONS_SOURCES += $(shell find $(ADDONS_LIBS_DIRS) -name "*.cpp" -or -name "*.c" -or -name "*.cc" 2>/dev/null)
+ ADDONS_OBJFILES = $(subst $(OF_ROOT)/, ,$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(ADDONS_SOURCES)))))
+ endif
+endif
+
+
+ifeq ($(findstring Debug,$(MAKECMDGOALS)),Debug)
+ TARGET_CFLAGS = -g
+ TARGET_LIBS = $(OF_ROOT)/libs/openFrameworksCompiled/lib/$(LIBSPATH)/libopenFrameworksDebug.a
+ TARGET_NAME = Debug
+endif
+
+ifeq ($(findstring Release,$(MAKECMDGOALS)),Release)
+ TARGET_CFLAGS = $(COMPILER_OPTIMIZATION)
+ TARGET_LIBS = $(OF_ROOT)/libs/openFrameworksCompiled/lib/$(LIBSPATH)/libopenFrameworks.a
+ TARGET_NAME = Release
+endif
+
+ifeq ($(ARCH),android)
+ ifeq ($(findstring Debug,$(MAKECMDGOALS)),Debug)
+ TARGET = libs/armeabi/libOFAndroidApp.so
+ TARGET_LIBS = $(OF_ROOT)/libs/openFrameworksCompiled/lib/$(ARCH)/libopenFrameworksDebug.a
+ LDFLAGS += -Wl,--fix-cortex-a8 -shared
+ USER_LIBS = $(USER_LIBS_ARM)
+ endif
+
+ ifeq ($(findstring Release,$(MAKECMDGOALS)),Release)
+ TARGET = libs/armeabi/libOFAndroidApp.so
+ TARGET_LIBS = $(OF_ROOT)/libs/openFrameworksCompiled/lib/$(ARCH)/libopenFrameworks.a
+ LDFLAGS += -Wl,--fix-cortex-a8 -shared
+ USER_LIBS = $(USER_LIBS_ARM)
+ endif
+
+ ifeq ($(findstring Release_arm7,$(MAKECMDGOALS)),Release_arm7)
+ TARGET_NAME = Release_arm7
+ TARGET_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mthumb
+ TARGET = libs/armeabi-v7a/libOFAndroidApp.so
+ TARGET_LIBS = $(OF_ROOT)/libs/openFrameworksCompiled/lib/$(ARCH)/libopenFrameworks_arm7.a
+ USER_LIBS = $(USER_LIBS_ARM7)
+ endif
+
+ ifeq ($(findstring Release_neon,$(MAKECMDGOALS)),Release_neon)
+ TARGET_NAME = Release_neon
+ TARGET_CFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=neon
+ TARGET = libs/armeabi-v7a/libOFAndroidApp_neon.so
+ TARGET_LIBS = $(OF_ROOT)/libs/openFrameworksCompiled/lib/$(ARCH)/libopenFrameworks_neon.a
+ USER_LIBS = $(USER_LIBS_NEON)
+ endif
+
+ ifeq ($(findstring TestLink,$(MAKECMDGOALS)),TestLink)
+ TARGET_NAME = Debug
+ TARGET_LIBS = $(OF_ROOT)/libs/openFrameworksCompiled/lib/$(ARCH)/libopenFrameworksDebug.a
+ LDFLAGS += -Wl,--entry=main,--fix-cortex-a8
+ BIN_NAME = $(APPNAME)
+ TARGET = obj/$(BIN_NAME)
+ USER_LIBS = $(USER_LIBS_ARM)
+ endif
+else
+ ifeq ($(findstring Debug,$(MAKECMDGOALS)),Debug)
+ BIN_NAME = $(APPNAME)_debug
+ TARGET = bin/$(BIN_NAME)
+ endif
+
+ ifeq ($(findstring Release,$(MAKECMDGOALS)),Release)
+ BIN_NAME = $(APPNAME)
+ TARGET = bin/$(BIN_NAME)
+ endif
+
+ ifeq ($(MAKECMDGOALS),)
+ TARGET_NAME = Release
+ BIN_NAME = $(APPNAME)
+ TARGET = bin/$(BIN_NAME)
+ TARGET_LIBS = $(OF_ROOT)/libs/openFrameworksCompiled/lib/$(LIBSPATH)/libopenFrameworks.a
+ endif
+endif
+
+ifeq ($(MAKECMDGOALS),clean)
+ TARGET = bin/$(APPNAME)_debug bin/$(APPNAME)
+ TARGET_NAME = Release
+endif
+
+
+OBJ_OUTPUT = obj/$(ARCH)$(TARGET_NAME)/
+CLEANTARGET = clean$(TARGET_NAME)
+
+OBJS = $(addprefix $(OBJ_OUTPUT), $(OBJFILES))
+DEPFILES = $(patsubst %.o,%.d,$(OBJS))
+
+USER_OBJS = $(addprefix $(OBJ_OUTPUT), $(USER_OBJFILES))
+DEPFILES += $(patsubst %.o,%.d,$(USER_OBJS))
+
+ifeq ($(findstring addons.make,$(wildcard *.make)),addons.make)
+ ADDONS_OBJS = $(addprefix $(OBJ_OUTPUT), $(ADDONS_OBJFILES))
+ DEPFILES += $(patsubst %.o,%.d,$(ADDONS_OBJS))
+endif
+
+.PHONY: Debug Release all after afterDebugAndroid afterReleaseAndroid
+
+Release: $(TARGET) after
+
+Debug: $(TARGET) after
+
+all:
+ $(MAKE) Release
+
+DebugAndroid: $(TARGET)
+
+ReleaseAndroid: $(TARGET)
+
+Release_arm7Android: $(TARGET)
+
+Release_neonAndroid: $(TARGET) afterReleaseAndroid
+
+TestLinkAndroid: $(TARGET) afterDebugAndroid
+
+AndroidDebug:
+ $(MAKE) DebugAndroid
+ $(MAKE) TestLinkAndroid
+
+AndroidRelease:
+ $(MAKE) ReleaseAndroid
+ $(MAKE) Release_arm7Android
+ $(MAKE) Release_neonAndroid
+
+
+#This rule does the compilation
+#$(OBJS): $(SOURCES)
+$(OBJ_OUTPUT)%.o: %.cpp
+ @echo "compiling object for: " $<
+ mkdir -p $(@D)
+ $(CXX) -c $(TARGET_CFLAGS) $(CFLAGS) $(ADDONSCFLAGS) $(USER_CFLAGS) -MMD -MP -MF$(OBJ_OUTPUT)$*.d -MT$(OBJ_OUTPUT)$*.d -o$@ -c $<
+
+$(OBJ_OUTPUT)%.o: %.c
+ @echo "compiling object for: " $<
+ mkdir -p $(@D)
+ $(CC) -c $(TARGET_CFLAGS) $(CFLAGS) $(ADDONSCFLAGS) $(USER_CFLAGS) -MMD -MP -MF$(OBJ_OUTPUT)$*.d -MT$(OBJ_OUTPUT)$*.d -o$@ -c $<
+
+$(OBJ_OUTPUT)%.o: %.cc
+ @echo "compiling object for: " $<
+ mkdir -p $(@D)
+ $(CC) -c $(TARGET_CFLAGS) $(CFLAGS) $(ADDONSCFLAGS) $(USER_CFLAGS) -MMD -MP -MF$(OBJ_OUTPUT)$*.d -MT$(OBJ_OUTPUT)$*.d -o$@ -c $<
+
+$(OBJ_OUTPUT)%.o: $(OF_ROOT)/%.cpp
+ @echo "compiling addon object for" $<
+ mkdir -p $(@D)
+ $(CXX) $(TARGET_CFLAGS) $(CFLAGS) $(ADDONSCFLAGS) $(USER_CFLAGS) -MMD -MP -MF$(OBJ_OUTPUT)$*.d -MT$(OBJ_OUTPUT)$*.d -o $@ -c $<
+
+$(OBJ_OUTPUT)%.o: $(OF_ROOT)/%.c
+ @echo "compiling addon object for" $<
+ mkdir -p $(@D)
+ $(CC) $(TARGET_CFLAGS) $(CFLAGS) $(ADDONSCFLAGS) $(USER_CFLAGS) -MMD -MP -MF$(OBJ_OUTPUT)$*.d -MT$(OBJ_OUTPUT)$*.d -o $@ -c $<
+
+$(OBJ_OUTPUT)%.o: $(OF_ROOT)/%.cc
+ @echo "compiling addon object for" $<
+ mkdir -p $(@D)
+ $(CC) $(TARGET_CFLAGS) $(CFLAGS) $(ADDONSCFLAGS) $(USER_CFLAGS) -MMD -MP -MF$(OBJ_OUTPUT)$*.d -MT$(OBJ_OUTPUT)$*.d -o $@ -c $<
+
+$(OBJ_OUTPUT)%.o: $(USER_SOURCE_DIR)/%.c
+ @echo "compiling object for: " $<
+ mkdir -p $(@D)
+ $(CC) $(TARGET_CFLAGS) $(CFLAGS) $(ADDONSCFLAGS) $(USER_CFLAGS) -MMD -MP -MF$(OBJ_OUTPUT)$*.d -MT$(OBJ_OUTPUT)$*.d -o$@ -c $<
+
+$(OBJ_OUTPUT)%.o: $(USER_SOURCE_DIR)/%.cc
+ @echo "compiling object for: " $<
+ mkdir -p $(@D)
+ $(CC) $(TARGET_CFLAGS) $(CFLAGS) $(ADDONSCFLAGS) $(USER_CFLAGS) -MMD -MP -MF$(OBJ_OUTPUT)$*.d -MT$(OBJ_OUTPUT)$*.d -o$@ -c $<
+
+$(OBJ_OUTPUT)%.o: $(USER_SOURCE_DIR)/%.cpp
+ @echo "compiling object for: " $<
+ mkdir -p $(@D)
+ $(CXX) $(TARGET_CFLAGS) $(CFLAGS) $(ADDONSCFLAGS) $(USER_CFLAGS) -MMD -MP -MF$(OBJ_OUTPUT)$*.d -MT$(OBJ_OUTPUT)$*.d -o$@ -c $<
+
+$(TARGET): $(OBJS) $(ADDONS_OBJS) $(USER_OBJS) $(TARGET_LIBS) $(LIB_STATIC) Makefile
+ @echo 'linking $(TARGET) $(SOURCE_DIRS)'
+ mkdir -p $(@D)
+ $(CXX) -o $@ $(OBJS) $(ADDONS_OBJS) $(USER_OBJS) $(LDFLAGS) $(USER_LDFLAGS) $(TARGET_LIBS) $(ADDONSLIBS) $(USER_LIBS) $(LIB_STATIC) $(LIB_PATHS_FLAGS) $(LIB_SHARED) $(SYSTEMLIBS)
+
+-include $(DEPFILES)
+
+.PHONY: clean cleanDebug cleanRelease CleanAndroid
+clean:
+ rm -rf $(OBJ_OUTPUT)
+ rm -f $(TARGET)
+ rm -r bin/libs
+
+$(CLEANTARGET):
+ rm -rf $(OBJ_OUTPUT)
+ rm -f $(TARGET)
+ rm -rf bin/libs
+
+CleanAndroid:
+ rm -Rf obj
+ rm -f libs/armeabi-v7a/libOFAndroidApp.so
+ rm -f libs/armeabi/libOFAndroidApp.so
+ rm -f obj/$(APPNAME)
+
+
+afterDebugAndroid:$(TARGET)
+ @if [ -d libs/armeabi-v7a ]; then rm -r libs/armeabi-v7a; fi
+
+ @cp $(NDK_ROOT)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/gdbserver libs/armeabi
+
+ #create gdb.setup for armeabi
+ @echo "set solib-search-path $(PWD)/obj/local/armeabi:$(PWD)/libs/armeabi" > libs/armeabi/gdb.setup
+ @echo "directory $(NDK_ROOT)/platforms/$(NDK_PLATFORM)/arch-arm/usr/include" >> libs/armeabi/gdb.setup
+ @echo "directory $(PWD)/src" >> libs/armeabi/gdb.setup
+ @echo "directory $(NDK_ROOT)/sources/cxx-stl/system" >> libs/armeabi/gdb.setup
+ @echo "directory $(PWD)/libs/armeabi" >> libs/armeabi/gdb.setup
+ @echo "" >> libs/armeabi/gdb.setup
+
+ @if [ ! -d jni ]; then mkdir jni; fi
+ @echo "APP_ABI := armeabi" > jni/Application.mk
+ @echo "#LOCAL_MODULE := OFAndroidApp" > jni/Android.mk
+
+afterReleaseAndroid:$(TARGET)
+ @if [ -f obj/$(BIN_NAME) ]; then rm obj/$(BIN_NAME); fi
+
+ @cp $(OF_ROOT)/libs/openFrameworksCompiled/project/android/libneondetection.so libs/armeabi-v7a/
+ @cp $(NDK_ROOT)/toolchains/arm-linux-androideabi-4.4.3/prebuilt/gdbserver libs/armeabi-v7a
+
+ #create gdb.setup for armeabi-v7a
+ @echo "set solib-search-path $(PWD)/obj/local/armeabi-v7a:$(PWD)/libs/armeabi-v7a" > libs/armeabi-v7a/gdb.setup
+ @echo "directory $(NDK_ROOT)/platforms/$(NDK_PLATFORM)/arch-arm/usr/include" >> libs/armeabi-v7a/gdb.setup
+ @echo "directory $(PWD)/src" >> libs/armeabi-v7a/gdb.setup
+ @echo "directory $(NDK_ROOT)/sources/cxx-stl/system" >> libs/armeabi-v7a/gdb.setup
+ @echo "directory $(PWD)/libs/armeabi-v7a" >> libs/armeabi-v7a/gdb.setup
+ @echo "" >> libs/armeabi-v7a/gdb.setup
+
+ @if [ ! -d jni ]; then mkdir jni; fi
+ @echo "APP_ABI := armeabi armeabi-v7a" > jni/Application.mk
+ @echo "#LOCAL_MODULE := OFAndroidApp" > jni/Android.mk
+
+RESNAME=$(shell echo $(APPNAME)Resources | tr '[A-Z]' '[a-z]')
+
+AndroidInstall:
+ if [ -d "bin/data" ]; then \
+ mkdir -p res/raw; \
+ rm res/raw/$(RESNAME).zip; \
+ cd bin/data; \
+ zip -r ../../res/raw/$(RESNAME).zip *; \
+ cd ../..; \
+ fi
+ if [ -f obj/$(BIN_NAME) ]; then rm obj/$(BIN_NAME); fi
+ #touch AndroidManifest.xml
+ $(SDK_ROOT)/tools/android update project --target $(NDK_PLATFORM) --path $(PROJECT_PATH)
+ ant debug
+ cp bin/OFActivity-debug.apk bin/$(APPNAME).apk
+ #if [ "$(shell $(SDK_ROOT)/platform-tools/adb get-state)" = "device" ]; then
+ $(SDK_ROOT)/platform-tools/adb install -r bin/$(APPNAME).apk;
+ #fi
+ $(SDK_ROOT)/platform-tools/adb shell am start -a android.intent.action.MAIN -n cc.openframeworks.$(APPNAME)/cc.openframeworks.$(APPNAME).OFActivity
+
+
+after:$(TARGET)
+ cp -r $(OF_ROOT)/export/$(LIBSPATH)/libs bin/
+ @echo
+ @echo " compiling done"
+ @echo " to launch the application"
+ @echo
+ @echo " cd bin"
+ @echo " ./$(BIN_NAME)"
+ @echo
+
+
+.PHONY: help
+help:
+ @echo
+ @echo openFrameworks universal makefile
+ @echo
+ @echo targets:
+ @echo "make Debug: builds the application with debug symbols"
+ @echo "make Release: builds the app with optimizations"
+ @echo "make: = make Release"
+ @echo "make all: = make Release"
+ @echo "make CleanDebug: cleans the Debug target"
+ @echo "make CleanRelease: cleans the Release target"
+ @echo "make clean: cleans everything"
+ @echo
+ @echo this should work with any OF app, just copy any example
+ @echo change the name of the folder and it should compile
+ @echo "only .cpp support, don't use .c files"
+ @echo it will look for files in any folder inside the application
+ @echo folder except that in the EXCLUDE_FROM_SOURCE variable.
+ @echo "it doesn't autodetect include paths yet"
+ @echo "add the include paths editing the var USER_CFLAGS"
+ @echo at the beginning of the makefile using the gcc syntax:
+ @echo -Ipath
+ @echo
+ @echo to add addons to your application, edit the addons.make file
+ @echo in this directory and add the names of the addons you want to
+ @echo include
+ @echo
1  addons.make
@@ -0,0 +1 @@
+ofxOpenCv
BIN  bin/data/image.bmp
Binary file not shown
34 config.make
@@ -0,0 +1,34 @@
+# add custom variables to this file
+
+# OF_ROOT allows to move projects outside apps/* just set this variable to the
+# absoulte path to the OF root folder
+
+OF_ROOT = /home/tavish/Documents/projects/of_preRelease_v007_linux/
+
+
+# USER_CFLAGS allows to pass custom flags to the compiler
+# for example search paths like:
+# USER_CFLAGS = -I src/objects
+
+USER_CFLAGS = #`pkg-config --cflags opencv`
+
+
+# USER_LDFLAGS allows to pass custom flags to the linker
+# for example libraries like:
+# USER_LD_FLAGS = libs/libawesomelib.a
+
+USER_LDFLAGS = #`pkg-config --libs opencv`
+
+
+# use this to add system libraries for example:
+# USER_LIBS = -lpango
+
+USER_LIBS =
+
+
+# change this to add different compiler optimizations to your project
+
+USER_COMPILER_OPTIMIZATION = -march=native -mtune=native -Os
+
+
+EXCLUDE_FROM_SOURCE="bin,.xcodeproj,obj"
17 src/main.cpp
@@ -0,0 +1,17 @@
+#include "ofMain.h"
+#include "testApp.h"
+#include "ofAppGlutWindow.h"
+#include <cstdlib>
+
+//========================================================================
+int main( ){
+
+ ofAppGlutWindow window;
+ ofSetupOpenGL(&window, 1024,600, OF_GAME_MODE); // <-------- setup the GL context
+
+ // this kicks off the running of my app
+ // can be OF_WINDOW or OF_FULLSCREEN
+ // pass in width and height too:
+ ofRunApp( new testApp());
+
+}
106 src/testApp.cpp
@@ -0,0 +1,106 @@
+#include "testApp.h"
+#include "cv.h"
+#include "highgui.h"
+
+//--------------------------------------------------------------
+void testApp::setup()
+{
+ img=cvLoadImage("data/image.bmp",CV_LOAD_IMAGE_COLOR);
+ cvConvertImage(img,img, CV_CVTIMG_SWAP_RB);
+ if(img==NULL)
+ {
+ printf("could not load image\n");
+ ::exit(1);
+ }
+ temp = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);
+ disp = cvCreateImage(cvGetSize(img), img->depth, 3);
+ cvCopyImage(img, disp);
+
+ image.allocate(img->width, img->height);
+ image=img;
+
+ tree = new quadtree(0,0,ofGetScreenWidth(), ofGetScreenHeight());
+
+ cvZero(temp);
+}
+
+//--------------------------------------------------------------
+void testApp::update()
+{
+ while(!drawThis.empty())
+ {
+ quadtree *item;
+ item=drawThis.front();
+ drawThis.pop();
+ CvScalar col[4];
+
+ item->part();
+ for(int i=0;i<4;i++)
+ {
+ cvZero(temp);
+ cvRectangle(temp, cvPoint(item->child[i]->x1,item->child[i]->y1),
+ cvPoint(item->child[i]->x2,item->child[i]->y2), cvScalar(255,255,255,255),
+ CV_FILLED, 8, 0);
+
+ col[i] = cvAvg(img, temp);
+
+ cvRectangle(disp,cvPoint(item->child[i]->x1,item->child[i]->y1),
+ cvPoint(item->child[i]->x2,item->child[i]->y2), col[i],
+ CV_FILLED, 8, 0 );
+ }
+ image=disp;
+ }
+}
+
+//--------------------------------------------------------------
+void testApp::draw()
+{
+ image.draw(0,0);
+}
+
+//--------------------------------------------------------------
+void testApp::keyPressed(int key){
+ if(key=='s')
+ cvSaveImage("data/save.bmp", disp);
+}
+
+//--------------------------------------------------------------
+void testApp::keyReleased(int key){
+
+}
+
+//--------------------------------------------------------------
+void testApp::mouseMoved(int x, int y ){
+
+}
+
+//--------------------------------------------------------------
+void testApp::mouseDragged(int x, int y, int button){
+drawThis.push(tree->contains(x,y));
+}
+
+//--------------------------------------------------------------
+void testApp::mousePressed(int x, int y, int button)
+{
+ drawThis.push(tree->contains(x,y));
+}
+
+//--------------------------------------------------------------
+void testApp::mouseReleased(int x, int y, int button){
+
+}
+
+//--------------------------------------------------------------
+void testApp::windowResized(int w, int h){
+
+}
+
+//--------------------------------------------------------------
+void testApp::gotMessage(ofMessage msg){
+
+}
+
+//--------------------------------------------------------------
+void testApp::dragEvent(ofDragInfo dragInfo){
+
+}
122 src/testApp.h
@@ -0,0 +1,122 @@
+#pragma once
+
+#include "ofMain.h"
+#include "ofxOpenCv.h"
+#include "cv.h"
+#include "highgui.h"
+#include <queue>
+
+class quadtree
+{
+ public:
+ int x1;
+ int y1;
+
+ int x2;
+ int y2;
+
+ quadtree *child[4];
+
+ quadtree()
+ {
+ for(int i=0; i<4;i++)
+ child[i]=NULL;
+ }
+
+ quadtree(int ax1, int ay1, int ax2, int ay2)
+ {
+ x1=ax1;
+ x2=ax2;
+ y1=ay1;
+ y2=ay2;
+ for(int i=0; i<4;i++)
+ child[i]=NULL;
+ }
+
+ void part()
+ {
+ int x[]={x1,(x1+x2)/2,x2};
+ int y[]={y1,(y1+y2)/2,y2};
+ for(int i=0;i<4;i++)
+ {
+ child[i]=new quadtree();
+ }
+
+ child[0]->x1=x[0];
+ child[0]->y1=y[0];
+ child[0]->x2=x[1];
+ child[0]->y2=y[1];
+
+ child[1]->x1=x[1]+1;
+ child[1]->y1=y[0];
+ child[1]->x2=x[2];
+ child[1]->y2=y[1];
+
+ child[2]->x1=x[0];
+ child[2]->y1=y[1]+1;
+ child[2]->x2=x[1];
+ child[2]->y2=y[2];
+
+ child[3]->x1=x[1]+1;
+ child[3]->y1=y[1]+1;
+ child[3]->x2=x[2];
+ child[3]->y2=y[2];
+
+ }
+
+ //[0],[1] ,, [1]+1,[2]
+ quadtree* contains(int x, int y)
+ {
+ if( x<x1 || x>x2 || y<y1 || y>y2 )
+ {
+ return NULL;
+ }
+ if(child[0] == NULL)
+ {
+ return this;
+ }
+
+ int res[2];
+ if( x <= (x1+x2)/2 )
+ res[0]=0;
+ else
+ res[0]=1;
+
+ if( y <= (y1+y2)/2 )
+ res[1]=0;
+ else
+ res[1]=1;
+
+ return child[res[1]*2+res[0]]->contains(x,y);
+ }
+};
+
+
+class testApp : public ofBaseApp{
+
+ public:
+ //our image
+ ofxCvColorImage image;
+ IplImage *img;
+ IplImage *temp;
+ IplImage *disp;
+
+ queue<quadtree*> drawThis;
+
+ quadtree *tree;
+
+ void setup();
+ void update();
+ void draw();
+
+ void keyPressed (int key);
+ void keyReleased(int key);
+ void mouseMoved(int x, int y );
+ void mouseDragged(int x, int y, int button);
+ void mousePressed(int x, int y, int button);
+ void mouseReleased(int x, int y, int button);
+ void windowResized(int w, int h);
+ void dragEvent(ofDragInfo dragInfo);
+ void gotMessage(ofMessage msg);
+
+};
Please sign in to comment.
Something went wrong with that request. Please try again.