33cmake_minimum_required (VERSION 3.22.1)
44
55project (openFrameworksAndroid LANGUAGES CXX)
6-
7- set (CMAKE_VERBOSE_MAKEFILE on )
6+ set (CMAKE_C_STANDARD 17)
7+ set (CMAKE_CXX_STANDARD 23)
8+ set (OF_LIBRARY_TYPE "SHARED" ) # or "STATIC"
9+ set (CMAKE_VERBOSE_MAKEFILE ON )
810
911set (LOCAL_PATH ${CMAKE_SOURCE_DIR} )
1012set (PRJ_OF_ROOT ${LOCAL_PATH} /../../../../../)
1113set (PURE_OF_ROOT ${LOCAL_PATH} /../../../../../)
1214set (LIBS_ROOT ${PURE_OF_ROOT} /libs)
1315set (CORE_OF_ROOT ${PURE_OF_ROOT} /libs/openFrameworks)
14-
1516set (PRJ_ADDONS_PATH ${PURE_OF_ROOT} /addons)
1617set (PRJ_SOURCE_PATH ${LIBS_ROOT} /openFrameworks)
1718set (OF_SOURCE_DIR ${PRJ_SOURCE_PATH} )
18-
1919set (PRJ_LIBS_ROOT ${PURE_OF_ROOT} /libs)
20-
2120set (OF_ANDROID ${PURE_OF_ROOT} /libs/openFrameworksCompiled/project/android)
2221set (OF_ANDROID_OUTPUT ${PURE_OF_ROOT} /libs/openFrameworksCompiled/lib/android)
23-
2422set (PRJ_OFX_ANDROID_PATH ${PRJ_ADDONS_PATH} /ofxAndroid)
2523set (PRJ_OFX_ANDROID_CPP_PATH ${PRJ_ADDONS_PATH} /ofxAndroid/src)
26-
27- set (CMAKE_CXX_STANDARD 23)
2824set (CMAKE_CXX_STANDARD_REQUIRED ON )
2925set (CMAKE_CXX_EXTENSIONS OFF )
3026set (CONFIGURATION_BUILD_DIR ${OF_ANDROID_OUTPUT} )
31-
3227set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ferror-limit=0 -std=c17 -Oz -Wall -fno-short-enums -fPIE -fPIC -fexceptions -ffunction-sections -fdata-sections" )
3328set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ferror-limit=0 -std=c++23 -Oz -stdlib=libc++ -Wall -fno-short-enums -fPIE -fPIC -fexceptions -ffunction-sections -fdata-sections" )
3429set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-export-dynamic" )
35- # Creates the project's shared lib: libnative-lib.so.
36- # The lib is loaded by this project's Java code in MainActivity.java:
37- # System.loadLibrary("native-lib");
38- # The lib name in both places must match.
39- # Specify your native library name, type and the cpp source files.
40-
41- # Gather all source files from relevant directories
4230file (GLOB OF_SOURCES
4331 ${OF_SOURCE_DIR} /*.cpp
4432 ${OF_SOURCE_DIR} /3d/*.cpp
@@ -55,12 +43,8 @@ file(GLOB OF_SOURCES
5543 ${PRJ_OFX_ANDROID_CPP_PATH} /*.cpp
5644 ${PRJ_ADDONS_PATH} /ofxAddons/src/*.cpp
5745 ${PRJ_ADDONS_PATH} /ofxAccelerometer/src/ofxAccelerometer.cpp
58- # ${PRJ_ADDONS_PATH}/ofxXmlSettings/src/ofxXmlSettings.cpp
59- # ${PRJ_ADDONS_PATH}/ofxXmlSettings/libs/tinyxml.cpp
60- # ${PRJ_ADDONS_PATH}/ofxXmlSettings/libs/tinyxmlerror.cpp
61- # ${PRJ_ADDONS_PATH}/ofxXmlSettings/libs/tinyxmlparser.cpp
6246)
63-
47+ # exclusions
6448list (REMOVE_ITEM OF_SOURCES
6549 "${OF_SOURCE_DIR} /app/ofAppEGLWindow.cpp"
6650 "${OF_SOURCE_DIR} /sound/ofMediaFoundationSoundPlayer.cpp"
@@ -71,85 +55,7 @@ list(REMOVE_ITEM OF_SOURCES
7155 "${OF_SOURCE_DIR} /video/ofDirectShowGrabber.cpp"
7256)
7357
74- add_library (openFrameworksAndroid SHARED ${OF_SOURCES} )
75-
76- #add_library( openFrameworksAndroid
77- # SHARED
78- # ${PRJ_SOURCE_PATH}/utils/ofFileUtils.cpp
79- # ${PRJ_SOURCE_PATH}/utils/ofFpsCounter.cpp
80- # ${PRJ_SOURCE_PATH}/utils/ofLog.cpp
81- # ${PRJ_SOURCE_PATH}/utils/ofMatrixStack.cpp
82- # ${PRJ_SOURCE_PATH}/utils/ofSystemUtils.cpp
83- # ${PRJ_SOURCE_PATH}/utils/ofThread.cpp
84- # ${PRJ_SOURCE_PATH}/utils/ofTimer.cpp
85- # ${PRJ_SOURCE_PATH}/utils/ofURLFileLoader.cpp
86- # ${PRJ_SOURCE_PATH}/utils/ofUtils.cpp
87- # ${PRJ_SOURCE_PATH}/utils/ofXml.cpp
88- # ${PRJ_SOURCE_PATH}/sound/ofSoundBaseTypes.cpp
89- # ${PRJ_SOURCE_PATH}/sound/ofSoundBuffer.cpp
90- # ${PRJ_SOURCE_PATH}/sound/ofSoundPlayer.cpp
91- # ${PRJ_SOURCE_PATH}/sound/ofSoundStream.cpp
92- # ${PRJ_SOURCE_PATH}/sound/ofOpenALSoundPlayer.cpp
93- # ${PRJ_SOURCE_PATH}/3d/of3dPrimitives.cpp
94- # ${PRJ_SOURCE_PATH}/3d/of3dUtils.cpp
95- # ${PRJ_SOURCE_PATH}/3d/ofCamera.cpp
96- # ${PRJ_SOURCE_PATH}/3d/ofEasyCam.cpp
97- # ${PRJ_SOURCE_PATH}/3d/ofNode.cpp
98- # ${PRJ_SOURCE_PATH}/app/ofMainLoop.cpp
99- # ${PRJ_SOURCE_PATH}/app/ofAppRunner.cpp
100- # ${PRJ_SOURCE_PATH}/app/ofBaseApp.cpp
101- # ${PRJ_SOURCE_PATH}/communication/ofSerial.cpp
102- # ${PRJ_SOURCE_PATH}/events/ofEvents.cpp
103- # ${PRJ_SOURCE_PATH}/gl/ofBufferObject.cpp
104- # ${PRJ_SOURCE_PATH}/gl/ofFbo.cpp
105- # ${PRJ_SOURCE_PATH}/gl/ofGLProgrammableRenderer.cpp
106- # ${PRJ_SOURCE_PATH}/gl/ofGLRenderer.cpp
107- # ${PRJ_SOURCE_PATH}/gl/ofGLUtils.cpp
108- # ${PRJ_SOURCE_PATH}/gl/ofLight.cpp
109- # ${PRJ_SOURCE_PATH}/gl/ofMaterial.cpp
110- # ${PRJ_SOURCE_PATH}/gl/ofShader.cpp
111- # ${PRJ_SOURCE_PATH}/gl/ofTexture.cpp
112- # ${PRJ_SOURCE_PATH}/gl/ofShadow.cpp
113- # ${PRJ_SOURCE_PATH}/gl/ofCubeMap.cpp
114- # ${PRJ_SOURCE_PATH}/gl/ofVbo.cpp
115- # ${PRJ_SOURCE_PATH}/gl/ofVboMesh.cpp
116- # ${PRJ_SOURCE_PATH}/graphics/of3dGraphics.cpp
117- # ${PRJ_SOURCE_PATH}/graphics/ofBitmapFont.cpp
118- # ${PRJ_SOURCE_PATH}/graphics/ofGraphics.cpp
119- # ${PRJ_SOURCE_PATH}/graphics/ofGraphicsBaseTypes.cpp
120- # ${PRJ_SOURCE_PATH}/graphics/ofImage.cpp
121- # ${PRJ_SOURCE_PATH}/graphics/ofPath.cpp
122- # ${PRJ_SOURCE_PATH}/graphics/ofPixels.cpp
123- # ${PRJ_SOURCE_PATH}/graphics/ofRendererCollection.cpp
124- # ${PRJ_SOURCE_PATH}/graphics/ofTessellator.cpp
125- # ${PRJ_SOURCE_PATH}/graphics/ofTrueTypeFont.cpp
126- # ${PRJ_SOURCE_PATH}/math/ofMath.cpp
127- # ${PRJ_SOURCE_PATH}/math/ofMatrix3x3.cpp
128- # ${PRJ_SOURCE_PATH}/math/ofMatrix4x4.cpp
129- # ${PRJ_SOURCE_PATH}/math/ofQuaternion.cpp
130- # ${PRJ_SOURCE_PATH}/math/ofVec2f.cpp
131- # ${PRJ_SOURCE_PATH}/math/ofVec4f.cpp
132- # ${PRJ_SOURCE_PATH}/types/ofColor.cpp
133- # ${PRJ_SOURCE_PATH}/types/ofParameter.cpp
134- # ${PRJ_SOURCE_PATH}/types/ofParameterGroup.cpp
135- # ${PRJ_SOURCE_PATH}/types/ofRectangle.cpp
136- # ${PRJ_SOURCE_PATH}/video/ofVideoBaseTypes.cpp
137- # ${PRJ_SOURCE_PATH}/video/ofVideoGrabber.cpp
138- # ${PRJ_SOURCE_PATH}/video/ofVideoPlayer.cpp
139- # ${PRJ_OFX_ANDROID_CPP_PATH}/ofAppAndroidWindow.cpp
140- # ${PRJ_OFX_ANDROID_CPP_PATH}/ofxAndroidAccelerometer.cpp
141- # ${PRJ_OFX_ANDROID_CPP_PATH}/ofxAndroidLogChannel.cpp
142- # ${PRJ_OFX_ANDROID_CPP_PATH}/ofxAndroidSoundPlayer.cpp
143- # ${PRJ_OFX_ANDROID_CPP_PATH}/ofxAndroidSoundStream.cpp
144- # ${PRJ_OFX_ANDROID_CPP_PATH}/ofxAndroidUtils.cpp
145- # ${PRJ_OFX_ANDROID_CPP_PATH}/ofxAndroidVibrator.cpp
146- # ${PRJ_OFX_ANDROID_CPP_PATH}/ofxAndroidVideoGrabber.cpp
147- # ${PRJ_OFX_ANDROID_CPP_PATH}/ofxAndroidVideoPlayer.cpp
148- # ${PRJ_ADDONS_PATH}/ofxAccelerometer/src/ofxAccelerometer.cpp
149- # ${PRJ_ADDONS_PATH}/ofxXmlSettings/src/ofxXmlSettings.cpp
150- # ${PRJ_ADDONS_PATH}/ofxXmlSettings/libs/tinyxml.cpp
151- # ${PRJ_ADDONS_PATH}/ofxXmlSettings/libs/tinyxmlerror.cpp
152- # ${PRJ_ADDONS_PATH}/ofxXmlSettings/libs/tinyxmlparser.cpp )
58+ add_library (openFrameworksAndroid ${OF_LIBRARY_TYPE} ${OF_SOURCES} )
15359
15460target_include_directories (openFrameworksAndroid PRIVATE
15561 ${OF_SOURCE_DIR}
@@ -171,7 +77,6 @@ set_target_properties(openFrameworksAndroid
17177 LIBRARY_OUTPUT_DIRECTORY
17278 "${CONFIGURATION_BUILD_DIR} /${ANDROID_ABI} " )
17379
174- ## Specifies a path to native header files.
17580include_directories (
17681 ${PRJ_SOURCE_PATH} /3d
17782 ${PRJ_SOURCE_PATH} /app
@@ -188,8 +93,6 @@ include_directories(
18893 ${PRJ_OFX_ANDROID_CPP_PATH} /
18994 ${PURE_OF_ROOT} /addons/ofxAndroid/src
19095 ${PURE_OF_ROOT} /addons/ofxAccelerometer/src
191- # ${PURE_OF_ROOT}/addons/ofxXmlSettings/src
192- # ${PURE_OF_ROOT}/addons/ofxXmlSettings/libs
19396 ${PRJ_LIBS_ROOT} /FreeImage/include
19497 ${PRJ_LIBS_ROOT} /freetype/include
19598 ${PRJ_LIBS_ROOT} /freetype/include /freetype2
@@ -212,38 +115,28 @@ include_directories(
212115 ${PRJ_LIBS_ROOT} /curl/include
213116)
214117
215- find_library (android-lib android)
216- find_library (log -lib log )
217- find_library (GLES1-lib GLESv1_CM)
218- find_library (GLES2-lib GLESv2)
219- find_library (GLES3-lib GLESv3)
220-
118+ find_library (ANDROID_LIB NAMES android)
119+ find_library (LOG_LIB NAMES log )
120+ find_library (GLES1_LIB NAMES GLESv1_CM)
121+ find_library (GLES2_LIB NAMES GLESv2)
122+ find_library (GLES3_LIB NAMES GLESv3)
221123
222124target_link_libraries (openFrameworksAndroid
223125 android
224- EGL
225- GLESv2
226- GLESv3
227126 log
228127 m
229128 z
230129 dl
231130 )
232131
233- target_link_libraries ( openFrameworksAndroid
234- ${android-lib} )
235- target_link_libraries ( openFrameworksAndroid
236- ${GLES2-lib} )
237- target_link_libraries ( openFrameworksAndroid
238- ${GLES3-lib} )
239- target_link_libraries ( openFrameworksAndroid
240- ${GLES1-lib} )
241- target_link_libraries ( openFrameworksAndroid
242- ${log -lib} )
132+ target_link_libraries (openFrameworksAndroid
133+ ${ANDROID_LIB}
134+ ${GLES2_LIB}
135+ ${GLES3_LIB}
136+ ${GLES1_LIB}
137+ ${LOG_LIB}
138+ )
243139
244- # Set the third-party library header files directory.
245- #include_directories(src/main/cpp/Libraries/include/)
246- # Link the thrid-party library with your native library.
247140
248141target_link_libraries (openFrameworksAndroid
249142 ${PRJ_LIBS_ROOT} /brotli/lib/android/${ANDROID_ABI} /libbrotlicommon.a
0 commit comments