Author: cbieneman
Date: Tue Jul 25 13:30:58 2017
New Revision: 309024

URL: http://llvm.org/viewvc/llvm-project?rev=309024&view=rev
Log:
[CMake] Rework construction of framework bundle

This adds an explicit step for processing the headers and restructures how the 
framework bundles are constructed. This should make the frameworks more 
reliably constructed.

Added:
    lldb/trunk/scripts/framework-header-fix.sh   (with props)
Modified:
    lldb/trunk/source/API/CMakeLists.txt

Added: lldb/trunk/scripts/framework-header-fix.sh
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/framework-header-fix.sh?rev=309024&view=auto
==============================================================================
--- lldb/trunk/scripts/framework-header-fix.sh (added)
+++ lldb/trunk/scripts/framework-header-fix.sh Tue Jul 25 13:30:58 2017
@@ -0,0 +1,13 @@
+#!/bin/sh
+# Usage: framework-header-fix.sh <source header dir> <LLDB Version>
+for file in `find $1 -name "*.h"`
+do
+  sed -i '' 's/\(#include\)[ ]*"lldb\/\(API\/\)\{0,1\}\(.*\)"/\1 <LLDB\/\3>/1' 
"$file"
+  sed -i '' 's|<LLDB/Utility|<LLDB|' "$file"
+  LLDB_VERSION=`echo $2 | /usr/bin/sed -E 
's/^([0-9]+).([0-9]+).([0-9]+)(.[0-9]+)?$/\\1/g'`
+  LLDB_REVISION=`echo $2 | /usr/bin/sed -E 
's/^([0-9]+).([0-9]+).([0-9]+)(.[0-9]+)?$/\\3/g'`
+  LLDB_VERSION_STRING=`echo $2`
+  sed -i '' "s|//#define LLDB_VERSION$|#define LLDB_VERSION $LLDB_VERSION |" 
"$file"
+  sed -i '' "s|//#define LLDB_REVISION|#define LLDB_REVISION $LLDB_REVISION |" 
"$file"
+  sed -i '' "s|//#define LLDB_VERSION_STRING|#define LLDB_VERSION_STRING 
\"$LLDB_VERSION_STRING\" |" "$file"
+done

Propchange: lldb/trunk/scripts/framework-header-fix.sh
------------------------------------------------------------------------------
    svn:executable = *

Modified: lldb/trunk/source/API/CMakeLists.txt
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/CMakeLists.txt?rev=309024&r1=309023&r2=309024&view=diff
==============================================================================
--- lldb/trunk/source/API/CMakeLists.txt (original)
+++ lldb/trunk/source/API/CMakeLists.txt Tue Jul 25 13:30:58 2017
@@ -156,19 +156,41 @@ endif()
 target_link_libraries(liblldb PRIVATE ${LLDB_SYSTEM_LIBS})
 
 if(LLDB_BUILD_FRAMEWORK)
-  file(GLOB public_headers ${LLDB_SOURCE_DIR}/include/lldb/API/*.h)
+  file(GLOB public_headers ${LLDB_SOURCE_DIR}/include/lldb/API/*.h
+      ${LLDB_SOURCE_DIR}/include/lldb/lldb-*.h)
+  file(GLOB root_public_headers ${LLDB_SOURCE_DIR}/include/lldb/lldb-*.h)
+
+  foreach(header ${root_public_headers})
+    list(APPEND copy_headers_commands
+         COMMAND ${CMAKE_COMMAND} -E copy ${header} 
${LLDB_SOURCE_DIR}/include/lldb/API 
${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders)
+  endforeach()
+
+  foreach(header ${public_headers} ${root_public_headers})
+    get_filename_component(basename ${header} NAME)
+    list(APPEND framework_headers 
${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders/${basename})
+  endforeach()
+
+  add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders/LLDB.h
+                    COMMAND ${CMAKE_COMMAND} -E copy_directory 
${LLDB_SOURCE_DIR}/include/lldb/API ${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders
+                    ${copy_headers_commands}
+                    COMMAND ${LLDB_SOURCE_DIR}/scripts/framework-header-fix.sh 
${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders ${LLDB_VERSION}
+                    )
+  add_custom_target(lldb-framework-headers DEPENDS 
${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders/LLDB.h)
+  add_dependencies(liblldb lldb-framework-headers)
+
   set_target_properties(liblldb PROPERTIES
     OUTPUT_NAME LLDB
     FRAMEWORK On
     FRAMEWORK_VERSION ${LLDB_FRAMEWORK_VERSION}
     LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${LLDB_FRAMEWORK_INSTALL_DIR}
-    PUBLIC_HEADER "${public_headers}")
+    PUBLIC_HEADER "${framework_headers}")
 
   add_custom_command(TARGET liblldb POST_BUILD
-    COMMAND ${CMAKE_COMMAND} -E make_directory 
$<TARGET_FILE_DIR:liblldb>/Versions/${LLDB_FRAMEWORK_VERSION}
-    COMMAND ${CMAKE_COMMAND} -E copy_directory 
${LLDB_SOURCE_DIR}/include/lldb/API $<TARGET_FILE_DIR:liblldb>/Headers
-    COMMAND ${CMAKE_COMMAND} -E create_symlink Versions/Current/Headers 
${CMAKE_BINARY_DIR}/${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Headers 
+    COMMAND ${CMAKE_COMMAND} -E copy_directory 
${CMAKE_CURRENT_BINARY_DIR}/FrameworkHeaders $<TARGET_FILE_DIR:liblldb>/Headers
+    COMMAND ${CMAKE_COMMAND} -E create_symlink Versions/Current/Headers 
${CMAKE_BINARY_DIR}/${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Headers
+    COMMAND ${CMAKE_COMMAND} -E create_symlink ${LLDB_FRAMEWORK_VERSION} 
${CMAKE_BINARY_DIR}/${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Versions/Current
     COMMAND ${CMAKE_COMMAND} -E copy_directory 
${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/clang/${LLDB_VERSION} 
$<TARGET_FILE_DIR:liblldb>/Resources/Clang
     )
+
 endif()
 


_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to