changeset 89:8a4e85876ea8

CMake: improve of OS detection.
author SokoL_SD
date Tue, 26 May 2009 14:55:13 +0000
parents 201684eb20ee
children ba63040afbf2
files CMakeLists.txt
diffstat 1 files changed, 24 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/CMakeLists.txt	Tue May 26 11:26:50 2009 +0000
+++ b/CMakeLists.txt	Tue May 26 14:55:13 2009 +0000
@@ -120,19 +120,19 @@
     elseif(D_IS_LLVM)
 	set(D_FLAGS ${D_FLAGS} -enable-inlining)	
     endif(D_IS_MARS)
-    if(${CMAKE_SYSTEM_NAME} STREQUAL Windows)
+    if(CMAKE_HOST_WIN32)
       set(D_FLAGS ${D_FLAGS} -L/subsystem:windows)
-    endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows)   
+    endif(CMAKE_HOST_WIN32)   
 endif(${CMAKE_BUILD_TYPE} MATCHES [rR][eE][lL][eE][aA][sS] )
 
 set(D_FLAGS ${D_FLAGS} -I${CMAKE_BINARY_DIR} -I${CMAKE_SOURCE_DIR})
-if(D_IS_MARS AND ${CMAKE_SYSTEM_NAME} STREQUAL Windows)
-else(D_IS_MARS AND ${CMAKE_SYSTEM_NAME} STREQUAL Windows)
+if(D_IS_MARS AND CMAKE_HOST_WIN32)
+else(D_IS_MARS AND CMAKE_HOST_WIN32)
     set(D_FLAGS ${D_FLAGS} -L-L${CMAKE_BINARY_DIR}/lib)
-endif(D_IS_MARS AND ${CMAKE_SYSTEM_NAME} STREQUAL Windows)
+endif(D_IS_MARS AND CMAKE_HOST_WIN32)
 
 # System specifc settings.
-if(${CMAKE_SYSTEM_NAME} STREQUAL Windows)
+if(CMAKE_HOST_WIN32)
     set(implib implib)
     find_program(IMPLIB ${implib})
     if (NOT IMPLIB)
@@ -149,11 +149,11 @@
     set(GEN_OPT ${GEN_OPT} --cpp_shared)
     add_definitions(-DCPP_SHARED)
     string(REGEX REPLACE ".dll([A-Za-z\\.0-9]+)" "\\1" CMAKE_IMPORT_LIBRARY_SUFFIX "${CMAKE_IMPORT_LIBRARY_SUFFIX}")
-elseif(${CMAKE_SYSTEM_NAME} STREQUAL Linux) 
+elseif(CMAKE_HOST_UNIX) 
     set(D_LIB_SUFFIX .a)
     set(D_LIB_PREFIX lib)
     set(D_OBJECT_SUFFIX .o)
-endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) 
+endif(CMAKE_HOST_WIN32) 
 
 set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ./)
 set(GEN_OPT ${GEN_OPT} --d-target=${D_TARGET})
@@ -174,13 +174,13 @@
 ##	-- "c:\file_path\file_name.cpp"
 ## Command "file(TO_NATIVE_PATH ...)" is wrong on Windows
 macro(MAKE_NATIVE_PATH pathname)
-    if(${CMAKE_SYSTEM_NAME} STREQUAL Windows)
+    if(CMAKE_HOST_WIN32)
 	# An extra \\ escape is necessary to get a \ through CMake's processing.
 	string(REPLACE "/" "\\" ${pathname} "${${pathname}}")
 	# Enclose with UNESCAPED quotes.  This means we need to escape our
 	# quotes once here, i.e. with \"
 	set(${pathname} \"${${pathname}}\")
-    endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) 
+    endif(CMAKE_HOST_WIN32) 
 endmacro(MAKE_NATIVE_PATH)
 
 ##
@@ -250,15 +250,15 @@
 	obj_path(d_obj_out)
 	set(parameters ${D_FLAGS} -c ${ARGN} -of${${objects_list}})
 	set(parameters_list_file ${tmp_dir}/parameters)
-	if(${CMAKE_SYSTEM_NAME} STREQUAL Windows)	
+	if(CMAKE_HOST_WIN32)	
 	    file(REMOVE ${parameters_list_file})
 	    foreach(arg ${parameters})
 		file(APPEND ${parameters_list_file} "${arg}\n")
 	    endforeach(arg)
 	    set(param @${parameters_list_file})
-	elseif(${CMAKE_SYSTEM_NAME} STREQUAL Linux)
+	elseif(CMAKE_HOST_UNIX)
 	    set(param ${parameters})
