summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2012-02-25 16:41:07 -0600
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2012-02-25 16:41:07 -0600
commit975cc10f8bfcab94ff4e641775473095af0e778a (patch)
tree1d7e1e100ab31d9c6be4325842d119b4a64fb252
parent8e6f203f9221d336edfa84b2e3eba6205a30c816 (diff)
downloadtde-cmake-975cc10f.tar.gz
tde-cmake-975cc10f.zip
Fix vague build errors due to blind execution in CMake
This closes Bug 874 Thanks to Aleksey Midenkov for the patch!
-rw-r--r--modules/FindTDE.cmake10
-rw-r--r--modules/FindTQt.cmake6
-rw-r--r--modules/TDEMacros.cmake96
-rw-r--r--modules/tde_uic.cmake11
4 files changed, 82 insertions, 41 deletions
diff --git a/modules/FindTDE.cmake b/modules/FindTDE.cmake
index b5356f8..056ed23 100644
--- a/modules/FindTDE.cmake
+++ b/modules/FindTDE.cmake
@@ -25,14 +25,12 @@ if( NOT TDE_FOUND )
endif( NOT DEFINED KDECONFIG_EXECUTABLE )
# check for installed trinity version
- execute_process(
+ tde_execute_process(
COMMAND ${KDECONFIG_EXECUTABLE} --version
OUTPUT_VARIABLE _version
RESULT_VARIABLE _result
- OUTPUT_STRIP_TRAILING_WHITESPACE )
- if( _result )
- tde_message_fatal( "Unable to run kde-config!\n TDELIBS are correctly installed?\n Path to kde-config are corect?" )
- endif( _result )
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ MESSAGE "Unable to run kde-config!\n TDELIBS are correctly installed?\n Path to kde-config are corect?" )
# parse kde-config output, to extract TDE version
string( REGEX MATCH "TDE: ([0-9\\.]+)" __dummy "${_version}" )
@@ -40,7 +38,7 @@ if( NOT TDE_FOUND )
# ask kde-config for few paths
macro( __internal_get_path __type __var )
- execute_process(
+ tde_execute_process(
COMMAND ${KDECONFIG_EXECUTABLE} --expandvars --install ${__type}
OUTPUT_VARIABLE ${__var}
OUTPUT_STRIP_TRAILING_WHITESPACE )
diff --git a/modules/FindTQt.cmake b/modules/FindTQt.cmake
index ea35138..e354973 100644
--- a/modules/FindTQt.cmake
+++ b/modules/FindTQt.cmake
@@ -20,7 +20,7 @@ if( NOT TQT_FOUND )
endif( )
# tmoc_executable
-execute_process(
+tde_execute_process(
COMMAND pkg-config tqt --variable=tmoc_executable
OUTPUT_VARIABLE TMOC_EXECUTABLE OUTPUT_STRIP_TRAILING_WHITESPACE )
@@ -32,7 +32,7 @@ endif( )
# moc_executable
-execute_process(
+tde_execute_process(
COMMAND pkg-config tqt --variable=moc_executable
OUTPUT_VARIABLE MOC_EXECUTABLE OUTPUT_STRIP_TRAILING_WHITESPACE )
@@ -44,7 +44,7 @@ endif( )
# uic_executable
-execute_process(
+tde_execute_process(
COMMAND pkg-config tqt --variable=uic_executable
OUTPUT_VARIABLE UIC_EXECUTABLE OUTPUT_STRIP_TRAILING_WHITESPACE )
diff --git a/modules/TDEMacros.cmake b/modules/TDEMacros.cmake
index bcc0c64..a710f43 100644
--- a/modules/TDEMacros.cmake
+++ b/modules/TDEMacros.cmake
@@ -29,38 +29,76 @@ endmacro( tde_message_fatal )
#################################################
#####
+##### tde_get_arg( <ARG_NAME> <COUNT> <RETURN> <REST> <ARGS...> )
+##### ARG_NAME(string): name of an argument to find in ARGS
+##### COUNT(number): argument dimension, a number of items returned in RETURN
+##### RETURN(list ref): items returned for argument as they found in ARGS
+##### REST(list ref): rest of items except argument name and items returned in RETURN
+##### ARGS(list): source list of arguments
+
+macro( tde_get_arg ARG_NAME COUNT RETURN REST )
+ unset( ${RETURN} )
+ unset( ${REST} )
+ list( APPEND ${REST} ${ARGN} )
+ list( FIND ${REST} ${ARG_NAME} _arg_idx)
+ if( NOT ${_arg_idx} EQUAL -1 )
+ list( APPEND ${REST} ___ensure_list___ )
+ list( REMOVE_AT ${REST} ${_arg_idx} )
+ list( REMOVE_ITEM ${REST} ___ensure_list___ )
+ set( _i 0 )
+ while( ${_i} LESS ${COUNT} )
+ list( GET ${REST} ${_arg_idx} _arg )
+ list( REMOVE_AT ${REST} ${_arg_idx} )
+ list( APPEND ${RETURN} ${_arg} )
+ math( EXPR _i "${_i} + 1" )
+ endwhile()
+ endif()
+endmacro( tde_get_arg )
+
+
+################################################
+#####
+##### tde_execute_process( <ARGS...> [MESSAGE <MSG>] )
+##### MSG: fatal error message (standard message will be written if not supplied)
+##### ARGS: execute_process arguments
+
+macro( tde_execute_process )
+ tde_get_arg( MESSAGE 1 _message _rest_args ${ARGV} )
+ tde_get_arg( RESULT_VARIABLE 1 _result_variable _tmp ${_rest_args} )
+ tde_get_arg( COMMAND 1 _command _tmp ${_rest_args} )
+ if( NOT DEFINED _result_variable )
+ list( APPEND _rest_args RESULT_VARIABLE _exec_result )
+ set( _result_variable _exec_result )
+ endif()
+ execute_process( ${_rest_args} )
+ if( ${_result_variable} )
+ if( DEFINED _message )
+ message( FATAL_ERROR ${_message} )
+ else()
+ if( ${${_result_variable}} MATCHES "^[0-9]+$" )
+ set( ${_result_variable} "status ${${_result_variable}} returned!" )
+ endif()
+ message( FATAL_ERROR "Error executing '${_command}': ${${_result_variable}}" )
+ endif()
+ endif()
+endmacro( tde_execute_process )
+
+
+if( DEFINED MASTER_SOURCE_DIR )
+ return( )
+endif( )
+########### slave part ends here ###############
+
+
+################################################
+#####
##### tde_install_icons( <icons...> THEME <svgicons> DESTINATION <destdir> )
##### default theme: hicolor
##### default destination: ${SHARE_INSTALL_DIR}/icons
macro( tde_install_icons )
-
- # clearing
- unset( _dest )
- unset( _req_theme )
- unset( _icons )
- set( _var _icons )
-
- # parse all arguments
- foreach( _arg ${ARGV} )
- # directive DESTINATION
- if( _arg STREQUAL "DESTINATION" )
- set( _var _dest )
- set( _directive 1 )
- endif( _arg STREQUAL "DESTINATION" )
- # directive THEME
- if( _arg STREQUAL "THEME" )
- set( _var _req_theme )
- set( _directive 1 )
- endif( _arg STREQUAL "THEME" )
- # collect data
- if( _directive )
- unset( _directive )
- else( _directive )
- set( ${_var} ${${_var}} ${_arg} )
- set( _var _icons )
- endif( _directive )
- endforeach( _arg )
+ tde_get_arg( DESTINATION 1 _dest _args ${ARGV} )
+ tde_get_arg( THEME 1 _req_theme _icons ${_args} )
#defaults
if( NOT _icons )
@@ -232,6 +270,8 @@ macro( tde_add_ui_files _sources )
-DUIC_EXECUTABLE:FILEPATH=${UIC_EXECUTABLE}
-DTDE_QTPLUGINS_DIR:FILEPATH=${TDE_QTPLUGINS_DIR}
-DUI_FILE:FILEPATH=${_ui_absolute_path}
+ -DMASTER_SOURCE_DIR:FILEPATH=${CMAKE_SOURCE_DIR}
+ -DMASTER_BINARY_DIR:FILEPATH=${CMAKE_BINARY_DIR}
-P ${CMAKE_MODULE_PATH}/tde_uic.cmake
COMMAND ${MOC_EXECUTABLE} ${_ui_basename}.h >> ${_ui_basename}.cpp
DEPENDS ${_ui_absolute_path} )
@@ -702,7 +742,7 @@ endmacro( tde_add_kpart )
#####
##### tde_curdatetime
macro( tde_curdatetime result )
- execute_process( COMMAND "date" "+%m/%d/%Y %H:%M:%S" OUTPUT_VARIABLE ${result} )
+ tde_execute_process( COMMAND "date" "+%m/%d/%Y %H:%M:%S" OUTPUT_VARIABLE ${result} )
string( REGEX REPLACE "(..)/(..)/(....) (........).*" "\\1/\\2/\\3 \\4" ${result} ${${result}} )
endmacro( tde_curdatetime )
diff --git a/modules/tde_uic.cmake b/modules/tde_uic.cmake
index 7e6210e..e4c438b 100644
--- a/modules/tde_uic.cmake
+++ b/modules/tde_uic.cmake
@@ -9,24 +9,27 @@
#
#################################################
+set( CMAKE_MODULE_PATH "${MASTER_SOURCE_DIR}/cmake/modules" )
+include( TDEMacros )
+
get_filename_component( _ui_basename ${UI_FILE} NAME_WE )
# FIXME this will working only on out-of-source mode
set( local_ui_file ${_ui_basename}.ui )
configure_file( ${UI_FILE} ${local_ui_file} COPYONLY )
-execute_process( COMMAND tqt-replace ${local_ui_file} )
+tde_execute_process( COMMAND tqt-replace ${local_ui_file} )
# ui.h extension file, if exists
if( EXISTS "${UI_FILE}.h" )
configure_file( ${UI_FILE}.h ${local_ui_file}.h COPYONLY )
- execute_process( COMMAND tqt-replace ${local_ui_file}.h )
+ tde_execute_process( COMMAND tqt-replace ${local_ui_file}.h )
endif( )
if( TDE_QTPLUGINS_DIR )
set( L -L ${TDE_QTPLUGINS_DIR} )
endif( )
-execute_process( COMMAND ${UIC_EXECUTABLE}
+tde_execute_process( COMMAND ${UIC_EXECUTABLE}
-nounload -tr tr2i18n
${L}
${local_ui_file}
@@ -42,7 +45,7 @@ if( _ui_h_content )
file( WRITE ${_ui_basename}.h "${_ui_h_content}" )
endif( )
-execute_process( COMMAND ${UIC_EXECUTABLE}
+tde_execute_process( COMMAND ${UIC_EXECUTABLE}
-nounload -tr tr2i18n
${L}
-impl ${_ui_basename}.h