mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			74 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| #
 | |
| # Generate LIBS and CFLAGS that third-party clients should use
 | |
| #
 | |
| 
 | |
| # Use cmake variables to inspect dependencies for 
 | |
| # mysqlclient library (add -l stuff)
 | |
| SET(CLIENT_LIBS "")
 | |
| SET(LIBS "")
 | |
| 
 | |
| # Avoid compatibility warning about lists with empty elements
 | |
| IF(POLICY CMP0011)
 | |
|   CMAKE_POLICY(SET CMP0011 NEW)
 | |
| ENDIF()
 | |
| 
 | |
| # Extract dependencies using CMake's internal ${target}_LIB_DEPENDS variable
 | |
| # returned string in ${var} is can be passed to linker's command line
 | |
| MACRO(EXTRACT_LINK_LIBRARIES target var)
 | |
|   IF(${target}_LIB_DEPENDS)
 | |
|     LIST(REMOVE_ITEM ${target}_LIB_DEPENDS "")
 | |
|     LIST(REMOVE_DUPLICATES ${target}_LIB_DEPENDS)
 | |
|     FOREACH(lib ${${target}_LIB_DEPENDS})
 | |
|       # Filter out "general", it is not a library, just CMake hint
 | |
|       # Also, remove duplicates
 | |
|       IF(NOT lib STREQUAL "general" AND NOT ${var}  MATCHES "-l${lib} " AND NOT lib STREQUAL "zlib")
 | |
|         IF (lib MATCHES "^\\-")
 | |
|           SET(${var} "${${var}} ${lib} ") 
 | |
|         ELSEIF(lib MATCHES "^/")
 | |
|           IF (lib MATCHES "\\.(a|so([0-9.]*)|lib|dll|dylib)$")
 | |
|             # Full path, convert to just filename, strip "lib" prefix and extension
 | |
|             GET_FILENAME_COMPONENT(lib "${lib}" NAME_WE)
 | |
|             STRING(REGEX REPLACE "^lib" "" lib "${lib}")
 | |
|             SET(${var} "${${var}}-l${lib} " ) 
 | |
|           ENDIF()
 | |
|         ELSE()
 | |
|           SET(${var} "${${var}}-l${lib} " ) 
 | |
|         ENDIF()
 | |
|       ENDIF()
 | |
|     ENDFOREACH()
 | |
|   ENDIF()
 | |
|   IF(MSVC)
 | |
|     STRING(REPLACE "-l" "" ${var} "${${var}}")
 | |
|   ENDIF()
 | |
| ENDMACRO()
 | |
| 
 | |
| EXTRACT_LINK_LIBRARIES(libmariadb LIBS)
 | |
| EXTRACT_LINK_LIBRARIES(mysqlserver EMB_LIBS)
 | |
| 
 | |
| SET(LIBS     "-lmariadb ${ZLIB_DEPS} ${LIBS} ${openssl_libs}")
 | |
| SET(EMB_LIBS "-lmysqld ${ZLIB_DEPS} ${EMB_LIBS} ${openssl_libs}")
 | |
| 
 | |
| MACRO(REPLACE_FOR_CLIENTS VAR)
 | |
|   SET(v " ${${VAR}} ")
 | |
|   FOREACH(del ${ARGN})
 | |
|     STRING(REGEX REPLACE " -(${del}) " " " v ${v})
 | |
|   ENDFOREACH(del)
 | |
|   STRING(REGEX REPLACE " +" " " v ${v})
 | |
|   STRING(STRIP "${v}" ${VAR}_FOR_CLIENTS)
 | |
| ENDMACRO()
 | |
| 
 | |
| # Remove some options that a client doesn't have to care about
 | |
| # FIXME until we have a --cxxflags, we need to remove -Xa
 | |
| #       and -xstrconst to make --cflags usable for Sun Forte C++
 | |
| # FIXME until we have a --cxxflags, we need to remove -AC99
 | |
| #       to make --cflags usable for HP C++ (aCC)
 | |
| REPLACE_FOR_CLIENTS(CFLAGS "[DU]DBUG_OFF" "[DU]SAFE_MUTEX" "[DU]NDEBUG"
 | |
|   "[DU]FORCE_INIT_OF_VARS" "[DU]EXTRA_DEBUG" "[DU]HAVE_valgrind"
 | |
|   "O" "O[0-9]" "xO[0-9]" "W[-A-Za-z]*" "mtune=[-A-Za-z0-9]*" "g" "fPIC"
 | |
|   "mcpu=[-A-Za-z0-9]*" "unroll2" "ip" "mp" "march=[-A-Za-z0-9]*" "Xa"
 | |
|   "xstrconst" "xc99=none" "AC99" "restrict" "W[-A-Za-z]*=[-A-Za-z0-9]*")
 | |
| 
 | |
| # Same for --libs
 | |
| REPLACE_FOR_CLIENTS(LIBS "Wl,[^ ]*" lmtmalloc static-libcxa i-static static-intel)
 | |
| REPLACE_FOR_CLIENTS(EMB_LIBS lmtmalloc static-libcxa i-static static-intel ltpool)
 | |
| 
 | 
