You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
4.5 KiB
CMake
135 lines
4.5 KiB
CMake
message(STATUS "**** ${PROJECT_NAME} ****")
|
|
|
|
set(PDCURSES_SRCDIR ${CMAKE_SOURCE_DIR})
|
|
set(PDCURSES_DIST ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE})
|
|
|
|
set(osdir ${PDCURSES_SRCDIR}/${PROJECT_NAME})
|
|
set(demodir ${PDCURSES_SRCDIR}/demos)
|
|
|
|
set(pdc_src_files
|
|
${osdir}/pdcclip.c
|
|
${osdir}/pdcdisp.c
|
|
${osdir}/pdcgetsc.c
|
|
${osdir}/pdckbd.c
|
|
${osdir}/pdcscrn.c
|
|
${osdir}/pdcsetsc.c
|
|
${osdir}/pdcutil.c
|
|
)
|
|
|
|
include_directories (..)
|
|
include_directories (${osdir})
|
|
|
|
|
|
if(WIN32 AND NOT WATCOM)
|
|
include(dll_version)
|
|
list(APPEND pdc_src_files ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
|
|
|
|
add_definitions(-D_WIN32 -D_CRT_SECURE_NO_WARNINGS)
|
|
|
|
if(${TARGET_ARCH} STREQUAL "ARM" OR ${TARGET_ARCH} STREQUAL "ARM64")
|
|
add_definitions(-D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1)
|
|
endif()
|
|
|
|
set(EXTRA_LIBS gdi32.lib winspool.lib shell32.lib ole32.lib comdlg32.lib advapi32.lib)
|
|
set(WINCON_WINGUI_DEP_LIBS winmm.lib)
|
|
set(SDL2_DEP_LIBRARIES version.lib winmm.lib imm32.lib)
|
|
elseif(WATCOM_WIN32)
|
|
set(EXTRA_LIBS "")
|
|
set(WINCON_WINGUI_DEP_LIBS winmm.lib)
|
|
set(SDL2_DEP_LIBRARIES "dl")
|
|
elseif(APPLE)
|
|
set(EXTRA_LIBS "")
|
|
set(WINCON_WINGUI_DEP_LIBS "")
|
|
set(SDL2_DEP_LIBRARIES "dl")
|
|
else()
|
|
set(EXTRA_LIBS "")
|
|
set(WINCON_WINGUI_DEP_LIBS "")
|
|
set(SDL2_DEP_LIBRARIES "dl")
|
|
endif()
|
|
|
|
if (APPLE)
|
|
find_library(COREVIDEO CoreVideo)
|
|
list(APPEND EXTRA_LIBS ${COREVIDEO})
|
|
|
|
find_library(COCOA_LIBRARY Cocoa)
|
|
list(APPEND EXTRA_LIBS ${COCOA_LIBRARY})
|
|
|
|
find_library(IOKIT IOKit)
|
|
list(APPEND EXTRA_LIBS ${IOKIT})
|
|
|
|
find_library(FORCEFEEDBACK ForceFeedback)
|
|
list(APPEND EXTRA_LIBS ${FORCEFEEDBACK})
|
|
|
|
find_library(CARBON_LIBRARY Carbon)
|
|
list(APPEND EXTRA_LIBS ${CARBON_LIBRARY})
|
|
|
|
find_library(COREAUDIO CoreAudio)
|
|
list(APPEND EXTRA_LIBS ${COREAUDIO})
|
|
|
|
find_library(AUDIOTOOLBOX AudioToolbox)
|
|
list(APPEND EXTRA_LIBS ${AUDIOTOOLBOX})
|
|
|
|
include(CheckLibraryExists)
|
|
check_library_exists(iconv iconv_open "" HAVE_LIBICONV)
|
|
if(HAVE_LIBICONV)
|
|
list(APPEND EXTRA_LIBS iconv)
|
|
endif()
|
|
endif()
|
|
|
|
if(PDC_BUILD_SHARED)
|
|
set(PDCURSE_PROJ ${PROJECT_NAME}_pdcurses)
|
|
add_library(${PDCURSE_PROJ} SHARED ${pdc_src_files} ${pdcurses_src_files})
|
|
|
|
if(APPLE)
|
|
set_target_properties(${PDCURSE_PROJ} PROPERTIES MACOSX_RPATH 1)
|
|
endif()
|
|
|
|
if(${PROJECT_NAME} STREQUAL "sdl2")
|
|
if(PDC_WIDE OR PDC_UTF8)
|
|
target_link_libraries(${PDCURSE_PROJ} ${EXTRA_LIBS}
|
|
${SDL2_LIBRARIES} ${SDL2_TTF_LIBRARY} ${FT2_LIBRARY} ${ZLIB_LIBRARY}
|
|
${SDL2_DEP_LIBRARIES})
|
|
else()
|
|
target_link_libraries(${PDCURSE_PROJ} ${EXTRA_LIBS}
|
|
${SDL2_LIBRARIES} ${SDL2_DEP_LIBRARIES})
|
|
endif()
|
|
elseif((${PROJECT_NAME} STREQUAL "wincon") OR (${PROJECT_NAME} STREQUAL "wingui"))
|
|
target_link_libraries(${PDCURSE_PROJ} ${EXTRA_LIBS} ${WINCON_WINGUI_DEP_LIBS})
|
|
else()
|
|
target_link_libraries(${PDCURSE_PROJ} ${EXTRA_LIBS})
|
|
endif()
|
|
|
|
install(TARGETS ${PDCURSE_PROJ}
|
|
ARCHIVE DESTINATION ${PDCURSES_DIST}/lib/${PROJECT_NAME}
|
|
LIBRARY DESTINATION ${PDCURSES_DIST}/lib/${PROJECT_NAME}
|
|
RUNTIME DESTINATION ${PDCURSES_DIST}/bin/${PROJECT_NAME} COMPONENT applications)
|
|
set_target_properties(${PDCURSE_PROJ} PROPERTIES OUTPUT_NAME "pdcurses")
|
|
else()
|
|
set(PDCURSE_PROJ ${PROJECT_NAME}_pdcursesstatic)
|
|
add_library (${PDCURSE_PROJ} STATIC ${pdc_src_files} ${pdcurses_src_files})
|
|
install (TARGETS ${PDCURSE_PROJ} ARCHIVE DESTINATION ${PDCURSES_DIST}/lib/${PROJECT_NAME} COMPONENT applications)
|
|
set_target_properties(${PDCURSE_PROJ} PROPERTIES OUTPUT_NAME "pdcursesstatic")
|
|
endif()
|
|
|
|
macro (demo_app dir targ)
|
|
set(bin_name "${PROJECT_NAME}_${targ}")
|
|
if(${targ} STREQUAL "tuidemo")
|
|
set(src_files ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/tuidemo.c ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/tui.c)
|
|
else()
|
|
set(src_files ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/${targ}.c)
|
|
endif()
|
|
|
|
add_executable(${bin_name} ${ARGV2} ${src_files})
|
|
|
|
if((${PROJECT_NAME} STREQUAL "wincon") OR (${PROJECT_NAME} STREQUAL "wingui"))
|
|
target_link_libraries(${bin_name} ${PDCURSE_PROJ} ${EXTRA_LIBS} ${WINCON_WINGUI_DEP_LIBS})
|
|
else()
|
|
target_link_libraries(${bin_name} ${PDCURSE_PROJ} ${EXTRA_LIBS})
|
|
endif()
|
|
|
|
add_dependencies(${bin_name} ${PDCURSE_PROJ})
|
|
set_target_properties(${bin_name} PROPERTIES OUTPUT_NAME ${targ})
|
|
|
|
install(TARGETS ${bin_name} RUNTIME DESTINATION ${PDCURSES_DIST}/bin/${PROJECT_NAME} COMPONENT applications)
|
|
endmacro ()
|