Преглед изворни кода

FIX #137 - Visual Studio 2010 build issues

Avoid issues in VS2010 where a custom build step uses a batch file.

The bison and flex build commands we use may be implemented as batch
files that set up environment variables to enable bison to locate any
files it needs before passing parameters on to the executable. In such
cases the custom build steps generated for VS2010 by CMake need to use
CALL to call the nested batch file otherwise only the first custom build
step of any project will be executed.

Also, some errors in the dependencies for generated files caused VS2010
to attempt to rebuild the same file several times in parallel. This
could lead to internal errors in hidl or unnecessary rebuilds. These
are fixed in this patch.

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman пре 14 година
родитељ
комит
0fdba73e02

+ 9 - 8
cmake_modules/commonSetup.cmake

@@ -149,17 +149,21 @@ IF ("${COMMONSETUP_DONE}" STREQUAL "")
     SET(bisoncmd "bison")
     SET(flexcmd "flex")
   ELSE()
-    SET(bisoncmd "${EXTERNALS_DIRECTORY}/bison/bison")
-    SET(flexcmd "${EXTERNALS_DIRECTORY}/bison/flex")
+    IF (WIN32)
+      SET(bisoncmdprefix "call")
+      SET(flexcmdprefix "call")
+      SET(bisoncmd "${EXTERNALS_DIRECTORY}\\bison\\bison.bat")
+      SET(flexcmd "${EXTERNALS_DIRECTORY}\\bison\\flex.bat")
+    ELSE ()
+      SET(bisoncmd "${EXTERNALS_DIRECTORY}/bison/bison")
+      SET(flexcmd "${EXTERNALS_DIRECTORY}/bison/flex")
+    ENDIF()
   ENDIF()
 
   IF ("${BISON_VERSION}" STREQUAL "")
     IF (WIN32)
       # cmake bug workaround - it converts path separators fine in add_custom_command but not here
       STRING(REPLACE "/" "\\" BISON_exename "${bisoncmd}")  
-      IF (NOT "${EXTERNALS_DIRECTORY}" STREQUAL "")
-        set (BISON_exename "${BISON_exename}.bat")
-      ENDIF()
     ELSE()
       SET(BISON_exename "${bisoncmd}")  
     ENDIF()
@@ -175,9 +179,6 @@ IF ("${COMMONSETUP_DONE}" STREQUAL "")
     IF (WIN32)
       # cmake bug workaround - it converts path separators fine in add_custom_command but not here
       STRING(REPLACE "/" "\\" FLEX_exename "${flexcmd}")  
-      IF (NOT "${EXTERNALS_DIRECTORY}" STREQUAL "")
-        set (FLEX_exename "${FLEX_exename}.bat")
-      ENDIF()
     ELSE()
       SET(FLEX_exename "${flexcmd}")  
     ENDIF()

+ 26 - 25
dali/dfuplus/CMakeLists.txt

@@ -16,41 +16,41 @@
 ################################################################################
 
 
-# Component: dfuplus 
+# Component: dfuplus
 #####################################################
 # Description:
 # ------------
 #    Cmake Input File for dfuplus
 #####################################################
 
-project( dfuplus ) 
+project( dfuplus )
 
 include(${HPCC_SOURCE_DIR}/esp/scm/smcscm.cmake)
 
