@@ -10,10 +10,14 @@ message(STATUS "Compiling EDG versions with ${CMAKE_CXX_COMPILER} and ${EDG_GCC_
1010message (STATUS "Linking EDG versions with ${EDG_LINKER} " )
1111
1212set (CMAKE_DEPFILE_FLAGS_CXX "" )
13+ message (STATUS "CMAKE_DEPFILE_FLAGS_CXX: ${CMAKE_DEPFILE_FLAGS_CXX} " )
1314
14- set (EDG_CPFE_DEFAULT_OPTIONS --g++ --set_flag=reflection --c++26 --gnu 140200 -tlocal --no_strict_gnu --no_char8_t)
15+ set (EDG_CPFE_DEFAULT_OPTIONS --g++ --set_flag=reflection --c++26 --gnu 140200 -tlocal --no_strict_gnu --no_char8_t
16+ --extern_inline)
1517set (EDG_DEFAULT_DEFINES __CHAR_BIT__=8 _POSIX_SOURCE)
16- set (EDG_C_TO_OBJ_DEFAULT_OPTIONS -Dsetjmp=_setjmp -Dva_copy=__va_copy -falign-functions=4 -march=skylake ${CMAKE_CXX_FLAGS} )
18+ set (EDG_C_TO_OBJ_DEFAULT_OPTIONS -Dsetjmp=_setjmp -Dva_copy=__va_copy -falign-functions=4 -march=skylake
19+ ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UPPER} } ${CMAKE_CXX_FLAGS}
20+ -finline-functions)
1721separate_arguments (EDG_C_TO_OBJ_DEFAULT_OPTIONS )
1822set (EDG_C_TO_OBJ_LIBRARIES -shared-libgcc -lstdc++ -lgcc_s -lpthread -lm)
1923
@@ -37,7 +41,7 @@ separate_arguments(sys_incl_dirs)
3741
3842#### Options that are set differently for edgcpfe than for g++ ####
3943unset (CMAKE_CXX_STANDARD )
40-
44+ set (CMAKE_CXX_FLAGS_ ${CMAKE_BUILD_TYPE_UPPER} "" )
4145set (CMAKE_CXX_FLAGS "" )
4246
4347# Replaces the default -isystem with --sys_include
@@ -56,7 +60,7 @@ unset(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES)
5660
5761# Do not add -Wl, rpath flags to the linker command line (edg_prelink does not support them)
5862set (CMAKE_SKIP_RPATH TRUE )
59- # Do not add -Wl, --dependency-file flag to the linker command line
63+ # Do not add -Wl, --dependency-file flag to the edg_prelink command
6064set (CMAKE_LINK_DEPENDS_USE_LINKER FALSE )
6165
6266###########
@@ -66,24 +70,43 @@ include(CMakePrintHelpers)
6670function (add_edg_executable target sources )
6771 add_executable (${target} ${sources} )
6872 target_include_directories (${target} SYSTEM AFTER PUBLIC ${sys_incl_dirs} $ENV{EDG_BASE} /include )
69- target_include_directories (${target} PUBLIC ${PROJECT_SOURCE_DIR} reflmempp/include reflmempp/include/kokkos/include/mdspan )
73+ target_include_directories (${target} PUBLIC ${PROJECT_SOURCE_DIR} reflmempp/include
74+ reflmempp/include/kokkos/include/mdspan )
7075
7176 target_compile_options (${target} PUBLIC ${EDG_CPFE_DEFAULT_OPTIONS} )
7277 # target_compile_options(${target} PUBLIC --error_limit=1) # for debugging
7378
7479 # By products
7580 target_compile_options (${target} PUBLIC --gen_c_file_name=CMakeFiles/${target}.dir/${target}.int.c
7681 --ii_file=CMakeFiles/${target}.dir/${target}.cpp.ii
77- --template_info_file=CMakeFiles/${target}.dir/${target}.cpp.ti )
82+ --template_info_file=CMakeFiles/${target}.dir/${target}.cpp.ti
83+ -LCMakeFiles/${target}.dir/${target}.diagnostics )
7884
7985 target_compile_definitions (${target} PUBLIC ${EDG_DEFAULT_DEFINES} )
8086
87+ add_custom_command (
88+ TARGET ${target}
89+ PRE_BUILD
90+ COMMAND echo "CMakeFiles/${target} .dir/${target} .cpp.o: \\\\ " > CMakeFiles/${target}.dir/${target}.cpp.o.d
91+ COMMAND ${CMAKE_CXX_COMPILER} $<TARGET_PROPERTY :${target} ,COMPILE_OPTIONS >
92+ "-D$<JOIN :$<TARGET_PROPERTY :${target} ,COMPILE_DEFINITIONS >,;-D >"
93+ "-I$<JOIN :$<TARGET_PROPERTY :${target} ,INCLUDE_DIRECTORIES >,;-I >"
94+ --dependencies ${sources} | sed "s/^${target} .o://" | sed "'s/$$/ \\\\ /'"
95+ >> CMakeFiles/${target}.dir/${target}.cpp.o.d
96+ COMMENT "Add dependencies to CMakeFiles/${target} .dir/${target} .cpp.o.d"
97+ BYPRODUCTS CMakeFiles/${target}.dir/${target}.cpp.o.d
98+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
99+ COMMAND_EXPAND_LISTS
100+ )
101+
81102 add_custom_command (
82103 TARGET ${target}
83104 PRE_LINK
84- COMMAND ${EDG_GCC_TO_USE} ${EDG_C_TO_OBJ_DEFAULT_OPTIONS} -g - c CMakeFiles/${target}.dir/${target}.int.c
105+ COMMAND ${EDG_GCC_TO_USE} ${EDG_C_TO_OBJ_DEFAULT_OPTIONS} -c CMakeFiles/${target}.dir/${target}.int.c
85106 COMMAND mv -f ${target} .int.o CMakeFiles/${target}.dir/${target}.cpp.o
86- BYPRODUCTS CMakeFiles/${target}.dir/${target}.cpp.o
107+ BYPRODUCTS CMakeFiles/${target}.dir/${target}.int.c CMakeFiles/${target}.dir/${target}.cpp.ii
108+ CMakeFiles/${target}.dir/${target}.cpp.ti CMakeFiles/${target}.dir/${target}.cpp.o
109+ CMakeFiles/${target}.dir/${target}.diagnostics
87110 COMMENT "Building CMakeFiles/${target} .dir/${target} .cpp.o"
88111 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
89112 )
@@ -108,9 +131,10 @@ function(add_edg_executable target sources)
108131 TARGET ${target}
109132 POST_BUILD
110133 COMMAND ${EDG_GCC_TO_USE} ${EDG_C_TO_OBJ_DEFAULT_OPTIONS} "$<$<BOOL :${link_dirs} >:-L $<JOIN :${link_dirs} ,;-L >>"
111- -o ${target} CMakeFiles/${target}.dir/${target}.cpp. o ${link_lib_paths} ${EDG_C_TO_OBJ_LIBRARIES }
112- -lrt -lC
134+ -Wl,--dependency-file= CMakeFiles/${target}.dir/link.d - o ${target }
135+ CMakeFiles/${target}.dir/${target}.cpp.o ${link_lib_paths} ${EDG_C_TO_OBJ_LIBRARIES} -lrt -lC
113136 COMMENT "Complete linking"
137+ BYPRODUCTS ${target} CMakeFiles/${target}.dir/link.d
114138 COMMAND_EXPAND_LISTS
115139 )
116140endfunction ()
0 commit comments