sdl

FORK: Simple Directmedia Layer
git clone https://git.neptards.moe/neptards/sdl.git
Log | Files | Refs

CMakeLists.txt (5975B)


      1 cmake_minimum_required(VERSION 2.8.11)
      2 project(SDL2 C)
      3 
      4 # Global settings for all of the test targets
      5 # FIXME: is this wrong?
      6 remove_definitions(-DUSING_GENERATED_CONFIG_H)
      7 link_libraries(SDL2_test SDL2-static)
      8 
      9 # FIXME: Parent directory CMakeLists.txt only sets these for mingw/cygwin,
     10 # but we need them for VS as well.
     11 if(WINDOWS)
     12     link_libraries(SDL2main)
     13     add_definitions(-Dmain=SDL_main)
     14 endif()
     15 
     16 add_executable(checkkeys checkkeys.c)
     17 add_executable(loopwave loopwave.c)
     18 add_executable(loopwavequeue loopwavequeue.c)
     19 add_executable(testresample testresample.c)
     20 add_executable(testaudioinfo testaudioinfo.c)
     21 
     22 file(GLOB TESTAUTOMATION_SOURCE_FILES testautomation*.c)
     23 add_executable(testautomation ${TESTAUTOMATION_SOURCE_FILES})
     24 
     25 add_executable(testmultiaudio testmultiaudio.c)
     26 add_executable(testaudiohotplug testaudiohotplug.c)
     27 add_executable(testaudiocapture testaudiocapture.c)
     28 add_executable(testatomic testatomic.c)
     29 add_executable(testintersections testintersections.c)
     30 add_executable(testrelative testrelative.c)
     31 add_executable(testhittesting testhittesting.c)
     32 add_executable(testdraw2 testdraw2.c)
     33 add_executable(testdrawchessboard testdrawchessboard.c)
     34 add_executable(testdropfile testdropfile.c)
     35 add_executable(testerror testerror.c)
     36 add_executable(testfile testfile.c)
     37 add_executable(testgamecontroller testgamecontroller.c)
     38 add_executable(testgesture testgesture.c)
     39 add_executable(testgl2 testgl2.c)
     40 add_executable(testgles testgles.c)
     41 add_executable(testgles2 testgles2.c)
     42 add_executable(testhaptic testhaptic.c)
     43 add_executable(testhotplug testhotplug.c)
     44 add_executable(testrumble testrumble.c)
     45 add_executable(testthread testthread.c)
     46 add_executable(testiconv testiconv.c)
     47 add_executable(testime testime.c)
     48 add_executable(testjoystick testjoystick.c)
     49 add_executable(testkeys testkeys.c)
     50 add_executable(testloadso testloadso.c)
     51 add_executable(testlock testlock.c)
     52 
     53 if(APPLE)
     54     add_executable(testnative testnative.c
     55                               testnativecocoa.m
     56                               testnativex11.c)
     57 elseif(WINDOWS)
     58     add_executable(testnative testnative.c testnativew32.c)
     59 elseif(UNIX)
     60     add_executable(testnative testnative.c testnativex11.c)
     61 endif()
     62 
     63 add_executable(testoverlay2 testoverlay2.c testyuv_cvt.c)
     64 add_executable(testplatform testplatform.c)
     65 add_executable(testpower testpower.c)
     66 add_executable(testfilesystem testfilesystem.c)
     67 add_executable(testrendertarget testrendertarget.c)
     68 add_executable(testscale testscale.c)
     69 add_executable(testsem testsem.c)
     70 add_executable(testshader testshader.c)
     71 add_executable(testshape testshape.c)
     72 add_executable(testsprite2 testsprite2.c)
     73 add_executable(testspriteminimal testspriteminimal.c)
     74 add_executable(teststreaming teststreaming.c)
     75 add_executable(testtimer testtimer.c)
     76 add_executable(testver testver.c)
     77 add_executable(testviewport testviewport.c)
     78 add_executable(testwm2 testwm2.c)
     79 add_executable(testyuv testyuv.c testyuv_cvt.c)
     80 add_executable(torturethread torturethread.c)
     81 add_executable(testrendercopyex testrendercopyex.c)
     82 add_executable(testmessage testmessage.c)
     83 add_executable(testdisplayinfo testdisplayinfo.c)
     84 add_executable(testqsort testqsort.c)
     85 add_executable(testbounds testbounds.c)
     86 add_executable(testcustomcursor testcustomcursor.c)
     87 add_executable(controllermap controllermap.c)
     88 add_executable(testvulkan testvulkan.c)
     89 add_executable(testoffscreen testoffscreen.c)
     90 
     91 # HACK: Dummy target to cause the resource files to be copied to the build directory.
     92 # Need to make it an executable so we can use the TARGET_FILE_DIR generator expression.
     93 # This is needed so they get copied to the correct Debug/Release subdirectory in Xcode.
     94 file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/resources_dummy.c "int main(int argc, const char **argv){ return 1; }\n")
     95 add_executable(SDL2_test_resoureces ${CMAKE_CURRENT_BINARY_DIR}/resources_dummy.c)
     96 
     97 file(GLOB RESOURCE_FILES *.bmp *.wav moose.dat utf8.txt)
     98 foreach(RESOURCE_FILE ${RESOURCE_FILES})
     99     add_custom_command(TARGET SDL2_test_resoureces POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${RESOURCE_FILE} $<TARGET_FILE_DIR:SDL2_test_resoureces>)
    100 endforeach(RESOURCE_FILE)
    101 
    102 file(COPY ${RESOURCE_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
    103 
    104 # TODO: Might be easier to make all targets depend on the resources...?
    105 
    106 set(NEEDS_RESOURCES
    107     testscale
    108     testrendercopyex
    109     controllermap
    110     testyuv
    111     testgamecontroller
    112     testshape
    113     testshader
    114     testnative
    115     testspriteminimal
    116     testautomation
    117     testcustomcursor
    118     testrendertarget
    119     testsprite2
    120     loopwave
    121     loopwavequeue
    122     testresample
    123     testaudiohotplug
    124     testmultiaudio
    125 )
    126 foreach(APP IN LISTS NEEDS_RESOURCES)
    127     add_dependencies(${APP} SDL2_test_resoureces)
    128     if(APPLE)
    129         # Make sure resource files get installed into macOS/iOS .app bundles.  
    130         target_sources(${APP} PRIVATE "${RESOURCE_FILES}")
    131         set_target_properties(${APP} PROPERTIES RESOURCE "${RESOURCE_FILES}")
    132     endif()
    133 endforeach()
    134 
    135 # Set Apple App ID / Bundle ID.  This is needed to launch apps on some Apple
    136 # platforms (iOS, for example).
    137 if(APPLE)
    138     if(${CMAKE_VERSION} VERSION_LESS "3.7.0")
    139         # CMake's 'BUILDSYSTEM_TARGETS' property is only available in
    140         # CMake 3.7 and above.
    141         message(WARNING "Unable to set Bundle ID for Apple .app builds due to old CMake (pre 3.7).")
    142     else()
    143         get_property(TARGETS DIRECTORY ${CMAKE_CURRENT_LIST_DIR} PROPERTY BUILDSYSTEM_TARGETS)
    144         foreach(CURRENT_TARGET IN LISTS TARGETS)
    145             get_property(TARGET_TYPE TARGET ${CURRENT_TARGET} PROPERTY TYPE)
    146             if(TARGET_TYPE STREQUAL "EXECUTABLE")
    147                 set_target_properties("${CURRENT_TARGET}" PROPERTIES
    148                     MACOSX_BUNDLE_GUI_IDENTIFIER "org.libsdl.${CURRENT_TARGET}"
    149                     MACOSX_BUNDLE_BUNDLE_VERSION "${SDL_VERSION}"
    150                     MACOSX_BUNDLE_SHORT_VERSION_STRING "${SDL_VERSION}"
    151                 )
    152             endif()
    153         endforeach()
    154     endif()
    155 endif()