|
From: <ego...@us...> - 2015-02-06 12:58:25
|
Revision: 60634
http://sourceforge.net/p/firebird/code/60634
Author: egorpugin
Date: 2015-02-06 12:58:17 +0000 (Fri, 06 Feb 2015)
Log Message:
-----------
[build] [cmake] Call custom commands via scripts.
Modified Paths:
--------------
firebird/trunk/CMakeLists.txt
firebird/trunk/builds/cmake/BuildFunctions.cmake
firebird/trunk/examples/CMakeLists.txt
firebird/trunk/src/CMakeLists.txt
Modified: firebird/trunk/CMakeLists.txt
===================================================================
--- firebird/trunk/CMakeLists.txt 2015-02-06 00:14:11 UTC (rev 60633)
+++ firebird/trunk/CMakeLists.txt 2015-02-06 12:58:17 UTC (rev 60634)
@@ -75,12 +75,14 @@
########################################
set(output_dir ${CMAKE_BINARY_DIR}/${PROJECT_NAME})
+set(boot_dir ${CMAKE_BINARY_DIR}/src)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${output_dir})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${output_dir})
if (MSVC OR XCODE)
set(output_dir ${output_dir}/$<CONFIG>)
+ set(boot_dir ${boot_dir}/$<CONFIG>)
endif()
if (MSVC AND DEFAULT_CONFIGURATION)
@@ -278,6 +280,13 @@
include(BuildFunctions)
+if (NOT CMAKE_CROSSCOMPILING)
+
+create_boot_commands()
+create_master_commands()
+
+endif() # if (NOT CMAKE_CROSSCOMPILING)
+
crosscompile_prebuild_steps()
include_directories("extern/libtommath")
Modified: firebird/trunk/builds/cmake/BuildFunctions.cmake
===================================================================
--- firebird/trunk/builds/cmake/BuildFunctions.cmake 2015-02-06 00:14:11 UTC (rev 60633)
+++ firebird/trunk/builds/cmake/BuildFunctions.cmake 2015-02-06 12:58:17 UTC (rev 60634)
@@ -90,7 +90,10 @@
set(out ${CMAKE_CURRENT_BINARY_DIR}/${F}${epp_suffix})
get_filename_component(dir ${out} PATH)
-
+ if (MSVC OR XCODE)
+ set(dir ${dir}/$<CONFIG>)
+ endif()
+
if ("${type}" STREQUAL "boot")
add_custom_command(
OUTPUT ${out}
@@ -253,14 +256,89 @@
endfunction(crosscompile_prebuild_steps)
#######################################
-# FUNCTION wrap_command_with_path
+# FUNCTION create_command
#######################################
-function(wrap_command_with_path command)
- set(cmd ${ARGN})
- set_win32(cmd set PATH=%PATH%\\\\;${output_dir} COMMAND ${cmd})
- set_unix (cmd PATH=${output_dir}/bin ${cmd})
- set_apple(cmd DYLD_LIBRARY_PATH=${output_dir}/plugins:${output_dir}/lib ${cmd})
- set(${command} "${cmd}" PARENT_SCOPE)
-endfunction(wrap_command_with_path)
+function(create_command command type out)
+ set(dir ${output_dir})
+ if ("${type}" STREQUAL "boot")
+ set(dir ${boot_dir})
+ endif()
+
+ set_win32(env "PATH=%PATH%\;${dir}")
+ set_unix (env "PATH=$PATH:${dir}/bin")
+ set(env "${env}"
+ FIREBIRD=${dir}
+ )
+
+ set(cmd_name ${command})
+ if (MSVC OR XCODE)
+ set(conf _$<CONFIG>)
+ endif()
+ set(pre_cmd)
+ set(ext .sh)
+ set(export export)
+ set(options $*)
+ set(perm)
+ if (WIN32)
+ set(pre_cmd @)
+ set(ext .bat)
+ set(export set)
+ set(options %*)
+ endif()
+ set(cmd_name ${cmd_name}${conf}${ext})
+ set(cmd_name ${CMAKE_BINARY_DIR}/src/${cmd_name})
+
+ set(content)
+ foreach(e ${env})
+ set(content "${content}${pre_cmd}${export} ${e}\n")
+ endforeach()
+
+ set(cmd $<TARGET_FILE:${cmd}>)
+ set(content "${content}${pre_cmd}${cmd} ${options}")
+ file(GENERATE OUTPUT ${cmd_name} CONTENT "${content}")
+
+ if (UNIX)
+ set(cmd_name chmod u+x ${cmd_name} COMMAND ${cmd_name})
+ endif()
+
+ string(TOUPPER ${command} CMD)
+ set(${CMD}_CMD ${cmd_name} PARENT_SCOPE)
+ set(${out} ${CMD}_CMD PARENT_SCOPE)
+endfunction(create_command)
+
+#######################################
+# FUNCTION create_boot_commands
+#######################################
+function(create_boot_commands)
+ set(cmd_list
+ boot_isql
+ boot_gpre
+ boot_gbak
+ boot_gfix
+ build_msg
+ codes
+ gpre_boot
+ )
+ foreach(cmd ${cmd_list})
+ create_command(${cmd} boot out)
+ set(${out} ${${out}} PARENT_SCOPE)
+ endforeach()
+endfunction(create_boot_commands)
+
+#######################################
+# FUNCTION create_master_commands
+#######################################
+function(create_master_commands)
+ set(cmd_list
+ isql
+ gpre
+ empbuild
+ )
+ foreach(cmd ${cmd_list})
+ create_command(${cmd} master out)
+ set(${out} ${${out}} PARENT_SCOPE)
+ endforeach()
+endfunction(create_master_commands)
+
###############################################################################
Modified: firebird/trunk/examples/CMakeLists.txt
===================================================================
--- firebird/trunk/examples/CMakeLists.txt 2015-02-06 00:14:11 UTC (rev 60633)
+++ firebird/trunk/examples/CMakeLists.txt 2015-02-06 12:58:17 UTC (rev 60634)
@@ -18,7 +18,7 @@
isql
${CMAKE_CURRENT_SOURCE_DIR}/empbuild/empbld.sql
COMMAND ${CMAKE_COMMAND} -E remove empbuild.fdb
- COMMAND isql -q -i ${CMAKE_CURRENT_SOURCE_DIR}/empbuild/empbld.sql
+ COMMAND ${ISQL_CMD} -q -i ${CMAKE_CURRENT_SOURCE_DIR}/empbuild/empbld.sql
COMMAND ${CMAKE_COMMAND} -E copy_if_different empbuild.fdb empbuild_.fdb
COMMAND ${CMAKE_COMMAND} -E remove empbuild.fdb
COMMAND ${CMAKE_COMMAND} -E copy_if_different empbuild_.fdb empbuild.fdb
@@ -30,7 +30,7 @@
${CMAKE_CURRENT_SOURCE_DIR}/empbuild/empbuild.e
empbuild.fdb
COMMENT "Calling GPRE for empbuild.e"
- COMMAND gpre -r -m -n -z ${CMAKE_CURRENT_SOURCE_DIR}/empbuild/empbuild.e empbuild.c
+ COMMAND ${GPRE_CMD} -r -m -n ${CMAKE_CURRENT_SOURCE_DIR}/empbuild/empbuild.e empbuild.c
)
add_executable (empbuild empbuild.c empbuild.fdb ${CMAKE_CURRENT_SOURCE_DIR}/empbuild/empbuild.e)
@@ -54,7 +54,6 @@
# BUILD STEP employee_db
########################################
-wrap_command_with_path(EMPBUILD_CMD $<TARGET_FILE:empbuild> employe2_.fdb)
add_custom_command(
OUTPUT employe2.fdb
DEPENDS
@@ -63,7 +62,7 @@
${files}
COMMAND ${CMAKE_COMMAND} -E remove employe2.fdb
COMMAND ${CMAKE_COMMAND} -E remove employe2_.fdb
- COMMAND ${EMPBUILD_CMD}
+ COMMAND ${EMPBUILD_CMD} employe2_.fdb
COMMAND ${CMAKE_COMMAND} -E copy_if_different employe2_.fdb employe2.fdb
)
add_custom_target (employee_db ALL DEPENDS employe2.fdb SOURCES ${files})
Modified: firebird/trunk/src/CMakeLists.txt
===================================================================
--- firebird/trunk/src/CMakeLists.txt 2015-02-06 00:14:11 UTC (rev 60633)
+++ firebird/trunk/src/CMakeLists.txt 2015-02-06 12:58:17 UTC (rev 60634)
@@ -70,16 +70,16 @@
if (NOT CMAKE_CROSSCOMPILING)
-epp_process(boot epp_boot_internal_files gpre_boot -lang_internal -n -m)
-epp_process(boot epp_boot_ocxx_files gpre_boot -lang_internal -n -ids -ocxx)
-epp_process(boot epp_boot_files gpre_boot -n -m)
-epp_process(boot epp_boot_gds_files gpre_boot -n -ids -gds_cxx)
+epp_process(boot epp_boot_internal_files ${GPRE_BOOT_CMD} -lang_internal -n -m)
+epp_process(boot epp_boot_ocxx_files ${GPRE_BOOT_CMD} -lang_internal -n -ids -ocxx)
+epp_process(boot epp_boot_files ${GPRE_BOOT_CMD} -n -m)
+epp_process(boot epp_boot_gds_files ${GPRE_BOOT_CMD} -n -ids -gds_cxx)
-epp_process(master epp_boot_internal_files boot_gpre -n -m)
-epp_process(master epp_boot_ocxx_files boot_gpre -n -ids -ocxx)
-epp_process(master epp_boot_files boot_gpre -n -m)
-epp_process(master epp_boot_gds_files boot_gpre -n -ids -gds_cxx)
-epp_process(master epp_master_files boot_gpre -n -m)
+epp_process(master epp_boot_internal_files ${BOOT_GPRE_CMD} -n -m)
+epp_process(master epp_boot_ocxx_files ${BOOT_GPRE_CMD} -n -ids -ocxx)
+epp_process(master epp_boot_files ${BOOT_GPRE_CMD} -n -m)
+epp_process(master epp_boot_gds_files ${BOOT_GPRE_CMD} -n -ids -gds_cxx)
+epp_process(master epp_master_files ${BOOT_GPRE_CMD} -n -m)
################################################################################
@@ -118,11 +118,11 @@
COMMAND ${CMAKE_COMMAND} -E remove security.fdb
COMMAND ${CMAKE_COMMAND} -E remove security_.fdb
COMMAND ${CMAKE_COMMAND} -E echo "create database 'security_.fdb';" > create_db_security.sql
- COMMAND boot_isql -q -i create_db_security.sql
- COMMAND boot_gfix -write async security_.fdb
- COMMAND boot_isql -q security_.fdb -i ${CMAKE_CURRENT_SOURCE_DIR}/dbs/security.sql
+ COMMAND ${BOOT_ISQL_CMD} -q -i create_db_security.sql
+ COMMAND ${BOOT_GFIX_CMD} -write async security_.fdb
+ COMMAND ${BOOT_ISQL_CMD} -q security_.fdb -i ${CMAKE_CURRENT_SOURCE_DIR}/dbs/security.sql
COMMAND ${CMAKE_COMMAND} -E copy_if_different security_.fdb security.fdb
- COMMAND boot_gfix -write sync security.fdb
+ COMMAND ${BOOT_GFIX_CMD} -write sync security.fdb
)
add_custom_command(
OUTPUT metadata.fdb
@@ -132,7 +132,7 @@
#
COMMAND ${CMAKE_COMMAND} -E remove metadata.fdb
COMMAND ${CMAKE_COMMAND} -E remove metadata_.fdb
- COMMAND boot_gbak -r ${CMAKE_SOURCE_DIR}/builds/misc/metadata.gbak metadata_.fdb
+ COMMAND ${BOOT_GBAK_CMD} -r ${CMAKE_SOURCE_DIR}/builds/misc/metadata.gbak metadata_.fdb
COMMAND ${CMAKE_COMMAND} -E copy_if_different metadata_.fdb metadata.fdb
)
add_custom_command(
@@ -144,7 +144,7 @@
#
COMMAND ${CMAKE_COMMAND} -E remove help.fdb
COMMAND ${CMAKE_COMMAND} -E remove help_.fdb
- COMMAND boot_gbak -r ${CMAKE_SOURCE_DIR}/builds/misc/help.gbak help_.fdb
+ COMMAND ${BOOT_GBAK_CMD} -r ${CMAKE_SOURCE_DIR}/builds/misc/help.gbak help_.fdb
COMMAND ${CMAKE_COMMAND} -E copy_if_different help_.fdb help.fdb
)
add_custom_target(databases
@@ -171,8 +171,8 @@
msg_fdb
#
COMMAND ${CMAKE_COMMAND} -E remove firebird.msg
- COMMAND build_msg -D msg.fdb -P ${CMAKE_CURRENT_BINARY_DIR}/ -F firebird.msg -L all
- COMMAND build_msg -D msg.fdb -P ${CMAKE_CURRENT_BINARY_DIR}/ -F firebird.msg
+ COMMAND ${BUILD_MSG_CMD} -D msg.fdb -P ${CMAKE_CURRENT_BINARY_DIR}/ -F firebird.msg -L all
+ COMMAND ${BUILD_MSG_CMD} -D msg.fdb -P ${CMAKE_CURRENT_BINARY_DIR}/ -F firebird.msg
COMMAND ${CMAKE_COMMAND} -E copy_if_different firebird.msg ${output_dir}/firebird.msg
)
add_custom_command(
@@ -184,7 +184,7 @@
#
COMMAND ${CMAKE_COMMAND} -E echo "" > codes_headers.dummy
COMMAND ${CMAKE_COMMAND} -E echo Building codes header...
- COMMAND codes ${CMAKE_CURRENT_SOURCE_DIR}/include/gen ${CMAKE_SOURCE_DIR}/lang_helpers
+ COMMAND ${CODES_CMD} ${CMAKE_CURRENT_SOURCE_DIR}/include/gen ${CMAKE_SOURCE_DIR}/lang_helpers
)
add_custom_target(messages ALL DEPENDS firebird.msg codes_headers.dummy)
project_group(messages "Boot/Custom build steps")
@@ -194,7 +194,7 @@
# BUILD STEP msg_fdb
########################################
-set(isql_exec_msg boot_isql -q msg_.fdb -i ${CMAKE_CURRENT_SOURCE_DIR}/msgs)
+set(isql_exec_msg ${BOOT_ISQL_CMD} -q msg_.fdb -i ${CMAKE_CURRENT_SOURCE_DIR}/msgs)
add_custom_command(
OUTPUT msg.fdb
@@ -206,8 +206,8 @@
COMMAND ${CMAKE_COMMAND} -E remove msg.fdb
COMMAND ${CMAKE_COMMAND} -E remove msg_.fdb
COMMAND ${CMAKE_COMMAND} -E echo "create database 'msg_.fdb';" > create_db_msg.sql
- COMMAND boot_isql -q -i create_db_msg.sql
- COMMAND boot_gfix -write async msg_.fdb
+ COMMAND ${BOOT_ISQL_CMD} -q -i create_db_msg.sql
+ COMMAND ${BOOT_GFIX_CMD} -write async msg_.fdb
COMMAND ${isql_exec_msg}/msg.sql
#
COMMAND echo loading facilities
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|