Skip to content

Commit 7e6440e

Browse files
committed
wip hpcc-systemsgh-2448 Added better macro argument parsing.
Added PARSE_ARGUMENTS macro to allow for better arg parsing. HPCC_ADD_SUBDIRECTORY: Added abillity to pass multiple flags Added abillity to pass no flags and force for all builds. Cleaned up any usage of CLIENTTOOLS_ONLY outside of commonSetup.cmake. Signed-off-by: Philip Schwartz <philip.schwartz@lexisnexis.com>
1 parent 0fa5ff1 commit 7e6440e

16 files changed

+112
-64
lines changed

CMakeLists.txt

+19-18
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,7 @@
4848
#
4949
#########################################################
5050

51-
if (CLIENTTOOLS_ONLY)
52-
project(hpccsystems-clienttools)
53-
else()
54-
project (hpccsystems-platform)
55-
endif()
51+
project (hpccsystems-platform)
5652
cmake_minimum_required (VERSION 2.6)
5753

5854
include(CTest)
@@ -107,21 +103,21 @@ include(${HPCC_SOURCE_DIR}/cmake_modules/commonSetup.cmake)
107103

108104
if ( NOT MAKE_DOCS_ONLY )
109105
if ( CMAKE_SYSTEM MATCHES Linux )
110-
HPCC_ADD_SUBDIRECTORY (initfiles "ALL")
106+
HPCC_ADD_SUBDIRECTORY (initfiles)
111107
endif ()
112-
HPCC_ADD_SUBDIRECTORY (tools "ALL")
113-
HPCC_ADD_SUBDIRECTORY (common "ALL")
114-
HPCC_ADD_SUBDIRECTORY (dali "ALL")
108+
HPCC_ADD_SUBDIRECTORY (tools)
109+
HPCC_ADD_SUBDIRECTORY (common)
110+
HPCC_ADD_SUBDIRECTORY (dali)
115111
HPCC_ADD_SUBDIRECTORY (deploy "PLATFORM")
116-
HPCC_ADD_SUBDIRECTORY (deployment "ALL")
117-
HPCC_ADD_SUBDIRECTORY (ecl "ALL")
112+
HPCC_ADD_SUBDIRECTORY (deployment)
113+
HPCC_ADD_SUBDIRECTORY (ecl)
118114
HPCC_ADD_SUBDIRECTORY (ecllibrary "PLATFORM")
119-
HPCC_ADD_SUBDIRECTORY (esp "ALL")
115+
HPCC_ADD_SUBDIRECTORY (esp)
120116
HPCC_ADD_SUBDIRECTORY (plugins "PLATFORM")
121117
HPCC_ADD_SUBDIRECTORY (roxie "PLATFORM")
122-
HPCC_ADD_SUBDIRECTORY (rtl "ALL")
118+
HPCC_ADD_SUBDIRECTORY (rtl)
123119
HPCC_ADD_SUBDIRECTORY (services "PLATFORM")
124-
HPCC_ADD_SUBDIRECTORY (system "ALL")
120+
HPCC_ADD_SUBDIRECTORY (system)
125121
HPCC_ADD_SUBDIRECTORY (thorlcr "PLATFORM")
126122
endif()
127123
HPCC_ADD_SUBDIRECTORY (docs "PLATFORM")
@@ -130,6 +126,11 @@ HPCC_ADD_SUBDIRECTORY (docs "PLATFORM")
130126
## CPack install and packaging setup.
131127
###
132128
INCLUDE(InstallRequiredSystemLibraries)
129+
if ( PLATFORM )
130+
set(CPACK_PACKAGE_NAME "hpccsystems-platform")
131+
else()
132+
set(CPACK_PACKAGE_NAME "hpccsystems-clienttools")
133+
endif()
133134
SET(CPACK_PACKAGE_VERSION_MAJOR ${majorver})
134135
SET(CPACK_PACKAGE_VERSION_MINOR ${minorver})
135136
SET(CPACK_PACKAGE_VERSION_PATCH ${point}${stagever})
@@ -167,15 +168,15 @@ if ( CMAKE_SYSTEM MATCHES Linux )
167168
message ( "-- distro uses ${packageManagement}, revision is ${packageRevisionArch}" )
168169

