1MACRO(SETUP_ANDROID_LIBRARY LIB_NAME)
2
3    #foreach(arg ${TARGET_LIBRARIES})
4    #    set(MODULE_LIBS "${MODULE_LIBS} -l${arg}")
5    #endforeach(arg ${TARGET_LIBRARIES})
6
7    foreach(arg ${TARGET_SRC})
8        string(REPLACE "${CMAKE_CURRENT_SOURCE_DIR}/" "" n_f ${arg})
9        IF ("${arg}" MATCHES ".*\\.c$" OR "${arg}" MATCHES ".*\\.cpp$")
10            #We only include source files, not header files, this removes anoying warnings
11            set(MODULE_SOURCES "${MODULE_SOURCES} ${n_f}")
12    ENDIF()
13    endforeach(arg ${TARGET_SRC})
14
15       #SET(MODULE_INCLUDES "${CMAKE_SOURCE_DIR}/include include")
16    GET_DIRECTORY_PROPERTY(loc_includes INCLUDE_DIRECTORIES)
17    foreach(arg ${loc_includes})
18        IF(NOT "${arg}" MATCHES "/usr/include" AND NOT "${arg}" MATCHES "/usr/local/include")
19            set(MODULE_INCLUDES "${MODULE_INCLUDES} ${arg}")
20        ENDIF()
21    endforeach(arg ${loc_includes})
22
23    GET_DIRECTORY_PROPERTY(loc_definitions COMPILE_DEFINITIONS)
24    foreach(arg ${loc_definitions})
25        set(DEFINITIONS "${DEFINITIONS} -D${arg}")
26    endforeach(arg ${loc_definitions})
27
28    message(STATUS "##############Creating Android Makefile#################")
29    message(STATUS "name: ${LIB_NAME}")
30
31    set(MODULE_NAME        ${LIB_NAME})
32    set(MODULE_DIR         ${CMAKE_CURRENT_SOURCE_DIR})
33    set(MODULE_FLAGS_C       ${DEFINITIONS})
34    set(MODULE_FLAGS_CPP   ${DEFINITIONS})
35    #TODO: determine if GLES2 or GLES
36    IF(OSG_GLES1_AVAILABLE)
37        SET(OPENGLES_LIBRARY -lGLESv1_CM)
38    ELSEIF(OSG_GLES2_AVAILABLE)
39        SET(OPENGLES_LIBRARY -lGLESv2)
40    ENDIF()
41    #${MODULE_LIBS}
42    set(MODULE_LIBS_FLAGS "${OPENGLES_LIBRARY} -ldl")
43    if(NOT CPP_EXTENSION)
44        set(CPP_EXTENSION "cpp")
45    endif()
46    IF(NOT MODULE_USER_STATIC_OR_DYNAMIC)
47        MESSAGE(FATAL_ERROR "Not defined MODULE_USER_STATIC_OR_DYNAMIC")
48    ENDIF()
49    IF("MODULE_USER_STATIC_OR_DYNAMIC" MATCHES "STATIC")
50        SET(MODULE_BUILD_TYPE "\$\(BUILD_STATIC_LIBRARY\)")
51    SET(MODULE_LIBS_SHARED " ")
52    SET(MODULE_LIBS_STATIC ${TARGET_LIBRARIES})
53    ELSE()
54        SET(MODULE_BUILD_TYPE "\$\(BUILD_SHARED_LIBRARY\)")
55    SET(MODULE_LIBS_SHARED ${TARGET_LIBRARIES})
56    SET(MODULE_LIBS_STATIC " ")
57    ENDIF()
58    set(ENV{AND_OSG_LIB_NAMES} "$ENV{AND_OSG_LIB_NAMES} ${LIB_NAME}")
59    set(ENV{AND_OSG_LIB_PATHS} "$ENV{AND_OSG_LIB_PATHS}include ${CMAKE_CURRENT_BINARY_DIR}/Android.mk \n")
60
61    configure_file("${OSG_ANDROID_TEMPLATES}/Android.mk.modules.in" "${CMAKE_CURRENT_BINARY_DIR}/Android.mk")
62
63ENDMACRO()
64
65MACRO(ANDROID_3RD_PARTY)
66    ################################################
67    #JPEG
68    ################################################
69    FIND_PATH(JPEG_INCLUDE_DIR Android.mk
70        ${CMAKE_SOURCE_DIR}/3rdparty/libjpeg NO_CMAKE_FIND_ROOT_PATH
71    )
72    #set(ENV{AND_OSG_LIB_NAMES} "$ENV{AND_OSG_LIB_NAMES} libjpeg")
73    #set(ENV{AND_OSG_LIB_PATHS} "$ENV{AND_OSG_LIB_PATHS}include ${JPEG_INCLUDE_DIR}/Android.mk \n")
74    if(JPEG_INCLUDE_DIR)
75        message(STATUS "Jpeg found ${JPEG_INCLUDE_DIR}" )
76        set(JPEG_FOUND "Yes")
77        install(DIRECTORY 3rdparty/build/libjpeg/ DESTINATION ./ )
78    else(JPEG_INCLUDE_DIR)
79        message(STATUS "Jpeg missing" )
80    endif()
81    ################################################
82    #PNG
83    ################################################
84    FIND_PATH(PNG_INCLUDE_DIR Android.mk
85        ${CMAKE_SOURCE_DIR}/3rdparty/libpng NO_CMAKE_FIND_ROOT_PATH
86    )
87    #set(ENV{AND_OSG_LIB_NAMES} "$ENV{AND_OSG_LIB_NAMES} libpng")
88    #set(ENV{AND_OSG_LIB_PATHS} "$ENV{AND_OSG_LIB_PATHS}include ${PNG_INCLUDE_DIR}/Android.mk \n")
89    if(PNG_INCLUDE_DIR)
90        message(STATUS "PNG found ${PNG_INCLUDE_DIR}" )
91        set(PNG_FOUND "Yes")
92        install(DIRECTORY 3rdparty/build/libpng/ DESTINATION ./ )
93    else(PNG_INCLUDE_DIR)
94        message(STATUS "PNG missing" )
95    endif()
96    ################################################
97    #GIF
98    ################################################
99    FIND_PATH(GIFLIB_INCLUDE_DIR Android.mk
100        ${CMAKE_SOURCE_DIR}/3rdparty/giflib NO_CMAKE_FIND_ROOT_PATH
101    )
102    #set(ENV{AND_OSG_LIB_NAMES} "$ENV{AND_OSG_LIB_NAMES} libgif")
103    #set(ENV{AND_OSG_LIB_PATHS} "$ENV{AND_OSG_LIB_PATHS}include ${GIFLIB_INCLUDE_DIR}/Android.mk \n")
104    if(GIFLIB_INCLUDE_DIR)
105        message(STATUS "GIF found ${GIFLIB_INCLUDE_DIR}" )
106        set(GIFLIB_FOUND "Yes")
107        install(DIRECTORY 3rdparty/build/giflib/ DESTINATION ./ )
108    else(GIFLIB_INCLUDE_DIR)
109        message(STATUS "GIF missing" )
110    endif()
111    ################################################
112    #TIF
113    ################################################
114    FIND_PATH(TIFF_INCLUDE_DIR Android.mk
115        ${CMAKE_SOURCE_DIR}/3rdparty/libtiff NO_CMAKE_FIND_ROOT_PATH
116    )
117    #set(ENV{AND_OSG_LIB_NAMES} "$ENV{AND_OSG_LIB_NAMES} libtiff")
118    #set(ENV{AND_OSG_LIB_PATHS} "$ENV{AND_OSG_LIB_PATHS}include ${TIFF_INCLUDE_DIR}/Android.mk \n")
119    if(TIFF_INCLUDE_DIR)
120        message(STATUS "TIF found ${TIFF_INCLUDE_DIR}" )
121        set(TIFF_FOUND "Yes")
122        install(DIRECTORY 3rdparty/build/libtiff/ DESTINATION ./ )
123    else(TIFF_INCLUDE_DIR)
124        message(STATUS "TIF missing" )
125    endif()
126    ################################################
127    #ZLIB
128    ################################################
129    #FIND_PATH(ZLIB_INCLUDE_DIR Android.mk
130    #    ${CMAKE_SOURCE_DIR}/3rdparty/zlib
131    #)
132    #set(ENV{AND_OSG_LIB_NAMES} "$ENV{AND_OSG_LIB_NAMES} zlib")
133    #set(ENV{AND_OSG_LIB_PATHS} "$ENV{AND_OSG_LIB_PATHS}include ${ZLIB_INCLUDE_DIR}/Android.mk \n")
134    #if(ZLIB_INCLUDE_DIR)
135    #    message(STATUS "ZLIB found ${ZLIB_INCLUDE_DIR}" )
136    #    set(ZLIB_FOUND "Yes")
137    #    install(DIRECTORY 3rdparty/build/libjpeg/ DESTINATION ./ )
138    #else(ZLIB_INCLUDE_DIR)
139    #    message(STATUS "ZLIB missing" )
140    #endif()
141    ################################################
142    #CURL
143    ################################################
144    FIND_PATH(CURL_DIR Android.mk
145        ${CMAKE_SOURCE_DIR}/3rdparty/curl NO_CMAKE_FIND_ROOT_PATH
146    )
147    #set(ENV{AND_OSG_LIB_NAMES} "$ENV{AND_OSG_LIB_NAMES} libcurl")
148    #set(ENV{AND_OSG_LIB_PATHS} "$ENV{AND_OSG_LIB_PATHS}include ${CURL_DIR}/Android.mk \n")
149    set(CURL_INCLUDE_DIR ${CURL_DIR}/include)
150    set(CURL_INCLUDE_DIRS ${CURL_DIR}/include) #Both are defined in FindCurl
151    if(CURL_DIR)
152        message(STATUS "Curl found ${CURL_DIR}" )
153        set(CURL_FOUND "Yes")
154        install(DIRECTORY 3rdparty/build/curl/ DESTINATION ./ )
155    else(CURL_DIR)
156        message(STATUS "Curl missing" )
157    endif()
158    ################################################
159    #FREETYPE
160    ################################################
161    FIND_PATH(FREETYPE_DIR Android.mk
162        ${CMAKE_SOURCE_DIR}/3rdparty/freetype NO_CMAKE_FIND_ROOT_PATH
163    )
164    #set(ENV{AND_OSG_LIB_NAMES} "$ENV{AND_OSG_LIB_NAMES} libft2")
165    #set(ENV{AND_OSG_LIB_PATHS} "$ENV{AND_OSG_LIB_PATHS}include ${FREETYPE_DIR}/Android.mk \n")
166    set(FREETYPE_INCLUDE_DIRS ${FREETYPE_DIR}/include ${FREETYPE_DIR}/include/freetype/config)
167    if(FREETYPE_DIR)
168        message(STATUS "FREETYPE found ${FREETYPE_DIR}" )
169        set(FREETYPE_FOUND "Yes")
170        install(DIRECTORY 3rdparty/build/freetype/ DESTINATION ./ )
171    else(FREETYPE_DIR)
172        message(STATUS "FREETYPE missing" )
173    endif()
174    ################################################
175    #GDAL
176    ################################################
177    FIND_PATH(GDAL_DIR gdal.h
178        ${CMAKE_SOURCE_DIR}/3rdparty/gdal/include NO_CMAKE_FIND_ROOT_PATH
179    )
180    set(GDAL_INCLUDE_DIR "${GDAL_DIR}")
181    if(GDAL_DIR)
182        message(STATUS "GDAL found ${GDAL_DIR}" )
183        set(GDAL_FOUND "Yes")
184        install(DIRECTORY 3rdparty/build/gdal/ DESTINATION ./ )
185    else(GDAL_DIR)
186        message(STATUS "GDAL missing" )
187    endif()
188ENDMACRO()
189