--- a/source3/librpc/rpc/rpc_common.c
+++ b/source3/librpc/rpc/rpc_common.c
@@ -92,9 +92,11 @@ bool smb_register_ndr_interface(const st
 
 static bool initialize_interfaces(void)
 {
+#ifdef LSA_SUPPORT
 	if (!smb_register_ndr_interface(&ndr_table_lsarpc)) {
 		return false;
 	}
+#endif
 #ifdef ACTIVE_DIRECTORY
 	if (!smb_register_ndr_interface(&ndr_table_dssetup)) {
 		return false;
--- a/source3/smbd/server_exit.c
+++ b/source3/smbd/server_exit.c
@@ -163,7 +163,9 @@ static void exit_server_common(enum serv
 #ifdef SAMR_SUPPORT
 		rpc_samr_shutdown();
 #endif
+#ifdef LSA_SUPPORT
 		rpc_lsarpc_shutdown();
+#endif
 	}
 
 	/*
--- a/source3/rpc_server/rpc_ep_setup.c
+++ b/source3/rpc_server/rpc_ep_setup.c
@@ -508,6 +508,7 @@ static bool srvsvc_init_cb(void *ptr)
 	return true;
 }
 
+#ifdef LSA_SUPPORT
 static bool lsarpc_init_cb(void *ptr)
 {
 	struct dcesrv_ep_context *ep_ctx =
@@ -556,6 +557,7 @@ static bool lsarpc_init_cb(void *ptr)
 
 	return true;
 }
+#endif
 
 #ifdef SAMR_SUPPORT
 static bool samr_init_cb(void *ptr)
@@ -1106,12 +1108,14 @@ bool dcesrv_ep_setup(struct tevent_conte
 	}
 
 
+#ifdef LSA_SUPPORT
 	lsarpc_cb.init         = lsarpc_init_cb;
 	lsarpc_cb.shutdown     = NULL;
 	lsarpc_cb.private_data = ep_ctx;
 	if (!NT_STATUS_IS_OK(rpc_lsarpc_init(&lsarpc_cb))) {
 		return false;
 	}
+#endif
 
 #ifdef SAMR_SUPPORT
 	samr_cb.init         = samr_init_cb;
--- a/source3/rpc_server/rpc_handles.c
+++ b/source3/rpc_server/rpc_handles.c
@@ -63,7 +63,10 @@ static bool is_samr_lsa_pipe(const struc
 #ifdef SAMR_SUPPORT
 		ndr_syntax_id_equal(syntax, &ndr_table_samr.syntax_id) ||
 #endif
-		ndr_syntax_id_equal(syntax, &ndr_table_lsarpc.syntax_id);
+#ifdef LSA_SUPPORT
+		ndr_syntax_id_equal(syntax, &ndr_table_lsarpc.syntax_id) ||
+#endif
+		false;
 }
 
 size_t num_pipe_handles(struct pipes_struct *p)
