Revision: 40511
          http://brlcad.svn.sourceforge.net/brlcad/?rev=40511&view=rev
Author:   starseeker
Date:     2010-09-09 14:14:10 +0000 (Thu, 09 Sep 2010)

Log Message:
-----------
Start working on installing step library, but there is some subtlty with RPATH 
I haven't figured out yet.  libexpress.so is being deleted between the make and 
the install step by an RPATH_CHECK command - adding libbu as a linking target 
avoids this, but why???

Modified Paths:
--------------
    brlcad/branches/cmake/src/other/openNURBS/CMakeLists.txt
    brlcad/branches/cmake/src/other/step/CMakeLists.txt
    brlcad/branches/cmake/src/other/step/src/cldai/CMakeLists.txt
    brlcad/branches/cmake/src/other/step/src/cleditor/CMakeLists.txt
    brlcad/branches/cmake/src/other/step/src/clstepcore/CMakeLists.txt
    brlcad/branches/cmake/src/other/step/src/clutils/CMakeLists.txt
    brlcad/branches/cmake/src/other/step/src/exppp/CMakeLists.txt
    brlcad/branches/cmake/src/other/step/src/express/CMakeLists.txt
    brlcad/branches/cmake/src/other/step/src/fedex_plus/CMakeLists.txt

Added Paths:
-----------
    brlcad/branches/cmake/src/other/step/FindLEX.cmake
    brlcad/branches/cmake/src/other/step/FindYACC.cmake
    brlcad/branches/cmake/src/other/step/misc/CMake/SCL_Utils.cmake
    brlcad/branches/cmake/src/other/step/misc/CMake/test_srcs/
    
brlcad/branches/cmake/src/other/step/misc/CMake/test_srcs/report_hostname.c.in
    
brlcad/branches/cmake/src/other/step/misc/CMake/test_srcs/report_username.c.in

Modified: brlcad/branches/cmake/src/other/openNURBS/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/other/openNURBS/CMakeLists.txt    2010-09-09 
04:42:47 UTC (rev 40510)
+++ brlcad/branches/cmake/src/other/openNURBS/CMakeLists.txt    2010-09-09 
14:14:10 UTC (rev 40511)
@@ -1,3 +1,9 @@
+# build shared libs by default
+OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON)
+
+# build static libs by default
+OPTION(BUILD_STATIC_LIBS "Build static libraries" ON)
+
 set(OPENNURBS_SOURCES
     opennurbs_3dm_attributes.cpp
     opennurbs_3dm_properties.cpp
@@ -140,15 +146,18 @@
     )
 endif(MSVC)
 
-add_library(openNURBS SHARED ${OPENNURBS_SOURCES})
+IF(BUILD_SHARED_LIBS)
+  add_library(openNURBS SHARED ${OPENNURBS_SOURCES})
+  target_link_libraries(openNURBS ${OPENNURBS_LINKLIBRARIES})
+  set_property(TARGET openNURBS PROPERTY LINK_INTERFACE_LIBRARIES "")
+  install(TARGETS openNURBS LIBRARY DESTINATION lib)
+ENDIF(BUILD_SHARED_LIBS)
 
-target_link_libraries(openNURBS ${OPENNURBS_LINKLIBRARIES})
+IF(BUILD_STATIC_LIBS)
+  add_library(openNURBS-static STATIC ${OPENNURBS_SOURCES})
+  target_link_libraries(openNURBS-static ${OPENNURBS_LINKLIBRARIES})
+  install(TARGETS openNURBS-static ARCHIVE DESTINATION lib)
+ENDIF(BUILD_STATIC_LIBS)
 
-set_property(TARGET openNURBS PROPERTY LINK_INTERFACE_LIBRARIES "")
 
-install(TARGETS openNURBS
-    RUNTIME DESTINATION bin
-    LIBRARY DESTINATION lib
-)
-
 install(FILES ${OPENNURBS_HEADERS} DESTINATION include/openNURBS)

Modified: brlcad/branches/cmake/src/other/step/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/other/step/CMakeLists.txt 2010-09-09 04:42:47 UTC 
(rev 40510)
+++ brlcad/branches/cmake/src/other/step/CMakeLists.txt 2010-09-09 14:14:10 UTC 
(rev 40511)
@@ -48,6 +48,13 @@
 # set CMake project name
 PROJECT(SCL)
 
+# build shared libs by default
+OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON)
+
+# build static libs by default
+OPTION(BUILD_STATIC_LIBS "Build static libraries" ON)
+
+
 # See HACKING for details on how to properly update the version
 FILE(READ ${SCL_SOURCE_DIR}/include/conf/MAJOR MAJOR_VERSION)
 STRING(STRIP ${MAJOR_VERSION} MAJOR_VERSION)
@@ -61,8 +68,10 @@
 # CMake derives much of its functionality from modules, typically
 # stored in one directory - let CMake know where to find them.
 SET(SCL_CMAKE_DIR "${SCL_SOURCE_DIR}/misc/CMake")
