@@ -120,21 +120,21 @@ file(GLOB UCHARDET_SOURCES "${UCHARDET_DIR}/*.cpp")
120120add_library (uchardet STATIC ${UCHARDET_SOURCES} )
121121target_include_directories (uchardet PUBLIC "${UCHARDET_DIR} " )
122122
123- # ============================================================
124- # Notepad++ PowerEditor Sources (compatibility compile subset)
125- # ============================================================
123+ # ============================================================
124+ # Notepad++ PowerEditor Sources (compatibility compile subset)
125+ # ============================================================
126126set (NPP_SRC_DIR "${NPP_ROOT} /PowerEditor/src" )
127127
128- # We compile a minimal subset to verify the shim works.
129- # These files are core logic that should compile with the shim headers.
130- # This target is for compilation verification only.
128+ # We compile a minimal subset to verify the shim works.
129+ # These files are core logic that should compile with the shim headers.
130+ # This target is for compilation verification only.
131131
132- # Compile-test target: just verify the shim + vendored libs compile
133- # and that key N++ headers can be parsed.
134- # Compile a simple test file that includes key N++ headers
135- # through the shim layer. Actual N++ source files will be added
136- # incrementally as we stub out more Windows-only headers.
137- add_library (npp_macos_compile_test STATIC
132+ # Compile-test target: just verify the shim + vendored libs compile
133+ # and that key N++ headers can be parsed.
134+ # Compile a simple test file that includes key N++ headers
135+ # through the shim layer. Actual N++ source files will be added
136+ # incrementally as we stub out more Windows-only headers.
137+ add_library (npp_macos_compile_test STATIC
138138 "${CMAKE_CURRENT_SOURCE_DIR} /platform/npp_headers_test.cpp"
139139 "${NPP_SRC_DIR} /MISC/sha2/sha-256.cpp"
140140 "${NPP_SRC_DIR} /Utf8_16.cpp"
@@ -182,12 +182,12 @@ file(GLOB_RECURSE NPP_WINCONTROLS_SOURCES "${NPP_SRC_DIR}/WinControls/*.cpp")
182182list (FILTER NPP_WINCONTROLS_SOURCES EXCLUDE REGEX "ReadDirectoryChanges" )
183183list (FILTER NPP_WINCONTROLS_SOURCES EXCLUDE REGEX "CustomFileDialog" ) # Uses IFileDialog COM - replace with NSOpenPanel/NSSavePanel
184184list (FILTER NPP_WINCONTROLS_SOURCES EXCLUDE REGEX "pluginsAdmin" ) # Uses WinInet - replace with NSURLSession
185- target_sources (npp_macos_compile_test PRIVATE ${NPP_WINCONTROLS_SOURCES} )
185+ target_sources (npp_macos_compile_test PRIVATE ${NPP_WINCONTROLS_SOURCES} )
186186# Gather all subdirectories under WinControls/ for includes
187187file (GLOB NPP_WINCONTROLS_DIRS "${NPP_SRC_DIR} /WinControls/*/" )
188188file (GLOB NPP_MISC_DIRS "${NPP_SRC_DIR} /MISC/*/" )
189189
190- target_include_directories (npp_macos_compile_test
190+ target_include_directories (npp_macos_compile_test
191191 PRIVATE "${SHIM_INCLUDE_DIR} " # Must be first!
192192 PRIVATE "${NPP_SRC_DIR} "
193193 PRIVATE "${NPP_SRC_DIR} /MISC"
@@ -205,7 +205,7 @@ target_include_directories(npp_macos_compile_test
205205 PRIVATE "${PUGIXML_DIR} "
206206 PRIVATE "${UCHARDET_DIR} "
207207)
208- target_compile_definitions (npp_macos_compile_test PRIVATE
208+ target_compile_definitions (npp_macos_compile_test PRIVATE
209209 UNICODE
210210 _UNICODE
211211 __APPLE__
@@ -214,7 +214,7 @@ target_compile_definitions(npp_macos_compile_test PRIVATE
214214 "NPP_LEXILLA_VERSION=\" 5.4.0\" "
215215 "NPP_BOOST_REGEX_VERSION=\" 1.90.0\" "
216216)
217- target_compile_options (npp_macos_compile_test PRIVATE
217+ target_compile_options (npp_macos_compile_test PRIVATE
218218 -Wno-deprecated-declarations
219219 -Wno-writable-strings
220220 -Wno-unused-parameter
@@ -223,18 +223,18 @@ target_compile_options(npp_macos_compile_test PRIVATE
223223 -Wno-c++11-narrowing
224224 -include "${SHIM_INCLUDE_DIR} /windows.h"
225225)
226- target_link_libraries (npp_macos_compile_test
226+ target_link_libraries (npp_macos_compile_test
227227 win32shim
228228 pugixml
229229 uchardet
230230)
231231
232- # ============================================================
233- # Compatibility verification target
234- # ============================================================
235- # This executable just links everything together to verify compilation.
236- # It's not the primary runnable app target.
237- add_executable (npp_build_test
232+ # ============================================================
233+ # Compatibility verification target
234+ # ============================================================
235+ # This executable just links everything together to verify compilation.
236+ # It's not the primary runnable app target.
237+ add_executable (npp_build_test
238238 "${CMAKE_CURRENT_SOURCE_DIR} /platform/build_test.mm"
239239)
240240target_include_directories (npp_build_test PRIVATE
@@ -283,110 +283,130 @@ target_link_libraries(win32shim PUBLIC
283283 scintilla_bridge
284284)
285285
286- # ============================================================
287- # Main macOS app target
288- # ============================================================
289- add_executable (MacOSNotePP
290- "${CMAKE_CURRENT_SOURCE_DIR} /platform/main_phase7.mm"
291- "${CMAKE_CURRENT_SOURCE_DIR} /platform/settings_manager.mm"
292- "${CMAKE_CURRENT_SOURCE_DIR} /platform/file_monitor_mac.mm"
293- )
294- target_include_directories (MacOSNotePP PRIVATE
295- "${CMAKE_CURRENT_SOURCE_DIR} /platform"
296- "${SHIM_INCLUDE_DIR} "
297- "${SCINTILLA_INCLUDE_DIR} "
298- "${LEXILLA_INCLUDE_DIR} "
299- "${UCHARDET_DIR} "
300- )
301- target_link_libraries (MacOSNotePP
302- win32shim
303- scintilla_bridge
304- Scintilla
286+ # ============================================================
287+ # Main macOS app target
288+ # ============================================================
289+ add_executable (MacOSNotePP
290+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/app_main.mm"
291+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/app_state.mm"
292+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/app_delegate.mm"
293+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/document_manager.mm"
294+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/file_operations.mm"
295+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/find_replace.mm"
296+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/edit_commands.mm"
297+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/split_view.mm"
298+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/session_manager.mm"
299+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/preferences_dialog.mm"
300+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/menu_builder.mm"
301+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/wndproc.mm"
302+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/appearance.mm"
303+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/scintilla_config.mm"
304+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/lexer_styles.mm"
305+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/language_defs.mm"
306+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/bookmarks.mm"
307+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/autocomplete.mm"
308+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/context_menu.mm"
309+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/status_bar.mm"
310+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/recent_files.mm"
311+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/settings_manager.mm"
312+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/file_monitor_mac.mm"
313+ )
314+ target_include_directories (MacOSNotePP PRIVATE
315+ "${CMAKE_CURRENT_SOURCE_DIR} /platform"
316+ "${SHIM_INCLUDE_DIR} "
317+ "${SCINTILLA_INCLUDE_DIR} "
318+ "${LEXILLA_INCLUDE_DIR} "
319+ "${UCHARDET_DIR} "
320+ )
321+ target_link_libraries (MacOSNotePP
322+ win32shim
323+ scintilla_bridge
324+ Scintilla
305325 Lexilla
306326 pugixml
307327 uchardet
308328 "-framework Foundation"
309329 "-framework AppKit"
310330 "-framework QuartzCore"
311- "-framework UniformTypeIdentifiers"
312- "-framework CoreServices"
313- )
314- target_compile_options (MacOSNotePP PRIVATE
315- -fobjc-arc
316- -Wno-deprecated-declarations
317- )
318- add_custom_command (TARGET MacOSNotePP POST_BUILD
319- COMMAND ${CMAKE_COMMAND} -E copy_if_different
320- "${NPP_ROOT} /logo.png"
321- "$<TARGET_FILE_DIR :MacOSNotePP >/logo.png"
322- COMMENT "Copying logo.png for Dock icon"
323- )
324-
325- # ============================================================
326- # Packaging: App bundle + unsigned DMG
327- # ============================================================
328- set (NPP_MACOS_DIST_DIR "${CMAKE_CURRENT_SOURCE_DIR} /dist" )
329- set (NPP_MACOS_APP_BUNDLE "${NPP_MACOS_DIST_DIR} /MacNote++.app" )
330- set (NPP_MACOS_APP_CONTENTS "${NPP_MACOS_APP_BUNDLE} /Contents" )
331- set (NPP_MACOS_APP_MACOS "${NPP_MACOS_APP_CONTENTS} /MacOS" )
332- set (NPP_MACOS_APP_RESOURCES "${NPP_MACOS_APP_CONTENTS} /Resources" )
333- set (NPP_MACOS_DMG_ROOT "${NPP_MACOS_DIST_DIR} /dmg-root" )
334- set (NPP_MACOS_DMG_APP_BUNDLE "${NPP_MACOS_DMG_ROOT} /MacNote++.app" )
335- set (NPP_MACOS_UNSIGNED_DMG "${NPP_MACOS_DIST_DIR} /MacNote++-unsigned.dmg" )
336- set (NPP_MACOS_INFO_PLIST "${CMAKE_CURRENT_BINARY_DIR} /MacNote++-Info.plist" )
337-
338- configure_file (
339- "${CMAKE_CURRENT_SOURCE_DIR} /platform/MacNoteInfo.plist.in"
340- "${NPP_MACOS_INFO_PLIST} "
341- @ONLY
342- )
343-
344- add_custom_target (MacOSNotePP_package
345- DEPENDS MacOSNotePP
346- COMMAND ${CMAKE_COMMAND} -E rm -rf "${NPP_MACOS_APP_BUNDLE} "
347- COMMAND ${CMAKE_COMMAND} -E make_directory "${NPP_MACOS_APP_MACOS} "
348- COMMAND ${CMAKE_COMMAND} -E make_directory "${NPP_MACOS_APP_RESOURCES} "
349- COMMAND ${CMAKE_COMMAND} -E copy_if_different
350- "$<TARGET_FILE :MacOSNotePP >"
351- "${NPP_MACOS_APP_MACOS} /MacOSNotePP"
352- COMMAND ${CMAKE_COMMAND} -E copy_if_different
353- "${NPP_ROOT} /logo.png"
354- "${NPP_MACOS_APP_MACOS} /logo.png"
355- COMMAND ${CMAKE_COMMAND} -E copy_if_different
356- "${NPP_ROOT} /logo.png"
357- "${NPP_MACOS_APP_RESOURCES} /logo.png"
358- COMMAND ${CMAKE_COMMAND} -E copy_if_different
359- "${NPP_MACOS_INFO_PLIST} "
360- "${NPP_MACOS_APP_CONTENTS} /Info.plist"
361- COMMENT "Packaging MacNote++.app"
362- )
363-
364- add_custom_target (MacOSNotePP_dmg
365- DEPENDS MacOSNotePP_package
366- COMMAND ${CMAKE_COMMAND} -E make_directory "${NPP_MACOS_DMG_ROOT} "
367- COMMAND ${CMAKE_COMMAND} -E rm -rf "${NPP_MACOS_DMG_APP_BUNDLE} "
368- COMMAND ${CMAKE_COMMAND} -E copy_directory
369- "${NPP_MACOS_APP_BUNDLE} "
370- "${NPP_MACOS_DMG_APP_BUNDLE} "
371- COMMAND ${CMAKE_COMMAND} -E rm -rf "${NPP_MACOS_DMG_ROOT} /Applications"
372- COMMAND ${CMAKE_COMMAND} -E create_symlink
373- "/Applications"
374- "${NPP_MACOS_DMG_ROOT} /Applications"
375- COMMAND ${CMAKE_COMMAND} -E rm -f "${NPP_MACOS_UNSIGNED_DMG} "
376- COMMAND hdiutil create
377- -volname "MacNote++"
378- -srcfolder "${NPP_MACOS_DMG_ROOT} "
379- -format UDZO
380- -ov
381- "${NPP_MACOS_UNSIGNED_DMG} "
382- COMMENT "Building MacNote++-unsigned.dmg"
383- )
384-
385- message (STATUS "=== Notepad++ macOS Port ===" )
386- message (STATUS "Compatibility compile target: npp_macos_compile_test" )
387- message (STATUS "App target: MacOSNotePP" )
388- message (STATUS "Packaging target: MacOSNotePP_package" )
389- message (STATUS "Unsigned DMG target: MacOSNotePP_dmg" )
390- message (STATUS "Shim headers: ${SHIM_INCLUDE_DIR} " )
391- message (STATUS "Scintilla: ${SCINTILLA_DIR} " )
392- message (STATUS "Lexilla: ${LEXILLA_DIR} " )
331+ "-framework UniformTypeIdentifiers"
332+ "-framework CoreServices"
333+ )
334+ target_compile_options (MacOSNotePP PRIVATE
335+ -fobjc-arc
336+ -Wno-deprecated-declarations
337+ )
338+ add_custom_command (TARGET MacOSNotePP POST_BUILD
339+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
340+ "${NPP_ROOT} /logo.png"
341+ "$<TARGET_FILE_DIR :MacOSNotePP >/logo.png"
342+ COMMENT "Copying logo.png for Dock icon"
343+ )
344+
345+ # ============================================================
346+ # Packaging: App bundle + unsigned DMG
347+ # ============================================================
348+ set (NPP_MACOS_DIST_DIR "${CMAKE_CURRENT_SOURCE_DIR} /dist" )
349+ set (NPP_MACOS_APP_BUNDLE "${NPP_MACOS_DIST_DIR} /MacNote++.app" )
350+ set (NPP_MACOS_APP_CONTENTS "${NPP_MACOS_APP_BUNDLE} /Contents" )
351+ set (NPP_MACOS_APP_MACOS "${NPP_MACOS_APP_CONTENTS} /MacOS" )
352+ set (NPP_MACOS_APP_RESOURCES "${NPP_MACOS_APP_CONTENTS} /Resources" )
353+ set (NPP_MACOS_DMG_ROOT "${NPP_MACOS_DIST_DIR} /dmg-root" )
354+ set (NPP_MACOS_DMG_APP_BUNDLE "${NPP_MACOS_DMG_ROOT} /MacNote++.app" )
355+ set (NPP_MACOS_UNSIGNED_DMG "${NPP_MACOS_DIST_DIR} /MacNote++-unsigned.dmg" )
356+ set (NPP_MACOS_INFO_PLIST "${CMAKE_CURRENT_BINARY_DIR} /MacNote++-Info.plist" )
357+
358+ configure_file (
359+ "${CMAKE_CURRENT_SOURCE_DIR} /platform/MacNoteInfo.plist.in"
360+ "${NPP_MACOS_INFO_PLIST} "
361+ @ONLY
362+ )
363+
364+ add_custom_target (MacOSNotePP_package
365+ DEPENDS MacOSNotePP
366+ COMMAND ${CMAKE_COMMAND} -E rm -rf "${NPP_MACOS_APP_BUNDLE} "
367+ COMMAND ${CMAKE_COMMAND} -E make_directory "${NPP_MACOS_APP_MACOS} "
368+ COMMAND ${CMAKE_COMMAND} -E make_directory "${NPP_MACOS_APP_RESOURCES} "
369+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
370+ "$<TARGET_FILE :MacOSNotePP >"
371+ "${NPP_MACOS_APP_MACOS} /MacOSNotePP"
372+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
373+ "${NPP_ROOT} /logo.png"
374+ "${NPP_MACOS_APP_MACOS} /logo.png"
375+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
376+ "${NPP_ROOT} /logo.png"
377+ "${NPP_MACOS_APP_RESOURCES} /logo.png"
378+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
379+ "${NPP_MACOS_INFO_PLIST} "
380+ "${NPP_MACOS_APP_CONTENTS} /Info.plist"
381+ COMMENT "Packaging MacNote++.app"
382+ )
383+
384+ add_custom_target (MacOSNotePP_dmg
385+ DEPENDS MacOSNotePP_package
386+ COMMAND ${CMAKE_COMMAND} -E make_directory "${NPP_MACOS_DMG_ROOT} "
387+ COMMAND ${CMAKE_COMMAND} -E rm -rf "${NPP_MACOS_DMG_APP_BUNDLE} "
388+ COMMAND ${CMAKE_COMMAND} -E copy_directory
389+ "${NPP_MACOS_APP_BUNDLE} "
390+ "${NPP_MACOS_DMG_APP_BUNDLE} "
391+ COMMAND ${CMAKE_COMMAND} -E rm -rf "${NPP_MACOS_DMG_ROOT} /Applications"
392+ COMMAND ${CMAKE_COMMAND} -E create_symlink
393+ "/Applications"
394+ "${NPP_MACOS_DMG_ROOT} /Applications"
395+ COMMAND ${CMAKE_COMMAND} -E rm -f "${NPP_MACOS_UNSIGNED_DMG} "
396+ COMMAND hdiutil create
397+ -volname "MacNote++"
398+ -srcfolder "${NPP_MACOS_DMG_ROOT} "
399+ -format UDZO
400+ -ov
401+ "${NPP_MACOS_UNSIGNED_DMG} "
402+ COMMENT "Building MacNote++-unsigned.dmg"
403+ )
404+
405+ message (STATUS "=== Notepad++ macOS Port ===" )
406+ message (STATUS "Compatibility compile target: npp_macos_compile_test" )
407+ message (STATUS "App target: MacOSNotePP" )
408+ message (STATUS "Packaging target: MacOSNotePP_package" )
409+ message (STATUS "Unsigned DMG target: MacOSNotePP_dmg" )
410+ message (STATUS "Shim headers: ${SHIM_INCLUDE_DIR} " )
411+ message (STATUS "Scintilla: ${SCINTILLA_DIR} " )
412+ message (STATUS "Lexilla: ${LEXILLA_DIR} " )
0 commit comments