Files
GDevelop/Extensions/ParticleSystem/CMakeLists.txt

161 lines
8.4 KiB
CMake

cmake_minimum_required(VERSION 2.6)
cmake_policy(SET CMP0015 NEW)
project(ParticleSystem)
#Sanity checks and options
IF ("${CMAKE_BUILD_TYPE}" STREQUAL "")
message( "CMAKE_BUILD_TYPE is empty, assuming build type is Release" )
set(CMAKE_BUILD_TYPE Release)
ENDIF()
if(CMAKE_COMPILER_IS_GNUCXX)
IF ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
set(CMAKE_EXE_LINKER_FLAGS "-s") ## Strip binary
ENDIF()
endif()
#Common directories:
###
set(GD_base_dir ${CMAKE_CURRENT_SOURCE_DIR}/../..)
set(GDCORE_include_dir ${GD_base_dir}/Core)
set(GDCORE_lib_dir ${GD_base_dir}/Binaries/Output/${CMAKE_BUILD_TYPE}_${CMAKE_SYSTEM_NAME})
set(GDCpp_include_dir ${GD_base_dir}/GDCpp)
set(GDCpp_lib_dir ${GD_base_dir}/Binaries/Output/${CMAKE_BUILD_TYPE}_${CMAKE_SYSTEM_NAME})
set(GDCpp_Runtime_lib_dir ${GD_base_dir}/Binaries/Output/${CMAKE_BUILD_TYPE}_${CMAKE_SYSTEM_NAME}/CppPlatform/Runtime)
IF(WIN32) #Special case for wxWidgets on Windows
set(wxwidgets_include_dir ${GD_base_dir}/ExtLibs/wxwidgets/include)
IF(CMAKE_BUILD_TYPE MATCHES DEBUG)
set(wxwidgets_include_dir ${wxwidgets_include_dir} ${GD_base_dir}/ExtLibs/wxwidgets/lib/gcc_dll/mswud)
ELSE()
set(wxwidgets_include_dir ${wxwidgets_include_dir} ${GD_base_dir}/ExtLibs/wxwidgets/lib/gcc_dll/mswu)
ENDIF(CMAKE_BUILD_TYPE MATCHES DEBUG)
set(wxwidgets_lib_dir ${GD_base_dir}/ExtLibs/wxwidgets/lib/gcc_dll)
ENDIF(WIN32)
include_directories(${sfml_include_dir})
include_directories(${GDCORE_include_dir})
include_directories(${GDCpp_include_dir})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/SPARK/include)
IF(WIN32) #Special case for wxWidgets on Windows
include_directories(${wxwidgets_include_dir})
ELSE()
find_package(wxWidgets COMPONENTS core base adv net ribbon stc aui propgrid richtext html xrc REQUIRED)
include( "${wxWidgets_USE_FILE}" )
include_directories(${GTK_INCLUDE_DIRS})
link_directories(${GTK_LIBRARY_DIRS})
ENDIF(WIN32)
IF(NOT TARGET GDCore) #Ensure that the build will work even when GDCore is not in the target list.
link_directories(${GDCORE_lib_dir})
ENDIF()
IF(NOT TARGET GDCpp) #Ensure that the build will work even when GDC++ is not in the target list.
link_directories(${GDCpp_lib_dir})
ENDIF()
IF(NOT TARGET GDCpp_Runtime)
add_library(GDCpp_Runtime SHARED IMPORTED)
IF(WIN32)
set_property(TARGET GDCpp_Runtime PROPERTY IMPORTED_LOCATION ${GDCpp_Runtime_lib_dir}/GDCpp.dll)
set_property(TARGET GDCpp_Runtime PROPERTY IMPORTED_IMPLIB ${GDCpp_Runtime_lib_dir}/libGDCpp.dll.a)
ELSE()
set_property(TARGET GDCpp_Runtime PROPERTY IMPORTED_LOCATION ${GDCpp_Runtime_lib_dir}/libGDCpp.so)
#set_property(TARGET GDCpp_Runtime PROPERTY IMPORTED_IMPLIB ${GDCpp_Runtime_lib_dir}/libGDCpp.so.a)
ENDIF(WIN32)
ENDIF()
#Defines
###
set(ParticleSystem_extra_definitions "${ParticleSystem_extra_definitions} GD_IDE_ONLY=1;")
IF(CMAKE_BUILD_TYPE MATCHES DEBUG)
add_definitions( -DDEBUG )
IF(WIN32)
add_definitions( __WXDEBUG__ )
ENDIF(WIN32)
ELSEIF ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
add_definitions( -DRELEASE )
ELSE()
add_definitions( -DDEV )
ENDIF(CMAKE_BUILD_TYPE MATCHES DEBUG)
IF(WIN32)
add_definitions( -DWINDOWS )
add_definitions( "-DGD_CORE_API=__declspec(dllimport)" )
add_definitions( "-DGD_API=__declspec(dllimport)" )
add_definitions( "-DGD_EXTENSION_API=__declspec(dllexport)" )
add_definitions( -D__GNUWIN32__ )
add_definitions( -D__WXMSW__ )
add_definitions( -DwxUSE_UNICODE=1 )
add_definitions( -DWXUSINGDLL )
ELSE()
IF(APPLE)
add_definitions( -DMACOS )
ELSE()
add_definitions( -DLINUX )
ENDIF()
add_definitions( -DGD_API= )
add_definitions( -DGD_CORE_API= )
add_definitions( -DGD_EXTENSION_API= )
add_definitions(${GTK_CFLAGS_OTHER})
ENDIF(WIN32)
#The targets
###
include_directories(.)
file(GLOB source_files * "SPARK/src/SPK_All.cpp" "SPARK/src/SPK_GL_All.cpp") #Also compiles the SPARK particle engine files.
add_library(ParticleSystem SHARED ${source_files})
add_library(ParticleSystem_Runtime SHARED ${source_files})
set_target_properties(ParticleSystem PROPERTIES COMPILE_DEFINITIONS "${ParticleSystem_extra_definitions}")
set_target_properties(ParticleSystem_Runtime PROPERTIES COMPILE_DEFINITIONS "${ParticleSystem_Runtime_extra_definitions}")
set_target_properties(ParticleSystem PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${GD_base_dir}/Binaries/Output/${CMAKE_BUILD_TYPE}_${CMAKE_SYSTEM_NAME}/CppPlatform/Extensions")
set_target_properties(ParticleSystem PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${GD_base_dir}/Binaries/Output/${CMAKE_BUILD_TYPE}_${CMAKE_SYSTEM_NAME}/CppPlatform/Extensions")
set_target_properties(ParticleSystem PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${GD_base_dir}/Binaries/Output/${CMAKE_BUILD_TYPE}_${CMAKE_SYSTEM_NAME}/CppPlatform/Extensions")
set_target_properties(ParticleSystem_Runtime PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${GD_base_dir}/Binaries/Output/${CMAKE_BUILD_TYPE}_${CMAKE_SYSTEM_NAME}/CppPlatform/Extensions/Runtime")
set_target_properties(ParticleSystem_Runtime PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${GD_base_dir}/Binaries/Output/${CMAKE_BUILD_TYPE}_${CMAKE_SYSTEM_NAME}/CppPlatform/Extensions/Runtime")
set_target_properties(ParticleSystem_Runtime PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${GD_base_dir}/Binaries/Output/${CMAKE_BUILD_TYPE}_${CMAKE_SYSTEM_NAME}/CppPlatform/Extensions/Runtime")
set_target_properties(ParticleSystem_Runtime PROPERTIES RUNTIME_OUTPUT_NAME "ParticleSystem")
set_target_properties(ParticleSystem_Runtime PROPERTIES LIBRARY_OUTPUT_NAME "ParticleSystem")
set_target_properties(ParticleSystem_Runtime PROPERTIES ARCHIVE_OUTPUT_NAME "ParticleSystem")
set_target_properties(ParticleSystem PROPERTIES PREFIX "")
set_target_properties(ParticleSystem_Runtime PROPERTIES PREFIX "")
IF(WIN32)
set_target_properties(ParticleSystem PROPERTIES SUFFIX ".xgdwe")
set_target_properties(ParticleSystem_Runtime PROPERTIES SUFFIX ".xgdw")
ELSE()
set_target_properties(ParticleSystem PROPERTIES SUFFIX ".xgde")
set_target_properties(ParticleSystem_Runtime PROPERTIES SUFFIX ".xgd")
ENDIF(WIN32)
set_target_properties(ParticleSystem_Runtime PROPERTIES RUNTIME_OUTPUT_NAME "ParticleSystem")
#Linker files for the IDE extension
###
target_link_libraries(ParticleSystem GDCore)
target_link_libraries(ParticleSystem GDCpp)
IF(WIN32)
target_link_libraries(ParticleSystem sfml-audio sfml-graphics sfml-window sfml-network sfml-system)
IF(CMAKE_BUILD_TYPE MATCHES DEBUG)
target_link_libraries(ParticleSystem ${wxwidgets_lib_dir}/libwxmsw30ud_xrc.a ${wxwidgets_lib_dir}/libwxmsw30ud_stc.a ${wxwidgets_lib_dir}/libwxmsw30ud_richtext.a ${wxwidgets_lib_dir}/libwxmsw30ud_propgrid.a ${wxwidgets_lib_dir}/libwxmsw30ud_ribbon.a ${wxwidgets_lib_dir}/libwxmsw30ud_aui.a ${wxwidgets_lib_dir}/libwxmsw30ud_adv.a ${wxwidgets_lib_dir}/libwxmsw30ud_html.a ${wxwidgets_lib_dir}/libwxmsw30ud_core.a ${wxwidgets_lib_dir}/libwxbase30ud_xml.a ${wxwidgets_lib_dir}/libwxbase30ud_net.a ${wxwidgets_lib_dir}/libwxexpatd.a ${wxwidgets_lib_dir}/libwxbase30ud.a ${wxwidgets_lib_dir}/libwxpngd.a ${wxwidgets_lib_dir}/libwxjpegd.a ${wxwidgets_lib_dir}/libwxzlibd.a ${wxwidgets_lib_dir}/libwxtiffd.a)
ELSE()
target_link_libraries(ParticleSystem ${wxwidgets_lib_dir}/libwxmsw30u_xrc.a ${wxwidgets_lib_dir}/libwxmsw30u_stc.a ${wxwidgets_lib_dir}/libwxmsw30u_richtext.a ${wxwidgets_lib_dir}/libwxmsw30u_propgrid.a ${wxwidgets_lib_dir}/libwxmsw30u_ribbon.a ${wxwidgets_lib_dir}/libwxmsw30u_aui.a ${wxwidgets_lib_dir}/libwxmsw30u_adv.a ${wxwidgets_lib_dir}/libwxmsw30u_html.a ${wxwidgets_lib_dir}/libwxmsw30u_core.a ${wxwidgets_lib_dir}/libwxbase30u_xml.a ${wxwidgets_lib_dir}/libwxbase30u_net.a ${wxwidgets_lib_dir}/libwxexpat.a ${wxwidgets_lib_dir}/libwxbase30u.a ${wxwidgets_lib_dir}/libwxpng.a ${wxwidgets_lib_dir}/libwxjpeg.a ${wxwidgets_lib_dir}/libwxzlib.a ${wxwidgets_lib_dir}/libwxtiff.a)
ENDIF(CMAKE_BUILD_TYPE MATCHES DEBUG)
target_link_libraries(ParticleSystem ws2_32 user32 opengl32 glu32)
ELSE()
target_link_libraries(ParticleSystem sfml-audio sfml-graphics sfml-window sfml-network sfml-system)
target_link_libraries(ParticleSystem ${wxWidgets_LIBRARIES})
target_link_libraries(ParticleSystem ${GTK_LIBRARIES})
ENDIF(WIN32)
#Linker files for the GD C++ Runtime extension
###
target_link_libraries(ParticleSystem_Runtime GDCpp_Runtime)
IF(WIN32)
target_link_libraries(ParticleSystem_Runtime sfml-audio sfml-graphics sfml-window sfml-network sfml-system)
target_link_libraries(ParticleSystem_Runtime ws2_32 user32 opengl32 glu32)
ELSE()
target_link_libraries(ParticleSystem_Runtime sfml-audio sfml-graphics sfml-window sfml-network sfml-system)
ENDIF(WIN32)