explicit aspect activation

ag++ is now called with a list of currently active aspect headers
(ag++ -a aspect1.ah -a aspect2.ah ...).  This resolves several problems at
once:
 -  Build directories may be positioned arbitrarily now, they need not be
    a subdirectory of the project anymore.
 -  Multiple build directories can coexist within the project tree.  Before
    this commit, the generated instantiate-*.ah aspect headers disturbed
    neighboring build trees.
 -  Due to this, the regression test should be runnable much more easily
    now.
 -  The build time was reduced by an average of about 10%.

git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1753 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
hsc
2012-10-17 15:22:23 +00:00
parent 773ad1367d
commit a29ad39f5e
47 changed files with 131 additions and 201 deletions

View File

@ -18,8 +18,12 @@ elseif(${COMPILER} STREQUAL "ag++")
set(CMAKE_C_COMPILER "ag++")
set(CMAKE_CXX_COMPILER "ag++")
set(CMAKE_AGPP_FLAGS "--real-instances" CACHE STRING "Additional ag++ flags, e.g. --real-instances --keep_woven")
## Here we add the build dir holding the generated header files (protobuf)
add_definitions("-p ${CMAKE_SOURCE_DIR} ${CMAKE_AGPP_FLAGS} --Xcompiler")
foreach(aspect_header ${CMAKE_ASPECT_HEADERS})
list(APPEND AGPP_ASPECTLIST -a ${aspect_header})
endforeach(aspect_header)
set(AGPP_PARAMETERS ${AGPP_ASPECTLIST} -p ${CMAKE_SOURCE_DIR} ${CMAKE_AGPP_FLAGS})
unset(AGPP_ASPECTLIST)
add_definitions(${AGPP_PARAMETERS} --Xcompiler)
else(${COMPILER} STREQUAL "clang")
message(FATAL_ERROR "COMPILER must be exactly one of clang/gcc/ag++. If unsure, use 'ag++'.")