Skip to content

Commit 0794780

Browse files
vifergadevraymondsh
authored andcommitted
Add java port CMakeLists.txt as place holder, not implemented yet, in the future it will be needed to integrate maven into CMake.
1 parent 7d7bca8 commit 0794780

File tree

1 file changed

+329
-0
lines changed

1 file changed

+329
-0
lines changed
Lines changed: 329 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,329 @@
1+
# Check if port is enabled
2+
if(NOT OPTION_BUILD_PORTS OR NOT OPTION_BUILD_PORTS_JAVA)
3+
return()
4+
endif()
5+
6+
#
7+
# External dependencies
8+
#
9+
10+
find_package(Java)
11+
12+
if(NOT JAVA_FOUND)
13+
message(STATUS "Java libraries not found")
14+
return()
15+
endif()
16+
17+
find_package(JNI)
18+
19+
if(NOT JNI_FOUND)
20+
message(STATUS "JNI libraries not found")
21+
return()
22+
endif()
23+
24+
include(UseJava)
25+
26+
find_package(Maven)
27+
28+
if(NOT MAVEN_FOUND)
29+
message(STATUS "Maven not found")
30+
return()
31+
endif()
32+
33+
#
34+
# Port name and options
35+
#
36+
37+
# Target name
38+
set(target java_port)
39+
40+
# Exit here if required dependencies are not met
41+
message(STATUS "Port ${target}")
42+
43+
# TODO:
44+
# https://cmake.org/cmake/help/latest/module/UseJava.html
45+
# https://searchcode.com/codesearch/view/7927641/
46+
# https://github.com/Kurento/kms-core/blob/master/CMake/FindMaven.cmake
47+
48+
# # Set API export file and macro
49+
# string(TOUPPER ${target} target_upper)
50+
# set(feature_file "include/${target}/${target}_features.h")
51+
# set(export_file "include/${target}/${target}_api.h")
52+
# set(export_macro "${target_upper}_API")
53+
54+
# #
55+
# # Sources
56+
# #
57+
58+
# set(interface_path "${CMAKE_CURRENT_SOURCE_DIR}/interface/${target}")
59+
# set(include_path "${CMAKE_CURRENT_SOURCE_DIR}/include/${target}")
60+
# set(source_path "${CMAKE_CURRENT_SOURCE_DIR}/source")
61+
62+
# set(interfaces
63+
# ${interface_path}/java_port.i
64+
# )
65+
66+
# set(headers
67+
# ${include_path}/java_port.h
68+
# )
69+
70+
# set(sources
71+
# ${source_path}/java_port.c
72+
# )
73+
74+
# # Group source files
75+
# set(interface_group "Interface Files (SWIG)")
76+
# set(header_group "Header Files (API)")
77+
# set(source_group "Source Files")
78+
# source_group_by_path(${interface_path} "\\\\.i$"
79+
# ${interface_group} ${interfaces})
80+
# source_group_by_path(${include_path} "\\\\.h$|\\\\.hpp$"
81+
# ${header_group} ${headers})
82+
# source_group_by_path(${source_path} "\\\\.cpp$|\\\\.c$|\\\\.h$|\\\\.hpp$"
83+
# ${source_group} ${sources})
84+
85+
# #
86+
# # SWIG Configuration
87+
# #
88+
89+
# # Set SWIG flags
90+
# if(CMAKE_BUILD_TYPE STREQUAL "Debug")
91+
# list(APPEND CMAKE_SWIG_FLAGS "-DDEBUG")
92+
# else()
93+
# list(APPEND CMAKE_SWIG_FLAGS "-DNDEBUG")
94+
# endif()
95+
96+
# # Set SWIG include path
97+
# include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include")
98+
# include_directories("${CMAKE_CURRENT_SOURCE_DIR}/interface")
99+
100+
# #
101+
# # Create library
102+
# #
103+
104+
# foreach(file ${interfaces} ${headers} ${sources})
105+
# set_source_files_properties(
106+
# ${file}
107+
# PROPERTY SWIG_FLAGS "-java" "-includeall"
108+
# )
109+
110+
# set_source_files_properties(
111+
# ${file}
112+
# PROPERTIES CPLUSPLUS OFF
113+
# )
114+
# endforeach()
115+
116+
# if(${CMAKE_VERSION} VERSION_LESS "3.8.0")
117+
# swig_add_module(${target}
118+
# java
119+
# ${interfaces}
120+
# ${headers}
121+
# ${sources}
122+
# )
123+
# else()
124+
# swig_add_library(${target}
125+
# LANGUAGE java
126+
# SOURCES ${interfaces} ${headers} ${sources}
127+
# )
128+
# endif()
129+
130+
# #
131+
# # Dependecies
132+
# #
133+
134+
# add_dependencies(${SWIG_MODULE_${target}_REAL_NAME}
135+
# ${META_PROJECT_NAME}::metacall
136+
# )
137+
138+
# # Create namespaced alias
139+
# add_library(${META_PROJECT_NAME}::${target} ALIAS ${SWIG_MODULE_${target}_REAL_NAME})
140+
141+
# # Export library for downstream projects
142+
# export(TARGETS ${SWIG_MODULE_${target}_REAL_NAME} NAMESPACE ${META_PROJECT_NAME}:: FILE ${PROJECT_BINARY_DIR}/cmake/${target}/${target}-export.cmake)
143+
144+
# # Create feature detection header
145+
# # Compilers: https://cmake.org/cmake/help/v3.1/variable/CMAKE_LANG_COMPILER_ID.html#variable:CMAKE_%3CLANG%3E_COMPILER_ID
146+
# # Feature: https://cmake.org/cmake/help/v3.1/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html
147+
148+
# # Check for availability of module; use pre-generated version if not found
149+
# if (WriterCompilerDetectionHeaderFound)
150+
# write_compiler_detection_header(
151+
# FILE ${feature_file}
152+
# PREFIX ${target_upper}
153+
# COMPILERS AppleClang Clang GNU MSVC
154+
# FEATURES cxx_alignas cxx_alignof cxx_constexpr cxx_final cxx_noexcept cxx_nullptr cxx_sizeof_member cxx_thread_local
155+
# VERSION 3.2
156+
# )
157+
# else()
158+
# file(
159+
# COPY ${PROJECT_SOURCE_DIR}/codegeneration/${target}_features.h
160+
# DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/${target}
161+
# USE_SOURCE_PERMISSIONS
162+
# )
163+
# endif()
164+
165+
# # Create API export header
166+
# generate_export_header(${SWIG_MODULE_${target}_REAL_NAME}
167+
# EXPORT_FILE_NAME ${export_file}
168+
# EXPORT_MACRO_NAME ${export_macro}
169+
# )
170+
171+
# #
172+
# # Project options
173+
# #
174+
175+
# set_target_properties(${SWIG_MODULE_${target}_REAL_NAME}
176+
# PROPERTIES
177+
# ${DEFAULT_PROJECT_OPTIONS}
178+
# FOLDER "${IDE_FOLDER}"
179+
# )
180+
181+
# #
182+
# # Include directories
183+
# #
184+
# target_include_directories(${SWIG_MODULE_${target}_REAL_NAME}
185+
# PRIVATE
186+
# ${PROJECT_BINARY_DIR}/source/include
187+
# ${CMAKE_CURRENT_SOURCE_DIR}/include
188+
# ${CMAKE_CURRENT_BINARY_DIR}/include
189+
190+
# ${JAVA_INCLUDE_DIRS} # Java includes
191+
# ${JNI_INCLUDE_DIRS} # JNI includes
192+
193+
# PUBLIC
194+
# ${DEFAULT_INCLUDE_DIRECTORIES}
195+
196+
# INTERFACE
197+
# $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
198+
# $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
199+
# $<INSTALL_INTERFACE:include>
200+
# )
201+
202+
# #
203+
# # Libraries
204+
# #
205+
206+
# swig_link_libraries(${target}
207+
# PRIVATE
208+
# ${JAVA_LIBRARY} # Java libraries
209+
# ${JNI_LIBRARIES} # JNI libraries
210+
211+
# ${META_PROJECT_NAME}::metacall
212+
213+
# PUBLIC
214+
# ${DEFAULT_LIBRARIES}
215+
216+
# INTERFACE
217+
# )
218+
219+
# #
220+
# # Compile definitions
221+
# #
222+
223+
# target_compile_definitions(${SWIG_MODULE_${target}_REAL_NAME}
224+
# PRIVATE
225+
226+
# PUBLIC
227+
# $<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:${target_upper}_STATIC_DEFINE>
228+
# ${DEFAULT_COMPILE_DEFINITIONS}
229+
230+
# INTERFACE
231+
# )
232+
233+
# #
234+
# # Compile options
235+
# #
236+
237+
# target_compile_options(${SWIG_MODULE_${target}_REAL_NAME}
238+
# PRIVATE
239+
240+
# PUBLIC
241+
# ${DEFAULT_COMPILE_OPTIONS}
242+
243+
# INTERFACE
244+
# )
245+
246+
# #
247+
# # Linker options
248+
# #
249+
250+
# target_link_libraries(${SWIG_MODULE_${target}_REAL_NAME}
251+
# PRIVATE
252+
# ${META_PROJECT_NAME}::metacall
253+
254+
# PUBLIC
255+
# ${DEFAULT_LINKER_OPTIONS}
256+
257+
# INTERFACE
258+
# )
259+
260+
# #
261+
# # Deployment
262+
# #
263+
264+
# # Library
265+
# install(TARGETS ${SWIG_MODULE_${target}_REAL_NAME}
266+
# EXPORT "${target}-export" COMPONENT dev
267+
# RUNTIME DESTINATION ${INSTALL_BIN} COMPONENT runtime
268+
# LIBRARY DESTINATION ${INSTALL_SHARED} COMPONENT runtime
269+
# ARCHIVE DESTINATION ${INSTALL_LIB} COMPONENT dev
270+
# )
271+
272+
# # Header files
273+
# install(DIRECTORY
274+
# ${CMAKE_CURRENT_SOURCE_DIR}/include/${target} DESTINATION ${INSTALL_INCLUDE}
275+
# COMPONENT dev
276+
# )
277+
278+
# # Generated header files
279+
# install(DIRECTORY
280+
# ${CMAKE_CURRENT_BINARY_DIR}/include/${target} DESTINATION ${INSTALL_INCLUDE}
281+
# COMPONENT dev
282+
# )
283+
284+
# # CMake config
285+
# install(EXPORT ${target}-export
286+
# NAMESPACE ${META_PROJECT_NAME}::
287+
# DESTINATION ${INSTALL_CMAKE}/${target}
288+
# COMPONENT dev
289+
# )
290+
291+
# #
292+
# # Configure test
293+
# #
294+
295+
# set(java_port_test "${target}_test")
296+
# set(java_port_test_path "${CMAKE_BINARY_DIR}/${java_port_test}.java")
297+
298+
# # Require module name
299+
# if(CMAKE_BUILD_TYPE STREQUAL "Debug")
300+
# get_target_property(DEBUG_POSTFIX ${SWIG_MODULE_${target}_REAL_NAME} "DEBUG_POSTFIX")
301+
# set(JAVA_PORT_NAME "${SWIG_MODULE_${target}_REAL_NAME}${DEBUG_POSTFIX}")
302+
# else()
303+
# set(JAVA_PORT_NAME "${SWIG_MODULE_${target}_REAL_NAME}")
304+
# endif()
305+
306+
# configure_file(test/run.java.in ${java_port_test_path})
307+
308+
# #
309+
# # Define test
310+
# #
311+
312+
# add_test(NAME ${target}
313+
# COMMAND ${JAVA_EXECUTABLE} ${java_port_test_path}
314+
# )
315+
316+
# #
317+
# # Define test labels
318+
# #
319+
320+
# set_property(TEST ${target}
321+
# PROPERTY LABELS ${java_port_test}
322+
# )
323+
324+
# include(TestEnvironmentVariables)
325+
326+
# test_environment_variables(${target}
327+
# ""
328+
# ${TESTS_ENVIRONMENT_VARIABLES}
329+
# )

0 commit comments

Comments
 (0)