#------------------------------------------------------------------- # This file is part of the CMake build system for Scol # # The contents of this file are placed in the public domain. Feel # free to make use of it in any way you like. #------------------------------------------------------------------- ############################################################ # include/Scol core library ############################################################ PROJECT(kernel) # define os and compiler detection headers. set (OS_DETECTION_HEADER_FILES include/scolPrerequisites.h include/scolPlatform.h include/scolGNUC.h include/scolLinux.h include/scolMSC.h include/scolMsWindows.h include/scolStandardHeaders.h ) # define header and source files for the library set (CORE_HEADER_FILES include/align.h include/base.h include/base64.h include/baselib.h include/bignum.h include/blg_memory.h include/cbmachine.h include/cipher.h include/codec.h include/debug.h include/fifo.h include/listlab.h include/loadpak.h include/logger.h include/mainscol.h include/mbytec2.h include/md5.h include/mzip.h include/opcode.h include/scol.h include/scolCbMachine.h include/scolConstants.h include/scolErrorCodes.h include/scolMachine.h include/scolMacros.h include/scolMMemory.h include/scolobj.h include/scolpack.h include/scolPackDir.h include/scolplugin.h include/scolsign.h include/scolSpecialsFunctions.h include/scolSystem.h include/scolTypeConversion.h include/script.h include/stack.h include/textspan.h ) set (CORE_SOURCE_FILES src/base64.cpp src/baselib.cpp src/bignum.c src/cipher.cpp src/codec.cpp src/cpu_detect.c src/debug.cpp src/except.cpp src/fifo.c src/listlab.c src/loadpak.cpp src/logger.c src/mainscol.c src/mbignum.c src/mbytec2.c src/md5.c src/mmemory.c src/mzip.c src/rsa.cpp src/scol.c src/scolobj.c src/scolpack.c src/scolsign.cpp src/scolSpecialsFunctions.cpp src/scolsys.cpp src/script.cpp ) set (3D_HEADER_FILES include/3d/display.h include/3d/register.h ) set (3D_SOURCE_FILES src/3d/display.cpp src/3d/register.cpp ) set (COMMON_HEADER_FILES include/common/common.h include/common/common3d.h include/common/cpu_detect.h include/common/except.h include/common/inetconnect.h include/common/kernel.h include/common/proxyhttp.h include/common/socket.h include/common/socks.h include/common/vscol.h ) set (COMPILER_HEADER_FILES include/compiler/coder.h include/compiler/lexer.h include/compiler/token.h include/compiler/typmisc.h ) set (COMPILER_SOURCE_FILES src/compiler/coder.cpp src/compiler/lexer.cpp src/compiler/mcompile.cpp src/compiler/readmag2.cpp src/compiler/readmagm.cpp src/compiler/readmagv.cpp src/compiler/token.cpp src/compiler/typcheck.cpp src/compiler/typmag2.cpp src/compiler/typmagm.cpp src/compiler/typmagv.cpp src/compiler/typmisc.cpp ) set (NET_HEADER_FILES include/net/inet.h include/net/telnet.h include/net/UPnP.h include/net/UPnP_Consts.h include/net/UPnP_Types.h ) set (NET_SOURCE_FILES src/net/httpserver.c src/net/inet.c src/net/telnet.c src/net/UPnP.cpp ) set (VM_HEADER_FILES include/vm/interp.h include/vm/mbytec.h ) set (VM_SOURCE_FILES src/vm/access src/vm/array src/vm/basic src/vm/comm src/vm/debug src/vm/float src/vm/integer src/vm/interp.cpp src/vm/mbytec.cpp src/vm/tuple ) # Add directories includes include_directories(include) # This is how visual studio directories (or filters) are generated. source_group(Header\ Files\\3d FILES ${3D_HEADER_FILES}) source_group(Header\ Files\\common FILES ${COMMON_HEADER_FILES}) source_group(Header\ Files\\compiler FILES ${COMPILER_HEADER_FILES}) source_group(Header\ Files\\net FILES ${NET_HEADER_FILES}) source_group(Header\ Files\\vm FILES ${VM_HEADER_FILES}) source_group(Header\ Files\\OS\ detection FILES ${OS_DETECTION_HEADER_FILES}) # Same thing for sources files source_group(Source\ Files\\3d FILES ${3D_SOURCE_FILES}) source_group(Source\ Files\\compiler FILES ${COMPILER_SOURCE_FILES}) source_group(Source\ Files\\net FILES ${NET_SOURCE_FILES}) source_group(Source\ Files\\vm FILES ${VM_SOURCE_FILES}) # Add platform specific files if (WIN32) set(RESOURCE_FILES include/OS_specific/windows/resource.h src/OS_specific/windows/scol\ win.rc ) set(OS_WINDOWS_HEADER_FILES include/OS_specific/windows/Http.h include/OS_specific/windows/MYLOOP.H include/OS_specific/windows/obj_handlers.h include/OS_specific/windows/objbitmap.h include/OS_specific/windows/Objstr.h include/OS_specific/windows/Objwin.h include/OS_specific/windows/performanceinfo.h include/OS_specific/windows/registry.h include/OS_specific/windows/Terminal.h include/OS_specific/windows/winscol.h ) set(OS_WINDOWS_SOURCE_FILES src/OS_specific/windows/objbitmap.c src/OS_specific/windows/Terminal.c src/OS_specific/windows/performanceinfo.c src/OS_specific/windows/hardload.c src/OS_specific/windows/Http.c src/OS_specific/windows/myloop.cpp src/OS_specific/windows/timer.c src/OS_specific/windows/quota.c src/OS_specific/windows/net/proxyhttp.c src/OS_specific/windows/net/socks.c src/OS_specific/windows/net/Socket.c src/OS_specific/windows/net/inetconnect.cpp ) set(OS_SPECIFIC_HEADER_FILES ${OS_WINDOWS_HEADER_FILES} ${RESOURCE_FILES} ) set(OS_SPECIFIC_SOURCE_FILES ${OS_WINDOWS_SOURCE_FILES} ${RESOURCE_FILES} ) source_group(Header\ Files\\OS\ specific FILES ${OS_WINDOWS_HEADER_FILES}) source_group(Source\ Files\\OS\ specific FILES ${OS_WINDOWS_SOURCE_FILES}) source_group(Resources FILES ${RESOURCE_FILES}) # Adding windows libs list(APPEND PLATFORM_LIBS winmm.lib wsock32.lib wininet.lib comctl32.lib) # Add definition for P4 optimizations, warnings removal. add_definitions(-DOPTI_P4 -D_CRT_SECURE_NO_WARNINGS) elseif (UNIX) set(OS_SPECIFIC_HEADER_FILES include/OS_specific/linux/scolFindData.h ) set(OS_SPECIFIC_SOURCE_FILES src/OS_specific/linux/scolFindData.cpp ) set(PLATFORM_LIBS ${X11_LIBRARIES} ${X11_Xt_LIB} pthread) find_library(DL_LIBRARY NAMES dl dlsym) mark_as_advanced(DL_LIBRARY) if (DL_LIBRARY) list(APPEND PLATFORM_LIBS dl) endif () # Add definition to enable msse2 add_definitions(-msse2) endif () # Exporting symbols add_definitions(-DSCOL_NON_CLIENT_BUILD) # Linking to zlib set(LIBRARIES ${PLATFORM_LIBS} ${ZLIB_LIBRARY} ) # setup Scol kernel target add_library(kernel ${Scol_LIB_TYPE} ${OS_DETECTION_HEADER_FILES} ${CORE_HEADER_FILES} ${CORE_SOURCE_FILES} ${3D_HEADER_FILES} ${3D_SOURCE_FILES} ${COMMON_HEADER_FILES} ${COMPILER_HEADER_FILES} ${COMPILER_SOURCE_FILES} ${NET_HEADER_FILES} ${NET_SOURCE_FILES} ${VM_HEADER_FILES} ${VM_SOURCE_FILES} ${OS_SPECIFIC_HEADER_FILES} ${OS_SPECIFIC_SOURCE_FILES} ) # set the dll output name (if not defined, it'll be the target name, in our case "kernel.dll") and version. set_target_properties(kernel PROPERTIES OUTPUT_NAME scol VERSION ${Scol_VERSION} SOVERSION ${Scol_VERSION_MAJOR} TARGET_PDB kernel) target_link_libraries(kernel ${LIBRARIES}) # install Scol kernel scol_config_lib(kernel) install(FILES ${OS_DETECTION_HEADER_FILES} ${CORE_HEADER_FILES} DESTINATION include/SCOL) install(FILES ${OS_SPECIFIC_HEADER_FILES} DESTINATION include/SCOL/OS_specific/windows) install(FILES ${3D_HEADER_FILES} DESTINATION include/SCOL/3d) install(FILES ${COMMON_HEADER_FILES} DESTINATION include/SCOL/common) install(FILES ${COMPILER_HEADER_FILES} DESTINATION include/SCOL/compiler) install(FILES ${NET_HEADER_FILES} DESTINATION include/SCOL/net) install(FILES ${VM_HEADER_FILES} DESTINATION include/SCOL/vm)