-	endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows)
+	endif(CMAKE_HOST_WIN32)
 	add_custom_command(OUTPUT "${${objects_list}}"
 		    COMMAND "${DC}"
 		    ARGS ${param}
@@ -363,9 +363,9 @@
 		    )
     add_custom_target(example_${name} ALL DEPENDS "${output}")
     ## TODO: Enable on windows too.
-    if(STRIP AND ${CMAKE_BUILD_TYPE} EQUAL "Release" AND ${CMAKE_SYSTEM_NAME} STREQUAL Linux) ##
+    if(STRIP AND ${CMAKE_BUILD_TYPE} EQUAL "Release" AND CMAKE_HOST_UNIX) ##
 	add_custom_command(TARGET example_${name} POST_BUILD COMMAND "${STRIP}" ARGS "${output}")
-    endif(STRIP AND ${CMAKE_BUILD_TYPE} EQUAL "Release" AND ${CMAKE_SYSTEM_NAME} STREQUAL Linux)
+    endif(STRIP AND ${CMAKE_BUILD_TYPE} EQUAL "Release" AND CMAKE_HOST_UNIX)
     add_dependencies(example_${name} allpackages)
 endmacro(build_example sources)
 
@@ -481,7 +481,7 @@
 	set(lib lib/${lib_name})  
 	compile_d_files(${package}_dobjs objects  ${d_sources})
 	set(d_objs ${d_objs} ${objects}) 
-	if(${CMAKE_SYSTEM_NAME} STREQUAL Windows)
+	if(CMAKE_HOST_WIN32)
 	    set_property(TARGET cpp_${package} PROPERTY RUNTIME_OUTPUT_DIRECTORY lib)
 	    set_property(TARGET cpp_${package} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles)	
 	    foreach(req ${required})
@@ -523,7 +523,7 @@
 			    COMMENT "Linking ${lib_name}"
 			)
 	    install(FILES ${cpp_lib} COMPONENT qtd DESTINATION lib)
-	else(${CMAKE_SYSTEM_NAME} STREQUAL Linux)   
+	else(CMAKE_HOST_UNIX)   
 	    set_property(TARGET cpp_${package} PROPERTY LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles)
 	    foreach(cpp_source ${cpp_sources})
 		set(cpp_source ${cpp_source})
@@ -537,7 +537,7 @@
 			    DEPENDS ${d_objs} cpp_${package}
 			    COMMENT "Linking ${lib_name}"
 			)
-	endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows) 
+	endif(CMAKE_HOST_WIN32) 
 	install(FILES ${CMAKE_BINARY_DIR}/${lib} COMPONENT qtd DESTINATION lib)
 
 	## Dependences.
@@ -550,7 +550,7 @@
 	add_dependencies(allpackages ${package})
 
 	## Paths for QtD libs. Needed by examples.
-	if(${CMAKE_SYSTEM_NAME} STREQUAL Windows AND D_IS_MARS)
+	if(CMAKE_HOST_WIN32 AND D_IS_MARS)
 	    set(libs_path ${CMAKE_BINARY_DIR}/lib/qtd${package}.lib)
 	    make_native_path(libs_path)
 	    set(${package}_lib_param -L+${libs_path})
@@ -560,12 +560,12 @@
 		set(link -L+${link})
 		set(${package}_lib_param ${${package}_lib_param} ${link})
 	    endforeach(link ${link_example})
-	else (${CMAKE_SYSTEM_NAME} STREQUAL Windows AND D_IS_MARS)
+	else (CMAKE_HOST_WIN32 AND D_IS_MARS)
 	    set(${package}_lib_param -L-lqtd${package} -L-lQt${package_big})
 	    foreach(link ${link_example})
 		set(${package}_lib_param ${${package}_lib_param} ${link})
 	    endforeach(link ${link_example})
-	endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows AND D_IS_MARS)
+	endif(CMAKE_HOST_WIN32 AND D_IS_MARS)
 
 	if(GENERATE_DI_FILES)
 	  regexseafestring(cbd_safe ${CMAKE_BINARY_DIR})
@@ -646,9 +646,9 @@
 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}")
-if(${CMAKE_SYSTEM_NAME} STREQUAL Windows)
+if(CMAKE_HOST_WIN32)
     set(CPACK_GENERATOR "ZIP")
-elseif(${CMAKE_SYSTEM_NAME} STREQUAL Linux)
+elseif(CMAKE_HOST_UNIX)
     set(CPACK_GENERATOR "TBZ2;DEB;RPM")
-endif(${CMAKE_SYSTEM_NAME} STREQUAL Windows)
+endif(CMAKE_HOST_WIN32)
 include(CPack)
\ No newline at end of file