-set (    SRCS 
-         ../../esp/bindings/bindutil.cpp 
-         ${ESPSCM_GENERATED_DIR}/ws_dfu_esp.cpp 
+set (    SRCS
+         ../../esp/bindings/bindutil.cpp
+         ${ESPSCM_GENERATED_DIR}/ws_dfu_esp.cpp
          ${ESPSCM_GENERATED_DIR}/ws_fs_esp.cpp
-         ../../common/remote/rmtfile.cpp 
-         ../../common/remote/sockfile.cpp 
-         dfuplus.cpp 
-         main.cpp 
+         ../../common/remote/rmtfile.cpp
+         ../../common/remote/sockfile.cpp
+         dfuplus.cpp
+         main.cpp
     )
 
-include_directories ( 
+include_directories (
          ./../../system/security/shared
-         ./../../esp/bindings/SOAP/xpp 
-         ./../dfu 
-         ./../ft 
-         ./../../system/xmllib 
-         ./../../esp/platform 
-         ./../../esp/clients 
-         ./../../rtl/include 
-         ./../../system/include 
-         ./../../system/jlib 
-         ./../../esp/bindings 
-         ./../../common/workunit 
-         ./../../common/remote 
+         ./../../esp/bindings/SOAP/xpp
+         ./../dfu
+         ./../ft
+         ./../../system/xmllib
+         ./../../esp/platform
+         ./../../esp/clients
+         ./../../rtl/include
+         ./../../system/include
+         ./../../system/jlib
+         ./../../esp/bindings
+         ./../../common/workunit
+         ./../../common/remote
          ${CMAKE_BINARY_DIR}
          ${CMAKE_BINARY_DIR}/oss
     )
@@ -61,11 +61,12 @@ set_source_files_properties (dfuplus.cpp PROPERTIES COMPILE_FLAGS -DDAFILESRV_LO
 ADD_DEFINITIONS( -D_CONSOLE )
 
 add_executable ( dfuplus ${SRCS} )
+add_dependencies ( dfuplus espscm )
 install ( TARGETS dfuplus DESTINATION ${OSSDIR}/bin )
-target_link_libraries ( dfuplus  
+target_link_libraries ( dfuplus
          jlib
-         xmllib 
-         esphttp 
+         xmllib
+         esphttp
          ws_fs
          ws_dfu
     )

+ 1 - 0
ecl/eclplus/CMakeLists.txt

@@ -61,6 +61,7 @@ include_directories (
 ADD_DEFINITIONS( -DECLPLUS_EXPORTS -D_CONSOLE )
 
 add_executable ( eclplus ${SRCS} )
+add_dependencies ( eclplus espscm )
 install ( TARGETS eclplus DESTINATION ${OSSDIR}/bin )
 target_link_libraries (  eclplus 
          jlib

+ 2 - 2
ecl/hql/CMakeLists.txt

@@ -100,12 +100,12 @@ include_directories (
 
 add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hqlgram.cpp ${CMAKE_CURRENT_BINARY_DIR}/hqlgram.h
     #pipe result through grep to remove warnings that are hard to suppress, and pipe through cat to prevent error code from no matches aborting the compile
-    COMMAND ${bisoncmd} --report=state --defines=${CMAKE_CURRENT_BINARY_DIR}/hqlgram.h --output=${CMAKE_CURRENT_BINARY_DIR}/hqlgram.cpp ${CMAKE_CURRENT_SOURCE_DIR}/hqlgram.y 2>&1 | grep -v "unused value" | cat
+    COMMAND ${bisoncmdprefix} ${bisoncmd} --report=state --defines=${CMAKE_CURRENT_BINARY_DIR}/hqlgram.h --output=${CMAKE_CURRENT_BINARY_DIR}/hqlgram.cpp ${CMAKE_CURRENT_SOURCE_DIR}/hqlgram.y 2>&1 | grep -v "unused value" | cat
     DEPENDS hqlgram.y
 )
 
 add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hqllex.cpp 
-    COMMAND ${flexcmd} --outfile=${CMAKE_CURRENT_BINARY_DIR}/hqllex.cpp --header-file=${CMAKE_CURRENT_BINARY_DIR}/hqllex.hpp ${CMAKE_CURRENT_SOURCE_DIR}/hqllex.l
+    COMMAND ${flexcmdprefix} ${flexcmd} --outfile=${CMAKE_CURRENT_BINARY_DIR}/hqllex.cpp --header-file=${CMAKE_CURRENT_BINARY_DIR}/hqllex.hpp ${CMAKE_CURRENT_SOURCE_DIR}/hqllex.l
     DEPENDS hqllex.l
 )
 

+ 1 - 0
esp/clients/WUManager/CMakeLists.txt

@@ -46,6 +46,7 @@ include_directories (
 ADD_DEFINITIONS( -D_CONSOLE )
 
 add_executable ( wumanager ${SRCS} )
+add_dependencies ( wumanager espscm )
 #install ( TARGETS wumanager DESTINATION ${OSSDIR}/bin ) # do not install - this is an example program
 
 target_link_libraries ( wumanager 

+ 3 - 4
esp/scm/CMakeLists.txt

@@ -24,14 +24,13 @@
 #    Cmake Input File esp/scm
 #####################################################
 
+project (scm)
 
-
-project (AllProjects)
-
+set (SCM_BUILD ON)
 include ( ${CMAKE_CURRENT_SOURCE_DIR}/espscm.cmake)
 include ( ${CMAKE_CURRENT_SOURCE_DIR}/smcscm.cmake)
 include ( ${CMAKE_CURRENT_SOURCE_DIR}/additional.cmake)
-#include ( ${CMAKE_CURRENT_SOURCE_DIR}/ncmscm.cmake)
+set (SCM_BUILD OFF)
 
 ADD_CUSTOM_TARGET( 
   espscm ALL

+ 18 - 16
esp/scm/additional.cmake

@@ -26,7 +26,7 @@ set ( ESPSCM_GENERATED_DIR ${CMAKE_BINARY_DIR}/generated )
 GET_TARGET_PROPERTY(HIDL_EXE hidl LOCATION)
 GET_TARGET_PROPERTY(ESDL_EXE esdl LOCATION)
 
-set ( ESPSCM_SRCS 
+set ( ESPSCM_SRCS
       ws_config.ecm
       ws_fileio.ecm
       ws_account.ecm
@@ -36,21 +36,23 @@ set ( ESPSCM_SRCS
 
 foreach ( loop_var ${ESPSCM_SRCS} )
     string(  REGEX REPLACE "[.]ecm" "" result ${loop_var} )
-    add_custom_command ( DEPENDS hidl ${ESPSCM_SOURCE_DIR}/${loop_var}
-                         OUTPUT ${ESPSCM_GENERATED_DIR}/${result}.esp ${ESPSCM_GENERATED_DIR}/${result}.hpp ${ESPSCM_GENERATED_DIR}/${result}.int ${ESPSCM_GENERATED_DIR}/${result}.ipp ${ESPSCM_GENERATED_DIR}/${result}_esp.cpp ${ESPSCM_GENERATED_DIR}/${result}_esp.ipp
-                         COMMAND ${HIDL_EXE} ${ESPSCM_SOURCE_DIR}/${result}.ecm ${ESPSCM_GENERATED_DIR}
-                       )
-    add_custom_command ( DEPENDS esdl ${ESPSCM_SOURCE_DIR}/${loop_var}
-                         OUTPUT ${ESPSCM_GENERATED_DIR}/${result}.xml 
-                         COMMAND ${ESDL_EXE} ${ESPSCM_SOURCE_DIR}/${result}.ecm ${ESPSCM_GENERATED_DIR}
-                       )
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.esp PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.hpp PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.int PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.ipp PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}_esp.cpp PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}_esp.ipp PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.xml PROPERTIES ESPSCM_GENERATED_DIR TRUE)
+    if (SCM_BUILD)
+      add_custom_command ( DEPENDS hidl ${ESPSCM_SOURCE_DIR}/${loop_var}
+                           OUTPUT ${ESPSCM_GENERATED_DIR}/${result}.esp ${ESPSCM_GENERATED_DIR}/${result}.hpp ${ESPSCM_GENERATED_DIR}/${result}.int ${ESPSCM_GENERATED_DIR}/${result}.ipp ${ESPSCM_GENERATED_DIR}/${result}_esp.cpp ${ESPSCM_GENERATED_DIR}/${result}_esp.ipp
+                           COMMAND ${HIDL_EXE} ${ESPSCM_SOURCE_DIR}/${result}.ecm ${ESPSCM_GENERATED_DIR}
+                         )
+      add_custom_command ( DEPENDS esdl ${ESPSCM_SOURCE_DIR}/${loop_var}
+                           OUTPUT ${ESPSCM_GENERATED_DIR}/${result}.xml
+                           COMMAND ${ESDL_EXE} ${ESPSCM_SOURCE_DIR}/${result}.ecm ${ESPSCM_GENERATED_DIR}
+                         )
+    endif ()
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.esp PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.hpp PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.int PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.ipp PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}_esp.cpp PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}_esp.ipp PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.xml PROPERTIES GENERATED TRUE)
     set ( ESP_GENERATED_INCLUDES ${ESP_GENERATED_INCLUDES} ${ESPSCM_GENERATED_DIR}/${result}.esp ${ESPSCM_GENERATED_DIR}/${result}.hpp ${ESPSCM_GENERATED_DIR}/${result}.int ${ESPSCM_GENERATED_DIR}/${result}.ipp ${ESPSCM_GENERATED_DIR}/${result}_esp.ipp ${ESPSCM_GENERATED_DIR}/${result}.xml )
 endforeach ( loop_var ${ESPSCM_SRCS} )
 

+ 32 - 30
esp/scm/espscm.cmake

@@ -26,40 +26,42 @@ set ( ESPSCM_GENERATED_DIR ${CMAKE_BINARY_DIR}/generated )
 GET_TARGET_PROPERTY(HIDL_EXE hidl LOCATION)
 GET_TARGET_PROPERTY(ESDL_EXE esdl LOCATION)
 
-set ( ESPSCM_SRCS 
-         ecl.ecm
-         ecldirect.ecm 
-         ecllib.ecm 
-         esp.ecm 
-         esploggingservice.ecm 
-         roxiecommlibscm.ecm 
-         roxiemanagerscm.ecm 
-         soapesp.ecm 
-         ws_ecl_client.ecm 
-         ws_fs.ecm 
-         ws_machine.ecm 
-                 ws_smc.ecm 
-         ws_topology.ecm 
-         ws_workunits.ecm 
+set ( ESPSCM_SRCS
+      ecl.ecm
+      ecldirect.ecm
+      ecllib.ecm
+      esp.ecm
+      esploggingservice.ecm
+      roxiecommlibscm.ecm
+      roxiemanagerscm.ecm
+      soapesp.ecm
+      ws_ecl_client.ecm
+      ws_fs.ecm
+      ws_machine.ecm
+      ws_smc.ecm
+      ws_topology.ecm
+      ws_workunits.ecm
     )
 
 foreach ( loop_var ${ESPSCM_SRCS} )
     string(  REGEX REPLACE "[.]ecm" "" result ${loop_var} )
-    add_custom_command ( DEPENDS hidl ${ESPSCM_SOURCE_DIR}/${loop_var}
-                         OUTPUT ${ESPSCM_GENERATED_DIR}/${result}.esp ${ESPSCM_GENERATED_DIR}/${result}.hpp ${ESPSCM_GENERATED_DIR}/${result}.int ${ESPSCM_GENERATED_DIR}/${result}.ipp ${ESPSCM_GENERATED_DIR}/${result}_esp.cpp ${ESPSCM_GENERATED_DIR}/${result}_esp.ipp
-                         COMMAND ${HIDL_EXE} ${ESPSCM_SOURCE_DIR}/${result}.ecm ${ESPSCM_GENERATED_DIR}
-                       )
-    add_custom_command ( DEPENDS esdl ${ESPSCM_SOURCE_DIR}/${loop_var}
-                         OUTPUT ${ESPSCM_GENERATED_DIR}/${result}.xml 
-                         COMMAND ${ESDL_EXE} ${ESPSCM_SOURCE_DIR}/${result}.ecm ${ESPSCM_GENERATED_DIR}
-                       )
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.esp PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.hpp PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.int PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.ipp PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}_esp.cpp PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}_esp.ipp PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.xml PROPERTIES ESPSCM_GENERATED_DIR TRUE)
+    if (SCM_BUILD)
+      add_custom_command ( DEPENDS hidl ${ESPSCM_SOURCE_DIR}/${loop_var}
+                           OUTPUT ${ESPSCM_GENERATED_DIR}/${result}.esp ${ESPSCM_GENERATED_DIR}/${result}.hpp ${ESPSCM_GENERATED_DIR}/${result}.int ${ESPSCM_GENERATED_DIR}/${result}.ipp ${ESPSCM_GENERATED_DIR}/${result}_esp.cpp ${ESPSCM_GENERATED_DIR}/${result}_esp.ipp
+                           COMMAND ${HIDL_EXE} ${ESPSCM_SOURCE_DIR}/${result}.ecm ${ESPSCM_GENERATED_DIR}
+                         )
+      add_custom_command ( DEPENDS esdl ${ESPSCM_SOURCE_DIR}/${loop_var}
+                           OUTPUT ${ESPSCM_GENERATED_DIR}/${result}.xml
+                           COMMAND ${ESDL_EXE} ${ESPSCM_SOURCE_DIR}/${result}.ecm ${ESPSCM_GENERATED_DIR}
+                         )
+    endif ()
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.esp PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.hpp PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.int PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.ipp PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}_esp.cpp PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}_esp.ipp PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.xml PROPERTIES GENERATED TRUE)
     set ( ESP_GENERATED_INCLUDES ${ESP_GENERATED_INCLUDES} ${ESPSCM_GENERATED_DIR}/${result}.esp ${ESPSCM_GENERATED_DIR}/${result}.hpp ${ESPSCM_GENERATED_DIR}/${result}.int ${ESPSCM_GENERATED_DIR}/${result}.ipp ${ESPSCM_GENERATED_DIR}/${result}_esp.ipp ${ESPSCM_GENERATED_DIR}/${result}.xml )
 endforeach ( loop_var ${ESPSCM_SRCS} )
 

