diff CMakeLists.txt @ 16:6faf3d3cb95e

CMake: implement install and package targets.
author SokoL_SD
date Thu, 14 May 2009 17:09:25 +0000
parents 4faee409a98d
children 3925148ba2b6
line wrap: on
line diff
--- a/CMakeLists.txt	Thu May 14 15:58:18 2009 +0000
+++ b/CMakeLists.txt	Thu May 14 17:09:25 2009 +0000
@@ -32,6 +32,7 @@
     string(REGEX MATCH "Digital Mars D Compiler v[0-9]\\.[0-9]+" dmd_version "${d_output}")
     if (dmd_version)
 	set(D_IS_MARS true)
+	set(D_IS_DMD true)
 	set(D_COMPILER_NAME "Digital Mars D Compiler")
 	string(REGEX REPLACE "Digital Mars D Compiler v([0-9])\\.[0-9]+" "\\1" D_VERSION "${dmd_version}")
 	string(REGEX REPLACE "Digital Mars D Compiler v[0-9]\\.([0-9]+)" "\\1" D_FRONTEND "${dmd_version}")    
@@ -41,6 +42,7 @@
 	    exec_program(${DC} ARGS "--version" OUTPUT_VARIABLE d_output)
 	    string(REGEX MATCH "based on DMD v[0-9]\\.[0-9]+" ldc_version "${d_output}")
 	    set(D_IS_LLVM true)
+	    set(D_IS_LDC true)
 	    if(ldc_version)
 		set(D_IS_LLVM true)
 		set(D_COMPILER_NAME "LLVM-based D Compiler")
@@ -74,12 +76,11 @@
     if (D_FRONTEND LESS "041")
 	message(STATUS "Minimum required version of D compiler is 1.041 (or compiler based on this version)")
     endif(D_FRONTEND LESS "041")
-    set(D_TARGET d1-tango)
-    #set(D_FLAGS ${D_FLAGS} -I${CMAKE_SOURCE_DIR}/qtd/d1)
+    set(D_TARGET d1-tango)   
 elseif(D_VERSION EQUAL "2")
     set(D_TARGET ) ## TODO: hm... I don`t known this parameter for D2 ^(
-    #set(D_FLAGS ${D_FLAGS} -I${CMAKE_SOURCE_DIR}/qtd/d2)
 endif(D_VERSION EQUAL "1")
+set(D_FLAGS ${D_FLAGS} -I${CMAKE_SOURCE_DIR}/qt/d${D_VERSION})
 
 # Debug and release flags.
 if (${CMAKE_BUILD_TYPE} MATCHES [dD][eE][bB][uU][gG])
@@ -92,6 +93,11 @@
    #set(CMAKE_BUILD_TYPE Release)
     add_definitions(-UNO_DEBUG)
     set(D_FLAGS ${D_FLAGS} -O -release -inline)
+    if(D_IS_MARS)
+	set(D_FLAGS ${D_FLAGS} -inline)
+    elseif(D_IS_LLVM)
+	set(D_FLAGS ${D_FLAGS} -enable-inlining)	
+    endif(D_IS_MARS)
     if(${CMAKE_SYSTEM_NAME} STREQUAL Windows)
       set(D_FLAGS ${D_FLAGS} -L/subsystem:windows)
     endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows)   
@@ -330,19 +336,33 @@
     set(d_files)
     set(classes)
     set(d_generated_files)
+    set(d_version_files)
     set(link_example)
     include (${CMAKE_SOURCE_DIR}/build/${package}.txt)    
 
     ## Loading package sources list.
+    foreach(d_source ${d_version_files})
+	set(d_sources ${d_sources} ${CMAKE_SOURCE_DIR}/qt/d${D_VERSION}/qt/${d_source}.d)
+	if(NOT GENERATE_DI_FILES)
+	    get_filename_component(path ${d_source}.d PATH)
+	    get_filename_component(name ${d_source}.d NAME_WE)
+	    install(FILES ${CMAKE_SOURCE_DIR}/qt/d${D_VERSION}/qt/${d_source}.d DESTINATION include/d/qtd/${path} RENAME ${name}.di)
+	endif(NOT GENERATE_DI_FILES)
+    endforeach(d_source)
     foreach(d_source ${d_files})
 	set(d_sources ${d_sources} ${CMAKE_SOURCE_DIR}/qt/${d_source}.d)
