diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..22746e269 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,502 @@ +cmake_minimum_required(VERSION 3.11) + +project(Aegisub) + +set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) + +include_directories("build") +include_directories("libaegisub/include") +include_directories("vendor/luajit/include") + +add_library(libaegisub STATIC + libaegisub/common/parser.cpp + libaegisub/ass/dialogue_parser.cpp + libaegisub/ass/time.cpp + libaegisub/ass/uuencode.cpp + libaegisub/audio/provider.cpp + libaegisub/audio/provider_convert.cpp + libaegisub/audio/provider_dummy.cpp + libaegisub/audio/provider_hd.cpp + libaegisub/audio/provider_lock.cpp + libaegisub/audio/provider_pcm.cpp + libaegisub/audio/provider_ram.cpp + libaegisub/common/cajun/elements.cpp + libaegisub/common/cajun/reader.cpp + libaegisub/common/cajun/writer.cpp + libaegisub/lua/modules/lfs.cpp + libaegisub/lua/modules/re.cpp + libaegisub/lua/modules/unicode.cpp + libaegisub/lua/modules/lpeg.c + libaegisub/lua/modules.cpp + libaegisub/lua/script_reader.cpp + libaegisub/lua/utils.cpp + libaegisub/common/calltip_provider.cpp + libaegisub/common/character_count.cpp + libaegisub/common/charset.cpp + libaegisub/common/charset_6937.cpp + libaegisub/common/charset_conv.cpp + libaegisub/common/color.cpp + libaegisub/common/file_mapping.cpp + libaegisub/common/format.cpp + libaegisub/common/fs.cpp + libaegisub/common/hotkey.cpp + libaegisub/common/io.cpp + libaegisub/common/json.cpp + libaegisub/common/kana_table.cpp + libaegisub/common/karaoke_matcher.cpp + libaegisub/common/keyframe.cpp + libaegisub/common/line_iterator.cpp + libaegisub/common/log.cpp + libaegisub/common/mru.cpp + libaegisub/common/option.cpp + libaegisub/common/option_value.cpp + libaegisub/common/path.cpp + libaegisub/common/thesaurus.cpp + libaegisub/common/util.cpp + libaegisub/common/vfr.cpp + libaegisub/common/ycbcr_conv.cpp + libaegisub/common/dispatch.cpp +) +if (UNIX) + target_sources(libaegisub PRIVATE + libaegisub/unix/access.cpp + libaegisub/unix/fs.cpp + libaegisub/unix/log.cpp + libaegisub/unix/path.cpp + libaegisub/unix/util.cpp + ) +elseif(WIN32) + target_sources(libaegisub PRIVATE + libaegisub/windows/access.cpp + libaegisub/windows/charset_conv_win.cpp + libaegisub/windows/fs.cpp + libaegisub/windows/lagi_pre.cpp + libaegisub/windows/log_win.cpp + libaegisub/windows/path_win.cpp + libaegisub/windows/util_win.cpp + ) +endif(UNIX) +SET_TARGET_PROPERTIES(libaegisub PROPERTIES PREFIX "") + +add_library(luabins STATIC + vendor/luabins/src/fwrite.c + vendor/luabins/src/load.c + vendor/luabins/src/luabins.c + vendor/luabins/src/luainternals.c + vendor/luabins/src/save.c + vendor/luabins/src/savebuffer.c + vendor/luabins/src/write.c +) + +add_executable(luajit-minilua vendor/luajit/src/host/minilua.c) +if (NOT MSVC) +target_link_libraries(luajit-minilua m) +endif(NOT MSVC) +add_custom_command(TARGET luajit-minilua POST_BUILD + COMMAND luajit-minilua ../dynasm/dynasm.lua -D P64 -D JIT -D FFI -D FPU -D HFABI -D VER= -o gen/buildvm_arch.h vm_x86.dasc + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/vendor/luajit/src +) + +add_executable(luajit-buildvm + vendor/luajit/src/host/buildvm.c + vendor/luajit/src/host/buildvm_asm.c + vendor/luajit/src/host/buildvm_peobj.c + vendor/luajit/src/host/buildvm_lib.c + vendor/luajit/src/host/buildvm_fold.c +) +target_include_directories(luajit-buildvm PRIVATE vendor/luajit/src vendor/luajit/src/gen) +add_dependencies(luajit-buildvm luajit-minilua) +if(UNIX) + add_custom_command(TARGET luajit-buildvm POST_BUILD + COMMAND luajit-buildvm -m elfasm -o lj_vm.s + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/vendor/luajit/src + ) + set_property(SOURCE vendor/luajit/src/lj_vm.s PROPERTY LANGUAGE C) +elseif(MSVC) + add_custom_command(TARGET luajit-buildvm POST_BUILD + COMMAND luajit-buildvm -m peobj -o lj_vm.obj + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/vendor/luajit/src + ) +endif(UNIX) +add_custom_command(TARGET luajit-buildvm POST_BUILD + COMMAND luajit-buildvm -m ffdef -o gen/lj_ffdef.h lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c + COMMAND luajit-buildvm -m bcdef -o gen/lj_bcdef.h lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c + COMMAND luajit-buildvm -m folddef -o gen/lj_folddef.h lj_opt_fold.c + COMMAND luajit-buildvm -m recdef -o gen/lj_recdef.h lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c + COMMAND luajit-buildvm -m libdef -o gen/lj_libdef.h lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c + COMMAND luajit-buildvm -m vmdef -o jit/vmdef.lua lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/vendor/luajit/src +) + + +add_library(luajit STATIC + vendor/luajit/src/lj_gc.c + vendor/luajit/src/lj_err.c + vendor/luajit/src/lj_char.c + vendor/luajit/src/lj_bc.c + vendor/luajit/src/lj_obj.c + vendor/luajit/src/lj_str.c + vendor/luajit/src/lj_tab.c + vendor/luajit/src/lj_func.c + vendor/luajit/src/lj_udata.c + vendor/luajit/src/lj_meta.c + vendor/luajit/src/lj_debug.c + vendor/luajit/src/lj_state.c + vendor/luajit/src/lj_dispatch.c + vendor/luajit/src/lj_vmevent.c + vendor/luajit/src/lj_vmmath.c + vendor/luajit/src/lj_strscan.c + vendor/luajit/src/lj_api.c + vendor/luajit/src/lj_lex.c + vendor/luajit/src/lj_parse.c + vendor/luajit/src/lj_bcread.c + vendor/luajit/src/lj_bcwrite.c + vendor/luajit/src/lj_load.c + vendor/luajit/src/lj_ir.c + vendor/luajit/src/lj_opt_mem.c + vendor/luajit/src/lj_opt_fold.c + vendor/luajit/src/lj_opt_narrow.c + vendor/luajit/src/lj_opt_dce.c + vendor/luajit/src/lj_opt_loop.c + vendor/luajit/src/lj_opt_split.c + vendor/luajit/src/lj_opt_sink.c + vendor/luajit/src/lj_mcode.c + vendor/luajit/src/lj_snap.c + vendor/luajit/src/lj_record.c + vendor/luajit/src/lj_crecord.c + vendor/luajit/src/lj_ffrecord.c + vendor/luajit/src/lj_asm.c + vendor/luajit/src/lj_trace.c + vendor/luajit/src/lj_gdbjit.c + vendor/luajit/src/lj_ctype.c + vendor/luajit/src/lj_cdata.c + vendor/luajit/src/lj_cconv.c + vendor/luajit/src/lj_ccall.c + vendor/luajit/src/lj_ccallback.c + vendor/luajit/src/lj_carith.c + vendor/luajit/src/lj_clib.c + vendor/luajit/src/lj_cparse.c + vendor/luajit/src/lj_lib.c + vendor/luajit/src/lj_alloc.c + vendor/luajit/src/lib_aux.c + vendor/luajit/src/lib_base.c + vendor/luajit/src/lib_math.c + vendor/luajit/src/lib_bit.c + vendor/luajit/src/lib_string.c + vendor/luajit/src/lib_table.c + vendor/luajit/src/lib_io.c + vendor/luajit/src/lib_os.c + vendor/luajit/src/lib_package.c + vendor/luajit/src/lib_debug.c + vendor/luajit/src/lib_jit.c + vendor/luajit/src/lib_ffi.c + vendor/luajit/src/lib_init.c +) +if(MSVC) + target_sources(luajit PRIVATE vendor/luajit/src/lj_vm.obj) +else(MSVC) + target_sources(luajit PRIVATE vendor/luajit/src/lj_vm.s) + set_property(SOURCE vendor/luajit/src/lj_vm.s PROPERTY LANGUAGE C) +endif(MSVC) +target_include_directories(luajit PRIVATE vendor/luajit/src/gen) +add_dependencies(luajit luajit-buildvm) +target_compile_definitions(luajit PRIVATE LUAJIT_ENABLE_LUA52COMPAT) + +add_library(resrc STATIC + src/libresrc/bitmap.cpp + src/libresrc/default_config.cpp + src/libresrc/libresrc.cpp +) + +add_executable(Aegisub WIN32 + src/command/app.cpp + src/command/audio.cpp + src/command/automation.cpp + src/command/command.cpp + src/command/edit.cpp + src/command/grid.cpp + src/command/help.cpp + src/command/keyframe.cpp + src/command/recent.cpp + src/command/subtitle.cpp + src/command/time.cpp + src/command/timecode.cpp + src/command/tool.cpp + src/command/video.cpp + src/command/vis_tool.cpp + src/dialog_about.cpp + src/dialog_attachments.cpp + src/dialog_automation.cpp + src/dialog_autosave.cpp + src/dialog_colorpicker.cpp + src/dialog_detached_video.cpp + src/dialog_dummy_video.cpp + src/dialog_export.cpp + src/dialog_export_ebu3264.cpp + src/dialog_fonts_collector.cpp + src/dialog_jumpto.cpp + src/dialog_kara_timing_copy.cpp + src/dialog_log.cpp + src/dialog_paste_over.cpp + src/dialog_progress.cpp + src/dialog_properties.cpp + src/dialog_resample.cpp + src/dialog_search_replace.cpp + src/dialog_selected_choices.cpp + src/dialog_selection.cpp + src/dialog_shift_times.cpp + src/dialog_spellchecker.cpp + src/dialog_style_editor.cpp + src/dialog_style_manager.cpp + src/dialog_styling_assistant.cpp + src/dialog_text_import.cpp + src/dialog_timing_processor.cpp + src/dialog_translation.cpp + src/dialog_version_check.cpp + src/dialog_video_details.cpp + src/dialog_video_properties.cpp + src/subtitle_format.cpp + src/subtitle_format_ass.cpp + src/subtitle_format_ebu3264.cpp + src/subtitle_format_encore.cpp + src/subtitle_format_microdvd.cpp + src/subtitle_format_mkv.cpp + src/subtitle_format_srt.cpp + src/subtitle_format_ssa.cpp + src/subtitle_format_transtation.cpp + src/subtitle_format_ttxt.cpp + src/subtitle_format_txt.cpp + src/visual_tool.cpp + src/visual_tool_clip.cpp + src/visual_tool_cross.cpp + src/visual_tool_drag.cpp + src/visual_tool_rotatexy.cpp + src/visual_tool_rotatez.cpp + src/visual_tool_scale.cpp + src/visual_tool_vector_clip.cpp + src/MatroskaParser.c + src/aegisublocale.cpp + src/ass_attachment.cpp + src/ass_dialogue.cpp + src/ass_entry.cpp + src/ass_export_filter.cpp + src/ass_exporter.cpp + src/ass_file.cpp + src/ass_karaoke.cpp + src/ass_override.cpp + src/ass_parser.cpp + src/ass_style.cpp + src/ass_style_storage.cpp + src/async_video_provider.cpp + src/audio_box.cpp + src/audio_colorscheme.cpp + src/audio_controller.cpp + src/audio_display.cpp + src/audio_karaoke.cpp + src/audio_marker.cpp + src/audio_player.cpp + src/audio_provider_factory.cpp + src/audio_renderer.cpp + src/audio_renderer_spectrum.cpp + src/audio_renderer_waveform.cpp + src/audio_timing_dialogue.cpp + src/audio_timing_karaoke.cpp + src/auto4_base.cpp + src/auto4_lua.cpp + src/auto4_lua_assfile.cpp + src/auto4_lua_dialog.cpp + src/auto4_lua_progresssink.cpp + src/avisynth_wrap.cpp + src/base_grid.cpp + src/charset_detect.cpp + src/colorspace.cpp + src/colour_button.cpp + src/compat.cpp + src/context.cpp + src/crash_writer.cpp + src/export_fixstyle.cpp + src/export_framerate.cpp + src/fft.cpp + src/font_file_lister.cpp + src/frame_main.cpp + src/gl_text.cpp + src/gl_wrap.cpp + src/grid_column.cpp + src/help_button.cpp + src/hotkey.cpp + src/hotkey_data_view_model.cpp + src/initial_line_state.cpp + src/main.cpp + src/menu.cpp + src/mkv_wrap.cpp + src/pen.cpp + src/persist_location.cpp + src/preferences.cpp + src/preferences_base.cpp + src/project.cpp + src/resolution_resampler.cpp + src/search_replace_engine.cpp + src/selection_controller.cpp + src/spellchecker.cpp + src/spline.cpp + src/spline_curve.cpp + src/string_codec.cpp + src/subs_controller.cpp + src/subs_edit_box.cpp + src/subs_edit_ctrl.cpp + src/subs_preview.cpp + src/subtitles_provider.cpp + src/subtitles_provider_libass.cpp + src/text_file_reader.cpp + src/text_file_writer.cpp + src/text_selection_controller.cpp + src/thesaurus.cpp + src/timeedit_ctrl.cpp + src/toggle_bitmap.cpp + src/toolbar.cpp + src/tooltip_manager.cpp + src/utils.cpp + src/validators.cpp + src/vector2d.cpp + src/version.cpp + src/video_box.cpp + src/video_controller.cpp + src/video_display.cpp + src/video_frame.cpp + src/video_out_gl.cpp + src/video_provider_cache.cpp + src/video_provider_dummy.cpp + src/video_provider_manager.cpp + src/video_provider_yuv4mpeg.cpp + src/video_slider.cpp + src/visual_feature.cpp + src/audio_provider_ffmpegsource.cpp + src/video_provider_ffmpegsource.cpp + src/ffmpegsource_common.cpp + src/spellchecker_hunspell.cpp +) +target_link_libraries(Aegisub ${CMAKE_DL_LIBS} libaegisub luabins luajit resrc) + +if (MSVC) + set_target_properties(libaegisub PROPERTIES COMPILE_FLAGS "/Yu${PROJECT_SOURCE_DIR}/libaegisub/lagi_pre.h" COMPILE_FLAGS "/FI${PROJECT_SOURCE_DIR}/libaegisub/lagi_pre.h") +else(MSVC) + target_compile_options(libaegisub PRIVATE -include "${PROJECT_SOURCE_DIR}/libaegisub/lagi_pre.h") +endif(MSVC) + +set_property( + SOURCE libaegisub/unix/path.cpp + PROPERTY COMPILE_DEFINITIONS + P_DATA="${CMAKE_INSTALL_PREFIX}/share/aegisub/" +) + +if (MSVC) + add_definitions("-DNOMINMAX -MP -DINITGUID") + set_target_properties(Aegisub PROPERTIES COMPILE_FLAGS "/Yu${PROJECT_SOURCE_DIR}/src/agi_pre.h" COMPILE_FLAGS "/FI${PROJECT_SOURCE_DIR}/src/agi_pre.h") + target_link_libraries (Aegisub Usp10) + target_sources(Aegisub PRIVATE src/font_file_lister_gdi.cpp) +else(MSVC) + target_compile_options(Aegisub PRIVATE -include "${PROJECT_SOURCE_DIR}/src/agi_pre.h") +endif(MSVC) + +find_package(ass REQUIRED) +include_directories(${ass_INCLUDE_DIRS}) +target_link_libraries (Aegisub ${ass_LIBRARIES}) + +find_package(Boost REQUIRED chrono filesystem locale regex system thread) +include_directories(${Boost_INCLUDE_DIRS}) +target_link_directories(Aegisub PRIVATE ${Boost_LIBRARY_DIRS}) +target_link_libraries(Aegisub ${Boost_LIBRARIES}) + +find_package(OpenGL REQUIRED) +include_directories(${OPENGL_INCLUDE_DIR}) +target_link_libraries (Aegisub ${OPENGL_LIBRARIES}) + +find_package(ICU REQUIRED uc) +include_directories(${ICU_INCLUDE_DIRS}) +target_link_libraries (Aegisub ${ICU_LIBRARIES}) + +find_package(wxWidgets REQUIRED adv base core gl stc xml) +include(${wxWidgets_USE_FILE}) +target_link_libraries(Aegisub ${wxWidgets_LIBRARIES}) + +find_package(ZLIB REQUIRED) +include_directories(${ZLIB_INCLUDE_DIRS}) +target_link_libraries (Aegisub ${ZLIB_LIBRARIES}) + +find_package(Iconv) +if (Iconv_FOUND) + include_directories(${Iconv_INCLUDE_DIRS}) + target_link_libraries (Aegisub ${Iconv_LIBRARIES}) + add_definitions("-DHAVE_ICONV") +endif(Iconv_FOUND) + +find_package(ALSA) +if (ALSA_FOUND) + include_directories(${ALSA_INCLUDE_DIRS}) + target_link_libraries (Aegisub ${ALSA_LIBRARIES}) + add_definitions("-DWITH_ALSA") + target_sources(Aegisub PRIVATE src/audio_player_alsa.cpp) +endif(ALSA_FOUND) + +#ifdef WITH_AVISYNTH +#ifdef WITH_CSRI + +if(MSVC) + target_link_libraries (Aegisub dsound) + add_definitions("-DWITH_DIRECTSOUND") + target_sources(Aegisub PRIVATE src/audio_player_dsound.cpp) + target_sources(Aegisub PRIVATE src/audio_player_dsound2.cpp) +endif(MSVC) + +find_package(FFMS2) +if (FFMS2_FOUND) + include_directories(${FFMS2_INCLUDE_DIRS}) + target_link_libraries (Aegisub ${FFMS2_LIBRARIES}) + add_definitions("-DWITH_FFMS2") +endif(FFMS2_FOUND) + +find_package(FFTW) +if (FFTW_FOUND) + include_directories(${FFTW_INCLUDES}) + target_link_libraries (Aegisub ${FFTW_LIBRARIES}) + add_definitions("-DWITH_FFTW3") +endif(FFTW_FOUND) + +find_package(Fontconfig) +if (Fontconfig_FOUND) + include_directories(${FONTCONFIG_INCLUDE_DIRS}) + target_link_libraries (Aegisub ${FONTCONFIG_LIBRARIES}) + target_sources(Aegisub PRIVATE src/font_file_lister_fontconfig.cpp) +endif(Fontconfig_FOUND) + +find_package(Hunspell) +if (HUNSPELL_FOUND) + include_directories(${HUNSPELL_INCLUDE_DIR}) + target_link_libraries (Aegisub ${HUNSPELL_LIBRARIES}) + add_definitions("-DWITH_HUNSPELL") +endif(HUNSPELL_FOUND) + +#ifdef WITH_LIBPULSE +#add_definitions("-DWITH_LIBPULSE") +#target_sources(Aegisub PRIVATE src/audio_player_pulse.cpp) + +find_package(OpenAL) +if (OpenAL_FOUND) + include_directories(${OpenAL_INCLUDE_DIRS}) + target_link_libraries (Aegisub ${OpenAL_LIBRARIES}) + add_definitions("-DWITH_OPENAL") +endif(OpenAL_FOUND) + +#ifdef WITH_OSS +#ifdef WITH_PORTAUDIO +#ifdef WITH_STARTUPLOG + +find_package(uchardet) +if (uchardet_FOUND) + include_directories(${uchardet_INCLUDE_DIRS}) + target_link_libraries (Aegisub ${uchardet_LIBRARIES}) + add_definitions("-DWITH_UCHARDET") +endif(uchardet_FOUND) + +#ifdef WITH_UPDATE_CHECKER + diff --git a/cmake/FindAss.cmake b/cmake/FindAss.cmake new file mode 100644 index 000000000..dc7ca58d3 --- /dev/null +++ b/cmake/FindAss.cmake @@ -0,0 +1,19 @@ +find_package(PkgConfig) +pkg_check_modules(PC_ass QUIET ass) +find_path(ass_INCLUDE_DIRS + NAMES ass/ass.h ass/ass_types.h + PATHS ${PC_ass_INCLUDE_DIRS} +) +find_library(ass_LIBRARIES + NAMES ass + PATHS ${PC_ass_LIBRARY_DIRS} +) +set(ass_VERSION ${PC_ass_VERSION}) +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(ass + FOUND_VAR ass_FOUND + REQUIRED_VARS + ass_LIBRARIES + ass_INCLUDE_DIRS + VERSION_VAR ass_VERSION +) \ No newline at end of file diff --git a/cmake/FindFFMS2.cmake b/cmake/FindFFMS2.cmake new file mode 100644 index 000000000..9128b2864 --- /dev/null +++ b/cmake/FindFFMS2.cmake @@ -0,0 +1,19 @@ +find_package(PkgConfig) +pkg_check_modules(PC_FFMS2 QUIET ffms2) +find_path(FFMS2_INCLUDE_DIRS + NAMES ffms.h ffmscompat.h + PATHS ${PC_FFMS2_INCLUDE_DIRS} +) +find_library(FFMS2_LIBRARIES + NAMES ffms2 + PATHS ${PC_FFMS2_LIBRARY_DIRS} +) +set(FFMS2_VERSION ${PC_FFMS2_VERSION}) +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(FFMS2 + FOUND_VAR FFMS2_FOUND + REQUIRED_VARS + FFMS2_LIBRARIES + FFMS2_INCLUDE_DIRS + VERSION_VAR FFMS2_VERSION +) \ No newline at end of file diff --git a/cmake/FindFFTW.cmake b/cmake/FindFFTW.cmake new file mode 100644 index 000000000..8a74443c2 --- /dev/null +++ b/cmake/FindFFTW.cmake @@ -0,0 +1,119 @@ +# - Find the FFTW library +# +# Usage: +# find_package(FFTW [REQUIRED] [QUIET] ) +# +# It sets the following variables: +# FFTW_FOUND ... true if fftw is found on the system +# FFTW_LIBRARIES ... full path to fftw library +# FFTW_INCLUDES ... fftw include directory +# +# The following variables will be checked by the function +# FFTW_USE_STATIC_LIBS ... if true, only static libraries are found +# FFTW_ROOT ... if set, the libraries are exclusively searched +# under this path +# FFTW_LIBRARY ... fftw library to use +# FFTW_INCLUDE_DIR ... fftw include directory +# + +#If environment variable FFTWDIR is specified, it has same effect as FFTW_ROOT +if( NOT FFTW_ROOT AND ENV{FFTWDIR} ) + set( FFTW_ROOT $ENV{FFTWDIR} ) +endif() + +# Check if we can use PkgConfig +find_package(PkgConfig) + +#Determine from PKG +if( PKG_CONFIG_FOUND AND NOT FFTW_ROOT ) + pkg_check_modules( PKG_FFTW QUIET "fftw3" ) +endif() + +#Check whether to search static or dynamic libs +set( CMAKE_FIND_LIBRARY_SUFFIXES_SAV ${CMAKE_FIND_LIBRARY_SUFFIXES} ) + +if( ${FFTW_USE_STATIC_LIBS} ) + set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX} ) +else() + set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_SHARED_LIBRARY_SUFFIX} ) +endif() + +if( FFTW_ROOT ) + + #find libs + find_library( + FFTW_LIB + NAMES "fftw3" + PATHS ${FFTW_ROOT} + PATH_SUFFIXES "lib" "lib64" + NO_DEFAULT_PATH + ) + + find_library( + FFTWF_LIB + NAMES "fftw3f" + PATHS ${FFTW_ROOT} + PATH_SUFFIXES "lib" "lib64" + NO_DEFAULT_PATH + ) + + find_library( + FFTWL_LIB + NAMES "fftw3l" + PATHS ${FFTW_ROOT} + PATH_SUFFIXES "lib" "lib64" + NO_DEFAULT_PATH + ) + + #find includes + find_path( + FFTW_INCLUDES + NAMES "fftw3.h" + PATHS ${FFTW_ROOT} + PATH_SUFFIXES "include" + NO_DEFAULT_PATH + ) + +else() + + find_library( + FFTW_LIB + NAMES "fftw3" + PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} + ) + + find_library( + FFTWF_LIB + NAMES "fftw3f" + PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} + ) + + + find_library( + FFTWL_LIB + NAMES "fftw3l" + PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} + ) + + find_path( + FFTW_INCLUDES + NAMES "fftw3.h" + PATHS ${PKG_FFTW_INCLUDE_DIRS} ${INCLUDE_INSTALL_DIR} + ) + +endif( FFTW_ROOT ) + +set(FFTW_LIBRARIES ${FFTW_LIB} ${FFTWF_LIB}) + +if(FFTWL_LIB) + set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTWL_LIB}) +endif() + +set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_SAV} ) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(FFTW DEFAULT_MSG + FFTW_INCLUDES FFTW_LIBRARIES) + +mark_as_advanced(FFTW_INCLUDES FFTW_LIBRARIES FFTW_LIB FFTWF_LIB FFTWL_LIB) + diff --git a/cmake/FindHunspell.cmake b/cmake/FindHunspell.cmake new file mode 100644 index 000000000..66601313b --- /dev/null +++ b/cmake/FindHunspell.cmake @@ -0,0 +1,57 @@ +# - Try to find Hunspell +# Once done this will define +# +# HUNSPELL_FOUND - system has Hunspell +# HUNSPELL_INCLUDE_DIR - the Hunspell include directory +# HUNSPELL_LIBRARIES - Link these to use Hunspell +# +# Redistribution and use of this file is allowed according to the terms of the +# MIT license. For details see the file COPYING-CMAKE-MODULES. + + +if ( HUNSPELL_INCLUDE_DIR AND HUNSPELL_LIBRARIES ) + # in cache already + SET(Hunspell_FIND_QUIETLY TRUE) +endif ( HUNSPELL_INCLUDE_DIR AND HUNSPELL_LIBRARIES ) + +# use pkg-config to get the directories and then use these values +# in the FIND_PATH() and FIND_LIBRARY() calls +if( NOT WIN32 ) + find_package(PkgConfig) + + pkg_check_modules(HUNSPELL_PKG QUIET hunspell) +endif( NOT WIN32 ) + +FIND_PATH(HUNSPELL_INCLUDE_DIR NAMES hunspell.h + PATHS + /usr/local/include + /usr/include + HINTS + ${HUNSPELL_PKG_INCLUDE_DIRS} # Generated by pkg-config + PATH_SUFFIXES hunspell +) + +FIND_LIBRARY(HUNSPELL_LIBRARIES NAMES hunspell-1.7 hunspell-1.6 hunspell-1.5 hunspell-1.4 hunspell-1.3 hunspell-1.2 hunspell ${HUNSPELL_PKG_LIBRARIES} + PATHS + /usr/local + /usr + HINTS + ${HUNSPELL_PKG_LIBRARY_DIRS} # Generated by pkg-config + PATH_SUFFIXES + lib64 + lib +) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(Hunspell DEFAULT_MSG HUNSPELL_LIBRARIES HUNSPELL_INCLUDE_DIR ) + +# show the HUNSPELL_INCLUDE_DIR and HUNSPELL_LIBRARIES variables only in the advanced view +MARK_AS_ADVANCED(HUNSPELL_INCLUDE_DIR HUNSPELL_LIBRARIES ) + +add_library(hunspell UNKNOWN IMPORTED) +set_target_properties(hunspell PROPERTIES IMPORTED_LOCATION ${HUNSPELL_LIBRARIES} INTERFACE_INCLUDE_DIRECTORIES ${HUNSPELL_INCLUDE_DIR}) +if (NOT BUILD_SHARED_LIBS) + # At least statically compiled hunspell 1.7.0 requires HUNSPELL_STATIC + # For other versions, it should not hurt + set_target_properties(hunspell PROPERTIES INTERFACE_COMPILE_DEFINITIONS HUNSPELL_STATIC) +endif () diff --git a/cmake/FindUchardet.cmake b/cmake/FindUchardet.cmake new file mode 100644 index 000000000..c225d90f2 --- /dev/null +++ b/cmake/FindUchardet.cmake @@ -0,0 +1,19 @@ +find_package(PkgConfig) +pkg_check_modules(PC_uchardet QUIET uchardet) +find_path(uchardet_INCLUDE_DIRS + NAMES uchardet/uchardet.h + PATHS ${PC_uchardet_INCLUDE_DIRS} +) +find_library(uchardet_LIBRARIES + NAMES uchardet + PATHS ${PC_uchardet_LIBRARY_DIRS} +) +set(uchardet_VERSION ${PC_uchardet_VERSION}) +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(uchardet + FOUND_VAR uchardet_FOUND + REQUIRED_VARS + uchardet_LIBRARIES + uchardet_INCLUDE_DIRS + VERSION_VAR uchardet_VERSION +) \ No newline at end of file diff --git a/libaegisub/lagi_pre.h b/libaegisub/lagi_pre.h index 50ce877e2..a946bac5a 100644 --- a/libaegisub/lagi_pre.h +++ b/libaegisub/lagi_pre.h @@ -1,7 +1,4 @@ #ifdef __cplusplus -#ifndef _WIN32 -#include "../acconf.h" -#endif #define WIN32_LEAN_AND_MEAN diff --git a/libaegisub/lua/modules/lpeg.c b/libaegisub/lua/modules/lpeg.c index 8d67335ab..5261c2061 100644 --- a/libaegisub/lua/modules/lpeg.c +++ b/libaegisub/lua/modules/lpeg.c @@ -2334,7 +2334,7 @@ static int matchl (lua_State *L) { } -static struct luaL_reg pattreg[] = { +static struct luaL_Reg pattreg[] = { {"match", matchl}, {"print", printpat_l}, {"locale", locale_l}, @@ -2360,7 +2360,7 @@ static struct luaL_reg pattreg[] = { }; -static struct luaL_reg metapattreg[] = { +static struct luaL_Reg metapattreg[] = { {"__add", union_l}, {"__pow", star_l}, {"__sub", diff_l}, diff --git a/src/agi_pre.h b/src/agi_pre.h index 63e045dca..fb983bc6b 100644 --- a/src/agi_pre.h +++ b/src/agi_pre.h @@ -48,10 +48,6 @@ #define _CRT_SECURE_NO_WARNINGS #endif -#ifndef _WIN32 -#include "../acconf.h" -#endif - #define WIN32_LEAN_AND_MEAN // Common C diff --git a/src/audio_player_dsound.cpp b/src/audio_player_dsound.cpp index 01b47b354..11ce6ea20 100644 --- a/src/audio_player_dsound.cpp +++ b/src/audio_player_dsound.cpp @@ -45,6 +45,7 @@ #include #include +#include namespace { class DirectSoundPlayer; diff --git a/src/audio_player_dsound2.cpp b/src/audio_player_dsound2.cpp index dd7bf8680..9b4641c77 100644 --- a/src/audio_player_dsound2.cpp +++ b/src/audio_player_dsound2.cpp @@ -48,6 +48,7 @@ #include #include #include +#include namespace { class DirectSoundPlayer2Thread; diff --git a/src/utils.cpp b/src/utils.cpp index 2416aa7a2..69c53bd1c 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -275,7 +275,7 @@ wxString LocalizedLanguageName(wxString const& lang) { icu::UnicodeString ustr; iculoc.getDisplayName(iculoc, ustr); #ifdef _MSC_VER - return wxString(ustr.getBuffer()); + return wxString((const wchar_t*)ustr.getBuffer()); #else std::string utf8; ustr.toUTF8String(utf8);