diff options
author | Vladislav Vaintroub <vvaintroub@mysql.com> | 2009-12-18 00:43:35 +0100 |
---|---|---|
committer | Vladislav Vaintroub <vvaintroub@mysql.com> | 2009-12-18 00:43:35 +0100 |
commit | e34845339546ad72f5c423ec82f49ab68159c9f8 (patch) | |
tree | a5e6a0a61f6577b07e7a7f1b45caeeaeddf47266 /cmake/mysql_add_executable.cmake | |
parent | eb3c44030bf398ddaf033be1a3b1b163faa9bce3 (diff) | |
download | mariadb-git-e34845339546ad72f5c423ec82f49ab68159c9f8.tar.gz |
add new file
Diffstat (limited to 'cmake/mysql_add_executable.cmake')
-rw-r--r-- | cmake/mysql_add_executable.cmake | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/cmake/mysql_add_executable.cmake b/cmake/mysql_add_executable.cmake new file mode 100644 index 00000000000..6df7c8dda33 --- /dev/null +++ b/cmake/mysql_add_executable.cmake @@ -0,0 +1,89 @@ +# Copyright (C) 2009 Sun Microsystems, Inc
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+# Add executable plus some additional MySQL specific stuff
+# Usage (same as for standard CMake's ADD_EXECUTABLE)
+#
+# MYSQL_ADD_EXECUTABLE(target source1...sourceN)
+#
+# MySQL specifics:
+# - instruct CPack to install executable under ${CMAKE_INSTALL_PREFIX}/bin directory
+# On Windows :
+# - add version resource
+# - instruct CPack to do autenticode signing if SIGNCODE is set
+
+INCLUDE(cmake_parse_arguments)
+
+FUNCTION (MYSQL_ADD_EXECUTABLE)
+ # Pass-through arguments for ADD_EXECUTABLE
+ CMAKE_PARSE_ARGUMENTS(ARG
+ "WIN32;MACOSX_BUNDLE;EXCLUDE_FROM_ALL"
+ ""
+ ${ARGN}
+ )
+ LIST(GET ARG_DEFAULT_ARGS 0 target)
+ LIST(REMOVE_AT ARG_DEFAULT_ARGS 0)
+
+ SET(sources ${ARG_DEFAULT_ARGS})
+ IF(WIN32)
+ ADD_VERSION_INFO(${target} VFT_APP sources)
+ ENDIF()
+
+ ADD_EXECUTABLE(${target} ${ARG_WIN32} ${ARG_MACOSX_BUNDLE} ${ARG_EXCLUDE_FROM_ALL} ${sources})
+
+ # tell CPack where to install
+ IF(NOT ARG_EXCLUDE_FROM_ALL)
+ MYSQL_INSTALL_TARGETS(${target} DESTINATION bin)
+ ENDIF()
+ENDFUNCTION()
+
+# Function to embed version info into executables/dlls on Windows
+# Refer http://msdn.microsoft.com/en-us/library/aa381058(VS.85).aspx
+# for more information
+MACRO(ADD_VERSION_INFO target filetype sources)
+ SET(HAVE_RC_FILE)
+ FOREACH(src ${sources})
+ IF("${src}" MATCHES "\\.rc$")
+ SET(HAVE_RC_FILE 1)
+ BREAK()
+ ENDIF()
+ ENDFOREACH()
+ IF(NOT HAVE_RC_FILE)
+ IF(NOT MAJOR_VERSION)
+ MESSAGE(FATAL_ERROR "MAJOR_VERSION is not defined")
+ ENDIF()
+ IF(NOT MINOR_VERSION)
+ MESSAGE(FATAL_ERROR "MINOR_VERSION is not defined")
+ ENDIF()
+ IF(NOT PATCH)
+ SET(PATCH 0)
+ ENDIF()
+ SET(FILETYPE ${filetype})
+ SET(INTERNALNAME ${target})
+ IF(FILETYPE STREQUAL VFT_APP)
+ SET(ORIGINALFILENAME ${target}.exe)
+ ELSE()
+ SET(ORIGINALFILENAME ${target}.dll)
+ ENDIF()
+ SET(FILEDESCRIPTION ${target})
+ FIND_FILE(VERINFO_IN versioninfo.rc.in ${CMAKE_MODULE_PATH})
+ IF(NOT VERINFO_IN)
+ MESSAGE(FATAL_ERROR "cannot find version info template")
+ ENDIF()
+ CONFIGURE_FILE(${VERINFO_IN}
+ ${CMAKE_CURRENT_BINARY_DIR}/${target}.rc)
+ LIST(APPEND ${sources} ${CMAKE_CURRENT_BINARY_DIR}/${target}.rc)
+ ENDIF()
+ ENDMACRO()
\ No newline at end of file |