diff options
author | Kyungwoo Lee <kyulee@microsoft.com> | 2015-12-03 14:26:05 -0800 |
---|---|---|
committer | Kyungwoo Lee <kyulee@microsoft.com> | 2015-12-03 20:41:18 -0800 |
commit | 1d34f6293740f4f79f8b362c2d605fa2a527d538 (patch) | |
tree | a716d441f4449582b25bf2de9b264ba56fd8ee19 /src/CMakeLists.txt | |
parent | 0bdc646c5955ca0c735a3976d01969b246e848ef (diff) | |
download | coreclr-1d34f6293740f4f79f8b362c2d605fa2a527d538.tar.gz coreclr-1d34f6293740f4f79f8b362c2d605fa2a527d538.tar.bz2 coreclr-1d34f6293740f4f79f8b362c2d605fa2a527d538.zip |
Refactoring resource string
This pulls out resource string handling out of mscorrc into top level.
The scripts (awk) are now parameterized to generate a unique string table for the
given name.
Added resourcestring.cpp to create an API "LoadResourceString".
Added a few macros into resourcestring.h, which are used for definition/uses of
the string table.
Diffstat (limited to 'src/CMakeLists.txt')
-rw-r--r-- | src/CMakeLists.txt | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 31c37e5a39..7949679f8e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -34,6 +34,40 @@ if(CLR_CMAKE_PLATFORM_UNIX) # This prevents inclusion of standard C++ compiler headers set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostdinc++") endif(NOT CLR_CMAKE_PLATFORM_DARWIN) + + set (NATIVE_RESOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/nativeresources) + include_directories(${NATIVE_RESOURCE_DIR}) + set (RC_TO_CPP ${NATIVE_RESOURCE_DIR}/rctocpp.awk) + set (PROCESS_RC ${NATIVE_RESOURCE_DIR}/processrc.awk) + set (RESOURCE_STRING_HEADER_DIR ${NATIVE_RESOURCE_DIR}) + + # Create a command to create a C++ source file containing an array of + # NativeStringResource structs which represent the information from a + # given Windows .rc file. The target C++ file path is returned in the + # variable specified by the TARGET_FILE parameter. + function(build_resources SOURCE TARGET_NAME TARGET_FILE) + + get_compile_definitions(PREPROCESS_DEFINITIONS) + get_include_directories(INCLUDE_DIRECTORIES) + + set(PREPROCESSED_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}.rc.i) + set(RESOURCE_ENTRY_ARRAY_CPP ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}.cpp) + + add_custom_command( + OUTPUT ${RESOURCE_ENTRY_ARRAY_CPP} + # Preprocess the windows .rc file + COMMAND ${CMAKE_CXX_COMPILER} -E -P ${PREPROCESS_DEFINITIONS} ${INCLUDE_DIRECTORIES} -o ${PREPROCESSED_SOURCE} -x c ${SOURCE} + # Convert the preprocessed .rc file to a C++ file which will be used to make a static lib. + COMMAND ${AWK} -v name=${TARGET_NAME} -f ${RC_TO_CPP} -f ${PROCESS_RC} ${PREPROCESSED_SOURCE} >${RESOURCE_ENTRY_ARRAY_CPP} + DEPENDS ${SOURCE} ${RC_TO_CPP} ${PROCESS_RC} + ) + + include_directories(${RESOURCE_STRING_HEADER_DIR}) + set(${TARGET_FILE} ${RESOURCE_ENTRY_ARRAY_CPP} PARENT_SCOPE) + + endfunction() + + add_subdirectory(nativeresources) endif(CLR_CMAKE_PLATFORM_UNIX) add_subdirectory(utilcode) |