Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmake changes to install proper files #119

Merged
merged 1 commit into from
Aug 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions languages/c/src/shared/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,6 @@ set(FIREBOLT_LOGLEVEL "Info" CACHE STRING "Log level to be enabled")
option(FIREBOLT_ENABLE_STATIC_LIB "Create Firebolt library as Static library" OFF)
option(ENABLE_TESTS "Build openrpc native test" OFF)

if (NOT SYSROOT_PATH)
# Set sysroot to support PC builds, sysroot_path not configured case
set(SYSROOT_PATH "${CMAKE_SOURCE_DIR}/../../firebolt")
endif()

if (FIREBOLT_ENABLE_STATIC_LIB)
set(FIREBOLT_LIBRARY_TYPE STATIC)
else ()
Expand Down
90 changes: 9 additions & 81 deletions languages/c/src/shared/cmake/HelperFunctions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -56,89 +56,17 @@ function(InstallHeaders)
list(APPEND subdirs ${directory})

foreach(subdir ${subdirs})
set(dest ${destination}/${subdir})
file(GLOB headers "${source}/${directory}/${subdir}/*.h")
if (headers)
add_custom_command(
TARGET ${Argument_TARGET}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${Argument_NAMESPACE}/usr/include/${dest}
COMMAND ${CMAKE_COMMAND} -E copy ${source}/${directory}/${subdir}/*.h ${CMAKE_BINARY_DIR}/${Argument_NAMESPACE}/usr/include/${dest}
)
if (NOT subdir STREQUAL ".")
set(dest ${destination}/${subdir})
file(GLOB headers "${source}/${directory}/${subdir}/*.h")
if (headers)
install(
DIRECTORY "${source}/${directory}/${subdir}"
DESTINATION include/${dest}
FILES_MATCHING PATTERN "*.h")
endif()
endif()
endforeach(subdir)
endforeach(directory)
endif()
endfunction(InstallHeaders)

function(InstallLibraries)
set(optionsArgs SHARED STATIC)
set(oneValueArgs TARGET DESTINATION LIBDIR)
set(multiValueArgs LIBRARIES)

cmake_parse_arguments(Argument "${optionsArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
if (Argument_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unknown keywords given to InstallLibraries(): \"${Argument_UNPARSED_ARGUMENTS}\"")
endif()
if (Argument_LIBRARIES)
add_custom_command(
TARGET ${Argument_TARGET}
POST_BUILD
COMMENT "=================== Installing Libraries ======================"
)
foreach(LIBRARY ${Argument_LIBRARIES})
if (Argument_SHARED)
add_custom_command(
TARGET ${Argument_TARGET}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${Argument_DESTINATION}/usr/lib
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${Argument_LIBDIR}/lib${LIBRARY}.so.${PROJECT_VERSION} ${CMAKE_BINARY_DIR}/${Argument_DESTINATION}/usr/lib
COMMAND ${CMAKE_COMMAND} -E create_symlink lib${LIBRARY}.so.${PROJECT_VERSION} ${CMAKE_BINARY_DIR}/${Argument_DESTINATION}/usr/lib/lib${LIBRARY}.so.${PROJECT_VERSION_MAJOR}
COMMAND ${CMAKE_COMMAND} -E create_symlink lib${LIBRARY}.so.${PROJECT_VERSION_MAJOR} ${CMAKE_BINARY_DIR}/${Argument_DESTINATION}/usr/lib/lib${LIBRARY}.so
)
elseif (Argument_STATIC)
add_custom_command(
TARGET ${Argument_TARGET}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${Argument_DESTINATION}/usr/lib
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/lib${LIBRARY}.a ${CMAKE_BINARY_DIR}/${Argument_DESTINATION}/usr/lib
)

endif()
endforeach(LIBRARY)
endif()
endfunction(InstallLibraries)

function(InstallCMakeConfigs)
set(optionsArgs)
set(oneValueArgs TARGET DESTINATION)
set(multiValueArgs)

cmake_parse_arguments(Argument "${optionsArgs}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
if (Argument_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unknown keywords given to InstallCMakeConfigs(): \"${Argument_UNPARSED_ARGUMENTS}\"")
endif()
if (Argument_TARGET)
if (${CMAKE_VERSION} VERSION_LESS "3.25.0")
set(EXPORT_CONFIG_PATH "lib/cmake/${Argument_TARGET}")
else ()
set(EXPORT_CONFIG_PATH "*")
endif ()
add_custom_command(
TARGET ${Argument_TARGET}
POST_BUILD
COMMENT "=================== Installing CMakeConfigs ======================"
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${Argument_DESTINATION}/usr/lib/cmake/${Argument_TARGET}
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${Argument_TARGET}Config*.cmake ${CMAKE_BINARY_DIR}/${Argument_DESTINATION}/usr/lib/cmake/${Argument_TARGET}
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Export/${EXPORT_CONFIG_PATH}/${Argument_TARGET}Targets*.cmake ${CMAKE_BINARY_DIR}/${Argument_DESTINATION}/usr/lib/cmake/${Argument_TARGET}
)
if (EXISTS ${CMAKE_CURRENT_BINARY_DIR}/${Argument_TARGET}.pc)
add_custom_command(
TARGET ${Argument_TARGET}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${Argument_DESTINATION}/usr/lib/pkgconfig
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${Argument_TARGET}.pc ${CMAKE_BINARY_DIR}/${Argument_DESTINATION}/usr/lib/pkgconfig
)
endif()
endif()
endfunction(InstallCMakeConfigs)
28 changes: 11 additions & 17 deletions languages/c/src/shared/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,25 +55,19 @@ set_target_properties(${TARGET} PROPERTIES

install(
TARGETS ${TARGET} EXPORT ${TARGET}Targets
LIBRARY DESTINATION lib COMPONENT libs
PUBLIC_HEADER DESTINATION include/${TARGET} COMPONENT devel # headers for mac (note the different component -> different package)
INCLUDES DESTINATION include/${TARGET} # headers
ARCHIVE DESTINATION lib COMPONENT libs # static lib
LIBRARY DESTINATION lib COMPONENT libs # shared lib
)

InstallHeaders(TARGET ${TARGET} HEADERS . NAMESPACE ${FIREBOLT_NAMESPACE} DESTINATION ${FIREBOLT_NAMESPACE}SDK)
InstallHeaders(TARGET ${TARGET} HEADERS . NAMESPACE ${FIREBOLT_NAMESPACE}
SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/../include DESTINATION ${FIREBOLT_NAMESPACE})
install(
DIRECTORY ${CMAKE_SOURCE_DIR}/include/
DESTINATION include/${FIREBOLT_NAMESPACE}SDK
FILES_MATCHING PATTERN "*.h")

install(
FILES ${CMAKE_BINARY_DIR}/FireboltConfig.cmake
DESTINATION lib/cmake/${FIREBOLT_NAMESPACE})

InstallLibraries(TARGET ${TARGET} ${FIREBOLT_LIBRARY_TYPE} LIBDIR ${LIBDIR} LIBRARIES ${TARGET} DESTINATION ${FIREBOLT_NAMESPACE})
InstallHeaders(TARGET ${TARGET} HEADERS . NAMESPACE ${FIREBOLT_NAMESPACE} DESTINATION ${FIREBOLT_NAMESPACE}SDK)
InstallCMakeConfig(TARGETS ${TARGET})
InstallPackageConfig(TARGETS ${TARGET} DESCRIPTION "Firebolt SDK Library")
InstallCMakeConfigs(TARGET ${TARGET} DESTINATION ${FIREBOLT_NAMESPACE})

add_custom_command(
TARGET ${TARGET}
POST_BUILD
COMMENT "=================== Installing FireboltConfig & Helper CMakes ======================"
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${FIREBOLT_NAMESPACE}/usr/lib/cmake/${FIREBOLT_NAMESPACE}
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/${FIREBOLT_NAMESPACE}Config.cmake ${CMAKE_BINARY_DIR}/${FIREBOLT_NAMESPACE}/usr/lib/cmake/${FIREBOLT_NAMESPACE}
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/cmake/*.cmake ${CMAKE_BINARY_DIR}/${FIREBOLT_NAMESPACE}/usr/lib/cmake/${FIREBOLT_NAMESPACE}
)
13 changes: 8 additions & 5 deletions languages/c/templates/sdk/scripts/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ usage()
echo "options:"
echo " -p sdk path"
echo " -s sysroot path"
echo " -t enable test"
echo " -c clear build"
echo " -l enable static build"
echo " -t enable test"
echo " -h : help"
echo
echo "usage: "
Expand All @@ -16,13 +17,15 @@ SdkPath="."
EnableTest="OFF"
SysrootPath=${SYSROOT_PATH}
ClearBuild="N"
while getopts p:s:tch flag
EnableStaticLib="OFF"
while getopts p:s:clth flag
do
case "${flag}" in
p) SdkPath="${OPTARG}";;
s) SysrootPath="${OPTARG}";;
t) EnableTest="ON";;
c) ClearBuild="Y";;
l) EnableStaticLib="ON";;
t) EnableTest="ON";;
h) usage && exit 1;;
esac
done
Expand All @@ -32,6 +35,6 @@ then
rm -rf ${SdkPath}/build
fi

cmake -B${SdkPath}/build -S${SdkPath} -DSYSROOT_PATH=${SysrootPath} -DENABLE_TESTS=${EnableTest}
cmake -B${SdkPath}/build -S${SdkPath} -DSYSROOT_PATH=${SysrootPath} -DENABLE_TESTS=${EnableTest} -DHIDE_NON_EXTERNAL_SYMBOLS=OFF -DFIREBOLT_ENABLE_STATIC_LIB=${EnableStaticLib}
cmake --build ${SdkPath}/build
cmake --install ${SdkPath}/build --prefix=${SdkPath}/build/Firebolt
cmake --install ${SdkPath}/build --prefix=${SdkPath}/build/Firebolt/usr
Loading