diff options
| author | Tim Redfern <tim@eclectronics.org> | 2012-08-09 20:14:02 +0100 |
|---|---|---|
| committer | Tim Redfern <tim@eclectronics.org> | 2012-08-09 20:14:02 +0100 |
| commit | b3548f90171f0be1ebfd7020f38f3d0acec65f8b (patch) | |
| tree | 76698256f9cf4edb797f7996e36edc8e4bf92f83 /liveengine | |
initial commit
Diffstat (limited to 'liveengine')
| -rw-r--r-- | liveengine/Makefile | 466 | ||||
| -rwxr-xr-x | liveengine/addons.make | 3 | ||||
| -rwxr-xr-x | liveengine/bin/data/settings.xml | 4 | ||||
| -rw-r--r-- | liveengine/config.make | 34 | ||||
| -rw-r--r-- | liveengine/liveengine.cbp | 58 | ||||
| -rw-r--r-- | liveengine/liveengine.layout | 25 | ||||
| -rw-r--r-- | liveengine/src/main.cpp | 17 | ||||
| -rwxr-xr-x | liveengine/src/testApp.cpp | 165 | ||||
| -rwxr-xr-x | liveengine/src/testApp.h | 37 |
9 files changed, 809 insertions, 0 deletions
diff --git a/liveengine/Makefile b/liveengine/Makefile new file mode 100644 index 0000000..a6b3711 --- /dev/null +++ b/liveengine/Makefile @@ -0,0 +1,466 @@ +# 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 + #NDK_ROOT = $(shell cat $(OF_ROOT)/libs/openFrameworksCompiled/project/android/ndk_path.make) + #SDK_ROOT = $(shell cat $(OF_ROOT)/libs/openFrameworksCompiled/project/android/sdk_path.make) + 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/\,/\\\\\|/g) +SOURCE_DIRS = $(shell find . -maxdepth 1 -mindepth 1 -type d | grep -v $(SED_EXCLUDE_FROM_SRC) | sed s/.\\///) +SOURCES = $(shell find $(SOURCE_DIRS) -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 --libs) + SYSTEMLIBS += -lglut -lGL -lasound -lopenal -lsndfile -lvorbis -lFLAC -logg -lfreeimage +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) + @echo 'linking $(TARGET)' + 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 diff --git a/liveengine/addons.make b/liveengine/addons.make new file mode 100755 index 0000000..cd4c2cc --- /dev/null +++ b/liveengine/addons.make @@ -0,0 +1,3 @@ +ofxXmlSettings
+ofxMidi
+ diff --git a/liveengine/bin/data/settings.xml b/liveengine/bin/data/settings.xml new file mode 100755 index 0000000..68896b8 --- /dev/null +++ b/liveengine/bin/data/settings.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" ?>
+<liveEngine port="1" channel="0">
+</liveEngine>
+ diff --git a/liveengine/config.make b/liveengine/config.make new file mode 100644 index 0000000..a444a20 --- /dev/null +++ b/liveengine/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 = ../../openFrameworks-061812 + + +# USER_CFLAGS allows to pass custom flags to the compiler +# for example search paths like: +# USER_CFLAGS = -I src/objects + +USER_CFLAGS = + + +# USER_LDFLAGS allows to pass custom flags to the linker +# for example libraries like: +# USER_LD_FLAGS = libs/libawesomelib.a + +USER_LDFLAGS = + + +# 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" diff --git a/liveengine/liveengine.cbp b/liveengine/liveengine.cbp new file mode 100644 index 0000000..53199ec --- /dev/null +++ b/liveengine/liveengine.cbp @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_project_file> + <FileVersion major="1" minor="6" /> + <Project> + <Option title="liveengine" /> + <Option makefile_is_custom="1" /> + <Option execution_dir="./" /> + <Option pch_mode="2" /> + <Option compiler="gcc" /> + <Option virtualFolders="src/;build config/;" /> + <Build> + <Target title="Debug"> + <Option output="bin/$(PROJECT_NAME)_debug" prefix_auto="1" extension_auto="1" /> + <Option working_dir="bin" /> + <Option object_output="obj/Debug/" /> + <Option external_deps="../../../libs/openFrameworksCompiled/lib/linux/libopenFrameworksDebug.a;" /> + <Option type="1" /> + <Option compiler="gcc" /> + <Option projectLinkerOptionsRelation="2" /> + </Target> + <Target title="Release"> + <Option output="bin/$(PROJECT_NAME)" prefix_auto="1" extension_auto="1" /> + <Option working_dir="bin" /> + <Option object_output="obj/Release/" /> + <Option external_deps="../../../libs/openFrameworksCompiled/lib/linux/libopenFrameworks.a;" /> + <Option type="1" /> + <Option compiler="gcc" /> + <Option projectLinkerOptionsRelation="2" /> + </Target> + </Build> + <Unit filename="Makefile"> + <Option virtualFolder="build config/" /> + </Unit> + <Unit filename="addons.make"> + <Option virtualFolder="build config/" /> + </Unit> + <Unit filename="bin/data/settings.xml"> + <Option virtualFolder="build config/" /> + </Unit> + <Unit filename="config.make"> + <Option virtualFolder="build config" /> + </Unit> + <Unit filename="src/main.cpp"> + <Option virtualFolder="src/" /> + </Unit> + <Unit filename="src/testApp.cpp"> + <Option virtualFolder="src/" /> + </Unit> + <Unit filename="src/testApp.h"> + <Option virtualFolder="src/" /> + </Unit> + <Extensions> + <code_completion /> + <envvars /> + <debugger /> + </Extensions> + </Project> +</CodeBlocks_project_file> diff --git a/liveengine/liveengine.layout b/liveengine/liveengine.layout new file mode 100644 index 0000000..23e0fac --- /dev/null +++ b/liveengine/liveengine.layout @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> +<CodeBlocks_layout_file> + <ActiveTarget name="Debug" /> + <File name="Makefile" open="1" top="0" tabpos="2"> + <Cursor position="0" topLine="117" /> + </File> + <File name="addons.make" open="1" top="0" tabpos="1"> + <Cursor position="0" topLine="0" /> + </File> + <File name="bin/data/settings.xml" open="1" top="0" tabpos="6"> + <Cursor position="52" topLine="0" /> + </File> + <File name="config.make" open="1" top="1" tabpos="3"> + <Cursor position="477" topLine="0" /> + </File> + <File name="src/main.cpp" open="1" top="0" tabpos="7"> + <Cursor position="230" topLine="0" /> + </File> + <File name="src/testApp.cpp" open="1" top="0" tabpos="5"> + <Cursor position="5010" topLine="136" /> + </File> + <File name="src/testApp.h" open="1" top="0" tabpos="4"> + <Cursor position="642" topLine="0" /> + </File> +</CodeBlocks_layout_file> diff --git a/liveengine/src/main.cpp b/liveengine/src/main.cpp new file mode 100644 index 0000000..f5eaddd --- /dev/null +++ b/liveengine/src/main.cpp @@ -0,0 +1,17 @@ +#include "ofMain.h" +#include "testApp.h" +#include "ofAppGlutWindow.h" + +//======================================================================== +int main( ){ + + ofAppGlutWindow window; + ofSetupOpenGL(&window, 400,300, OF_WINDOW); // <-------- setup the GL context + //ofSetupOpenGL(&window, 1024,768, OF_WINDOW); + + // this kicks off the running of my app + // can be OF_WINDOW or OF_FULLSCREEN + // pass in width and height too: + ofRunApp( new testApp()); + +} diff --git a/liveengine/src/testApp.cpp b/liveengine/src/testApp.cpp new file mode 100755 index 0000000..9ecb92f --- /dev/null +++ b/liveengine/src/testApp.cpp @@ -0,0 +1,165 @@ +#include "testApp.h" + + +//-------------------------------------------------------------- +void testApp::setup(){
+ int midiPort=0;
+ midiChannel=0;
+ //numLayers=0;
+ if( !XML.loadFile("settings.xml") ){
+ printf("unable to load settings.xml check data/ folder\n");
+ }else{
+ printf("settings loaded!\n");
+ midiPort=ofToInt(XML.getAttribute("liveEngine", "port", "0")); //default to 0/all
+ midiChannel=ofToInt(XML.getAttribute("liveEngine", "channel", "0"));
+ if (midiChannel) printf("listening on port %d, midi channel %d\n",midiPort,midiChannel);
+ else printf("listening on port %d, all midi channels\n",midiPort);
+ if(XML.pushTag("liveEngine")) { + /*
+ numLayers=XML.getNumTags("layer");
+ if(numLayers) {
+ layers=new globeLayer*[numLayers];
+ for (int i=0;i<numLayers;i++){
+ XML.pushTag("layer",i);
+ string layerType=XML.getAttribute("content", "type", "");
+ XML.pushTag("content");
+ float x=ofToFloat(XML.getAttribute("pos", "x", ""));
+ float y=ofToFloat(XML.getAttribute("pos", "y", ""));
+ float w=ofToFloat(XML.getAttribute("pos", "w", ""));
+ float h=ofToFloat(XML.getAttribute("pos", "h", ""));
+ int midiNote=ofToInt(XML.getAttribute("midi", "note", "0"));
+ int midiMix=ofToInt(XML.getAttribute("midi", "mix", "0"));
+ if (layerType=="player") {
+ string fileName=XML.getAttribute("media", "name", "0");
+ layers[i]=new globePlayer(x,y,w,h,midiNote,midiMix,fileName);
+ }
+ if (layerType=="grabber") { + bool deInt=ofToInt(XML.getAttribute("grab", "deInt", "0"));
+ layers[i]=new globeGrabber(x,y,w,h,midiNote,midiMix,deInt);
+ }
+ XML.popTag();
+ XML.popTag();
+ }
+ } + */
+ }
+ //if (numLayers==0) printf("no layers loaded!\n");
+ }
+
+ midiIn.listPorts();
+ midiIn.openPort(midiPort);
+ midiIn.addListener(this);
+
+ // to register only to one controller pass the id as first argument
+ // midiIn.addListener(84,this);
+
+ // to debug
+ // midiIn.setVerbose(true);
+ showFPS=false;
+} + +//-------------------------------------------------------------- +void testApp::update(){
+ //for (int i=0;i<numLayers;i++) layers[i]->update(); +} + +//-------------------------------------------------------------- +void testApp::draw(){ + ofBackground(0,0,0);
+ + //for (int i=0;i<numLayers;i++) layers[i]->draw();
+
+ if (showFPS) ofDrawBitmapString(ofToString(ofGetFrameRate(), 2),20,20);
+ +} + +//-------------------------------------------------------------- +void testApp::keyPressed (int key){ + if(key == 's'){ + XML.saveFile("settings.xml"); + printf("settings saved!\n"); + }
+ if(key == 'f'){
+ toggleFPS();
+ } +} + +//-------------------------------------------------------------- +void testApp::keyReleased(int key){ + +} + +//-------------------------------------------------------------- +void testApp::mouseMoved(int x, int y ){ + +} + +//-------------------------------------------------------------- +void testApp::mouseDragged(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void testApp::mouseReleased(int x, int y, int button){ + + +} +void testApp::mousePressed(int x, int y, int button) {
+} + +//-------------------------------------------------------------- +void testApp::windowResized(int w, int h){ + +} + +//-------------------------------------------------------------- +void testApp::gotMessage(ofMessage msg){ + +} + +//-------------------------------------------------------------- +void testApp::dragEvent(ofDragInfo dragInfo){ + +}
+
+void testApp::toggleFPS(){
+ showFPS=!showFPS;
+} +
+void testApp::newMidiMessage(ofxMidiEventArgs& eventArgs){
+
+ //newMessage(eventArgs.port, eventArgs.channel, eventArgs.byteTwo, eventArgs.timestamp);
+
+//byteOne : message type
+
+ /*
+ int port;
+ int channel;
+ int status;
+ int byteOne;
+ int byteTwo;
+ double timestamp;
+ */
+
+ //printf("%d %d %d %d %d\n",eventArgs.port,eventArgs.channel,eventArgs.status,eventArgs.byteOne,eventArgs.byteTwo);
+
+ bool noteOn; //this old thing!
+
+ if ((midiChannel==0)||(eventArgs.channel==midiChannel)) {
+ switch(eventArgs.status) {
+ case 144: //noteon-off
+ noteOn=(eventArgs.byteTwo==0?false:true);
+ //for (int i=0;i<numLayers;i++){
+ // if (layers[i]->note==eventArgs.byteOne) layers[i]->setActive(noteOn);
+ //} + printf("note: %i %i\n",eventArgs.byteOne,eventArgs.byteTwo);
+ break;
+ case 176: //control change
+ //for (int i=0;i<numLayers;i++){
+ // if (layers[i]->mix==eventArgs.byteOne) layers[i]->setMixAmt(((float)eventArgs.byteTwo)/127.0f);
+ //} + printf("cc: %i %i\ n",eventArgs.byteOne,eventArgs.byteTwo);
+ }
+ }
+}
+ diff --git a/liveengine/src/testApp.h b/liveengine/src/testApp.h new file mode 100755 index 0000000..9b07764 --- /dev/null +++ b/liveengine/src/testApp.h @@ -0,0 +1,37 @@ +#pragma once + +#include "ofMain.h" +#include "ofxXmlSettings.h"
+
+#define OF_ADDON_USING_OFXMIDIIN
+
+#include "ofxMidi.h" + +class testApp : public ofBaseApp, public ofxMidiListener{ + + public: + + 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); + + void toggleFPS(); + bool showFPS; + + ofxXmlSettings XML;
+
+ int midiChannel;
+ ofxMidiIn midiIn;
+ void newMidiMessage(ofxMidiEventArgs& eventArgs); +}; + |
