diff options
author | Vladislav Vaintroub <wlad@mariadb.com> | 2020-06-08 12:25:02 +0200 |
---|---|---|
committer | Vladislav Vaintroub <wlad@mariadb.com> | 2020-06-08 12:25:28 +0200 |
commit | cd21fc0aaa5c2924bb382f0e1b79a04fbcae4cbc (patch) | |
tree | 3189303d176518cc3441c33ebb31b830b205c38f | |
parent | d3681335b18b82cf1cfb090ce1938de2ee6b21fc (diff) | |
download | mariadb-git-bb-10.5-merge-static-libs-danblack.tar.gz |
cmake: merge_static_libs - correct duplicate assumptionsbb-10.5-merge-static-libs-danblack
From daniel black
-rw-r--r-- | cmake/libutils.cmake | 1 | ||||
-rw-r--r-- | cmake/merge_archives_unix.cmake | 41 |
2 files changed, 11 insertions, 31 deletions
diff --git a/cmake/libutils.cmake b/cmake/libutils.cmake index c7b01bf8429..1d26215b137 100644 --- a/cmake/libutils.cmake +++ b/cmake/libutils.cmake @@ -203,7 +203,6 @@ MACRO(MERGE_STATIC_LIBS TARGET OUTPUT_NAME LIBS_TO_MERGE) -DTARGET_LOCATION="$<TARGET_FILE:${TARGET}>" -DTARGET="${TARGET}" -DSTATIC_LIBS="${STATIC_LIBS}" - -DCMAKE_CURRENT_BINARY_DIR="${CMAKE_CURRENT_BINARY_DIR}" -DCMAKE_AR="${CMAKE_AR}" -DCMAKE_RANLIB="${CMAKE_RANLIB}" -P "${MYSQL_CMAKE_SCRIPT_DIR}/merge_archives_unix.cmake" diff --git a/cmake/merge_archives_unix.cmake b/cmake/merge_archives_unix.cmake index 09f4fbf2506..448c3257c30 100644 --- a/cmake/merge_archives_unix.cmake +++ b/cmake/merge_archives_unix.cmake @@ -1,4 +1,4 @@ -# Copyright (c) 2009 Sun Microsystems, Inc. +# Copyright (c) 2020 IBM # Use is subject to license terms. # # This program is free software; you can redistribute it and/or modify @@ -16,41 +16,22 @@ FILE(REMOVE "${TARGET_LOCATION}") -SET(TEMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/merge_archives_${TARGET}) -MAKE_DIRECTORY(${TEMP_DIR}) -# Extract each archive to its own subdirectory(avoid object filename clashes) -SEPARATE_ARGUMENTS(STATIC_LIBS UNIX_COMMAND "${STATIC_LIBS}") -FOREACH(LIB ${STATIC_LIBS}) - GET_FILENAME_COMPONENT(NAME_NO_EXT ${LIB} NAME_WE) - SET(TEMP_SUBDIR ${TEMP_DIR}/${NAME_NO_EXT}) - MAKE_DIRECTORY(${TEMP_SUBDIR}) - EXECUTE_PROCESS( - COMMAND ${CMAKE_AR} -x ${LIB} - WORKING_DIRECTORY ${TEMP_SUBDIR} - ) +SET(MRI_SCRIPT "${TARGET}.mri") +FILE(REMOVE ${MRI_SCRIPT}) - FILE(GLOB_RECURSE LIB_OBJECTS "${TEMP_SUBDIR}/*") - SET(OBJECTS ${OBJECTS} ${LIB_OBJECTS}) -ENDFOREACH() +SET(SCRIPT_CONTENTS "CREATE ${TARGET_LOCATION}\n") -# Use relative paths, makes command line shorter. -GET_FILENAME_COMPONENT(ABS_TEMP_DIR ${TEMP_DIR} ABSOLUTE) -FOREACH(OBJ ${OBJECTS}) - FILE(RELATIVE_PATH OBJ ${ABS_TEMP_DIR} ${OBJ}) - FILE(TO_NATIVE_PATH ${OBJ} OBJ) - SET(ALL_OBJECTS ${ALL_OBJECTS} ${OBJ}) +SEPARATE_ARGUMENTS(STATIC_LIBS_LIST UNIX_COMMAND "${STATIC_LIBS}") +FOREACH(LIB ${STATIC_LIBS_LIST}) + STRING(APPEND SCRIPT_CONTENTS "ADDLIB ${LIB}\n") ENDFOREACH() +STRING(APPEND SCRIPT_CONTENTS "SAVE\nEND\n") +FILE(WRITE ${MRI_SCRIPT} "${SCRIPT_CONTENTS}") -FILE(TO_NATIVE_PATH ${TARGET_LOCATION} ${TARGET_LOCATION}) -# Now pack the objects into library with ar. EXECUTE_PROCESS( - COMMAND ${CMAKE_AR} -r ${TARGET_LOCATION} ${ALL_OBJECTS} - WORKING_DIRECTORY ${TEMP_DIR} + COMMAND ${CMAKE_AR} -M + INPUT_FILE ${MRI_SCRIPT} ) EXECUTE_PROCESS( COMMAND ${CMAKE_RANLIB} ${TARGET_LOCATION} - WORKING_DIRECTORY ${TEMP_DIR} ) - -# Cleanup -FILE(REMOVE_RECURSE ${TEMP_DIR}) |