-SET(CMAKE_MODULE_PATH "${SCL_CMAKE_DIR}" ${CMAKE_MODULE_PATH})
+SET(CMAKE_MODULE_PATH "${SCL_CMAKE_DIR};${CMAKE_MODULE_PATH}")
 
+INCLUDE(${SCL_CMAKE_DIR}/SCL_Utils.cmake)
+
 # Save the current LC_ALL, LC_MESSAGES, and LANG environment variables and set 
them
 # to "C" so things like date output are as expected
 SET(_orig_lc_all      $ENV{LC_ALL})
@@ -78,48 +87,6 @@
   SET(ENV{LANG}        C)
 ENDIF(_orig_lang)
 
-
-# Unfortunately, CMake doesn't give you variables with current day, month,
-# etc.  For Windows use d_rossberg's execute_process approach and some
-# regular expressions (the resulting timestamp is not identical in format to
-# that given by the Unix date command but is close) and for all other systems
-# use the date command.
-IF(WIN32)
-   execute_process(COMMAND cmd /c date /t OUTPUT_VARIABLE CONFIG_DATE 
OUTPUT_STRIP_TRAILING_WHITESPACE)
-   execute_process(COMMAND cmd /c time /t OUTPUT_VARIABLE CONFIG_TIME 
OUTPUT_STRIP_TRAILING_WHITESPACE)
-   SET(CONFIG_TS "${CONFIG_DATE} ${CONFIG_TIME}")
-   STRING(REGEX REPLACE "[^0-9]*([0-9][0-9]).*" "\\1" CONFIG_MONTH 
"${CONFIG_DATE}" )
-   STRING(REGEX REPLACE "[^0-9]*[0-9][0-9].([0-9][0-9]).*" "\\1" CONFIG_DAY 
"${CONFIG_DATE}" )
-   STRING(REGEX REPLACE 
"[^0-9]*[0-9][0-9].[0-9][0-9].([0-9][0-9][0-9][0-9]).*" "\\1" CONFIG_YEAR 
"${CONFIG_DATE}" )
-ELSE(WIN32)
-   EXEC_PROGRAM(date ARGS +%d OUTPUT_VARIABLE CONFIG_DAY)
-   EXEC_PROGRAM(date ARGS +%m OUTPUT_VARIABLE CONFIG_MONTH)
-   EXEC_PROGRAM(date ARGS +%Y OUTPUT_VARIABLE CONFIG_YEAR)
-   SET(CONFIG_DATE "${CONFIG_YEAR}${CONFIG_MONTH}${CONFIG_DAY}")
-   # try RFC 2822 for timestamp
-   EXEC_PROGRAM(date ARGS -R 2>/dev/null OUTPUT_VARIABLE CONFIG_TS)
-   IF ("${CONFIG_TS}" MATCHES ".*usage.*")
-      EXEC_PROGRAM(date ARGS +'%a, %d %b %Y %H:%M:%S %z' 2>/dev/null 
OUTPUT_VARIABLE CONFIG_TS)
-   ENDIF ("${CONFIG_TS}" MATCHES ".*usage.*")
-   IF ("${CONFIG_TS}" MATCHES ".*usage.*")
-      EXEC_PROGRAM(date ARGS OUTPUT_VARIABLE CONFIG_TS)
-   ENDIF ("${CONFIG_TS}" MATCHES ".*usage.*")
-ENDIF(WIN32)
-
-
-# print out the title with a pretty box computed to wrap around
-SET(CONFIG_TITLE "*** Configuring STEP Class Libraries Release ${SCL_VERSION}, 
Build ${CONFIG_DATE} ***")
-STRING(LENGTH ${CONFIG_TITLE} CONFIG_TITLE_LENGTH)
-SET(SEPARATOR_STRING "*")
-STRING(LENGTH ${SEPARATOR_STRING} SEPARATOR_STRING_LENGTH)
-WHILE(${CONFIG_TITLE_LENGTH} GREATER ${SEPARATOR_STRING_LENGTH})
-   SET(SEPARATOR_STRING "${SEPARATOR_STRING}*")
-   STRING(LENGTH ${SEPARATOR_STRING} SEPARATOR_STRING_LENGTH)
-ENDWHILE(${CONFIG_TITLE_LENGTH} GREATER ${SEPARATOR_STRING_LENGTH})
-MESSAGE(STATUS "${SEPARATOR_STRING}")
-MESSAGE(STATUS "${CONFIG_TITLE}")
-MESSAGE(STATUS "${SEPARATOR_STRING}")
-
 # For NFS volumes, to ensure proper file creation.
 IF(NOT WIN32)
   EXEC_PROGRAM(umask ARGS 022 OUTPUT_VARIABLE exec_out)
@@ -164,16 +131,11 @@
 
 INCLUDE(${SCL_CMAKE_DIR}/SCL_ConfigFile.cmake)
 
-
 OPTION(SCL-BUILD_EXPRESS_ONLY "Only build express parser." OFF)
 MARK_AS_ADVANCED(SCL-BUILD_EXPRESS_ONLY)
 
 INCLUDE (CheckLibraryExists)
 
-# Need to work on this - CMake can detect flex and bison, but apparently not
-# generic lex/yacc - need to update the Wireshark files to be a a graceful
-# fallback to the FLEX/BISON logic, and (perhaps) wrap both in some way to
-# hide any differences from the build code?
 INCLUDE(${SCL_CMAKE_DIR}/FindLEX.cmake)
 INCLUDE(${SCL_CMAKE_DIR}/FindYACC.cmake)
 
@@ -191,13 +153,48 @@
 
 SCL_TYPE_SIZE("ssize_t" SSIZE_T)
 
-FILE(WRITE ${SCL_SOURCE_DIR}/include/conf/COUNT "1")
-FILE(WRITE ${SCL_SOURCE_DIR}/include/conf/DATE "1")
-FILE(WRITE ${SCL_SOURCE_DIR}/include/conf/HOST "1")
-FILE(WRITE ${SCL_SOURCE_DIR}/include/conf/PATH "1")
-FILE(WRITE ${SCL_SOURCE_DIR}/include/conf/USER "1")
 
+# Generate the include/conf files
 
+# HOST 
+configure_file(${SCL_CMAKE_DIR}/test_srcs/report_hostname.c.in
+  ${CMAKE_BINARY_DIR}/CMakeTmp/report_hostname.c)
+TRY_RUN(TIME_RESULT TIME_COMPILED 
+  ${CMAKE_BINARY_DIR}/CMakeTmp
+  ${CMAKE_BINARY_DIR}/CMakeTmp/report_hostname.c
+  OUTPUT_VARIABLE COMPILEMESSAGES)
+
+# USER
+configure_file(${SCL_CMAKE_DIR}/test_srcs/report_username.c.in
+  ${CMAKE_BINARY_DIR}/CMakeTmp/report_username.c)
+TRY_RUN(TIME_RESULT TIME_COMPILED 
+  ${CMAKE_BINARY_DIR}/CMakeTmp
+  ${CMAKE_BINARY_DIR}/CMakeTmp/report_username.c
+  OUTPUT_VARIABLE
+  COMPILEMESSAGES)
+
+# PATH
+FILE(WRITE ${SCL_BINARY_DIR}/include/conf/PATH "\"${CMAKE_INSTALL_PREFIX}\"") 
+
+# COUNT - force CMake to look
+# every time in case of manual
+# removal of COUNT file
+set(countFile "countFile-NOTFOUND" CACHE  STRING "Is there a count file?" 
FORCE)
+find_file(countFile COUNT PATHS ${SCL_BINARY_DIR}/include/conf)
+if(countFile MATCHES "^countFile-NOTFOUND$")
+  set(buildCounter 0)
+else()
+  file(READ ${countFile} buildCounter)
+  math(EXPR buildCounter "${buildCounter} + 1")
+endif()
+file(WRITE ${SCL_BINARY_DIR}/include/conf/COUNT "${buildCounter}")
+
+# DATE
+file(READ ${CONFIG_TIMESTAMP_FILE} DATESTAMP)
+STRING(STRIP ${DATESTAMP} DATESTAMP)
+file(WRITE ${SCL_BINARY_DIR}/include/conf/DATE "\"${DATESTAMP}\"")
+
+
 # Now that all the tests are done, configure the scl_config.h file:
 configure_file(${CONFIG_H_FILE} ${SCL_BINARY_DIR}/include/scl_config.h)
 
@@ -212,3 +209,4 @@
 ADD_SUBDIRECTORY(src/cleditor)
 ADD_SUBDIRECTORY(src/cldai)
 ADD_SUBDIRECTORY(src/clutils)
+ADD_SUBDIRECTORY(include)

Added: brlcad/branches/cmake/src/other/step/FindLEX.cmake
===================================================================
--- brlcad/branches/cmake/src/other/step/FindLEX.cmake                          
(rev 0)
+++ brlcad/branches/cmake/src/other/step/FindLEX.cmake  2010-09-09 14:14:10 UTC 
(rev 40511)
@@ -0,0 +1,152 @@
+# - Find lex executable and provides a macro to generate custom build rules
+#
+# The module defines the following variables:
+#  LEX_FOUND - true is lex executable is found
+#  LEX_EXECUTABLE - the path to the lex executable
+#  LEX_LIBRARIES - The lex libraries
+#
+# If lex is found on the system, the module provides the macro:
+#  LEX_TARGET(Name FlexInput FlexOutput [COMPILE_FLAGS <string>])
+# which creates a custom command  to generate the <FlexOutput> file from
+# the <FlexInput> file.  If  COMPILE_FLAGS option is specified, the next
+# parameter is added to the lex  command line. Name is an alias used to
+# get  details of  this custom  command.  Indeed the  macro defines  the
+# following variables:
+#  LEX_${Name}_DEFINED - true is the macro ran successfully
+#  LEX_${Name}_OUTPUTS - the source file generated by the custom rule, an
+#  alias for FlexOutput
+#  LEX_${Name}_INPUT - the lex source file, an alias for ${FlexInput}
+#
+# Flex scanners oftenly use tokens  defined by Yacc: the code generated
+# by Flex  depends of the header  generated by Yacc.   This module also
+# defines a macro:
+#  ADD_LEX_YACC_DEPENDENCY(FlexTarget YaccTarget)
+# which  adds the  required dependency  between a  scanner and  a parser
+# where  <FlexTarget>  and <YaccTarget>  are  the  first parameters  of
+# respectively LEX_TARGET and YACC_TARGET macros.
+#
+#  ====================================================================
+#  Example:
+#
+#   find_package(YACC)
+#   find_package(LEX)
+#
+#   YACC_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp
+#   LEX_TARGET(MyScanner lexer.l  ${CMAKE_CURRENT_BIANRY_DIR}/lexer.cpp)
+#   ADD_LEX_YACC_DEPENDENCY(MyScanner MyParser)
+#
+#   include_directories(${CMAKE_CURRENT_BINARY_DIR})
+#   add_executable(Foo
+#      Foo.cc
+#      ${YACC_MyParser_OUTPUTS}
+#      ${LEX_MyScanner_OUTPUTS}
+#   )
+#  ====================================================================
+#
+#=============================================================================
+# Copyright 2010 United States Government as represented by
+#                the U.S. Army Research Laboratory.
+# Copyright 2009 Kitware, Inc.
+# Copyright 2006 Tristan Carel
+# All rights reserved.
+# 
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#  
+# * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# 
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# 
+# * The names of the authors may not be used to endorse or promote
+#   products derived from this software without specific prior written
+#   permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+FIND_PROGRAM(LEX_EXECUTABLE flex DOC "path to the lex executable")
+IF(NOT LEX_EXECUTABLE)
+   FIND_PROGRAM(LEX_EXECUTABLE lex DOC "path to the lex executable")
+ENDIF(NOT LEX_EXECUTABLE)
+MARK_AS_ADVANCED(LEX_EXECUTABLE)
+
+FIND_LIBRARY(FL_LIBRARY NAMES fl
+  DOC "path to the fl library")
+MARK_AS_ADVANCED(FL_LIBRARY)
+SET(LEX_LIBRARIES ${FL_LIBRARY})
+
+IF(LEX_EXECUTABLE)
+
+  #============================================================
+  # LEX_TARGET (public macro)
+  #============================================================
+  #
+  MACRO(LEX_TARGET Name Input Output)
+    SET(LEX_TARGET_usage "LEX_TARGET(<Name> <Input> <Output> [COMPILE_FLAGS 
<string>]")
+    IF(${ARGC} GREATER 3)
+      IF(${ARGC} EQUAL 5)
+        IF("${ARGV3}" STREQUAL "COMPILE_FLAGS")
+          SET(LEX_EXECUTABLE_opts  "${ARGV4}")
+          SEPARATE_ARGUMENTS(LEX_EXECUTABLE_opts)
+        ELSE()
+          MESSAGE(SEND_ERROR ${LEX_TARGET_usage})
+        ENDIF()
+      ELSE()
+        MESSAGE(SEND_ERROR ${LEX_TARGET_usage})
+      ENDIF()
+    ENDIF()
+
+    ADD_CUSTOM_COMMAND(OUTPUT ${Output}
+      COMMAND ${LEX_EXECUTABLE}
+      ARGS ${LEX_EXECUTABLE_opts} -o${Output} ${Input}
+      DEPENDS ${Input}
+      COMMENT "[LEX][${Name}] Building scanner with ${LEX_EXECUTABLE}"
+      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+
+    SET(LEX_${Name}_DEFINED TRUE)
+    SET(LEX_${Name}_OUTPUTS ${Output})
+    SET(LEX_${Name}_INPUT ${Input})
+    SET(LEX_${Name}_COMPILE_FLAGS ${LEX_EXECUTABLE_opts})
+  ENDMACRO(LEX_TARGET)
+  #============================================================
+
+
+  #============================================================
+  # ADD_LEX_YACC_DEPENDENCY (public macro)
+  #============================================================
+  #
+  MACRO(ADD_LEX_YACC_DEPENDENCY FlexTarget YaccTarget)
+
+    IF(NOT LEX_${FlexTarget}_OUTPUTS)
+      MESSAGE(SEND_ERROR "Flex target `${FlexTarget}' does not exists.")
+    ENDIF()
+
+    IF(NOT YACC_${YaccTarget}_OUTPUT_HEADER)
+      MESSAGE(SEND_ERROR "Yacc target `${YaccTarget}' does not exists.")
+    ENDIF()
+
+    SET_SOURCE_FILES_PROPERTIES(${LEX_${FlexTarget}_OUTPUTS}
+      PROPERTIES OBJECT_DEPENDS ${YACC_${YaccTarget}_OUTPUT_HEADER})
+  ENDMACRO(ADD_LEX_YACC_DEPENDENCY)
+  #============================================================
+
+ENDIF(LEX_EXECUTABLE)
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(LEX DEFAULT_MSG LEX_EXECUTABLE)
+
+# FindLEX.cmake ends here


Property changes on: brlcad/branches/cmake/src/other/step/FindLEX.cmake
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native

Added: brlcad/branches/cmake/src/other/step/FindYACC.cmake
===================================================================
--- brlcad/branches/cmake/src/other/step/FindYACC.cmake                         
(rev 0)
+++ brlcad/branches/cmake/src/other/step/FindYACC.cmake 2010-09-09 14:14:10 UTC 
(rev 40511)
@@ -0,0 +1,165 @@
+# - Find yacc executable and provides macros to generate custom build rules
+# The module defines the following variables
+#
+#  YACC_EXECUTABLE - path to the yacc program
+#  YACC_FOUND - true if the program was found
+#
+# If yacc is found, the module defines the macros:
+#  YACC_TARGET(<Name> <YaccInput> <CodeOutput> [VERBOSE <file>]
+#              [COMPILE_FLAGS <string>])
+# which will create  a custom rule to generate  a parser. <YaccInput> is
+# the path to  a yacc file. <CodeOutput> is the name  of the source file
+# generated by yacc.  A header file is also  be generated, and contains
+# the  token  list.  If  COMPILE_FLAGS  option is  specified,  the  next
+# parameter is  added in the yacc command line.  if  VERBOSE option is
+# specified, <file> is created  and contains verbose descriptions of the
+# grammar and parser. The macro defines a set of variables:
+#  YACC_${Name}_DEFINED - true is the macro ran successfully
+#  YACC_${Name}_INPUT - The input source file, an alias for <YaccInput>
+#  YACC_${Name}_OUTPUT_SOURCE - The source file generated by yacc 
+#  YACC_${Name}_OUTPUT_HEADER - The header file generated by yacc
+#  YACC_${Name}_OUTPUTS - The sources files generated by yacc
+#  YACC_${Name}_COMPILE_FLAGS - Options used in the yacc command line
+#
+#  ====================================================================
+#  Example:
+#
+#   find_package(YACC)
+#   YACC_TARGET(MyParser parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cpp)
+#   add_executable(Foo main.cpp ${YACC_MyParser_OUTPUTS})
+#  ====================================================================
+#
+#=============================================================================
+# Copyright 2010 United States Government as represented by
+#                the U.S. Army Research Laboratory.
+# Copyright 2009 Kitware, Inc.
+# Copyright 2006 Tristan Carel
+# All rights reserved.
+# 
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#  
+# * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# 
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# 
+# * The names of the authors may not be used to endorse or promote
+#   products derived from this software without specific prior written
+#   permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+
+FIND_PROGRAM(YACC_EXECUTABLE bison DOC "path to the yacc executable")
+IF(NOT YACC_EXECUTABLE)
+   FIND_PROGRAM(YACC_EXECUTABLE yacc DOC "path to the yacc executable")
+ENDIF(NOT YACC_EXECUTABLE)
+MARK_AS_ADVANCED(YACC_EXECUTABLE)
+
+IF(YACC_EXECUTABLE)
+  # internal macro
+  MACRO(YACC_TARGET_option_verbose Name YaccOutput filename)
+    LIST(APPEND YACC_TARGET_cmdopt "--verbose")
+    GET_FILENAME_COMPONENT(YACC_TARGET_output_path "${YaccOutput}" PATH)
+    GET_FILENAME_COMPONENT(YACC_TARGET_output_name "${YaccOutput}" NAME_WE)
+    ADD_CUSTOM_COMMAND(OUTPUT ${filename}
+      COMMAND ${CMAKE_COMMAND}
+      ARGS -E copy
+      "${YACC_TARGET_output_path}/${YACC_TARGET_output_name}.output"
+      "${filename}"
+      DEPENDS
+      "${YACC_TARGET_output_path}/${YACC_TARGET_output_name}.output"
+      COMMENT "[YACC][${Name}] Copying yacc verbose table to ${filename}"
+      WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
+    SET(YACC_${Name}_VERBOSE_FILE ${filename})
+    LIST(APPEND YACC_TARGET_extraoutputs
+      "${YACC_TARGET_output_path}/${YACC_TARGET_output_name}.output")
+  ENDMACRO(YACC_TARGET_option_verbose)
+
+  # internal macro
+  MACRO(YACC_TARGET_option_extraopts Options)
+    SET(YACC_TARGET_extraopts "${Options}")
+    SEPARATE_ARGUMENTS(YACC_TARGET_extraopts)
+    LIST(APPEND YACC_TARGET_cmdopt ${YACC_TARGET_extraopts})
+  ENDMACRO(YACC_TARGET_option_extraopts)
+
+  #============================================================
+  # YACC_TARGET (public macro)
+  #============================================================
+  #
+  MACRO(YACC_TARGET Name YaccInput YaccOutput)
+    SET(YACC_TARGET_output_header "")
+    SET(YACC_TARGET_command_opt "")
+    SET(YACC_TARGET_outputs "${YaccOutput}")
+    IF(NOT ${ARGC} EQUAL 3 AND NOT ${ARGC} EQUAL 5 AND NOT ${ARGC} EQUAL 7)
+      MESSAGE(SEND_ERROR "Usage")
+    ELSE()
+      # Parsing parameters
+      IF(${ARGC} GREATER 5 OR ${ARGC} EQUAL 5)
+        IF("${ARGV3}" STREQUAL "VERBOSE")
+          YACC_TARGET_option_verbose(${Name} ${YaccOutput} "${ARGV4}")
+        ENDIF()
+        IF("${ARGV3}" STREQUAL "COMPILE_FLAGS")
+          YACC_TARGET_option_extraopts("${ARGV4}")
+        ENDIF()
+      ENDIF()
+
+      IF(${ARGC} EQUAL 7)
+        IF("${ARGV5}" STREQUAL "VERBOSE")
+          YACC_TARGET_option_verbose(${Name} ${YaccOutput} "${ARGV6}")
+        ENDIF()
+      
+        IF("${ARGV5}" STREQUAL "COMPILE_FLAGS")
+          YACC_TARGET_option_extraopts("${ARGV6}")
+        ENDIF()
+      ENDIF()
+
+      # Header's name generated by yacc (see option -d)
+      LIST(APPEND YACC_TARGET_cmdopt "-d")
+      STRING(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\2" _fileext "${ARGV2}")
+      STRING(REPLACE "c" "h" _fileext ${_fileext})
+      STRING(REGEX REPLACE "^(.*)(\\.[^.]*)$" "\\1${_fileext}" 
+          YACC_${Name}_OUTPUT_HEADER "${ARGV2}")
+      LIST(APPEND YACC_TARGET_outputs "${YACC_${Name}_OUTPUT_HEADER}")
+        
+      ADD_CUSTOM_COMMAND(OUTPUT ${YACC_TARGET_outputs}
+        ${YACC_TARGET_extraoutputs}
+        COMMAND ${YACC_EXECUTABLE}
+        ARGS ${YACC_TARGET_cmdopt} -o ${ARGV2} ${ARGV1}
+        DEPENDS ${ARGV1}
+       COMMENT "[YACC][${Name}] Building parser with ${YACC_EXECUTABLE}"
+        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+    
+      # define target variables
+      SET(YACC_${Name}_DEFINED TRUE)
+      SET(YACC_${Name}_INPUT ${ARGV1})
+      SET(YACC_${Name}_OUTPUTS ${YACC_TARGET_outputs})
+      SET(YACC_${Name}_COMPILE_FLAGS ${YACC_TARGET_cmdopt})
+      SET(YACC_${Name}_OUTPUT_SOURCE "${YaccOutput}")
+
+    ENDIF(NOT ${ARGC} EQUAL 3 AND NOT ${ARGC} EQUAL 5 AND NOT ${ARGC} EQUAL 7)
+  ENDMACRO(YACC_TARGET)
+  #
+  #============================================================
+
+ENDIF(YACC_EXECUTABLE)
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(YACC DEFAULT_MSG YACC_EXECUTABLE)
+
+# FindYACC.cmake ends here


Property changes on: brlcad/branches/cmake/src/other/step/FindYACC.cmake
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native

Added: brlcad/branches/cmake/src/other/step/misc/CMake/SCL_Utils.cmake
===================================================================
--- brlcad/branches/cmake/src/other/step/misc/CMake/SCL_Utils.cmake             
                (rev 0)
+++ brlcad/branches/cmake/src/other/step/misc/CMake/SCL_Utils.cmake     
2010-09-09 14:14:10 UTC (rev 40511)
@@ -0,0 +1,33 @@
+MACRO(SCL_ADDEXEC execname srcs libs)
+  STRING(REGEX REPLACE " " ";" srcslist "${srcs}")
+  STRING(REGEX REPLACE " " ";" libslist "${libs}")
+  add_executable(${execname} ${srcslist})
+  target_link_libraries(${execname} ${libslist})
+  INSTALL(TARGETS ${execname} RUNTIME DESTINATION ${EXECUTABLE_OUTPUT_PATH})
+ENDMACRO(SCL_ADDEXEC execname srcs libs)
+
+MACRO(SCL_ADDLIB libname srcs libs)
+  STRING(REGEX REPLACE " " ";" srcslist "${srcs}")
+  STRING(REGEX REPLACE " " ";" libslist "${libs}")
+  IF(BUILD_SHARED_LIBS)
+         add_library(${libname} SHARED ${srcslist})
+         if(NOT ${libs} MATCHES "NONE")
+                 target_link_libraries(${libname} ${libslist})
+         endif(NOT ${libs} MATCHES "NONE")
+         INSTALL(TARGETS ${libname} LIBRARY DESTINATION ${LIBRARY_OUTPUT_PATH})
+  ENDIF(BUILD_SHARED_LIBS)
+  IF(BUILD_STATIC_LIBS)
+         add_library(${libname}-static STATIC ${srcslist})
+         if(NOT ${libs} MATCHES "NONE")
+                 target_link_libraries(${libname}-static ${libslist})
+         endif(NOT ${libs} MATCHES "NONE")
+         SET_TARGET_PROPERTIES(${libname}-static PROPERTIES OUTPUT_NAME 
"${libname}")
+         IF(WIN32)
+                 # We need the lib prefix on win32, so add it even if our 
add_library
+                 # wrapper function has removed it due to the target name - see
+                 # 
http://www.cmake.org/Wiki/CMake_FAQ#How_do_I_make_my_shared_and_static_libraries_have_the_same_root_name.2C_but_different_suffixes.3F
+                 SET_TARGET_PROPERTIES(${libname}-static PROPERTIES PREFIX 
"lib")
+         ENDIF(WIN32)
+         INSTALL(TARGETS ${libname}-static ARCHIVE DESTINATION 
${LIBRARY_OUTPUT_PATH})
+  ENDIF(BUILD_STATIC_LIBS)
+ENDMACRO(SCL_ADDLIB libname srcs libs)


Property changes on: 
brlcad/branches/cmake/src/other/step/misc/CMake/SCL_Utils.cmake
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native

Added: 
brlcad/branches/cmake/src/other/step/misc/CMake/test_srcs/report_hostname.c.in
===================================================================
--- 
brlcad/branches/cmake/src/other/step/misc/CMake/test_srcs/report_hostname.c.in  
                            (rev 0)
+++ 
brlcad/branches/cmake/src/other/step/misc/CMake/test_srcs/report_hostname.c.in  
    2010-09-09 14:14:10 UTC (rev 40511)
@@ -0,0 +1,16 @@
+#include <stdio.h>
+#include <unistd.h>
+#define chararraysize 2048
+int main(void) {
+  int i;
+  char hostname[chararraysize];
+  char username[chararraysize];
+  FILE *outfp = NULL;
+
+  hostname[chararraysize - 1] = "\0";
+  gethostname(hostname, chararraysize - 1);
+  outfp = fopen("${BRLCAD_BINARY_DIR}/include/conf/HOST", "w");
+  fprintf(outfp, "\"%s\"", hostname);
+  fclose(outfp);
+  return 0;
+}


Property changes on: 
brlcad/branches/cmake/src/other/step/misc/CMake/test_srcs/report_hostname.c.in
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native

Added: 
brlcad/branches/cmake/src/other/step/misc/CMake/test_srcs/report_username.c.in
===================================================================
--- 
brlcad/branches/cmake/src/other/step/misc/CMake/test_srcs/report_username.c.in  
                            (rev 0)
+++ 
brlcad/branches/cmake/src/other/step/misc/CMake/test_srcs/report_username.c.in  
    2010-09-09 14:14:10 UTC (rev 40511)
@@ -0,0 +1,16 @@
+#include <stdio.h>
+#include <unistd.h>
+#ifdef WIN32
+   #define USERVAR "USERNAME"
+#else
+   #define USERVAR "USER"
+#endif
+#define chararraysize 2048
+int main(void) {
+  int i;
+  FILE *outfp = NULL;
+  outfp = fopen("${BRLCAD_BINARY_DIR}/include/conf/USER", "w");
+  fprintf(outfp, "\"%s\"", getenv(USERVAR));
+  fclose(outfp);
+  return 0;
+}


Property changes on: 
brlcad/branches/cmake/src/other/step/misc/CMake/test_srcs/report_username.c.in
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native

Modified: brlcad/branches/cmake/src/other/step/src/cldai/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/other/step/src/cldai/CMakeLists.txt       
2010-09-09 04:42:47 UTC (rev 40510)
+++ brlcad/branches/cmake/src/other/step/src/cldai/CMakeLists.txt       
2010-09-09 14:14:10 UTC (rev 40511)
@@ -36,5 +36,4 @@
     -DHAVE_CONFIG_H
 )
 
-add_library(stepdai ${LIBSTEPDAI_SRCS})
-target_link_libraries(stepdai steputils stepcore)
+SCL_ADDLIB(stepdai "${LIBSTEPDAI_SRCS}" "steputils stepcore")

Modified: brlcad/branches/cmake/src/other/step/src/cleditor/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/other/step/src/cleditor/CMakeLists.txt    
2010-09-09 04:42:47 UTC (rev 40510)
+++ brlcad/branches/cmake/src/other/step/src/cleditor/CMakeLists.txt    
2010-09-09 14:14:10 UTC (rev 40511)
@@ -40,5 +40,4 @@
     -DHAVE_CONFIG_H
 )
 
-add_library(stepeditor ${LIBSTEPEDITOR_SRCS})
-target_link_libraries(stepeditor stepcore)
+SCL_ADDLIB(stepeditor "${LIBSTEPEDITOR_SRCS}" stepcore)

Modified: brlcad/branches/cmake/src/other/step/src/clstepcore/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/other/step/src/clstepcore/CMakeLists.txt  
2010-09-09 04:42:47 UTC (rev 40510)
+++ brlcad/branches/cmake/src/other/step/src/clstepcore/CMakeLists.txt  
2010-09-09 14:14:10 UTC (rev 40511)
@@ -64,8 +64,7 @@
     -DHAVE_CONFIG_H
 )
 
-add_library(stepcore ${LIBSTEPCORE_SRCS})
+SCL_ADDLIB(stepcore "${LIBSTEPCORE_SRCS}" "express steputils")
 if(APPLE)
    set_target_properties(stepcore PROPERTIES LINK_FLAGS "-flat_namespace 
-undefined suppress")
 endif(APPLE)
-target_link_libraries(stepcore express steputils)

Modified: brlcad/branches/cmake/src/other/step/src/clutils/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/other/step/src/clutils/CMakeLists.txt     
2010-09-09 04:42:47 UTC (rev 40510)
+++ brlcad/branches/cmake/src/other/step/src/clutils/CMakeLists.txt     
2010-09-09 14:14:10 UTC (rev 40511)
@@ -35,4 +35,4 @@
     -DHAVE_CONFIG_H
 )
 
-add_library(steputils ${LIBSTEPUTILS_SRCS})
+SCL_ADDLIB(steputils "${LIBSTEPUTILS_SRCS}" "")

Modified: brlcad/branches/cmake/src/other/step/src/exppp/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/other/step/src/exppp/CMakeLists.txt       
2010-09-09 04:42:47 UTC (rev 40510)
+++ brlcad/branches/cmake/src/other/step/src/exppp/CMakeLists.txt       
2010-09-09 14:14:10 UTC (rev 40511)
@@ -16,9 +16,7 @@
     -DHAVE_CONFIG_H
 )
 
-add_library(exppplib ${LIBEXPPP_SOURCES})
-target_link_libraries(exppplib express)
+SCL_ADDLIB(exppplib "${LIBEXPPP_SOURCES}" express)
 
-add_executable(exppp ${EXPPP_SOURCES})
-target_link_libraries(exppp exppplib express)
+SCL_ADDEXEC(exppp "${EXPPP_SOURCES}" "exppplib express")
 

Modified: brlcad/branches/cmake/src/other/step/src/express/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/other/step/src/express/CMakeLists.txt     
2010-09-09 04:42:47 UTC (rev 40510)
+++ brlcad/branches/cmake/src/other/step/src/express/CMakeLists.txt     
2010-09-09 14:14:10 UTC (rev 40511)
@@ -52,10 +52,8 @@
     -DHAVE_CONFIG_H
 )
 
