project(Angelscript) set(INCLUDE_FILES include/angelscript.h include/as_array.h include/as_atomic.h include/as_builder.h include/as_bytecode.h include/as_callfunc.h include/as_compiler.h include/as_config.h include/as_configgroup.h include/as_context.h include/as_criticalsection.h include/as_datatype.h include/as_debug.h include/as_gc.h include/as_generic.h include/as_map.h include/as_memory.h include/as_module.h include/as_namespace.h include/as_objecttype.h include/as_outputbuffer.h include/as_parser.h include/as_property.h include/as_restore.h include/as_scriptcode.h include/as_scriptengine.h include/as_scriptfunction.h include/as_scriptnode.h include/as_scriptobject.h include/as_string.h include/as_string_util.h include/as_symboltable.h include/as_texts.h include/as_thread.h include/as_tokendef.h include/as_tokenizer.h include/as_typeinfo.h include/as_variablescope.h include/scriptstdstring.h include/scriptarray.h) set(SOURCE_FILES src/as_atomic.cpp src/as_builder.cpp src/as_bytecode.cpp src/as_callfunc.cpp src/as_callfunc_mips.cpp src/as_callfunc_x86.cpp src/as_callfunc_x64_gcc.cpp src/as_callfunc_x64_msvc.cpp src/as_callfunc_x64_mingw.cpp src/as_compiler.cpp src/as_configgroup.cpp src/as_context.cpp src/as_datatype.cpp src/as_gc.cpp src/as_generic.cpp src/as_globalproperty.cpp src/as_memory.cpp src/as_module.cpp src/as_objecttype.cpp src/as_outputbuffer.cpp src/as_parser.cpp src/as_restore.cpp src/as_scriptcode.cpp src/as_scriptengine.cpp src/as_scriptfunction.cpp src/as_scriptnode.cpp src/as_scriptobject.cpp src/as_string.cpp src/as_string_util.cpp src/as_thread.cpp src/as_tokenizer.cpp src/as_typeinfo.cpp src/as_variablescope.cpp src/scriptstdstring.cpp src/scriptstdstring_utils.cpp src/scriptarray.cpp) add_definitions(-DANGELSCRIPT_EXPORT -D_LIB) if(MSVC AND CMAKE_CL_64) enable_language(ASM_MASM) if(CMAKE_ASM_MASM_COMPILER_WORKS) set(ANGELSCRIPT_SOURCE ${ANGELSCRIPT_SOURCE} src/as_callfunc_x64_msvc_asm.asm) else() message(FATAL ERROR "MSVC x86_64 target requires a working assembler") endif() endif() if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^arm") enable_language(ASM) if(CMAKE_ASM_COMPILER_WORKS) set(ANGELSCRIPT_SOURCE ${ANGELSCRIPT_SOURCE} src/as_callfunc_arm.cpp src/as_callfunc_arm_gcc.S) set_property(SOURCE src/as_callfunc_arm_gcc.S APPEND PROPERTY COMPILE_FLAGS " -Wa,-mimplicit-it=always") else() message(FATAL ERROR "ARM target requires a working assembler") endif() endif() include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) if(MSVC) set(CMAKE_DEBUG_POSTFIX "d") add_definitions(-D_CRT_SECURE_NO_WARNINGS) endif() # Fix x64 issues on Linux if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64" AND NOT APPLE) add_definitions(-fPIC) endif() add_library(Angelscript ${SOURCE_FILES} ${INCLUDE_FILES}) target_link_libraries(Angelscript ${CMAKE_THREAD_LIBS_INIT}) if(UNIX) target_link_libraries(Angelscript pthread) endif() include_directories(include) if(MSVC) set_target_properties(${ANGELSCRIPT_LIBRARY_NAME} PROPERTIES COMPILE_FLAGS "/MP") endif()