169170
if ( ${packageManagement} STREQUAL "DEB" )
170-
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${CPACK_RPM_PACKAGE_VERSION}-${version}-${stagever}${packageRevisionArch}")
171+
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_RPM_PACKAGE_VERSION}-${version}-${stagever}${packageRevisionArch}")
171172
elseif ( ${packageManagement} STREQUAL "RPM" )
172-
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${CPACK_RPM_PACKAGE_VERSION}-${version}-${stagever}.${packageRevisionArch}")
173+
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_RPM_PACKAGE_VERSION}-${version}-${stagever}.${packageRevisionArch}")
173174
else()
174-
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${CPACK_RPM_PACKAGE_VERSION}_${version}-${stagever}${CPACK_SYSTEM_NAME}")
175+
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_RPM_PACKAGE_VERSION}_${version}-${stagever}${CPACK_SYSTEM_NAME}")
175176
endif ()
176177
endif ( CMAKE_SYSTEM MATCHES Linux )
177178
MESSAGE ("-- Current release version is ${CPACK_PACKAGE_FILE_NAME}")
178-
set ( CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${CPACK_RPM_PACKAGE_VERSION}-${version}" )
179+
set ( CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_RPM_PACKAGE_VERSION}-${version}" )
179180
set( CPACK_SOURCE_GENERATOR TGZ )
180181
set(CPACK_SOURCE_IGNORE_FILES
181182
"~$"

cmake_modules/commonSetup.cmake

+50-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ IF ("${COMMONSETUP_DONE}" STREQUAL "")
4040

4141
cmake_policy ( SET CMP0011 NEW )
4242

43-
set(ALL ON) #Enable the building/inclusion of any component/dir marked as ALL
4443
option(CLIENTTOOLS "Enable the building/inclusion of a Client Tools component." ON)
4544
option(PLATFORM "Enable the building/inclusion of a Platform component." ON)
4645
option(DEVEL "Enable the building/inclusion of a Development component." OFF)
@@ -176,14 +175,62 @@ IF ("${COMMONSETUP_DONE}" STREQUAL "")
176175
add_library(${target} ${ARGN})
177176
endmacro(HPCC_ADD_LIBRARY target)
178177

178+
# This Macro is provided as Public domain from
179+
# http://www.cmake.org/Wiki/CMakeMacroParseArguments
180+
MACRO(PARSE_ARGUMENTS prefix arg_names option_names)
181+
SET(DEFAULT_ARGS)
182+
FOREACH(arg_name ${arg_names})
183+
SET(${prefix}_${arg_name})
184+
ENDFOREACH(arg_name)
185+
FOREACH(option ${option_names})
186+
SET(${prefix}_${option} FALSE)
187+
ENDFOREACH(option)
188+
189+
SET(current_arg_name DEFAULT_ARGS)
190+
SET(current_arg_list)
191+
FOREACH(arg ${ARGN})
192+
SET(larg_names ${arg_names})
193+
LIST(FIND larg_names "${arg}" is_arg_name)
194+
IF (is_arg_name GREATER -1)
195+
SET(${prefix}_${current_arg_name} ${current_arg_list})
196+
SET(current_arg_name ${arg})
197+
SET(current_arg_list)
198+
ELSE (is_arg_name GREATER -1)
199+
SET(loption_names ${option_names})
200+
LIST(FIND loption_names "${arg}" is_option)
201+
IF (is_option GREATER -1)
202+
SET(${prefix}_${arg} TRUE)
203+
ELSE (is_option GREATER -1)
204+
SET(current_arg_list ${current_arg_list} ${arg})
205+
ENDIF (is_option GREATER -1)
206+
ENDIF (is_arg_name GREATER -1)
207+
ENDFOREACH(arg)
208+
SET(${prefix}_${current_arg_name} ${current_arg_list})
209+
ENDMACRO(PARSE_ARGUMENTS)
210+
179211
# This macro allows for disabling a directory based on the value of a variable passed to the macro.
180212
#
181213
# ex. HPCC_ADD_SUBDIRECORY(roxie ${CLIENTTOOLS_ONLY})
182214
#
183215
# This call will disable the roxie dir if -DCLIENTTOOLS_ONLY=ON is set at config time.
184216
#
185-
macro(HPCC_ADD_SUBDIRECTORY subdir flag)
186-
if ( ${flag} )
217+
macro(HPCC_ADD_SUBDIRECTORY)
218+
set(adddir OFF)
219+
PARSE_ARGUMENTS(_HPCC_SUB "" "" ${ARGN})
220+
LIST(GET _HPCC_SUB_DEFAULT_ARGS 0 subdir)
221+
set(flags ${_HPCC_SUB_DEFAULT_ARGS})
222+
LIST(REMOVE_AT flags 0)
223+
LIST(LENGTH flags length)
224+
if(NOT length)
225+
set(adddir ON)
226+
else()
227+
foreach(f ${flags})
228+
if(${f})
229+
set(adddir ON)
230+
endif()
231+
endforeach()
232+
endif()
233+
if ( adddir )
187234
add_subdirectory(${subdir})
188235
endif()
189236
endmacro(HPCC_ADD_SUBDIRECTORY)

common/CMakeLists.txt

+9-9
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,16 @@
1616
# You should have received a copy of the GNU Affero General Public License
1717
# along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
################################################################################
19-
HPCC_ADD_SUBDIRECTORY (commonext "ALL")
20-
HPCC_ADD_SUBDIRECTORY (deftype "ALL")
21-
HPCC_ADD_SUBDIRECTORY (dllserver "ALL")
22-
HPCC_ADD_SUBDIRECTORY (environment "ALL")
23-
HPCC_ADD_SUBDIRECTORY (fileview2 "ALL")
19+
HPCC_ADD_SUBDIRECTORY (commonext)
20+
HPCC_ADD_SUBDIRECTORY (deftype)
21+
HPCC_ADD_SUBDIRECTORY (dllserver)
22+
HPCC_ADD_SUBDIRECTORY (environment)
23+
HPCC_ADD_SUBDIRECTORY (fileview2)
2424
HPCC_ADD_SUBDIRECTORY (monitoring "PLATFORM")
25-
HPCC_ADD_SUBDIRECTORY (remote "ALL")
26-
HPCC_ADD_SUBDIRECTORY (roxiecommlib "ALL")
25+
HPCC_ADD_SUBDIRECTORY (remote)
26+
HPCC_ADD_SUBDIRECTORY (roxiecommlib)
2727
HPCC_ADD_SUBDIRECTORY (roxiehelper "PLATFORM")
2828
HPCC_ADD_SUBDIRECTORY (roxiemanager "PLATFORM")
29-
HPCC_ADD_SUBDIRECTORY (thorhelper "ALL")
30-
HPCC_ADD_SUBDIRECTORY (workunit "ALL")
29+
HPCC_ADD_SUBDIRECTORY (thorhelper)
30+
HPCC_ADD_SUBDIRECTORY (workunit)
3131
HPCC_ADD_SUBDIRECTORY (wuwebview "PLATFORM")

common/fileview2/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ set ( SRCS
106106

107107
ADD_DEFINITIONS ( -D_CONSOLE )
108108

109-
if( NOT CLIENTTOOLS_ONLY )
109+
if( PLATFORM )
110110
add_executable ( fvserver ${SRCS} )
111111
set_target_properties(fvserver PROPERTIES
112112
COMPILE_FLAGS -D_CONSOLE

dali/CMakeLists.txt

+5-5
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,19 @@
1616
# You should have received a copy of the GNU Affero General Public License
1717
# along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
################################################################################
19-
HPCC_ADD_SUBDIRECTORY (base "ALL")
20-
HPCC_ADD_SUBDIRECTORY (dafilesrv "ALL")
19+
HPCC_ADD_SUBDIRECTORY (base)
20+
HPCC_ADD_SUBDIRECTORY (dafilesrv)
2121
HPCC_ADD_SUBDIRECTORY (dalidiag "PLATFORM")
2222
HPCC_ADD_SUBDIRECTORY (dalistop "PLATFORM")
2323
HPCC_ADD_SUBDIRECTORY (datest "PLATFORM")
2424
if (USE_CPPUNIT)
2525
HPCC_ADD_SUBDIRECTORY (daunittest "PLATFORM")
2626
endif()
27-
HPCC_ADD_SUBDIRECTORY (dfu "ALL")
27+
HPCC_ADD_SUBDIRECTORY (dfu)
2828
HPCC_ADD_SUBDIRECTORY (dfuplus "CLIENTTOOLS")
2929
HPCC_ADD_SUBDIRECTORY (dfuxref "PLATFORM")
30-
HPCC_ADD_SUBDIRECTORY (dfuXRefLib "ALL")
31-
HPCC_ADD_SUBDIRECTORY (ft "ALL")
30+
HPCC_ADD_SUBDIRECTORY (dfuXRefLib)
31+
HPCC_ADD_SUBDIRECTORY (ft)
3232
HPCC_ADD_SUBDIRECTORY (regress "PLATFORM")
3333
HPCC_ADD_SUBDIRECTORY (daliadmin "PLATFORM")
3434
HPCC_ADD_SUBDIRECTORY (server "PLATFORM")

dali/dafilesrv/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,6 @@
1818

1919

2020
include (dafilesrv.cmake)
21-
if ( NOT CLIENTTOOLS_ONLY)
21+
if ( PLATFORM )
2222
include (dafscontrol.cmake)
2323
endif()

dali/dfu/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
project (AllProjects)
2929

30-
if ( NOT CLIENTTOOLS_ONLY )
30+
if ( PLATFORM )
3131
include ( dfuserver.cmake)
3232
endif()
3333

dali/ft/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
project (all)
2121

22-
if ( NOT CLIENTTOOLS_ONLY )
22+
if ( PLATFORM )
2323
include (ftslave.cmake)
2424
endif()
2525
include (dalift.cmake)

deployment/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# You should have received a copy of the GNU Affero General Public License
1717
# along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
################################################################################
19-
HPCC_ADD_SUBDIRECTORY (configgen "ALL")
20-
HPCC_ADD_SUBDIRECTORY (deploy "ALL")
19+
HPCC_ADD_SUBDIRECTORY (configgen)
20+
HPCC_ADD_SUBDIRECTORY (deploy)
2121
HPCC_ADD_SUBDIRECTORY (deployutils "PLATFORM")
2222
HPCC_ADD_SUBDIRECTORY (envgen "PLATFORM")

ecl/CMakeLists.txt

+3-3
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@
1818
################################################################################
1919
HPCC_ADD_SUBDIRECTORY (agentexec "PLATFORM")
2020
HPCC_ADD_SUBDIRECTORY (eclagent "PLATFORM")
21-
HPCC_ADD_SUBDIRECTORY (eclcc "ALL")
21+
HPCC_ADD_SUBDIRECTORY (eclcc)
2222
HPCC_ADD_SUBDIRECTORY (eclccserver "PLATFORM")
2323
HPCC_ADD_SUBDIRECTORY (eclcmd "CLIENTTOOLS")
2424
HPCC_ADD_SUBDIRECTORY (eclscheduler "PLATFORM")
2525
HPCC_ADD_SUBDIRECTORY (eclplus "CLIENTTOOLS")
2626
HPCC_ADD_SUBDIRECTORY (ecl-package "CLIENTTOOLS")
27-
HPCC_ADD_SUBDIRECTORY (hql "ALL")
28-
HPCC_ADD_SUBDIRECTORY (hqlcpp "ALL")
27+
HPCC_ADD_SUBDIRECTORY (hql)
28+
HPCC_ADD_SUBDIRECTORY (hqlcpp)
2929
HPCC_ADD_SUBDIRECTORY (hthor "PLATFORM")
3030
HPCC_ADD_SUBDIRECTORY (scheduleadmin "PLATFORM")
3131
HPCC_ADD_SUBDIRECTORY (schedulectrl "PLATFORM")

esp/CMakeLists.txt

+4-4
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ HPCC_ADD_SUBDIRECTORY (clients "PLATFORM")
2121
HPCC_ADD_SUBDIRECTORY (eclwatch "PLATFORM")
2222
HPCC_ADD_SUBDIRECTORY (files "PLATFORM")
2323
HPCC_ADD_SUBDIRECTORY (platform "PLATFORM")
24-
HPCC_ADD_SUBDIRECTORY (protocols "ALL")
25-
HPCC_ADD_SUBDIRECTORY (scm "ALL")
26-
HPCC_ADD_SUBDIRECTORY (services "ALL")
27-
HPCC_ADD_SUBDIRECTORY (smc "ALL")
24+
HPCC_ADD_SUBDIRECTORY (protocols)
25+
HPCC_ADD_SUBDIRECTORY (scm)
26+
HPCC_ADD_SUBDIRECTORY (services)
27+
HPCC_ADD_SUBDIRECTORY (smc)
2828
HPCC_ADD_SUBDIRECTORY (test "PLATFORM")
2929
HPCC_ADD_SUBDIRECTORY (tools "PLATFORM")
3030
HPCC_ADD_SUBDIRECTORY (xslt "PLATFORM")

esp/services/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ IF (USE_OPENLDAP)
2222
ENDIF(USE_OPENLDAP)
2323
HPCC_ADD_SUBDIRECTORY (ws_account "PLATFORM")
2424
HPCC_ADD_SUBDIRECTORY (ws_config "PLATFORM")
25-
HPCC_ADD_SUBDIRECTORY (ws_dfu "ALL")
25+
HPCC_ADD_SUBDIRECTORY (ws_dfu)
2626
HPCC_ADD_SUBDIRECTORY (ws_ecl "PLATFORM")
2727
HPCC_ADD_SUBDIRECTORY (ws_fileio "PLATFORM")
28-
HPCC_ADD_SUBDIRECTORY (ws_fs "ALL")
28+
HPCC_ADD_SUBDIRECTORY (ws_fs)
2929
HPCC_ADD_SUBDIRECTORY (ws_machine "PLATFORM")
3030
HPCC_ADD_SUBDIRECTORY (ws_roxiequery "PLATFORM")
3131
HPCC_ADD_SUBDIRECTORY (ws_smc "PLATFORM")

rtl/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# You should have received a copy of the GNU Affero General Public License
1717
# along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
################################################################################
19-
HPCC_ADD_SUBDIRECTORY (eclrtl "ALL")
19+
HPCC_ADD_SUBDIRECTORY (eclrtl)
2020
HPCC_ADD_SUBDIRECTORY (ecltpl "PLATFORM")
2121
HPCC_ADD_SUBDIRECTORY (include "PLATFORM")
22-
HPCC_ADD_SUBDIRECTORY (nbcd "ALL")
22+
HPCC_ADD_SUBDIRECTORY (nbcd)

system/CMakeLists.txt

+7-7
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616
# You should have received a copy of the GNU Affero General Public License
1717
# along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
################################################################################
19-
HPCC_ADD_SUBDIRECTORY (hrpc "ALL")
19+
HPCC_ADD_SUBDIRECTORY (hrpc)
2020
HPCC_ADD_SUBDIRECTORY (include "PLATFORM")
21-
HPCC_ADD_SUBDIRECTORY (jhtree "ALL")
22-
HPCC_ADD_SUBDIRECTORY (jlib "ALL")
23-
HPCC_ADD_SUBDIRECTORY (lzma "ALL")
24-
HPCC_ADD_SUBDIRECTORY (mp "ALL")
25-
HPCC_ADD_SUBDIRECTORY (security "ALL")
26-
HPCC_ADD_SUBDIRECTORY (xmllib "ALL")
21+
HPCC_ADD_SUBDIRECTORY (jhtree)
22+
HPCC_ADD_SUBDIRECTORY (jlib)
23+
HPCC_ADD_SUBDIRECTORY (lzma)
24+
HPCC_ADD_SUBDIRECTORY (mp)
25+
HPCC_ADD_SUBDIRECTORY (security)
26+
HPCC_ADD_SUBDIRECTORY (xmllib)
2727
HPCC_ADD_SUBDIRECTORY (xmllibtest "PLATFORM")

system/security/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
# along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
################################################################################
1919
IF (USE_OPENLDAP)
20-
HPCC_ADD_SUBDIRECTORY (LdapSecurity "ALL")
20+
HPCC_ADD_SUBDIRECTORY (LdapSecurity)
2121
ENDIF(USE_OPENLDAP)
22-
HPCC_ADD_SUBDIRECTORY (securesocket "ALL")
22+
HPCC_ADD_SUBDIRECTORY (securesocket)
2323
HPCC_ADD_SUBDIRECTORY (test "PLATFORM")
2424
if (USE_ZLIB)
2525
HPCC_ADD_SUBDIRECTORY (zcrypt "PLATFORM")

tools/CMakeLists.txt

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
# You should have received a copy of the GNU Affero General Public License
1717
# along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
################################################################################
19-
HPCC_ADD_SUBDIRECTORY (esdl "ALL")
20-
HPCC_ADD_SUBDIRECTORY (hidl "ALL")
19+
HPCC_ADD_SUBDIRECTORY (esdl)
20+
HPCC_ADD_SUBDIRECTORY (hidl)
2121
HPCC_ADD_SUBDIRECTORY (backupnode "PLATFORM")
2222
HPCC_ADD_SUBDIRECTORY (combine "PLATFORM")
2323
HPCC_ADD_SUBDIRECTORY (dumpkey "PLATFORM")
@@ -35,5 +35,5 @@ HPCC_ADD_SUBDIRECTORY (genht "PLATFORM")
3535
# start-stop-daemon is linux only.
3636
if ( CMAKE_SYSTEM MATCHES Linux )
3737
message ("-- Building start-stop-daemon")
38-
HPCC_ADD_SUBDIRECTORY (start-stop-daemon "ALL")
38+
HPCC_ADD_SUBDIRECTORY (start-stop-daemon)
3939
endif()

0 commit comments

Comments
 (0)