-add_library(express ${EXPRESS_SOURCES})
+SCL_ADDLIB(express "${EXPRESS_SOURCES}" "")
 
-add_executable(fedex ${FEDEX_SOURCES})
-target_link_libraries(fedex express)
+SCL_ADDEXEC(fedex "${FEDEX_SOURCES}" express)
 
-add_executable(symlink ${SYMLINK_SOURCES})
-target_link_libraries(symlink express)
+SCL_ADDEXEC(symlink "${SYMLINK_SOURCES}" express)

Modified: brlcad/branches/cmake/src/other/step/src/fedex_plus/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/other/step/src/fedex_plus/CMakeLists.txt  
2010-09-09 04:42:47 UTC (rev 40510)
+++ brlcad/branches/cmake/src/other/step/src/fedex_plus/CMakeLists.txt  
2010-09-09 14:14:10 UTC (rev 40511)
@@ -44,12 +44,9 @@
     -DHAVE_CONFIG_H
 )
 
-add_executable(fedex_os ${fedex_os_SOURCES})
-target_link_libraries(fedex_os exppplib express)
+SCL_ADDEXEC(fedex_os "${fedex_os_SOURCES}" "exppplib express")
 
-add_executable(fedex_idl ${fedex_idl_SOURCES})
-target_link_libraries(fedex_idl exppplib express)
+SCL_ADDEXEC(fedex_idl "${fedex_idl_SOURCES}" "exppplib express")
 
-add_executable(fedex_plus ${fedex_plus_SOURCES})
-target_link_libraries(fedex_plus exppplib express)
+SCL_ADDEXEC(fedex_plus "${fedex_plus_SOURCES}" "exppplib express")
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to