+	if(NOT GENERATE_DI_FILES)
+	    get_filename_component(path ${d_source}.d PATH)
+	    get_filename_component(name ${d_source}.d NAME_WE)
+	    install(FILES ${CMAKE_SOURCE_DIR}/qt/${d_source}.d DESTINATION include/d/qtd/${path} RENAME ${name}.di)
+	endif(NOT GENERATE_DI_FILES)
     endforeach(d_source)
     foreach(d_source ${d_generated_files})
 	set(d_sources ${d_sources} ${CMAKE_BINARY_DIR}/qt/${d_source}.d)
-	get_filename_component(path ${d_source}.d PATH)
-	get_filename_component(path ${d_source}.d NAME_WE)
 	if(NOT GENERATE_DI_FILES)
-	    install(FILES ${d_source} DESTINATION include/d/qtd/${path} RENAME ${class}.di)
+	    get_filename_component(path ${d_source}.d PATH)
+	    get_filename_component(name ${d_source}.d NAME_WE)
+	    install(FILES ${CMAKE_BINARY_DIR}/qt/${d_source}.d DESTINATION include/d/qtd/${path} RENAME ${name}.di)
 	endif(NOT GENERATE_DI_FILES)
     endforeach(d_source)
     foreach (cpp_source ${cpp_files})
@@ -355,7 +375,7 @@
 	add_sources_for_generating(${CMAKE_BINARY_DIR}/cpp/qt_${package}/${class}_shell.cpp)	
 	add_sources_for_generating(${CMAKE_BINARY_DIR}/qt/${package}/${class}.d)
 	if(NOT GENERATE_DI_FILES)
-	    install(FILES ${d_source} DESTINATION include/d/qtd/${package} RENAME ${class}.di)
+	    install(FILES ${CMAKE_BINARY_DIR}/qt/${package}/${class}.d DESTINATION include/d/qtd/${package} RENAME ${class}.di)
 	endif(NOT GENERATE_DI_FILES)
     endforeach(class)
 
@@ -407,7 +427,7 @@
 			COMMENT "Linking ${lib_name}"
 		    )
     endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) 
-    install(FILES ${lib} DESTINATION lib)
+    install(FILES ${CMAKE_BINARY_DIR}/${lib} DESTINATION lib)
 
     ## Dependences.
     add_dependencies(cpp_${package} dgen)
@@ -438,7 +458,7 @@
     endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows AND D_IS_MARS)
 
     if(GENERATE_DI_FILES)
-      set(regexp_str "(${CMAKE_BINARY_DIR}|${CMAKE_SOURCE_DIR})/([A-Za-z0-9\\-_\\\\/]+)[/]+([A-Za-z0-9\\-_\\\\]+).d")
+      set(regexp_str "(${CMAKE_SOURCE_DIR}/qt/d${D_VERSION}|${CMAKE_BINARY_DIR}|${CMAKE_SOURCE_DIR})/([A-Za-z0-9\\-_\\\\/]+)[/]+([A-Za-z0-9\\-_\\\\]+).d")
       foreach(source ${d_sources})
   # 	find_file(source ${source} PATHS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}
   # 		  ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR})
@@ -479,4 +499,20 @@
 if(BUILD_EXAMPLES)
     add_subdirectory(demos)
     add_subdirectory(examples)
-endif(BUILD_EXAMPLES)
\ No newline at end of file
+endif(BUILD_EXAMPLES)
+
+
+##--------------------------------------------
+## CPack.
+##--------------------------------------------
+set(CPACK_PACKAGE_VERSION_PATCH 1)
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "QtD is a D binding to the Qt")
+set(CPACK_PACKAGE_VENDOR "QtD team")
+set(CPACK_PACKAGE_CONTACT "e@mail.ru" )
+SET(CPACK_PACKAGE_VERSION "0.1")
+#set(CPACK_PACKAGE_VERSION_PATCH "${RFS_VERSION_BUILD}")
+set(CPACK_PACKAGE_INSTALL_DIRECTORY "qtd ${CPACK_PACKAGE_VERSION}")
+set(CPACK_PACKAGE_FILE_NAME "qtd-${CPACK_PACKAGE_VERSION}")
+set(CPACK_SOURCE_PACKAGE_FILE_NAME "qtd-${CPACK_PACKAGE_VERSION}")
+SET(CPACK_GENERATOR "TBZ2;DEB;RPM")
+include(CPack)
\ No newline at end of file