+ 26 - 24
esp/scm/smcscm.cmake

@@ -27,34 +27,36 @@ set ( ESPSCM_GENERATED_DIR ${CMAKE_BINARY_DIR}/generated )
 GET_TARGET_PROPERTY(HIDL_EXE hidl LOCATION)
 GET_TARGET_PROPERTY(ESDL_EXE esdl LOCATION)
 
-set ( ESPSCM_SRCS 
-      ws_dfu.ecm 
-      ws_dfuXref.ecm 
-      ws_fs.ecm 
-      ws_roxie.ecm 
-      ws_roxiequery.ecm 
-      ws_smc.ecm 
-      ws_topology.ecm 
-      ws_workunits.ecm 
+set ( ESPSCM_SRCS
+      ws_dfu.ecm
+      ws_dfuXref.ecm
+      ws_fs.ecm
+      ws_roxie.ecm
+      ws_roxiequery.ecm
+      ws_smc.ecm
+      ws_topology.ecm
+      ws_workunits.ecm
     )
 
 foreach ( loop_var ${ESPSCM_SRCS} )
     string(  REGEX REPLACE "[.]ecm" "" result ${loop_var} )
-    add_custom_command ( DEPENDS hidl ${ESPSCM_SOURCE_DIR}/${loop_var}
-                         OUTPUT ${ESPSCM_GENERATED_DIR}/${result}.esp ${ESPSCM_GENERATED_DIR}/${result}.hpp ${ESPSCM_GENERATED_DIR}/${result}.int ${ESPSCM_GENERATED_DIR}/${result}.ipp ${ESPSCM_GENERATED_DIR}/${result}_esp.cpp ${ESPSCM_GENERATED_DIR}/${result}_esp.ipp
-                         COMMAND ${HIDL_EXE} ${ESPSCM_SOURCE_DIR}/${result}.ecm ${ESPSCM_GENERATED_DIR}
-                       )
-    add_custom_command ( DEPENDS esdl ${ESPSCM_SOURCE_DIR}/${loop_var}
-                         OUTPUT ${ESPSCM_GENERATED_DIR}/${result}.xml 
-                         COMMAND ${ESDL_EXE} ${ESPSCM_SOURCE_DIR}/${result}.ecm ${ESPSCM_GENERATED_DIR}
-                       )
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.esp PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.hpp PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.int PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.ipp PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}_esp.cpp PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}_esp.ipp PROPERTIES ESPSCM_GENERATED_DIR TRUE)
-    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.xml PROPERTIES ESPSCM_GENERATED_DIR TRUE)
+    if (SCM_BUILD)
+      add_custom_command ( DEPENDS hidl ${ESPSCM_SOURCE_DIR}/${loop_var}
+                           OUTPUT ${ESPSCM_GENERATED_DIR}/${result}.esp ${ESPSCM_GENERATED_DIR}/${result}.hpp ${ESPSCM_GENERATED_DIR}/${result}.int ${ESPSCM_GENERATED_DIR}/${result}.ipp ${ESPSCM_GENERATED_DIR}/${result}_esp.cpp ${ESPSCM_GENERATED_DIR}/${result}_esp.ipp
+                           COMMAND ${HIDL_EXE} ${ESPSCM_SOURCE_DIR}/${result}.ecm ${ESPSCM_GENERATED_DIR}
+                         )
+      add_custom_command ( DEPENDS esdl ${ESPSCM_SOURCE_DIR}/${loop_var}
+                           OUTPUT ${ESPSCM_GENERATED_DIR}/${result}.xml
+                           COMMAND ${ESDL_EXE} ${ESPSCM_SOURCE_DIR}/${result}.ecm ${ESPSCM_GENERATED_DIR}
+                         )
+    endif ()
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.esp PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.hpp PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.int PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.ipp PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}_esp.cpp PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}_esp.ipp PROPERTIES GENERATED TRUE)
+    set_source_files_properties(${ESPSCM_GENERATED_DIR}/${result}.xml PROPERTIES GENERATED TRUE)
     set ( ESP_GENERATED_INCLUDES ${ESP_GENERATED_INCLUDES} ${ESPSCM_GENERATED_DIR}/${result}.esp ${ESPSCM_GENERATED_DIR}/${result}.hpp ${ESPSCM_GENERATED_DIR}/${result}.int ${ESPSCM_GENERATED_DIR}/${result}.ipp ${ESPSCM_GENERATED_DIR}/${result}_esp.ipp ${ESPSCM_GENERATED_DIR}/${result}.xml )
 endforeach ( loop_var ${ESPSCM_SRCS} )
 

