Skip to content

Commit

Permalink
Move BuildHelpers.CMakeLists.txt to Modules/CocosBuildHelpers.cmake, …
Browse files Browse the repository at this point in the history
…this name is more standard for cmake include files, and in future this file can be installed to use by external applications.
  • Loading branch information
vovkasm committed Nov 11, 2014
1 parent 72e59a5 commit 77ab866
Show file tree
Hide file tree
Showing 6 changed files with 104 additions and 98 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ project (Cocos2d-X)
# The version number
set(COCOS2D_X_VERSION 3.3.0-beta0)

include(cmake/BuildHelpers.CMakeLists.txt)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
include(CocosBuildHelpers)

message(${BUILDING_STRING})

Expand Down
96 changes: 2 additions & 94 deletions cmake/BuildHelpers.CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,94 +1,2 @@
include(CMakeParseArguments)

macro(pre_build TARGET_NAME)
add_custom_target( ${TARGET_NAME}_PRE_BUILD ALL )

add_custom_command(
TARGET ${TARGET_NAME}_PRE_BUILD
${ARGN}
PRE_BUILD
COMMENT "${TARGET_NAME}_PRE_BUILD ..."
)

add_custom_target(${TARGET_NAME}_CORE_PRE_BUILD)
add_dependencies(${TARGET_NAME}_PRE_BUILD ${TARGET_NAME}_CORE_PRE_BUILD)
add_dependencies(${TARGET_NAME} ${TARGET_NAME}_PRE_BUILD)
endmacro()

