|
From: <ego...@us...> - 2015-02-05 06:36:31
|
Revision: 60630
http://sourceforge.net/p/firebird/code/60630
Author: egorpugin
Date: 2015-02-05 06:36:23 +0000 (Thu, 05 Feb 2015)
Log Message:
-----------
[build] [cmake] Do not place boot targets into output directory.
Modified Paths:
--------------
firebird/trunk/CMakeLists.txt
firebird/trunk/builds/cmake/BuildFunctions.cmake
firebird/trunk/examples/CMakeLists.txt
firebird/trunk/src/CMakeLists.txt
firebird/trunk/src/utilities/CMakeLists.txt
Modified: firebird/trunk/CMakeLists.txt
===================================================================
--- firebird/trunk/CMakeLists.txt 2015-02-05 01:08:27 UTC (rev 60629)
+++ firebird/trunk/CMakeLists.txt 2015-02-05 06:36:23 UTC (rev 60630)
@@ -1,6 +1,14 @@
#
# firebird (trunk)
#
+# This file has following organization:
+# 1. cmake settings
+# 2. project settings
+# 3. configure
+# 4. compiler & linker settings
+# 5. pre-build
+# 6. build
+#
################################################################################
#
@@ -123,7 +131,7 @@
################################################################################
#
-# compiler & linker
+# compiler & linker settings
#
################################################################################
@@ -205,7 +213,7 @@
################################################################################
#
-# pre build
+# pre-build
#
################################################################################
@@ -291,7 +299,7 @@
add_executable (btyacc ${btyacc_src})
project_group (btyacc Extern)
-set_output_directory (btyacc . FORCE)
+set_output_directory (btyacc . CURRENT_DIR)
endif() # if (NOT CMAKE_CROSSCOMPILING)
@@ -313,4 +321,3 @@
add_subdirectory("src")
################################################################################
-
Modified: firebird/trunk/builds/cmake/BuildFunctions.cmake
===================================================================
--- firebird/trunk/builds/cmake/BuildFunctions.cmake 2015-02-05 01:08:27 UTC (rev 60629)
+++ firebird/trunk/builds/cmake/BuildFunctions.cmake 2015-02-05 06:36:23 UTC (rev 60630)
@@ -12,12 +12,10 @@
if (MSVC OR XCODE) # multiconfiguration builds
set(out ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
endif()
- if ("${ARGV2}" STREQUAL "FORCE")
- if (MSVC OR XCODE)
- set(out ${dir})
- set(dir)
- else()
- set(out .)
+ if ("${ARGV2}" STREQUAL "CURRENT_DIR")
+ set(out .)
+ if (UNIX AND "${dir}" STREQUAL ".")
+ set(dir bin)
endif()
endif()
if (MSVC OR XCODE)
@@ -98,6 +96,7 @@
OUTPUT ${out}
DEPENDS gpre_boot ${in}
COMMENT "Calling GPRE boot for ${F}"
+ #
COMMAND ${CMAKE_COMMAND} -E make_directory ${dir}
COMMAND ${ARGN} ${in} ${out}
)
@@ -106,14 +105,14 @@
set(dir ${dir}/${file}.d)
add_custom_command(
OUTPUT ${out}
- DEPENDS ${in} databases
+ DEPENDS databases ${in}
COMMENT "Calling GPRE master for ${F}"
+ #
COMMAND ${CMAKE_COMMAND} -E make_directory ${dir}
COMMAND ${CMAKE_COMMAND} -E copy_if_different metadata.fdb ${dir}/yachts.lnk
COMMAND ${CMAKE_COMMAND} -E copy_if_different security.fdb ${dir}/security.fdb
COMMAND ${CMAKE_COMMAND} -E copy_if_different msg.fdb ${dir}/msg.fdb
COMMAND ${CMAKE_COMMAND} -E copy_if_different help.fdb ${dir}/help.fdb
- COMMAND boot_gfix -write async ${dir}/security.fdb
COMMAND ${ARGN} -b ${dir}/ ${in} ${out}
)
endif()
@@ -217,7 +216,7 @@
#######################################
# FUNCTION set_generated_directory
#######################################
-function(set_generated_directory)
+function(set_generated_directory)
if (NOT CMAKE_CROSSCOMPILING)
set(GENERATED_DIR ${CMAKE_CURRENT_BINARY_DIR} PARENT_SCOPE)
else()
@@ -229,7 +228,7 @@
#######################################
# FUNCTION add_dependencies_cc (cross compile)
#######################################
-function(add_dependencies_cc target)
+function(add_dependencies_cc target)
if (NOT CMAKE_CROSSCOMPILING)
add_dependencies(${target} ${ARGN})
endif()
@@ -238,7 +237,7 @@
#######################################
# FUNCTION add_dependencies_unix_cc (cross compile)
#######################################
-function(add_dependencies_unix_cc target)
+function(add_dependencies_unix_cc target)
if (UNIX)
add_dependencies_cc(${target} ${ARGN})
endif()
@@ -247,10 +246,21 @@
#######################################
# FUNCTION crosscompile_prebuild_steps
#######################################
-function(crosscompile_prebuild_steps)
+function(crosscompile_prebuild_steps)
if (CMAKE_CROSSCOMPILING)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${NATIVE_BUILD_DIR}/src/include/gen/parse.h ${CMAKE_BINARY_DIR}/src/include/gen/parse.h)
endif()
endfunction(crosscompile_prebuild_steps)
+#######################################
+# FUNCTION wrap_command_with_path
+#######################################
+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)
+
###############################################################################
Modified: firebird/trunk/examples/CMakeLists.txt
===================================================================
--- firebird/trunk/examples/CMakeLists.txt 2015-02-05 01:08:27 UTC (rev 60629)
+++ firebird/trunk/examples/CMakeLists.txt 2015-02-05 06:36:23 UTC (rev 60630)
@@ -27,7 +27,6 @@
OUTPUT empbuild.c
DEPENDS
gpre
- messages
${CMAKE_CURRENT_SOURCE_DIR}/empbuild/empbuild.e
empbuild.fdb
COMMENT "Calling GPRE for empbuild.e"
@@ -36,8 +35,8 @@
add_executable (empbuild empbuild.c empbuild.fdb ${CMAKE_CURRENT_SOURCE_DIR}/empbuild/empbuild.e)
target_link_libraries (empbuild yvalve)
-set_output_directory (empbuild . FORCE)
-add_dependencies_cc (empbuild gfix engine12 fbtrace)
+set_output_directory (empbuild . CURRENT_DIR)
+add_dependencies_cc (empbuild engine12)
project_group (empbuild Examples)
file(GLOB files
@@ -50,11 +49,12 @@
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${F} ${name})
endforeach()
-set(EMPBUILD_CMD empbuild employe2_.fdb)
-set_win32(EMPBUILD_CMD set PATH=%PATH%\\\\;${output_dir} COMMAND ${EMPBUILD_CMD})
-set_unix (EMPBUILD_CMD PATH=${output_dir}/bin ${EMPBUILD_CMD})
-set_apple(EMPBUILD_CMD DYLD_LIBRARY_PATH=${output_dir}/plugins:${output_dir}/lib ${EMPBUILD_CMD})
+########################################
+# BUILD STEP employee_db
+########################################
+
+wrap_command_with_path(EMPBUILD_CMD $<TARGET_FILE:empbuild> employe2_.fdb)
add_custom_command(
OUTPUT employe2.fdb
DEPENDS
@@ -65,12 +65,12 @@
COMMAND ${EMPBUILD_CMD}
COMMAND ${CMAKE_COMMAND} -E copy_if_different employe2_.fdb employe2.fdb
)
-add_custom_target (employee_db DEPENDS employe2.fdb SOURCES ${files})
-add_dependencies_cc (employee_db engine12)
-project_group (employee_db Examples)
+add_custom_target (employee_db ALL DEPENDS employe2.fdb SOURCES ${files})
+project_group (employee_db "Examples/Custom build steps")
endif() # if (NOT CMAKE_CROSSCOMPILING)
+
########################################
# SHARED LIBRARY udrcpp_example
########################################
Modified: firebird/trunk/src/CMakeLists.txt
===================================================================
--- firebird/trunk/src/CMakeLists.txt 2015-02-05 01:08:27 UTC (rev 60629)
+++ firebird/trunk/src/CMakeLists.txt 2015-02-05 06:36:23 UTC (rev 60630)
@@ -171,8 +171,8 @@
msg_fdb
#
COMMAND ${CMAKE_COMMAND} -E remove firebird.msg
- COMMAND build_msg -D msg.fdb -P ./ -F firebird.msg -L all
- COMMAND build_msg -D msg.fdb -P ./ -F 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 ${CMAKE_COMMAND} -E copy_if_different firebird.msg ${output_dir}/firebird.msg
)
add_custom_command(
@@ -186,7 +186,7 @@
COMMAND ${CMAKE_COMMAND} -E echo Building codes header...
COMMAND codes ${CMAKE_CURRENT_SOURCE_DIR}/include/gen ${CMAKE_SOURCE_DIR}/lang_helpers
)
-add_custom_target(messages DEPENDS firebird.msg codes_headers.dummy)
+add_custom_target(messages ALL DEPENDS firebird.msg codes_headers.dummy)
project_group(messages "Boot/Custom build steps")
@@ -395,7 +395,8 @@
PUBLIC ${LIB_CoreFoundation}
)
set_exported_symbols (boot_yvalve firebird)
-set_output_directory_unix (boot_yvalve lib)
+set_output_directory (boot_yvalve . CURRENT_DIR)
+set_output_directory_unix (boot_yvalve lib CURRENT_DIR)
project_group (boot_yvalve Boot)
endif() # if (NOT CMAKE_CROSSCOMPILING)
@@ -474,7 +475,7 @@
add_library (boot_engine12 SHARED ${engine12_generated_src_boot} ${VERSION_RC})
target_link_libraries (boot_engine12 engine12_common boot_alice boot_burp common boot_yvalve)
-set_output_directory (boot_engine12 plugins)
+set_output_directory (boot_engine12 plugins CURRENT_DIR)
set_exported_symbols (boot_engine12 fbplugin)
copy_and_rename_lib (boot_engine12 Engine12)
project_group (boot_engine12 Boot)
@@ -488,7 +489,6 @@
add_library (engine12 SHARED ${engine12_generated_src_master} ${VERSION_RC})
target_link_libraries (engine12 engine12_common alice burp common yvalve)
-add_dependencies_cc (engine12 messages)
set_target_properties (engine12 PROPERTIES OUTPUT_NAME Engine12)
set_output_directory (engine12 plugins)
set_exported_symbols (engine12 fbplugin)
@@ -502,7 +502,6 @@
add_library (intl SHARED ${intl_src} ${VERSION_RC})
target_link_libraries (intl common yvalve)
-add_dependencies_cc (intl messages)
set_target_properties (intl PROPERTIES OUTPUT_NAME fbintl)
set_output_directory (intl intl)
@@ -618,6 +617,7 @@
add_executable (gpre_boot ${gpre_boot_src} ${VERSION_RC})
target_link_libraries (gpre_boot gpre_common common ${LIB_Ws2_32})
+set_output_directory (gpre_boot . CURRENT_DIR)
project_group (gpre_boot Boot)
endif() # if (NOT CMAKE_CROSSCOMPILING)
@@ -637,6 +637,7 @@
add_executable (boot_gpre ${gpre_generated_src_boot} ${VERSION_RC})
target_link_libraries (boot_gpre gpre_common common boot_yvalve)
+set_output_directory (boot_gpre . CURRENT_DIR)
project_group (boot_gpre Boot)
endif() # if (NOT CMAKE_CROSSCOMPILING)
@@ -662,7 +663,8 @@
if (NOT CMAKE_CROSSCOMPILING)
add_executable (build_msg ${build_msg_generated_src_master} ${VERSION_RC})
-target_link_libraries (build_msg common yvalve)
+target_link_libraries (build_msg boot_yvalve)
+set_output_directory (build_msg . CURRENT_DIR)
project_group (build_msg Boot)
endif() # if (NOT CMAKE_CROSSCOMPILING)
@@ -680,7 +682,8 @@
if (NOT CMAKE_CROSSCOMPILING)
add_executable (codes ${codes_generated_src_master} ${VERSION_RC})
-target_link_libraries (codes yvalve)
+target_link_libraries (codes boot_yvalve)
+set_output_directory (codes . CURRENT_DIR)
project_group (codes Boot)
endif() # if (NOT CMAKE_CROSSCOMPILING)
@@ -703,7 +706,7 @@
add_executable (gstat ${gstat_src} ${gstat_generated_src_master} ${VERSION_RC})
target_link_libraries (gstat common yvalve)
-add_dependencies_cc (gstat engine12 messages)
+add_dependencies_cc (gstat engine12)
########################################
@@ -751,11 +754,16 @@
# EXECUTABLE boot_gfix
########################################
+if (NOT CMAKE_CROSSCOMPILING)
+
add_executable (boot_gfix alice/main/aliceMain.cpp ${VERSION_RC})
target_link_libraries (boot_gfix boot_alice common boot_yvalve)
+set_output_directory (boot_gfix . CURRENT_DIR)
project_group (boot_gfix Boot)
+endif() # if (NOT CMAKE_CROSSCOMPILING)
+
########################################
# EXECUTABLE gfix
########################################
@@ -774,6 +782,7 @@
add_executable (boot_gbak burp/main/burpMain.cpp ${gbak_include} ${VERSION_RC})
target_link_libraries (boot_gbak boot_burp common boot_yvalve)
+set_output_directory (boot_gbak . CURRENT_DIR)
project_group (boot_gbak Boot)
endif() # if (NOT CMAKE_CROSSCOMPILING)
@@ -813,6 +822,7 @@
add_executable (boot_isql ${isql_src} ${isql_generated_src_boot} ${VERSION_RC})
target_link_libraries (boot_isql common boot_yvalve)
+set_output_directory (boot_isql . CURRENT_DIR)
project_group (boot_isql Boot)
endif() # if (NOT CMAKE_CROSSCOMPILING)
@@ -821,11 +831,13 @@
add_custom_command(
TARGET boot_isql
POST_BUILD
- # remove
- COMMAND ${CMAKE_COMMAND} -E remove ${output_dir}/icudt52l.dat ${output_dir}/icudt52l_empty.dat
#
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/extern/icu/icudt52l.dat ${output_dir}/icudt52l.dat
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/extern/icu/icudt52l_empty.dat ${output_dir}/icudt52l_empty.dat
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/extern/icu/icudt52l.dat ${output_dir}/icudt52l.dat
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/extern/icu/icudt52l_empty.dat ${output_dir}/icudt52l_empty.dat
+ #
+ # one copy to boot directory
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/extern/icu/icudt52l.dat $<TARGET_FILE_DIR:boot_isql>/icudt52l.dat
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/extern/icu/icudt52l_empty.dat $<TARGET_FILE_DIR:boot_isql>/icudt52l_empty.dat
)
string(FIND "${CMAKE_EXE_LINKER_FLAGS}" "/machine:x64" arch)
@@ -838,15 +850,19 @@
TARGET boot_isql
POST_BUILD
# icu
- # remove
- COMMAND ${CMAKE_COMMAND} -E remove ${output_dir}/icudt52.dll ${output_dir}/icuin52.dll ${output_dir}/icuuc52.dll
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/extern/icu/${arch}/Release/bin/icudt52.dll ${output_dir}/icudt52.dll
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/extern/icu/${arch}/Release/bin/icuin52.dll ${output_dir}/icuin52.dll
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/extern/icu/${arch}/Release/bin/icuuc52.dll ${output_dir}/icuuc52.dll
+ # zlib
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/extern/zlib/${arch}/zlib1.dll ${output_dir}/zlib1.dll
#
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/extern/icu/${arch}/Release/bin/icudt52.dll ${output_dir}/icudt52.dll
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/extern/icu/${arch}/Release/bin/icuin52.dll ${output_dir}/icuin52.dll
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/extern/icu/${arch}/Release/bin/icuuc52.dll ${output_dir}/icuuc52.dll
+ # one copy to boot directory
+ # icu
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/extern/icu/${arch}/Release/bin/icudt52.dll $<TARGET_FILE_DIR:boot_isql>/icudt52.dll
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/extern/icu/${arch}/Release/bin/icuin52.dll $<TARGET_FILE_DIR:boot_isql>/icuin52.dll
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/extern/icu/${arch}/Release/bin/icuuc52.dll $<TARGET_FILE_DIR:boot_isql>/icuuc52.dll
# zlib
- COMMAND ${CMAKE_COMMAND} -E remove ${output_dir}/zlib1.dll
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/extern/zlib/${arch}/zlib1.dll ${output_dir}/zlib1.dll
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/extern/zlib/${arch}/zlib1.dll $<TARGET_FILE_DIR:boot_isql>/zlib1.dll
)
endif()
@@ -931,7 +947,7 @@
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/src/include/gen/iberror.h ${output_dir}/include/iberror.h
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/src/yvalve/perf.h ${output_dir}/include/perf.h
)
-add_dependencies_cc (copy_files databases employee_db)
+add_dependencies_cc (copy_files databases)
add_dependencies_unix_cc(copy_files makeHeader)
project_group(copy_files "Custom build steps")
@@ -1020,7 +1036,7 @@
if (NOT CMAKE_CROSSCOMPILING)
add_executable (makeHeader misc/makeHeader.cpp)
- set_output_directory (makeHeader . FORCE)
+ set_output_directory (makeHeader . CURRENT_DIR)
set(files
${CMAKE_SOURCE_DIR}/src/include/types_pub.h
${CMAKE_SOURCE_DIR}/src/include/consts_pub.h
Modified: firebird/trunk/src/utilities/CMakeLists.txt
===================================================================
--- firebird/trunk/src/utilities/CMakeLists.txt 2015-02-05 01:08:27 UTC (rev 60629)
+++ firebird/trunk/src/utilities/CMakeLists.txt 2015-02-05 06:36:23 UTC (rev 60630)
@@ -57,7 +57,6 @@
add_library (fbtrace SHARED ${fbtrace_src} ${fbtrace_os_src} ${fbtrace_include} ${VERSION_RC})
target_link_libraries (fbtrace common yvalve)
-add_dependencies_cc (fbtrace engine12 build_msg codes) # try to wait all generators stop
set_output_directory (fbtrace plugins)
set_exported_symbols (fbtrace fbplugin)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|