+ 1 - 0
esp/services/ws_dfu/CMakeLists.txt

@@ -72,6 +72,7 @@ include_directories (
 ADD_DEFINITIONS( -D_USRDLL -DWS_DFU_EXPORTS )
 
 HPCC_ADD_LIBRARY( ws_dfu SHARED ${SRCS} )
+add_dependencies ( ws_dfu espscm )
 install ( TARGETS ws_dfu DESTINATION ${OSSDIR}/lib )
 target_link_libraries ( ws_dfu
          jlib

+ 1 - 0
esp/services/ws_fs/CMakeLists.txt

@@ -63,6 +63,7 @@ include_directories (
 ADD_DEFINITIONS( -D_USRDLL )
 
 HPCC_ADD_LIBRARY( ws_fs SHARED ${SRCS} )
+add_dependencies ( ws_fs espscm )
 install ( TARGETS ws_fs DESTINATION ${OSSDIR}/lib )
 target_link_libraries ( ws_fs
          jlib

+ 1 - 0
esp/services/ws_roxiequery/CMakeLists.txt

@@ -75,6 +75,7 @@ include_directories (
 ADD_DEFINITIONS( -D_USRDLL )
 
 HPCC_ADD_LIBRARY( ws_roxiequery SHARED ${SRCS} )
+add_dependencies ( ws_roxiequery espscm )
 install ( TARGETS ws_roxiequery DESTINATION ${OSSDIR}/lib )
 target_link_libraries ( ws_roxiequery 
          jlib

+ 1 - 0
esp/services/ws_smc/CMakeLists.txt

@@ -63,6 +63,7 @@ include_directories ( ${OPENLDAP_INCLUDE_DIR} )
 ADD_DEFINITIONS( -D_USRDLL -DWS_SMC_EXPORTS )
 
 HPCC_ADD_LIBRARY( ws_smc SHARED ${SRCS}  )
+add_dependencies ( ws_smc espscm )
 install ( TARGETS ws_smc DESTINATION ${OSSDIR}/lib )
 target_link_libraries ( ws_smc 
          jlib

+ 1 - 0
esp/services/ws_topology/CMakeLists.txt

@@ -62,6 +62,7 @@ include_directories (
 ADD_DEFINITIONS( -D_USRDLL -DWS_TOPOLOGY_EXPORTS )
 
 HPCC_ADD_LIBRARY( ws_topology SHARED ${SRCS} )
+add_dependencies ( ws_topology espscm )
 install ( TARGETS ws_topology DESTINATION ${OSSDIR}/lib )
 target_link_libraries ( ws_topology
          jlib

+ 1 - 0
esp/services/ws_workunits/CMakeLists.txt

@@ -68,6 +68,7 @@ include_directories (
 ADD_DEFINITIONS( -D_USRDLL -DWS_WORKUNITS_EXPORTS )
 
 HPCC_ADD_LIBRARY( ws_workunits SHARED ${SRCS} )
+add_dependencies ( ws_workunits espscm )
 install ( TARGETS ws_workunits DESTINATION ${OSSDIR}/lib )
 target_link_libraries ( ws_workunits 
          jlib

+ 1 - 0
esp/smc/SMCLib/CMakeLists.txt

@@ -62,6 +62,7 @@ include_directories (
 ADD_DEFINITIONS( -D_USRDLL -DSMCLIB_EXPORTS )
 
 HPCC_ADD_LIBRARY( SMCLib SHARED ${SRCS} )
+add_dependencies(SMCLib espscm)
 install ( TARGETS SMCLib DESTINATION ${OSSDIR}/lib )
 target_link_libraries ( SMCLib
          jlib

+ 1 - 0
plugins/fileservices/CMakeLists.txt

@@ -64,6 +64,7 @@ include_directories (
 ADD_DEFINITIONS( -D_USRDLL -DFILESERVICES_EXPORTS )
 
 HPCC_ADD_LIBRARY( fileservices SHARED ${SRCS} )  
+add_dependencies ( fileservices espscm )
 install ( TARGETS fileservices DESTINATION ${OSSDIR}/plugins )
 target_link_libraries ( fileservices
          jlib

+ 2 - 2
tools/esdl/CMakeLists.txt

@@ -27,12 +27,12 @@
 project( esdl ) 
 
 add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/esdlgram.cpp ${CMAKE_CURRENT_BINARY_DIR}/esdlgram.h
-    COMMAND ${bisoncmd} --defines=${CMAKE_CURRENT_BINARY_DIR}/esdlgram.h --output=${CMAKE_CURRENT_BINARY_DIR}/esdlgram.cpp ${CMAKE_CURRENT_SOURCE_DIR}/esdlgram.y
+    COMMAND ${bisoncmdprefix} ${bisoncmd} --defines=${CMAKE_CURRENT_BINARY_DIR}/esdlgram.h --output=${CMAKE_CURRENT_BINARY_DIR}/esdlgram.cpp ${CMAKE_CURRENT_SOURCE_DIR}/esdlgram.y
     DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/esdlgram.y
 )
 
 add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/esdllex.cpp 
-    COMMAND ${flexcmd} --outfile=${CMAKE_CURRENT_BINARY_DIR}/esdllex.cpp ${CMAKE_CURRENT_SOURCE_DIR}/esdllex.l
+    COMMAND ${flexcmdprefix} ${flexcmd} --outfile=${CMAKE_CURRENT_BINARY_DIR}/esdllex.cpp ${CMAKE_CURRENT_SOURCE_DIR}/esdllex.l
     DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/esdllex.l
 )
 

+ 3 - 3
tools/hidl/CMakeLists.txt

@@ -25,12 +25,12 @@
 project( hidl ) 
 
 add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hidlgram.cpp ${CMAKE_CURRENT_BINARY_DIR}/hidlgram.h
-    COMMAND ${bisoncmd} --defines=${CMAKE_CURRENT_BINARY_DIR}/hidlgram.h --output=${CMAKE_CURRENT_BINARY_DIR}/hidlgram.cpp ${CMAKE_CURRENT_SOURCE_DIR}/hidlgram.y
+    COMMAND ${bisoncmdprefix} ${bisoncmd} --defines=${CMAKE_CURRENT_BINARY_DIR}/hidlgram.h --output=${CMAKE_CURRENT_BINARY_DIR}/hidlgram.cpp ${CMAKE_CURRENT_SOURCE_DIR}/hidlgram.y
     DEPENDS hidlgram.y
 )
 
-add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hidllex.cpp 
-    COMMAND ${flexcmd} --outfile=${CMAKE_CURRENT_BINARY_DIR}/hidllex.cpp ${CMAKE_CURRENT_SOURCE_DIR}/hidllex.l
+add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hidllex.cpp
+    COMMAND ${flexcmdprefix} ${flexcmd} --outfile=${CMAKE_CURRENT_BINARY_DIR}/hidllex.cpp ${CMAKE_CURRENT_SOURCE_DIR}/hidllex.l
     DEPENDS hidllex.l
 )