function(cocos_mark_resources)
set(oneValueArgs BASEDIR RESOURCEBASE)
set(multiValueArgs FILES)
cmake_parse_arguments(opt "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

if(NOT opt_RESOURCEBASE)
set(opt_RESOURCEBASE Resources)
endif()

get_filename_component(BASEDIR_ABS ${opt_BASEDIR} ABSOLUTE)
foreach(RES_FILE ${opt_FILES} ${opt_UNPARSED_ARGUMENTS})
get_filename_component(RES_FILE_ABS ${RES_FILE} ABSOLUTE)
file(RELATIVE_PATH RES ${BASEDIR_ABS} ${RES_FILE_ABS})
get_filename_component(RES_LOC ${RES} PATH)
set_source_files_properties(${RES_FILE} PROPERTIES
MACOSX_PACKAGE_LOCATION "${opt_RESOURCEBASE}/${RES_LOC}"
HEADER_FILE_ONLY 1
)
endforeach()
endfunction()

#cmake has some strange defaults, this should help us a lot
#Please use them everywhere

#WINDOWS = Windows Desktop
#WINRT = Windows RT
#WP8 = Windows Phone 8
#ANDROID = ANDROID
#IOS = IOS
#MACOSX = MAC OSX

if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
if(WINRT)
set(SYSTEM_STRING "Windows RT")
elseif(WP8)
set(SYSTEM_STRING "Windows Phone 8")
else()
set(WINDOWS TRUE)
set(SYSTEM_STRING "Windows Desktop")
endif()
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
if(ANDROID)
set(SYSTEM_STRING "Android")
else()
set(LINUX TRUE)
set(SYSTEM_STRING "Linux")
endif()
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if(IOS)
set(SYSTEM_STRING "IOS")
else()
set(MACOSX TRUE)
set(APPLE TRUE)
set(SYSTEM_STRING "Mac OSX")
endif()
endif()

if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(COMPILER_STRING ${CMAKE_CXX_COMPILER_ID})
set(CLANG TRUE)
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
if(MINGW)
set(COMPILER_STRING "Mingw GCC")
else()
set(COMPILER_STRING "GCC")
endif()
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
set(COMPILER_STRING "${CMAKE_CXX_COMPILER_ID} C++")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
set(COMPILER_STRING "Visual Studio C++")
endif()

if(CMAKE_CROSSCOMPILING)
set(BUILDING_STRING "It appears you are cross compiling for ${SYSTEM_STRING} with ${COMPILER_STRING}")
else()
set(BUILDING_STRING "It appears you are builing natively for ${SYSTEM_STRING} with ${COMPILER_STRING}")
endif()
# For compatibility only, please use include(CocosBuildHelpers) in future projects
include(CocosBuildHelpers)
95 changes: 95 additions & 0 deletions cmake/Modules/CocosBuildHelpers.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
include(CMakeParseArguments)

macro(pre_build TARGET_NAME)
add_custom_target( ${TARGET_NAME}_PRE_BUILD ALL )

add_custom_command(
TARGET ${TARGET_NAME}_PRE_BUILD
${ARGN}
PRE_BUILD
COMMENT "${TARGET_NAME}_PRE_BUILD ..."
)

add_custom_target(${TARGET_NAME}_CORE_PRE_BUILD)
add_dependencies(${TARGET_NAME}_PRE_BUILD ${TARGET_NAME}_CORE_PRE_BUILD)
add_dependencies(${TARGET_NAME} ${TARGET_NAME}_PRE_BUILD)
endmacro()

function(cocos_mark_resources)
set(oneValueArgs BASEDIR RESOURCEBASE)
set(multiValueArgs FILES)
cmake_parse_arguments(opt "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

if(NOT opt_RESOURCEBASE)
set(opt_RESOURCEBASE Resources)
endif()

get_filename_component(BASEDIR_ABS ${opt_BASEDIR} ABSOLUTE)
foreach(RES_FILE ${opt_FILES} ${opt_UNPARSED_ARGUMENTS})
get_filename_component(RES_FILE_ABS ${RES_FILE} ABSOLUTE)
file(RELATIVE_PATH RES ${BASEDIR_ABS} ${RES_FILE_ABS})
get_filename_component(RES_LOC ${RES} PATH)
set_source_files_properties(${RES_FILE} PROPERTIES
MACOSX_PACKAGE_LOCATION "${opt_RESOURCEBASE}/${RES_LOC}"
HEADER_FILE_ONLY 1
)
endforeach()
endfunction()

#cmake has some strange defaults, this should help us a lot
#Please use them everywhere

#WINDOWS = Windows Desktop
#WINRT = Windows RT
#WP8 = Windows Phone 8
#ANDROID = Android
#IOS = iOS
#MACOSX = MacOS X
#LINUX = Linux

if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
if(WINRT)
set(SYSTEM_STRING "Windows RT")
elseif(WP8)
set(SYSTEM_STRING "Windows Phone 8")
else()
set(WINDOWS TRUE)
set(SYSTEM_STRING "Windows Desktop")
endif()
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
if(ANDROID)
set(SYSTEM_STRING "Android")
else()
set(LINUX TRUE)
set(SYSTEM_STRING "Linux")
endif()
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
if(IOS)
set(SYSTEM_STRING "IOS")
else()
set(MACOSX TRUE)
set(APPLE TRUE)
set(SYSTEM_STRING "Mac OSX")
endif()
endif()

if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(COMPILER_STRING ${CMAKE_CXX_COMPILER_ID})
set(CLANG TRUE)
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
if(MINGW)
set(COMPILER_STRING "Mingw GCC")
else()
set(COMPILER_STRING "GCC")
endif()
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
set(COMPILER_STRING "${CMAKE_CXX_COMPILER_ID} C++")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
set(COMPILER_STRING "Visual Studio C++")
endif()

if(CMAKE_CROSSCOMPILING)
set(BUILDING_STRING "It appears you are cross compiling for ${SYSTEM_STRING} with ${COMPILER_STRING}")
else()
set(BUILDING_STRING "It appears you are builing natively for ${SYSTEM_STRING} with ${COMPILER_STRING}")
endif()
3 changes: 2 additions & 1 deletion templates/cocos2dx_files.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
"build/wp8/wp8_precompiled_shaders.txt",
"cmake/BuildHelpers.CMakeLists.txt",
"cmake/Modules/CMakeParseArguments.cmake",
"cmake/Modules/CocosBuildHelpers.cmake",
"cmake/Modules/FindChipmunk.cmake",
"cmake/Modules/FindGLFW3.cmake",
"cmake/Modules/FindPackageHandleStandardArgs.cmake",
Expand Down Expand Up @@ -5556,4 +5557,4 @@
"tools/tolua/cocos2dx_ui.ini",
"tools/tolua/genbindings.py"
]
}
}
3 changes: 2 additions & 1 deletion templates/cpp-template-default/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ cmake_minimum_required(VERSION 2.8)
set(APP_NAME MyGame)
project (${APP_NAME})

include(cocos2d/cmake/BuildHelpers.CMakeLists.txt)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cocos2d/cmake/Modules/")
include(CocosBuildHelpers)

option(DEBUG_MODE "Debug or release?" ON)

Expand Down
3 changes: 2 additions & 1 deletion templates/lua-template-default/frameworks/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ cmake_minimum_required(VERSION 2.8)
set(APP_NAME HelloLua)
project (${APP_NAME})

include(cocos2d-x/cmake/BuildHelpers.CMakeLists.txt)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cocos2d/cmake/Modules/")
include(CocosBuildHelpers)

option(DEBUG_MODE "Debug or release?" ON)

Expand Down

0 comments on commit 77ab866

Please sign in to comment.