Browse Source

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 years ago
parent
commit
0fdba73e02

+ 9 - 8
cmake_modules/commonSetup.cmake

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

+ 26 - 25
dali/dfuplus/CMakeLists.txt

@@ -16,41 +16,41 @@
 ################################################################################
 ################################################################################
 
 
 
 
-# Component: dfuplus 
+# Component: dfuplus
 #####################################################
 #####################################################
 # Description:
 # Description:
 # ------------
 # ------------
 #    Cmake Input File for dfuplus
 #    Cmake Input File for dfuplus
 #####################################################
 #####################################################
 
 
-project( dfuplus ) 
+project( dfuplus )
 
 
 include(${HPCC_SOURCE_DIR}/esp/scm/smcscm.cmake)
 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
          ${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
          ./../../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}
          ${CMAKE_BINARY_DIR}/oss
          ${CMAKE_BINARY_DIR}/oss
     )
     )
@@ -61,11 +61,12 @@ set_source_files_properties (dfuplus.cpp PROPERTIES COMPILE_FLAGS -DDAFILESRV_LO
 ADD_DEFINITIONS( -D_CONSOLE )
 ADD_DEFINITIONS( -D_CONSOLE )
 
 
 add_executable ( dfuplus ${SRCS} )
 add_executable ( dfuplus ${SRCS} )
+add_dependencies ( dfuplus espscm )
 install ( TARGETS dfuplus DESTINATION ${OSSDIR}/bin )
 install ( TARGETS dfuplus DESTINATION ${OSSDIR}/bin )
-target_link_libraries ( dfuplus  
+target_link_libraries ( dfuplus
          jlib
          jlib
-         xmllib 
-         esphttp 
+         xmllib
+         esphttp
          ws_fs
          ws_fs
          ws_dfu
          ws_dfu
     )
     )

+ 1 - 0
ecl/eclplus/CMakeLists.txt

@@ -61,6 +61,7 @@ include_directories (
 ADD_DEFINITIONS( -DECLPLUS_EXPORTS -D_CONSOLE )
 ADD_DEFINITIONS( -DECLPLUS_EXPORTS -D_CONSOLE )
 
 
 add_executable ( eclplus ${SRCS} )
 add_executable ( eclplus ${SRCS} )
+add_dependencies ( eclplus espscm )
 install ( TARGETS eclplus DESTINATION ${OSSDIR}/bin )
 install ( TARGETS eclplus DESTINATION ${OSSDIR}/bin )
 target_link_libraries (  eclplus 
 target_link_libraries (  eclplus 
          jlib
          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
 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
     #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
     DEPENDS hqlgram.y
 )
 )
 
 
 add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hqllex.cpp 
 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
     DEPENDS hqllex.l
 )
 )
 
 

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

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

+ 3 - 4
esp/scm/CMakeLists.txt

@@ -24,14 +24,13 @@
 #    Cmake Input File esp/scm
 #    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}/espscm.cmake)
 include ( ${CMAKE_CURRENT_SOURCE_DIR}/smcscm.cmake)
 include ( ${CMAKE_CURRENT_SOURCE_DIR}/smcscm.cmake)
 include ( ${CMAKE_CURRENT_SOURCE_DIR}/additional.cmake)
 include ( ${CMAKE_CURRENT_SOURCE_DIR}/additional.cmake)
