152 lines
6.0 KiB
CMake
152 lines
6.0 KiB
CMake
cmake_minimum_required(VERSION 3.4.1)
|
|
project(filament-java)
|
|
|
|
if (NOT ENABLE_JAVA)
|
|
return()
|
|
endif()
|
|
|
|
find_package(Java)
|
|
if (NOT Java_FOUND)
|
|
message(WARNING "JDK not found, skipping Java projects")
|
|
return()
|
|
endif()
|
|
|
|
find_package(JNI)
|
|
if (NOT JNI_FOUND)
|
|
message(WARNING "JNI not found, skipping Java projects")
|
|
return()
|
|
endif()
|
|
|
|
if (NOT DEFINED ENV{JAVA_HOME})
|
|
message(WARNING "The JAVA_HOME environment variable must be set to compile Java projects")
|
|
message(WARNING "Skipping Java projects")
|
|
return()
|
|
endif()
|
|
|
|
# ==================================================================================================
|
|
# JNI bindings
|
|
# ==================================================================================================
|
|
set(TARGET filament-jni)
|
|
|
|
include_directories(${JNI_INCLUDE_DIRS})
|
|
|
|
set(CXX_STANDARD "-std=c++14")
|
|
if (WIN32)
|
|
set(CXX_STANDARD "/std:c++14")
|
|
endif()
|
|
|
|
set(FILAMENT_DIR ../android/filament-android)
|
|
|
|
set(JNI_SOURCE_FILES
|
|
${FILAMENT_DIR}/src/main/cpp/Camera.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/Colors.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/VertexBuffer.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/Engine.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/EntityManager.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/Fence.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/IndexBuffer.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/IndirectLight.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/LightManager.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/Material.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/MaterialInstance.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/NativeSurface.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/RenderableManager.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/Renderer.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/Scene.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/SkyBox.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/Stream.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/Texture.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/TextureSampler.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/TransformManager.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/View.cpp
|
|
# Private utils
|
|
${FILAMENT_DIR}/src/main/cpp/CallbackUtils.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/Filament.cpp
|
|
${FILAMENT_DIR}/src/main/cpp/NioUtils.cpp
|
|
# Desktop specific
|
|
${FILAMENT_DIR}/src/main/cpp/nativewindow/JAWTUtils.cpp
|
|
)
|
|
|
|
if (LINUX)
|
|
list(APPEND JNI_SOURCE_FILES ${FILAMENT_DIR}/src/main/cpp/nativewindow/Linux.cpp)
|
|
endif()
|
|
|
|
if (WIN32)
|
|
list(APPEND JNI_SOURCE_FILES ${FILAMENT_DIR}/src/main/cpp/nativewindow/Win32.cpp)
|
|
endif()
|
|
|
|
if (APPLE)
|
|
list(APPEND JNI_SOURCE_FILES ${FILAMENT_DIR}/src/main/cpp/nativewindow/Darwin.mm)
|
|
endif()
|
|
|
|
add_library(${TARGET} SHARED ${JNI_SOURCE_FILES})
|
|
target_link_libraries(${TARGET} filament ${JAVA_AWT_LIBRARY})
|
|
|
|
set(INSTALL_TYPE LIBRARY)
|
|
if (WIN32 OR CYGWIN)
|
|
set(INSTALL_TYPE RUNTIME)
|
|
endif()
|
|
install(TARGETS ${TARGET} ${INSTALL_TYPE} DESTINATION lib/${DIST_DIR})
|
|
set(LIB_SUFFIX ".so")
|
|
if (APPLE)
|
|
set(LIB_SUFFIX ".dylib")
|
|
elseif (WIN32)
|
|
set(LIB_SUFFIX ".dll")
|
|
endif()
|
|
install(CODE "execute_process(COMMAND ${CMAKE_STRIP} -x ${CMAKE_INSTALL_PREFIX}/lib/${DIST_DIR}/lib${TARGET}${LIB_SUFFIX})")
|
|
|
|
# ==================================================================================================
|
|
# Java APIs
|
|
# ==================================================================================================
|
|
set(TARGET filament-java)
|
|
|
|
include(UseJava)
|
|
|
|
set(CMAKE_JAVA_COMPILE_FLAGS "-source" "1.8" "-target" "1.8")
|
|
|
|
set(FILAMENT_JAVA_DIR ${FILAMENT_DIR}/src/main/java/)
|
|
get_filename_component(FILAMENT_JAVA_DIR ${FILAMENT_JAVA_DIR} ABSOLUTE)
|
|
|
|
set(JAVA_SOURCE_FILES
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/Box.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/Camera.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/Colors.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/Engine.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/Entity.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/EntityInstance.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/EntityManager.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/Fence.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/Filament.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/IndexBuffer.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/IndirectLight.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/LightManager.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/Material.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/MaterialInstance.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/NativeSurface.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/NioUtils.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/Platform.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/RenderableManager.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/Renderer.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/Scene.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/Skybox.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/Stream.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/SwapChain.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/Texture.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/TextureSampler.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/TransformManager.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/VertexBuffer.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/View.java
|
|
${FILAMENT_JAVA_DIR}/com/google/android/filament/Viewport.java
|
|
# Desktop specific
|
|
src/java/com/google/android/filament/DesktopPlatform.java
|
|
src/java/com/google/android/filament/FilamentCanvas.java
|
|
src/java/com/google/android/filament/FilamentPanel.java
|
|
src/java/com/google/android/filament/FilamentTarget.java
|
|
)
|
|
|
|
add_jar(${TARGET}
|
|
SOURCES ${JAVA_SOURCE_FILES}
|
|
INCLUDE_JARS lib/support-annotations.jar)
|
|
|
|
install_jar(${TARGET} lib)
|