Code

process source subdirectories with INCLUDE() instead of ADD_DIRECTORIES()
[inkscape.git] / src / CMakeLists.txt
index f047198bbceca9eaa9fa6aede052c15c6a7249ed..aaf6bbe285c6396371660d56bf1451317493d086 100644 (file)
@@ -1,3 +1,92 @@
+SET(INKSCAPE_SRC)\r
+\r
+# A macro to replace slashes and spaces in a string with underscores\r
+MACRO(SANITIZE_PATH _string_var)\r
+  STRING(REGEX REPLACE "[\\/ ]+" "_" ${_string_var} ${${_string_var}})\r
+ENDMACRO(SANITIZE_PATH _string_var)\r
+\r
+# A macro to prepend a given string onto the beginning of each string in a list\r
+MACRO(PREPEND _list _str)\r
+  SET(_temp_list ${${_list}})\r
+  SET(${_list})\r
+  FOREACH(x ${_temp_list})\r
+    SET(${_list} ${${_list}} ${_str}${x})\r
+  ENDFOREACH(x)\r
+ENDMACRO(PREPEND _list _str)\r
+\r
+# All folder with CMakeLists.txt files (excluding internal libraries)\r
+SET(srcfolders\r
+algorithms\r
+api\r
+bind\r
+debug\r
+display\r
+dom\r
+dom/io\r
+dom/odf\r
+dom/util\r
+dom/work\r
+extension\r
+extension/dxf2svg\r
+extension/implementation\r
+extension/internal\r
+extension/param\r
+graphlayout\r
+helper\r
+inkjar\r
+io\r
+jabber_whiteboard\r
+jabber_whiteboard/dialog\r
+live_effects\r
+live_effects/parameter\r
+pedro\r
+removeoverlap\r
+svg\r
+trace\r
+trace/potrace\r
+traits\r
+ui/cache\r
+ui\r
+ui/dialog\r
+ui/view\r
+ui/widget\r
+utest\r
+util\r
+widgets\r
+xml\r
+)\r
+\r
+# 1) include each list file\r
+# 2) grab the variable inside \r
+# 3) prepend the full relative path to each file in list\r
+# 4) append the list to INKSCAPE_SRC\r
+FOREACH(dirlist ${srcfolders})\r
+  SET(_temp_dirlist "${dirlist}")\r
+  MESSAGE(STATUS "Processing ${CMAKE_CURRENT_SOURCE_DIR}/${dirlist}/CMakeLists.txt")\r
+  INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/${dirlist}/CMakeLists.txt)\r
+  SANITIZE_PATH(dirlist)\r
+  PREPEND(${dirlist}_SRC "${_temp_dirlist}/")\r
+  SET(INKSCAPE_SRC ${INKSCAPE_SRC} ${${dirlist}_SRC})\r
+ENDFOREACH(dirlist)\r
+\r
+\r
+# All directories containing lists files that describe building internal libraries\r
+SET(libfolders\r
+application\r
+dialogs\r
+libavoid\r
+libcola\r
+libcroco\r
+libgdl\r
+libnr\r
+libnrtype\r
+libvpsc\r
+)\r
+\r
+FOREACH(dirlist ${libfolders})\r
+  ADD_SUBDIRECTORY(${dirlist})\r
+ENDFOREACH(dirlist)\r
+\r
 IF(WIN32)\r
 SET(ONLY_WIN\r
 registrytool.cpp\r
@@ -7,6 +96,7 @@ SET(ONLY_WIN)
 ENDIF(WIN32)\r
 \r
 SET(INKSCAPE_SRC\r
+${INKSCAPE_SRC}\r
 arc-context.cpp\r
 attributes.cpp\r
 axis-manip.cpp\r
@@ -208,31 +298,6 @@ version.cpp
 winmain.cpp\r
 zoom-context.cpp\r
 ${ONLY_WIN}\r
-${algorithms}\r
-${api}\r
-${application}\r
-${BIND_SRC}\r
-${debug}\r
-${dialogs}\r
-${display}\r
-${dom_SRC}\r
-${extension_SRC}\r
-${graphlayout_SRC}\r
-${extension_SRC}\r
-${helper_SRC}\r
-${inkjar_SRC}\r
-${io_SRC}\r
-${jabber_whiteboard_SRC}\r
-${live_effects_SRC}\r
-${removeoverlap_SRC}\r
-${svg_SRC}\r
-${trace_SRC}\r
-${traits_SRC}\r
-${ui_SRC}\r
-#${utest_SRC}\r
-#${util_SRC}\r
-#${widgets_SRC}\r
-#${xml_SRC}\r
 )\r
 \r
 # make executable for INKSCAPE\r
@@ -252,47 +317,3 @@ TARGET_LINK_LIBRARIES(inkscape
 #CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/INKSCAPE.pc.in\r
 #                ${CMAKE_BINARY_DIR}/INKSCAPE.pc @ONLY IMMEDIATE )\r
 #INSTALL(FILES "${CMAKE_BINARY_DIR}/INKSCAPE.pc" DESTINATION lib/pkgconfig)\r
-\r
-\r
-# Add New folders in src folder here\r
-SET(srcfolders\r
-2geom\r
-algorithms\r
-api\r
-application\r
-bind\r
-debug\r
-dialogs\r
-display\r
-dom\r
-extension\r
-graphlayout\r
-helper\r
-inkjar\r
-io\r
-jabber_whiteboard\r
-libavoid\r
-libcola\r
-libcroco\r
-libgdl\r
-libnr\r
-libnrtype\r
-libvpsc\r
-livarot\r
-live_effects\r
-pedro\r
-svg\r
-pixmaps\r
-trace\r
-traits\r
-ui\r
-removeoverlap\r
-utest\r
-util\r
-widgets\r
-xml\r
-)\r
-\r
-FOREACH(dirlist ${srcfolders})\r
-ADD_SUBDIRECTORY(${dirlist})\r
-ENDFOREACH(dirlist)\r