-#include ( ${CMAKE_CURRENT_SOURCE_DIR}/ncmscm.cmake)
+set (SCM_BUILD OFF)
 
 
 ADD_CUSTOM_TARGET( 
 ADD_CUSTOM_TARGET( 
   espscm ALL
   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(HIDL_EXE hidl LOCATION)
 GET_TARGET_PROPERTY(ESDL_EXE esdl LOCATION)
 GET_TARGET_PROPERTY(ESDL_EXE esdl LOCATION)
 
 
-set ( ESPSCM_SRCS 
+set ( ESPSCM_SRCS
       ws_config.ecm
       ws_config.ecm
       ws_fileio.ecm
       ws_fileio.ecm
       ws_account.ecm
       ws_account.ecm
@@ -36,21 +36,23 @@ set ( ESPSCM_SRCS
 
 
 foreach ( loop_var ${ESPSCM_SRCS} )
 foreach ( loop_var ${ESPSCM_SRCS} )
     string(  REGEX REPLACE "[.]ecm" "" result ${loop_var} )
     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 )
     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} )
 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(HIDL_EXE hidl LOCATION)
 GET_TARGET_PROPERTY(ESDL_EXE esdl 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} )
 foreach ( loop_var ${ESPSCM_SRCS} )
     string(  REGEX REPLACE "[.]ecm" "" result ${loop_var} )
     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 )
     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} )
 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(HIDL_EXE hidl LOCATION)
 GET_TARGET_PROPERTY(ESDL_EXE esdl 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} )
 foreach ( loop_var ${ESPSCM_SRCS} )
     string(  REGEX REPLACE "[.]ecm" "" result ${loop_var} )
     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 )
     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} )
 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 )
 ADD_DEFINITIONS( -D_USRDLL -DWS_DFU_EXPORTS )
 
 
 HPCC_ADD_LIBRARY( ws_dfu SHARED ${SRCS} )
 HPCC_ADD_LIBRARY( ws_dfu SHARED ${SRCS} )
+add_dependencies ( ws_dfu espscm )
 install ( TARGETS ws_dfu DESTINATION ${OSSDIR}/lib )
 install ( TARGETS ws_dfu DESTINATION ${OSSDIR}/lib )
 target_link_libraries ( ws_dfu
 target_link_libraries ( ws_dfu
          jlib
          jlib

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

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

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

@@ -75,6 +75,7 @@ include_directories (
 ADD_DEFINITIONS( -D_USRDLL )
 ADD_DEFINITIONS( -D_USRDLL )
 
 
 HPCC_ADD_LIBRARY( ws_roxiequery SHARED ${SRCS} )
 HPCC_ADD_LIBRARY( ws_roxiequery SHARED ${SRCS} )
+add_dependencies ( ws_roxiequery espscm )
 install ( TARGETS ws_roxiequery DESTINATION ${OSSDIR}/lib )
 install ( TARGETS ws_roxiequery DESTINATION ${OSSDIR}/lib )
 target_link_libraries ( ws_roxiequery 
 target_link_libraries ( ws_roxiequery 
          jlib
          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 )
 ADD_DEFINITIONS( -D_USRDLL -DWS_SMC_EXPORTS )
 
 
 HPCC_ADD_LIBRARY( ws_smc SHARED ${SRCS}  )
 HPCC_ADD_LIBRARY( ws_smc SHARED ${SRCS}  )
+add_dependencies ( ws_smc espscm )
 install ( TARGETS ws_smc DESTINATION ${OSSDIR}/lib )
 install ( TARGETS ws_smc DESTINATION ${OSSDIR}/lib )
 target_link_libraries ( ws_smc 
 target_link_libraries ( ws_smc 
          jlib
          jlib

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

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

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

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

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

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

+ 1 - 0
plugins/fileservices/CMakeLists.txt

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

+ 2 - 2
tools/esdl/CMakeLists.txt

@@ -27,12 +27,12 @@
 project( esdl ) 
 project( esdl ) 
 
 
 add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/esdlgram.cpp ${CMAKE_CURRENT_BINARY_DIR}/esdlgram.h
 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
     DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/esdlgram.y
 )
 )
 
 
 add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/esdllex.cpp 
 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
     DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/esdllex.l
 )
 )
 
 

+ 3 - 3
tools/hidl/CMakeLists.txt

@@ -25,12 +25,12 @@
 project( hidl ) 
 project( hidl ) 
 
 
 add_custom_command ( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/hidlgram.cpp ${CMAKE_CURRENT_BINARY_DIR}/hidlgram.h
 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
     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
     DEPENDS hidllex.l
 )
 )