@@ -3,65 +3,80 @@ function(nui_preprocess_inline_js)
33 set (multi_value_args EXTRA_CXX_FLAGS)
44 cmake_parse_arguments (CPP "" "${one_value_args} " "${multi_value_args} " ${ARGN} )
55
6- string (TOUPPER ${CMAKE_BUILD_TYPE} build_type )
7- string (REPLACE " " ";" c_flags "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${build_type} }" )
6+ set (CURRENT_BUILD_TYPE "Release" )
7+ if (CMAKE_BUILD_TYPE )
8+ set (CURRENT_BUILD_TYPE "${CMAKE_BUILD_TYPE} " )
9+ endif ()
10+
11+ string (TOUPPER ${CURRENT_BUILD_TYPE} PREPROCESS_BUILD_TYPE)
12+ string (REPLACE " " ";" PREPROCESS_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${PREPROCESS_BUILD_TYPE} }" )
813
14+ set (INCLUDE_DIRS "$<TARGET_PROPERTY :${CPP_TARGET} ,INCLUDE_DIRECTORIES >" )
15+ set (COMPILE_DEFINITIONS "$<TARGET_PROPERTY :${CPP_TARGET} ,COMPILE_DEFINITIONS >" )
916 add_custom_command (
1017 OUTPUT ${CPP_OUTPUT}
1118 COMMAND ${CMAKE_COMMAND} -E make_directory ${CPP_DIRECTORY}
1219 COMMAND ${CMAKE_CXX_COMPILER}
13- # " -D$<JOIN:$<TARGET_PROPERTY:${CPP_TARGET},COMPILE_DEFINITIONS>, ;-D>"
14- "-I$<JOIN :$< TARGET_PROPERTY : ${CPP_TARGET} , INCLUDE_DIRECTORIES >, ;-I >"
15- ${c_flags }
20+ "$<$< BOOL : ${COMPILE_DEFINITIONS} >: -D $<JOIN :${COMPILE_DEFINITIONS} , ;-D > >"
21+ "$<$< BOOL : ${INCLUDE_DIRS} >: -I $<JOIN :${INCLUDE_DIRS} , ;-I > >"
22+ ${PREPROCESS_CXX_FLAGS }
1623 $<TARGET_PROPERTY :${CPP_TARGET} ,COMPILE_OPTIONS >
1724 ${CPP_EXTRA_CXX_FLAGS}
1825 -E ${CPP_SOURCE} -o ${CPP_OUTPUT}
19- # COMMAND "${NUI_INLINE_EXTRACTOR_TARGET_FILE}" ${CPP_INLINE_CACHE} ${CPP_OUTPUT} ${CPP_IS_FIRST}
2026 COMMAND_EXPAND_LISTS VERBATIM
2127 IMPLICIT_DEPENDS C ${CPP_SOURCE}
2228 DEPENDS ${CPP_SOURCE} ${CPP_DEPENDS} )
2329endfunction ()
2430
2531function (nui_enable_inline )
26- set (one_value_args TARGET UNPACKED_MODE)
32+ set (one_value_args TARGET UNPACKED_MODE RELATIVE_TO )
2733 set (multi_value_args)
2834 cmake_parse_arguments (nui_enable_inline_ARGS "" "${one_value_args} " "${multi_value_args} " ${ARGN} )
2935
30- get_target_property (INLINE_JS_SOURCES ${nui_enable_inline_ARGS_TARGET} SOURCES )
36+ get_target_property (INLINE_SOURCES ${nui_enable_inline_ARGS_TARGET} SOURCES )
37+ message (STATUS "Inline sources for ${nui_enable_inline_ARGS_TARGET} " )
3138
3239 set (INLINE_DIRECTORY_SUBDIR "nui-inline" )
33- set (INLINE_DIRECTORY "${CMAKE_BINARY_DIR } /${INLINE_DIRECTORY_SUBDIR} " )
40+ set (INLINE_DIRECTORY "${NUI_MODULE_BUILD_DIR } /${INLINE_DIRECTORY_SUBDIR} " )
3441 set (INLINE_CACHE "${INLINE_DIRECTORY} /inline.cache" )
3542 set (INLINE_IMPORTS_SCRIPTS "${INLINE_DIRECTORY} /inline_imports.js" )
3643 set (INLINE_IMPORTS_STYLES "${INLINE_DIRECTORY} /inline_imports.css" )
3744
3845 # for each source file preprocess it:
3946 set (IS_FIRST TRUE )
40- foreach (source_file ${INLINE_JS_SOURCES} )
41- get_filename_component (source_file_name "${source_file} " NAME )
42- set (preprocessed_source_file "${INLINE_DIRECTORY} /${source_file_name} .i" )
47+ foreach (SOURCE_FILE ${INLINE_SOURCES} )
48+ # Get relative path to source file
49+ file (RELATIVE_PATH SOURCE_FILE_NAME_RELATIVE "${nui_enable_inline_ARGS_RELATIVE_TO} " "${SOURCE_FILE} " )
50+ get_filename_component (SOURCE_FILE_NAME "${SOURCE_FILE_NAME_RELATIVE} " NAME_WE )
51+ # Get just the directory part of the source file
52+ get_filename_component (SOURCE_FILE_DIR "${SOURCE_FILE_NAME_RELATIVE} " DIRECTORY )
53+ if (NOT "${SOURCE_FILE_DIR} " STREQUAL "" )
54+ set (PREPROCESSED_SOURCE_FILE "${INLINE_DIRECTORY} /${SOURCE_FILE_DIR} /${SOURCE_FILE_NAME} .i" )
55+ else ()
56+ set (PREPROCESSED_SOURCE_FILE "${INLINE_DIRECTORY} /${SOURCE_FILE_NAME} .i" )
57+ endif ()
4358 nui_preprocess_inline_js (
4459 TARGET ${nui_enable_inline_ARGS_TARGET}
45- DIRECTORY "${INLINE_DIRECTORY} "
60+ DIRECTORY "${INLINE_DIRECTORY} / ${SOURCE_FILE_DIR} "
4661 INLINE_CACHE "${INLINE_CACHE} "
47- SOURCE "${source_file } "
48- OUTPUT "${preprocessed_source_file } "
62+ SOURCE "${SOURCE_FILE } "
63+ OUTPUT "${PREPROCESSED_SOURCE_FILE } "
4964 EXTRA_CXX_FLAGS -P -CC -DNUI_INLINE -DNUI_MODULE_SOURCE_DIR= "${CMAKE_SOURCE_DIR} " -DNUI_MODULE_CURRENT_SOURCE_DIR= "${CMAKE_CURRENT_SOURCE_DIR} "
5065 IS_FIRST ${IS_FIRST}
5166 )
5267 set (IS_FIRST FALSE )
53- message (STATUS "Preprocessing ${source_file } to ${preprocessed_source_file } " )
54- list (APPEND preprocessed_sources "${preprocessed_source_file } " )
68+ message (STATUS "Preprocessing ${SOURCE_FILE } to ${PREPROCESSED_SOURCE_FILE } " )
69+ list (APPEND PREPROCESSED_SOURCES "${PREPROCESSED_SOURCE_FILE } " )
5570 endforeach ()
5671
5772 add_custom_command (
5873 OUTPUT
5974 ${INLINE_IMPORTS_SCRIPTS}
6075 ${INLINE_IMPORTS_STYLES}
6176 COMMAND ${CMAKE_COMMAND} -E make_directory ${INLINE_DIRECTORY}
62- COMMAND "${NUI_INLINE_EXTRACTOR_TARGET_FILE} " ${INLINE_CACHE} ${CMAKE_BINARY_DIR} ${INLINE_DIRECTORY_SUBDIR} ${preprocessed_sources }
77+ COMMAND "${NUI_INLINE_EXTRACTOR_TARGET_FILE} " ${INLINE_CACHE} ${CMAKE_BINARY_DIR} ${INLINE_DIRECTORY_SUBDIR} ${PREPROCESSED_SOURCES }
6378 COMMAND_EXPAND_LISTS VERBATIM
64- DEPENDS ${preprocessed_sources }
79+ DEPENDS ${PREPROCESSED_SOURCES }
6580 )
6681
6782 add_custom_target (
0 commit comments