Skip to content

Commit 41b48c8

Browse files
committed
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 f5f5694 commit 41b48c8

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)