Ver Fonte

Introduce build configurations for linux and windows

Daniele Bartolini há 12 anos atrás
pai
commit
06465e4d6d
2 ficheiros alterados com 72 adições e 29 exclusões
  1. 53 9
      CMakeLists.txt
  2. 19 20
      engine/CMakeLists.txt

+ 53 - 9
CMakeLists.txt

@@ -10,17 +10,61 @@ option (CROWN_BUILD_SAMPLES "Whether to build the samples" ON)
 option (CROWN_BUILD_TOOLS "Whether to build the tools" ON)
 option (CROWN_BUILD_TESTS "Whether to build unit tests" ON)
 
-# always debug mode for now
-set (CROWN_DEBUG 1)
-
-# detect operating system
-if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+# build configuration variables
+if (CROWN_BUILD MATCHES "linux-debug-32")
+	set (LINUX 1)
+	set (CROWN_DEBUG 1)
+	set (CROWN_ARCH "x86")
+elseif (CROWN_BUILD MATCHES "linux-development-32")
+	set (LINUX 1)
+	set (CROWN_DEVELOPMENT 1)
+	set (CROWN_ARCH "x86")
+elseif (CROWN_BUILD MATCHES "linux-release-32")
+	set (LINUX 1)
+	set (CROWN_RELEASE 1)
+	set (CROWN_ARCH "x86")
+elseif (CROWN_BUILD MATCHES "linux-debug-64")
+	set (LINUX 1)
+	set (CROWN_DEBUG 1)
+	set (CROWN_ARCH "x86_64")
+elseif (CROWN_BUILD MATCHES "linux-development-64")
+	set (LINUX 1)
+	set (CROWN_DEVELOPMENT 1)
+	set (CROWN_ARCH "x86_64")
+elseif (CROWN_BUILD MATCHES "linux-release-64")
 	set (LINUX 1)
-endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+	set (CROWN_RELEASE 1)
+	set (CROWN_ARCH "x86_64")
+elseif (CROWN_BUILD MATCHES "windows-debug-32")
+	set (WINDOWS 1)
+	set (CROWN_DEBUG 1)
+	set (CROWN_ARCH "win32")
+elseif (CROWN_BUILD MATCHES "windows-development-32")
+	set (WINDOWS 1)
+	set (CROWN_DEVELOPMENT 1)
+	set (CROWN_ARCH "win32")
+elseif (CROWN_BUILD MATCHES "windows-release-32")
+	set (WINDOWS 1)
+	set (CROWN_RELEASE 1)
+	set (CROWN_ARCH "win32")
+elseif (CROWN_BUILD MATCHES "windows-debug-64")
+	set (WINDOWS 1)
+	set (CROWN_DEBUG 1)
+	set (CROWN_ARCH "win64")
+elseif (CROWN_BUILD MATCHES "windows-development-64")
+	set (WINDOWS 1)
+	set (CROWN_DEVELOPMENT 1)
+	set (CROWN_ARCH "win64")
+elseif (CROWN_BUILD MATCHES "windows-release-64")
+	set (WINDOWS 1)
+	set (CROWN_RELEASE 1)
+	set (CROWN_ARCH "win64")
+else ()
+	message (FATAL_ERROR "Wrong build configuration")
+endif (CROWN_BUILD MATCHES "linux-debug-32")
 
-if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
-	set(WINDOWS 1)
-endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+# executable name
+set (CROWN_EXECUTABLE_NAME crown-${CROWN_BUILD})
 
 # always build the engine
 add_subdirectory(engine)

+ 19 - 20
engine/CMakeLists.txt

@@ -276,6 +276,14 @@ set (RESOURCE_SRC
 	resource/FileBundle.cpp
 )
 
+if (CROWN_DEBUG OR CROWN_DEVELOPMENT)
+	list (APPEND RESOURCE_SRC resource/FileBundle.cpp)
+elseif (CROWN_RELEASE)
+	list (APPEND RESOURCE_SRC resource/ArchiveBundle.cpp)
+else ()
+	message (FATAL_ERROR "Oops, you should not be here")
+endif (CROWN_DEBUG OR CROWN_DEVELOPMENT)
+
 set (RESOURCE_HEADERS
 
 	resource/Resource.h
@@ -325,11 +333,13 @@ set (LUA_HEADERS
 
 set (COMPILER_SRC
 	compilers/Compiler.cpp
+	compilers/BundleCompiler.cpp
 	compilers/tga/TGACompiler.cpp
 )
 
 set (COMPILER_HEADER
 	compilers/Compiler.h
+	compilers/BundleCompiler.h
 	compilers/tga/TGACompiler.h
 )
 
@@ -397,13 +407,18 @@ if (LINUX)
 		-Werror
 		-Wno-long-long
 		-Wno-variadic-macros
-		-g
-		-pg
 		-fPIC
 		#-fvisibility=hidden
 	)
 
-	set (CROWN_EXECUTABLE_NAME crown-linux)
+	if (CROWN_DEBUG)
+		list (APPEND COMPILER_FLAGS -g -pg)
+	elseif (CROWN_DEVELOPMENT OR CROWN_RELEASE)
+		list (APPEND COMPILER_FLAGS -O2)
+	else ()
+		message (FATAL_ERROR "Oops, you should not be here")
+	endif (CROWN_DEBUG)
+
 	set (CROWN_MAIN_SRC os/linux/main.cpp)
 endif (LINUX)
 
@@ -450,8 +465,7 @@ if (WINDOWS)
 	)
 
 	set (COMPILER_FLAGS)
-	
-	set (CROWN_EXECUTABLE_NAME crown-win)
+
 	set (CROWN_MAIN_SRC os/win/main.cpp)
 endif(WINDOWS)
 
@@ -466,19 +480,12 @@ set (CROWN_SOURCES
 	${MEM_SRC}
 	${COMPRESSORS_SRC}
 	${SETTINGS_SRC}
-
 	${INPUT_SRC}
-
 	${RENDERERS_SRC}
-
 	${RESOURCE_SRC}
-
 #	${NETWORK_SRC}
-
 	${OS_SRC}
-
 	${LUA_SRC}
-
 	${COMPILER_SRC}
 )
 
@@ -493,21 +500,13 @@ set (CROWN_HEADERS
 	${MEM_HEADERS}
 	${COMPRESSORS_HEADERS}
 	${SETTINGS_HEADERS}
-
 	${INPUT_HEADERS}
-
 	${RENDERERS_HEADERS}
-
 	${RESOURCE_HEADERS}
-
 	${RPC_HEADERS}
-
 #	${NETWORK_HEADERS}
-
 	${OS_HEADERS}
-
 	${LUA_HEADERS}
-
 	${COMPILER_HEADERS}
 )