@@ -46,9 +46,16 @@ option(PPC_EXTERNAL_PROJECTS_VERBOSE
4646 "Show full configure/build/install logs for ExternalProject dependencies"
4747 OFF )
4848
49+ set (PPC_EXTERNAL_PROJECT_CMAKE_ARGS
50+ -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER }
51+ -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER }
52+ -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}
53+ -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}
54+ -DCMAKE_CXX_STANDARD_REQUIRED=${CMAKE_CXX_STANDARD_REQUIRED }
55+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE } )
56+
4957if (PPC_EXTERNAL_PROJECTS_VERBOSE)
5058 set (PPC_EXTERNAL_PROJECT_LOG_ARGS "" )
51- set (PPC_EXTERNAL_PROJECT_CMAKE_ARGS "" )
5259else ()
5360 set (PPC_EXTERNAL_PROJECT_LOG_ARGS
5461 LOG_CONFIGURE
@@ -59,9 +66,64 @@ else()
5966 ON
6067 LOG_OUTPUT_ON_FAILURE
6168 ON )
62- set ( PPC_EXTERNAL_PROJECT_CMAKE_ARGS -DCMAKE_INSTALL_MESSAGE=NEVER)
69+ list ( APPEND PPC_EXTERNAL_PROJECT_CMAKE_ARGS -DCMAKE_INSTALL_MESSAGE=NEVER)
6370endif ()
6471
72+ include (ExternalProject )
73+
74+ function (ppc_external_project_add target_name )
75+ cmake_parse_arguments (PARSE_ARGV 1 arg "USE_PROJECT_CXX_STANDARD"
76+ "EXCLUDE_FROM_ALL;SOURCE_DIR" "CMAKE_ARGS;TEST_COMMAND" )
77+
78+ if (NOT arg_SOURCE_DIR )
79+ message (FATAL_ERROR "ppc_external_project_add requires SOURCE_DIR" )
80+ endif ()
81+
82+ set (project_dir "${CMAKE_CURRENT_BINARY_DIR } /${target_name} " )
83+ set (build_dir "${project_dir} /build" )
84+ set (install_dir "${project_dir} /install" )
85+
86+ if (DEFINED arg_EXCLUDE_FROM_ALL)
87+ set (exclude_from_all_args EXCLUDE_FROM_ALL "${arg_EXCLUDE_FROM_ALL} " )
88+ else ()
89+ set (exclude_from_all_args "" )
90+ endif ()
91+
92+ if (arg_TEST_COMMAND)
93+ set (test_command_args TEST_COMMAND ${arg_TEST_COMMAND} )
94+ else ()
95+ set (test_command_args "" )
96+ endif ()
97+
98+ if (arg_USE_PROJECT_CXX_STANDARD)
99+ set (cxx_standard_args -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD } )
100+ else ()
101+ set (cxx_standard_args "" )
102+ endif ()
103+
104+ set (build_command_args BUILD_COMMAND "${CMAKE_COMMAND } " --build
105+ "${build_dir} " --config $<CONFIG > --parallel)
106+ set (install_command_args
107+ INSTALL_COMMAND "${CMAKE_COMMAND } " --install "${build_dir} " --config
108+ $<CONFIG > --prefix "${install_dir} " )
109+
110+ ExternalProject_Add (
111+ ${target_name}
112+ SOURCE_DIR "${arg_SOURCE_DIR } "
113+ PREFIX "${project_dir} "
114+ BINARY_DIR "${build_dir} "
115+ INSTALL_DIR "${install_dir} "
116+ ${exclude_from_all_args}
117+ CMAKE_ARGS ${PPC_EXTERNAL_PROJECT_CMAKE_ARGS}
118+ ${cxx_standard_args}
119+ ${arg_CMAKE_ARGS}
120+ ${build_command_args}
121+ ${install_command_args}
122+ ${test_command_args}
123+ ${PPC_EXTERNAL_PROJECT_LOG_ARGS}
124+ ${arg_UNPARSED_ARGUMENTS} )
125+ endfunction ()
126+
65127set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX } /lib" )
66128set (CMAKE_BUILD_RPATH "${CMAKE_BINARY_DIR } /ppc_onetbb/install/lib" )
67129
0 commit comments