Skip to content

Commit a4e96f6

Browse files
committed
put path macros in a separate file, and include it
1 parent 993c40f commit a4e96f6

3 files changed

Lines changed: 37 additions & 32 deletions

File tree

CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ else(NOT IS_SUBBUILD)
116116
SET(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${SC_CMAKE_DIR}")
117117
endif(NOT IS_SUBBUILD)
118118

119-
INCLUDE(${SC_CMAKE_DIR}/SC_Utils.cmake)
119+
include( ${SC_CMAKE_DIR}/SC_Utils.cmake )
120+
include( ${SC_CMAKE_DIR}/SC_Paths.cmake )
120121

121122
# Save the current LC_ALL, LC_MESSAGES, and LANG environment variables and set them
122123
# to "C" so things like date output are as expected

cmake/SC_Paths.cmake

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
MACRO(RELATIVE_PATH_TO_TOPLEVEL current_dir rel_path)
2+
string(REPLACE "${SC_SOURCE_DIR}" "" subpath "${current_dir}")
3+
string(REGEX REPLACE "^/" "" subpath "${subpath}")
4+
string(LENGTH "${subpath}" PATH_LENGTH)
5+
if(PATH_LENGTH GREATER 0)
6+
set(${rel_path} "..")
7+
get_filename_component(subpath "${subpath}" PATH)
8+
string(LENGTH "${subpath}" PATH_LENGTH)
9+
while(PATH_LENGTH GREATER 0)
10+
set(${rel_path} "${${rel_path}}/..")
11+
get_filename_component(subpath "${subpath}" PATH)
12+
string(LENGTH "${subpath}" PATH_LENGTH)
13+
endwhile(PATH_LENGTH GREATER 0)
14+
endif(PATH_LENGTH GREATER 0)
15+
ENDMACRO(RELATIVE_PATH_TO_TOPLEVEL current_dir rel_path)
16+
17+
MACRO( LOCATE_SCHEMA SCHEMA_FILE )
18+
if( EXISTS "${CMAKE_BINARY_DIR}/${SCHEMA_FILE}" ) #is it a path relative to build dir?
19+
set( SCHEMA_FILE "${CMAKE_BINARY_DIR}/${SCHEMA_FILE}" )
20+
elseif( EXISTS "${SC_SOURCE_DIR}/data/${SCHEMA_FILE}" ) # path relative to STEPcode/data?
21+
set( SCHEMA_FILE "${SC_SOURCE_DIR}/data/${SCHEMA_FILE}" )
22+
elseif( NOT EXISTS ${SCHEMA_FILE} ) # absolute path?
23+
message( FATAL_ERROR "Cannot find ${CMAKE_BINARY_DIR}/${SCHEMA_FILE} or ${SC_SOURCE_DIR}/data/${SCHEMA_FILE}/*.exp or ${SCHEMA_FILE}" )
24+
endif()
25+
26+
if( IS_DIRECTORY ${SCHEMA_FILE} ) #if it is a dir, look for one .exp file inside
27+
file(GLOB SCHEMA_FILE ${SCHEMA_FILE}/*.exp )
28+
endif()
29+
30+
if( NOT EXISTS ${SCHEMA_FILE} )
31+
message(FATAL_ERROR "Expected one express file. Found '${SCHEMA_FILE}' instead.")
32+
endif()
33+
ENDMACRO( LOCATE_SCHEMA SCHEMA_FILE )

data/CMakeLists.txt

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,42 +3,13 @@
33

44
include( ${SC_CMAKE_DIR}/schema_scanner/schemaScanner.cmake )
55

6-
MACRO(RELATIVE_PATH_TO_TOPLEVEL current_dir rel_path)
7-
string(REPLACE "${SC_SOURCE_DIR}" "" subpath "${current_dir}")
8-
string(REGEX REPLACE "^/" "" subpath "${subpath}")
9-
string(LENGTH "${subpath}" PATH_LENGTH)
10-
if(PATH_LENGTH GREATER 0)
11-
set(${rel_path} "..")
12-
get_filename_component(subpath "${subpath}" PATH)
13-
string(LENGTH "${subpath}" PATH_LENGTH)
14-
while(PATH_LENGTH GREATER 0)
15-
set(${rel_path} "${${rel_path}}/..")
16-
get_filename_component(subpath "${subpath}" PATH)
17-
string(LENGTH "${subpath}" PATH_LENGTH)
18-
endwhile(PATH_LENGTH GREATER 0)
19-
endif(PATH_LENGTH GREATER 0)
20-
ENDMACRO(RELATIVE_PATH_TO_TOPLEVEL current_dir rel_path)
21-
226
# This function runs fedex on one express file. The generated source goes in a dir
237
# in the build dir, and it is compiled into a library. A p21read executable is
248
# compiled and linked to the lib. p21read is used to test the lib.
259
FUNCTION(BUILD_A_SCHEMA SCHEMA_FILE)
26-
if( EXISTS "${CMAKE_BINARY_DIR}/${SCHEMA_FILE}" ) #is it a path relative to build dir?
27-
set( SCHEMA_FILE "${CMAKE_BINARY_DIR}/${SCHEMA_FILE}" )
28-
elseif( EXISTS "${SC_SOURCE_DIR}/data/${SCHEMA_FILE}" ) # path relative to STEPcode/data?
29-
set( SCHEMA_FILE "${SC_SOURCE_DIR}/data/${SCHEMA_FILE}" )
30-
elseif( NOT EXISTS ${SCHEMA_FILE} ) # absolute path
31-
message( FATAL_ERROR "Cannot find ${CMAKE_BINARY_DIR}/${SCHEMA_FILE} or ${SC_SOURCE_DIR}/data/${SCHEMA_FILE} or ${SCHEMA_FILE}" )
32-
endif()
3310

34-
if( IS_DIRECTORY ${SCHEMA_FILE} ) #if it is a dir, look for one .exp file inside
35-
file(GLOB SCHEMA_FILE ${SCHEMA_FILE}/*.exp )
36-
endif()
37-
38-
if( NOT EXISTS ${SCHEMA_FILE} )
39-
message(FATAL_ERROR "Expected one express file. Found '${SCHEMA_FILE}' instead.")
40-
endif()
41-
# file is now located
11+
# figure out an absolute path to the file
12+
LOCATE_SCHEMA( SCHEMA_FILE )
4213

4314
# subproject name, output code location
4415
get_filename_component( SCHEMA_SN ${SCHEMA_FILE} NAME )

0 commit comments

Comments
 (0)